mod-arch-shared 1.10.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ type ThemeAwareFormGroupWrapperProps = {
3
+ children: React.ReactNode;
4
+ label?: string;
5
+ fieldId: string;
6
+ isRequired?: boolean;
7
+ helperTextNode?: React.ReactNode;
8
+ hasError?: boolean;
9
+ className?: string;
10
+ role?: string;
11
+ isInline?: boolean;
12
+ /** Skip wrapping in FormFieldset — use for components like NumberInput */
13
+ skipFieldset?: boolean;
14
+ labelHelp?: React.ReactElement;
15
+ 'data-testid'?: string;
16
+ };
17
+ declare const ThemeAwareFormGroupWrapper: React.FC<ThemeAwareFormGroupWrapperProps>;
18
+ export default ThemeAwareFormGroupWrapper;
19
+ //# sourceMappingURL=ThemeAwareFormGroupWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeAwareFormGroupWrapper.d.ts","sourceRoot":"","sources":["../../components/ThemeAwareFormGroupWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,KAAK,+BAA+B,GAAG;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAgDzE,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { FormGroup } from '@patternfly/react-core';
3
+ import { useThemeContext } from 'mod-arch-kubeflow';
4
+ import FormFieldset from './FormFieldset';
5
+ const ThemeAwareFormGroupWrapper = ({ children, label, fieldId, isRequired, helperTextNode, hasError = false, className, role, isInline, skipFieldset = false, labelHelp, 'data-testid': dataTestId, }) => {
6
+ const { isMUITheme } = useThemeContext();
7
+ const errorClass = `${className || ''} ${hasError ? 'pf-m-error' : ''}`.trim();
8
+ const formGroupProps = {
9
+ className: errorClass,
10
+ label,
11
+ isRequired,
12
+ fieldId,
13
+ role,
14
+ isInline,
15
+ labelHelp,
16
+ 'data-testid': dataTestId,
17
+ };
18
+ if (isMUITheme) {
19
+ return (React.createElement(React.Fragment, null,
20
+ React.createElement(FormGroup, { ...formGroupProps }, skipFieldset ? children : React.createElement(FormFieldset, { component: children, field: label })),
21
+ helperTextNode));
22
+ }
23
+ return (React.createElement(React.Fragment, null,
24
+ React.createElement(FormGroup, { ...formGroupProps },
25
+ children,
26
+ helperTextNode)));
27
+ };
28
+ export default ThemeAwareFormGroupWrapper;
29
+ //# sourceMappingURL=ThemeAwareFormGroupWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeAwareFormGroupWrapper.js","sourceRoot":"","sources":["../../components/ThemeAwareFormGroupWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAkB1C,MAAM,0BAA0B,GAA8C,CAAC,EAC7E,QAAQ,EACR,KAAK,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,YAAY,GAAG,KAAK,EACpB,SAAS,EACT,aAAa,EAAE,UAAU,GAC1B,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAE/E,MAAM,cAAc,GAAG;QACrB,SAAS,EAAE,UAAU;QACrB,KAAK;QACL,UAAU;QACV,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,SAAS;QACT,aAAa,EAAE,UAAU;KAC1B,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL;YACE,oBAAC,SAAS,OAAK,cAAc,IAC1B,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAI,CACpE;YACX,cAAc,CACd,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,CACL;QACE,oBAAC,SAAS,OAAK,cAAc;YAC1B,QAAQ;YACR,cAAc,CACL,CACX,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { SearchInputProps } from '@patternfly/react-core';
3
+ type ThemeAwareSearchInputProps = Omit<SearchInputProps, 'onChange' | 'onClear'> & {
4
+ onChange: (value: string) => void;
5
+ onClear?: () => void;
6
+ /** Label shown in the MUI fieldset legend */
7
+ fieldLabel?: string;
8
+ 'data-testid'?: string;
9
+ };
10
+ declare const ThemeAwareSearchInput: React.FC<ThemeAwareSearchInputProps>;
11
+ export default ThemeAwareSearchInput;
12
+ //# sourceMappingURL=ThemeAwareSearchInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeAwareSearchInput.d.ts","sourceRoot":"","sources":["../../components/ThemeAwareSearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAe,gBAAgB,EAAa,MAAM,wBAAwB,CAAC;AAIlF,KAAK,0BAA0B,GAAG,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG;IACjF,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAuD/D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { SearchInput, TextInput } from '@patternfly/react-core';
3
+ import { useThemeContext } from 'mod-arch-kubeflow';
4
+ import FormFieldset from './FormFieldset';
5
+ const ThemeAwareSearchInput = ({ value, onChange, onClear, fieldLabel, placeholder, isDisabled, className, style, 'aria-label': ariaLabel = 'Search', 'data-testid': dataTestId, ...rest }) => {
6
+ const { isMUITheme } = useThemeContext();
7
+ if (isMUITheme) {
8
+ return (React.createElement(FormFieldset, { className: className, field: fieldLabel, component: React.createElement(TextInput, { ...rest, value: value, type: "text", placeholder: placeholder, onChange: (_event, newValue) => onChange(newValue), isDisabled: isDisabled, "aria-label": ariaLabel, "data-testid": dataTestId, style: style }) }));
9
+ }
10
+ return (React.createElement(SearchInput, { ...rest, className: className, style: style, placeholder: placeholder, value: value, isDisabled: isDisabled, "aria-label": ariaLabel, "data-testid": dataTestId, onChange: (_event, newValue) => onChange(newValue), onClear: (event) => {
11
+ event.stopPropagation();
12
+ onChange('');
13
+ onClear?.();
14
+ } }));
15
+ };
16
+ export default ThemeAwareSearchInput;
17
+ //# sourceMappingURL=ThemeAwareSearchInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeAwareSearchInput.js","sourceRoot":"","sources":["../../components/ThemeAwareSearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAoB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAU1C,MAAM,qBAAqB,GAAyC,CAAC,EACnE,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,KAAK,EACL,YAAY,EAAE,SAAS,GAAG,QAAQ,EAClC,aAAa,EAAE,UAAU,EACzB,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IAEzC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL,oBAAC,YAAY,IACX,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,UAAU,EACjB,SAAS,EACP,oBAAC,SAAS,OACJ,IAAI,EACR,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClD,UAAU,EAAE,UAAU,gBACV,SAAS,iBACR,UAAU,EACvB,KAAK,EAAE,KAAK,GACZ,GAEJ,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,WAAW,OACN,IAAI,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,gBACV,SAAS,iBACR,UAAU,EACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ interface CommonFilterConfig {
3
+ label: string;
4
+ placeholder: string;
5
+ }
6
+ export interface TextFilterConfig extends CommonFilterConfig {
7
+ type: 'text';
8
+ }
9
+ export interface SelectFilterConfig extends CommonFilterConfig {
10
+ type: 'select';
11
+ options: {
12
+ value: string;
13
+ label: string;
14
+ }[];
15
+ }
16
+ export interface MultiselectFilterConfig extends CommonFilterConfig {
17
+ type: 'multiselect';
18
+ options: {
19
+ value: string;
20
+ label: string;
21
+ }[];
22
+ }
23
+ export type FilterConfig = TextFilterConfig | SelectFilterConfig | MultiselectFilterConfig;
24
+ export type FilterType = FilterConfig['type'];
25
+ export type FilterConfigMap<K extends string> = {
26
+ [key in K]: FilterConfig;
27
+ };
28
+ /** Filter value type - string for text/select, string[] for multiselect */
29
+ export type FilterValue = string | string[];
30
+ export type FilterState<K extends string> = Record<K, FilterValue>;
31
+ export interface ToolbarFilterProps<K extends string> {
32
+ filterConfig: FilterConfigMap<K>;
33
+ visibleFilterKeys: readonly K[];
34
+ filterValues: FilterState<K>;
35
+ onFilterChange: (key: K, value: FilterValue) => void;
36
+ onClearAllFilters: () => void;
37
+ toolbarActions?: React.ReactNode;
38
+ testIdPrefix?: string;
39
+ }
40
+ export interface ToolbarFilterRef<K extends string> {
41
+ clearAll: () => void;
42
+ setFilter: (key: K, value: FilterValue) => void;
43
+ }
44
+ declare const ToolbarFilter: <K extends string>(props: ToolbarFilterProps<K> & {
45
+ ref?: React.ForwardedRef<ToolbarFilterRef<K>>;
46
+ }) => React.ReactElement;
47
+ export default ToolbarFilter;
48
+ //# sourceMappingURL=ToolbarFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarFilter.d.ts","sourceRoot":"","sources":["../../components/ToolbarFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyE,MAAM,OAAO,CAAC;AAkB9F,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAE3F,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAE9C,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI;KAC7C,GAAG,IAAI,CAAC,GAAG,YAAY;CACzB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE5C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACjC,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC;IAChC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACjD;AAoXD,QAAA,MAAM,aAAa,EAA2C,CAAC,CAAC,SAAS,MAAM,EAC7E,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,KAC7E,KAAK,CAAC,YAAY,CAAC;AAExB,eAAe,aAAa,CAAC"}
@@ -0,0 +1,187 @@
1
+ import React, { useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';
2
+ import { Toolbar, ToolbarContent, ToolbarGroup, ToolbarFilter as PFToolbarFilter, ToolbarToggleGroup, ToolbarItem, Select, SelectList, SelectOption, MenuToggle, Badge, } from '@patternfly/react-core';
3
+ import { FilterIcon } from '@patternfly/react-icons';
4
+ import ThemeAwareSearchInput from './ThemeAwareSearchInput';
5
+ /**
6
+ * A unified, reusable toolbar filter component supporting text input,
7
+ * select dropdown, and multiselect dropdown filters.
8
+ *
9
+ * @template K - Union of filter key strings
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const filterConfig = {
14
+ * name: { type: 'text', label: 'Name', placeholder: 'Filter by name' },
15
+ * status: {
16
+ * type: 'select',
17
+ * label: 'Status',
18
+ * placeholder: 'Filter by status',
19
+ * options: [
20
+ * { value: 'Active', label: 'Active' },
21
+ * { value: 'Deprecated', label: 'Deprecated' },
22
+ * ],
23
+ * },
24
+ * } as const;
25
+ *
26
+ * const allKeys = ['name', 'status'] as const;
27
+ *
28
+ * <ToolbarFilter
29
+ * filterConfig={filterConfig}
30
+ * visibleFilterKeys={allKeys}
31
+ * filterValues={{ name: '', status: '' }}
32
+ * onFilterChange={(key, value) => handleChange(key, value)}
33
+ * onClearAllFilters={() => handleClearAll()}
34
+ * />
35
+ * ```
36
+ */
37
+ function ToolbarFilterInner({ filterConfig, visibleFilterKeys, filterValues, onFilterChange, onClearAllFilters, toolbarActions, testIdPrefix = 'filter', }, ref) {
38
+ const [activeFilterKey, setActiveFilterKey] = useState(visibleFilterKeys.length > 0 ? visibleFilterKeys[0] : undefined);
39
+ const [isAttributeMenuOpen, setIsAttributeMenuOpen] = useState(false);
40
+ const [isSelectFilterOpen, setIsSelectFilterOpen] = useState(false);
41
+ const [isMultiselectFilterOpen, setIsMultiselectFilterOpen] = useState(false);
42
+ const activeFilterLabel = activeFilterKey !== undefined ? filterConfig[activeFilterKey].label : '';
43
+ useImperativeHandle(ref, () => ({
44
+ clearAll: onClearAllFilters,
45
+ setFilter: onFilterChange,
46
+ }));
47
+ useEffect(() => {
48
+ if (visibleFilterKeys.length === 0) {
49
+ setActiveFilterKey(undefined);
50
+ return;
51
+ }
52
+ if (activeFilterKey === undefined || !visibleFilterKeys.includes(activeFilterKey)) {
53
+ setActiveFilterKey(visibleFilterKeys[0]);
54
+ }
55
+ }, [activeFilterKey, visibleFilterKeys]);
56
+ const onAttributeSelect = useCallback((_ev, itemId) => {
57
+ const matched = visibleFilterKeys.find((k) => k === itemId);
58
+ if (matched !== undefined) {
59
+ setActiveFilterKey(matched);
60
+ }
61
+ setIsAttributeMenuOpen(false);
62
+ }, [visibleFilterKeys]);
63
+ const onAttributeToggle = useCallback(() => {
64
+ setIsAttributeMenuOpen((prev) => !prev);
65
+ }, []);
66
+ const attributeDropdown = useMemo(() => (React.createElement(Select, { isOpen: isAttributeMenuOpen, selected: activeFilterKey, onSelect: onAttributeSelect, onOpenChange: (isOpen) => setIsAttributeMenuOpen(isOpen), toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: onAttributeToggle, isExpanded: isAttributeMenuOpen, icon: React.createElement(FilterIcon, null), "data-testid": `${testIdPrefix}-dropdown` }, activeFilterLabel)) },
67
+ React.createElement(SelectList, null, visibleFilterKeys.map((key) => (React.createElement(SelectOption, { key: key, value: key, "data-testid": `${testIdPrefix}-dropdown-${key}` }, filterConfig[key].label)))))), [
68
+ isAttributeMenuOpen,
69
+ activeFilterKey,
70
+ activeFilterLabel,
71
+ onAttributeSelect,
72
+ onAttributeToggle,
73
+ visibleFilterKeys,
74
+ filterConfig,
75
+ testIdPrefix,
76
+ ]);
77
+ const renderTextFilter = useCallback((key, config) => {
78
+ const value = filterValues[key];
79
+ const textValue = typeof value === 'string' ? value : '';
80
+ return (React.createElement(ThemeAwareSearchInput, { value: textValue, onChange: (newValue) => onFilterChange(key, newValue), placeholder: config.placeholder, fieldLabel: config.label, "aria-label": config.placeholder, "data-testid": `${testIdPrefix}-${key}-input` }));
81
+ }, [filterValues, onFilterChange, testIdPrefix]);
82
+ const onSelectFilterChange = useCallback((key) => (_ev, value) => {
83
+ if (value === undefined) {
84
+ return;
85
+ }
86
+ onFilterChange(key, value.toString());
87
+ setIsSelectFilterOpen(false);
88
+ }, [onFilterChange]);
89
+ const renderSelectFilter = useCallback((key, config) => {
90
+ const value = filterValues[key];
91
+ const selected = typeof value === 'string' ? value : '';
92
+ const displayValue = selected
93
+ ? (config.options.find((option) => option.value === selected)?.label ?? selected)
94
+ : config.placeholder;
95
+ return (React.createElement(Select, { isOpen: isSelectFilterOpen && activeFilterKey === key, selected: selected, onSelect: onSelectFilterChange(key), onOpenChange: (isOpen) => setIsSelectFilterOpen(isOpen), toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: () => setIsSelectFilterOpen((prev) => !prev), isExpanded: isSelectFilterOpen && activeFilterKey === key, style: { width: '200px' }, "data-testid": `${testIdPrefix}-${key}-dropdown` }, displayValue)) },
96
+ React.createElement(SelectList, null, config.options.map((option) => (React.createElement(SelectOption, { key: option.value, value: option.value, "data-testid": `${testIdPrefix}-${key}-${option.value.toLowerCase().replace(/[^a-z0-9]+/g, '-')}` }, option.label))))));
97
+ }, [isSelectFilterOpen, activeFilterKey, filterValues, onSelectFilterChange, testIdPrefix]);
98
+ const renderMultiselectFilter = useCallback((key, config) => {
99
+ const value = filterValues[key];
100
+ const selectedValues = Array.isArray(value) ? value : [];
101
+ const onToggleSelection = (selectedValue) => {
102
+ const newValues = selectedValues.includes(selectedValue)
103
+ ? selectedValues.filter((v) => v !== selectedValue)
104
+ : [...selectedValues, selectedValue];
105
+ onFilterChange(key, newValues);
106
+ };
107
+ return (React.createElement(Select, { role: "menu", isOpen: isMultiselectFilterOpen && activeFilterKey === key, selected: selectedValues, onSelect: (_ev, selection) => {
108
+ if (selection !== undefined) {
109
+ onToggleSelection(selection.toString());
110
+ }
111
+ }, onOpenChange: (isOpen) => setIsMultiselectFilterOpen(isOpen), toggle: (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: () => setIsMultiselectFilterOpen((prev) => !prev), isExpanded: isMultiselectFilterOpen && activeFilterKey === key, style: { width: '200px' }, "data-testid": `${testIdPrefix}-${key}-dropdown`, badge: selectedValues.length > 0 ? (React.createElement(Badge, { isRead: true }, selectedValues.length)) : undefined }, config.placeholder)) },
112
+ React.createElement(SelectList, null, config.options.map((option) => (React.createElement(SelectOption, { key: option.value, value: option.value, hasCheckbox: true, isSelected: selectedValues.includes(option.value), "data-testid": `${testIdPrefix}-${key}-${option.value.toLowerCase().replace(/[^a-z0-9]+/g, '-')}` }, option.label))))));
113
+ }, [isMultiselectFilterOpen, activeFilterKey, filterValues, onFilterChange, testIdPrefix]);
114
+ const renderFilterInput = useCallback((key) => {
115
+ const config = filterConfig[key];
116
+ if (config.type === 'text') {
117
+ return renderTextFilter(key, config);
118
+ }
119
+ if (config.type === 'multiselect') {
120
+ return renderMultiselectFilter(key, config);
121
+ }
122
+ return renderSelectFilter(key, config);
123
+ }, [filterConfig, renderTextFilter, renderSelectFilter, renderMultiselectFilter]);
124
+ // For text filters the raw value is the display string, so return plain strings.
125
+ // For select/multiselect, embed the raw option value in chip.key so the delete
126
+ // handler can remove the correct entry without a label→value reverse lookup.
127
+ const getFilterLabels = (key) => {
128
+ const config = filterConfig[key];
129
+ const value = filterValues[key];
130
+ if (!('options' in config)) {
131
+ if (Array.isArray(value)) {
132
+ return value;
133
+ }
134
+ return value ? [value] : [];
135
+ }
136
+ const toChip = (rawValue) => ({
137
+ key: rawValue,
138
+ node: config.options.find((opt) => opt.value === rawValue)?.label ?? rawValue,
139
+ });
140
+ if (Array.isArray(value)) {
141
+ return value.map(toChip);
142
+ }
143
+ return value ? [toChip(value)] : [];
144
+ };
145
+ // labelToDelete is always the raw value: plain string for text filters,
146
+ // chip.key (raw option value) for select/multiselect — no reverse lookup needed.
147
+ const handleDeleteLabel = (key, labelToDelete) => {
148
+ const config = filterConfig[key];
149
+ if (config.type === 'multiselect' && labelToDelete !== undefined) {
150
+ const value = filterValues[key];
151
+ const currentValues = Array.isArray(value) ? value : [];
152
+ onFilterChange(key, currentValues.filter((v) => v !== labelToDelete));
153
+ }
154
+ else {
155
+ onFilterChange(key, config.type === 'multiselect' ? [] : '');
156
+ }
157
+ };
158
+ // Object.keys returns string[] by design, but filterConfig is FilterConfigMap<K>
159
+ // so its keys are exactly K — the cast is structurally correct here.
160
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
161
+ const hiddenActiveKeys = Object.keys(filterConfig).filter((key) => {
162
+ const value = filterValues[key];
163
+ const hasValue = Array.isArray(value) ? value.length > 0 : Boolean(value);
164
+ return !visibleFilterKeys.includes(key) && hasValue;
165
+ });
166
+ return (React.createElement(Toolbar, { id: `${testIdPrefix}-toolbar`, clearAllFilters: onClearAllFilters, "data-testid": `${testIdPrefix}-toolbar` },
167
+ React.createElement(ToolbarContent, null,
168
+ React.createElement(ToolbarToggleGroup, { toggleIcon: React.createElement(FilterIcon, null), breakpoint: "xl" },
169
+ React.createElement(ToolbarGroup, { variant: "filter-group" },
170
+ visibleFilterKeys.length > 0 && (React.createElement(React.Fragment, null,
171
+ React.createElement(ToolbarItem, null, attributeDropdown),
172
+ visibleFilterKeys.map((key) => (React.createElement(PFToolbarFilter, { key: key, labels: getFilterLabels(key), deleteLabel: (_category, label) => {
173
+ const labelStr = typeof label === 'string' ? label : label.key;
174
+ handleDeleteLabel(key, labelStr);
175
+ }, deleteLabelGroup: () => handleDeleteLabel(key), categoryName: filterConfig[key].label, showToolbarItem: activeFilterKey === key }, renderFilterInput(key)))))),
176
+ hiddenActiveKeys.map((key) => (React.createElement(PFToolbarFilter, { key: key, labels: getFilterLabels(key), deleteLabel: (_category, label) => {
177
+ const labelStr = typeof label === 'string' ? label : label.key;
178
+ handleDeleteLabel(key, labelStr);
179
+ }, deleteLabelGroup: () => handleDeleteLabel(key), categoryName: filterConfig[key].label }, null))),
180
+ toolbarActions)))));
181
+ }
182
+ // Standard pattern for generic forwardRef components in TypeScript — the cast
183
+ // is required to preserve the generic parameter K through the forwardRef wrapper.
184
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
185
+ const ToolbarFilter = React.forwardRef(ToolbarFilterInner);
186
+ export default ToolbarFilter;
187
+ //# sourceMappingURL=ToolbarFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarFilter.js","sourceRoot":"","sources":["../../components/ToolbarFilter.tsx"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ export { default as EditableTextDescriptionListGroup } from './EditableTextDescr
10
10
  export { default as EmptyStateErrorMessage } from './EmptyStateErrorMessage';
