Skip to content

Commit 8500538

Browse files
committed
Move filter logic to list file
1 parent 46d71d2 commit 8500538

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

packages/vanilla-renderers/src/complex/categorization/CategorizationList.tsx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,21 @@ import {
2828
Categorization,
2929
deriveLabelForUISchemaElement,
3030
Translator,
31+
isVisible,
3132
} from '@jsonforms/core';
3233
import { isCategorization } from './tester';
34+
import { AjvProps } from '../../util';
3335

3436
const getCategoryClassName = (
3537
category: Category,
3638
selectedCategory: Category
3739
): string => (selectedCategory === category ? 'selected' : '');
3840

3941
export interface CategorizationProps {
40-
filteredCategorization: (Category | Categorization)[];
42+
elements: (Category | Categorization)[];
4143
selectedCategory: Category;
4244
depth: number;
45+
data: any;
4346
onSelect: any;
4447
subcategoriesClassName: string;
4548
groupClassName: string;
@@ -48,31 +51,38 @@ export interface CategorizationProps {
4851

4952
export const CategorizationList = ({
5053
selectedCategory,
51-
filteredCategorization,
54+
elements,
55+
data,
5256
depth,
5357
onSelect,
5458
subcategoriesClassName,
5559
groupClassName,
5660
t,
57-
}: CategorizationProps) => {
61+
ajv,
62+
}: CategorizationProps & AjvProps) => {
63+
const filteredElements = elements.filter(
64+
(category: Category | Categorization) => {
65+
isVisible(category, data, undefined, ajv);
66+
}
67+
);
68+
5869
const categoryLabels = useMemo(
59-
() =>
60-
filteredCategorization.map((cat) =>
61-
deriveLabelForUISchemaElement(cat, t)
62-
),
63-
[filteredCategorization, t]
70+
() => filteredElements.map((cat) => deriveLabelForUISchemaElement(cat, t)),
71+
[filteredElements, t]
6472
);
6573

6674
return (
6775
<ul className={subcategoriesClassName}>
68-
{filteredCategorization.map((category, idx) => {
76+
{filteredElements.map((category, idx) => {
6977
if (isCategorization(category)) {
7078
return (
7179
<li key={categoryLabels[idx]} className={groupClassName}>
7280
<span>{categoryLabels[idx]}</span>
7381
<CategorizationList
7482
selectedCategory={selectedCategory}
75-
filteredCategorization={category.elements}
83+
elements={category.elements}
84+
data={data}
85+
ajv={ajv}
7686
depth={depth + 1}
7787
onSelect={onSelect}
7888
subcategoriesClassName={subcategoriesClassName}

packages/vanilla-renderers/src/complex/categorization/CategorizationRenderer.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
*/
2525
import React, { useMemo, useState } from 'react';
2626
import type { Categorization, Category, LayoutProps } from '@jsonforms/core';
27-
import { isVisible } from '@jsonforms/core';
2827
import {
2928
TranslateProps,
3029
withJsonFormsLayoutProps,
@@ -61,11 +60,8 @@ export const CategorizationRenderer = ({
6160
CategorizationProps &
6261
AjvProps) => {
6362
const categorization = uischema as Categorization;
64-
const filteredCategorization = useMemo(
65-
() =>
66-
categorization.elements.filter((category: Category | Categorization) =>
67-
isVisible(category, data, undefined, ajv)
68-
),
63+
const elements = useMemo(
64+
() => categorization.elements,
6965
[categorization, data, ajv]
7066
) as (Category | Categorization)[];
7167
const classNames = getStyleAsClassName('categorization');
@@ -100,8 +96,10 @@ export const CategorizationRenderer = ({
10096
>
10197
<div className={masterClassNames}>
10298
<CategorizationList
103-
filteredCategorization={filteredCategorization}
104-
selectedCategory={filteredCategorization[safeCategory]}
99+
elements={elements}
100+
selectedCategory={elements[safeCategory] as Category}
101+
data={data}
102+
ajv={ajv}
105103
depth={0}
106104
onSelect={onCategorySelected}
107105
subcategoriesClassName={subcategoriesClassName}
@@ -111,7 +109,7 @@ export const CategorizationRenderer = ({
111109
</div>
112110
<div className={detailClassNames}>
113111
<SingleCategory
114-
category={filteredCategorization[safeCategory]}
112+
category={elements[safeCategory] as Category}
115113
schema={schema}
116114
path={path}
117115
key={safeCategory}

0 commit comments

Comments
 (0)