diff --git a/packages/vanilla-renderers/src/complex/categorization/CategorizationList.tsx b/packages/vanilla-renderers/src/complex/categorization/CategorizationList.tsx index 7f53925b48..b723413fa2 100644 --- a/packages/vanilla-renderers/src/complex/categorization/CategorizationList.tsx +++ b/packages/vanilla-renderers/src/complex/categorization/CategorizationList.tsx @@ -24,12 +24,14 @@ */ import React, { useMemo } from 'react'; import { - Categorization, Category, + Categorization, deriveLabelForUISchemaElement, Translator, + isVisible, } from '@jsonforms/core'; import { isCategorization } from './tester'; +import { AjvProps } from '../../util'; const getCategoryClassName = ( category: Category, @@ -37,9 +39,10 @@ const getCategoryClassName = ( ): string => (selectedCategory === category ? 'selected' : ''); export interface CategorizationProps { - categorization: Categorization; + elements: (Category | Categorization)[]; selectedCategory: Category; depth: number; + data: any; onSelect: any; subcategoriesClassName: string; groupClassName: string; @@ -47,32 +50,39 @@ export interface CategorizationProps { } export const CategorizationList = ({ - categorization, selectedCategory, + elements, + data, depth, onSelect, subcategoriesClassName, groupClassName, t, -}: CategorizationProps) => { + ajv, +}: CategorizationProps & AjvProps) => { + const filteredElements = useMemo(() => { + return elements.filter((category: Category | Categorization) => + isVisible(category, data, undefined, ajv) + ); + }, [elements, data, ajv]); + const categoryLabels = useMemo( - () => - categorization.elements.map((cat) => - deriveLabelForUISchemaElement(cat, t) - ), - [categorization, t] + () => filteredElements.map((cat) => deriveLabelForUISchemaElement(cat, t)), + [filteredElements, t] ); return (