11
11
  export { default as FieldGroupHelpLabelIcon } from './FieldGroupHelpLabelIcon';
12
12
  export { default as FormFieldset } from './FormFieldset';
13
+ export { default as ThemeAwareFormGroupWrapper } from './ThemeAwareFormGroupWrapper';
14
+ export { default as ThemeAwareSearchInput } from './ThemeAwareSearchInput';
15
+ export { default as ToolbarFilter } from './ToolbarFilter';
16
+ export type { FilterConfig, FilterConfigMap, FilterState, FilterType, FilterValue, MultiselectFilterConfig, SelectFilterConfig, TextFilterConfig, ToolbarFilterProps, ToolbarFilterRef, } from './ToolbarFilter';
13
17
  export { default as InlineTruncatedClipboardCopy } from './InlineTruncatedClipboardCopy';
14
18
  export { default as KubeflowDocs } from './KubeflowDocs';
15
19
  export { default as MarkdownView } from './MarkdownView';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../components/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGvE,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../components/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGvE,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
@@ -11,6 +11,9 @@ export { default as EditableTextDescriptionListGroup } from './EditableTextDescr
11
11
  export { default as EmptyStateErrorMessage } from './EmptyStateErrorMessage';
12
12
  export { default as FieldGroupHelpLabelIcon } from './FieldGroupHelpLabelIcon';
13
13
  export { default as FormFieldset } from './FormFieldset';
14
+ export { default as ThemeAwareFormGroupWrapper } from './ThemeAwareFormGroupWrapper';
15
+ export { default as ThemeAwareSearchInput } from './ThemeAwareSearchInput';
16
+ export { default as ToolbarFilter } from './ToolbarFilter';
14
17
  export { default as InlineTruncatedClipboardCopy } from './InlineTruncatedClipboardCopy';
15
18
  export { default as KubeflowDocs } from './KubeflowDocs';
16
19
  export { default as MarkdownView } from './MarkdownView';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../components/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,sCAAsC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../components/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAa3D,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,sCAAsC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-arch-shared",
3
- "version": "1.10.1",
3
+ "version": "1.11.0",
4
4
  "description": "Shared UI components and utilities for modular architecture micro-frontend projects",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -52,7 +52,8 @@
52
52
  "access": "public"
53
53
  },
54
54
  "peerDependencies": {
55
- "mod-arch-core": ">=1.10.1",
55
+ "mod-arch-core": ">=1.11.0",
56
+ "mod-arch-kubeflow": ">=1.11.0",
56
57
  "react": ">=16.8.0",
57
58
  "react-dom": ">=16.8.0",
58
59
  "react-router-dom": ">=6.4.0"
@@ -87,7 +88,8 @@
87
88
  "ts-jest": "^29.2.6",
88
89
  "tsc-alias": "^1.8.15",
89
90
  "typescript": "^5.0.4",
90
- "mod-arch-core": "1.10.1"
91
+ "mod-arch-core": "1.11.0",
92
+ "mod-arch-kubeflow": "1.11.0"
91
93
  },
92
94
  "dependencies": {
93
95
  "@patternfly/patternfly": "^6.4.0",