@pega/cosmos-react-condition-builder 9.0.0-build.29.4 → 9.0.0-build.29.6
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAa,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYnG,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEd,cAAc,
|
|
1
|
+
{"version":3,"file":"ValueSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAa,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYnG,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEd,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,UAAU,kBAAkB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,CACvF,SAAQ,SAAS,EACf,cAAc;IAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,2BAA2B;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,kCAAkC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,oDAAoD;IACpD,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,wBAAwB;IACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,kDAAkD;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACvD;AAgCD,6EAA6E;AAC7E,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,wIAe3F,kBAAkB,CAAC,CAAC,CAAC,4CA+OvB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -38,13 +38,14 @@ const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlu
|
|
|
38
38
|
const [items, setItems] = useState([]);
|
|
39
39
|
const [selected, setSelected] = useState();
|
|
40
40
|
const fetchPossibleValues = useCallback((isFirstChunkLoad, subscribed = true) => {
|
|
41
|
-
|
|
41
|
+
const { possibleValues: fn } = selectedField;
|
|
42
|
+
if (typeof fn === 'function' && (isFirstChunkLoad || !loading)) {
|
|
42
43
|
setLoading(true);
|
|
43
44
|
if (isFirstChunkLoad) {
|
|
44
45
|
setApiError?.(null);
|
|
45
46
|
setItems([]);
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
fn({
|
|
48
49
|
searchString: filterValue,
|
|
49
50
|
comparator,
|
|
50
51
|
lhs: selectedField,
|
|
@@ -67,15 +68,7 @@ const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlu
|
|
|
67
68
|
}
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
|
-
}, [
|
|
71
|
-
isSelectedFieldPossibleValuesFunction,
|
|
72
|
-
loading,
|
|
73
|
-
items,
|
|
74
|
-
selectedField,
|
|
75
|
-
filterValue,
|
|
76
|
-
comparator,
|
|
77
|
-
values
|
|
78
|
-
]);
|
|
71
|
+
}, [loading, items, selectedField, filterValue, comparator, values]);
|
|
79
72
|
useEffect(() => {
|
|
80
73
|
let subscribed = true;
|
|
81
74
|
if (hasProp(rhs, 'parameterId')) {
|
|
@@ -147,7 +140,7 @@ const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlu
|
|
|
147
140
|
}
|
|
148
141
|
else if (Array.isArray(possibleValues)) {
|
|
149
142
|
const options = filteredIds.map(id => {
|
|
150
|
-
const optionLabel = possibleValues.find(opt => typeof opt === 'object' && opt.id === id);
|
|
143
|
+
const optionLabel = possibleValues.find((opt) => typeof opt === 'object' && opt.id === id);
|
|
151
144
|
return { id, text: optionLabel?.primary ?? id };
|
|
152
145
|
});
|
|
153
146
|
setSelectedFn(options);
|
|
@@ -172,7 +165,7 @@ const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlu
|
|
|
172
165
|
else if (Array.isArray(values) && values.length > 0) {
|
|
173
166
|
const onRemove = (value) => {
|
|
174
167
|
onChange((() => {
|
|
175
|
-
const current = values;
|
|
168
|
+
const current = Array.isArray(values) ? values : [];
|
|
176
169
|
return current.filter(selection => selection !== value);
|
|
177
170
|
})());
|
|
178
171
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueSelector.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { BaseProps, ComboBoxProps, MenuProps, NoChildrenProp } from '@pega/cosmos-react-core';\nimport {\n ComboBox,\n createStringMatcher,\n hasProp,\n Icon,\n useI18n,\n usePrevious\n} from '@pega/cosmos-react-core';\nimport type { Selected } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\nimport { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';\n\nimport type {\n LeafCondition,\n ParameterValue,\n ReferenceValue,\n ValueSelection,\n ValueSelectionFunction\n} from '../ConditionBuilder.types';\nimport type { Comparator } from '../core/types';\n\nconst CHUNK_SIZE = 10;\n\ninterface ValueSelectorProps<T extends { id: string; possibleValues?: ValueSelection<T> }>\n extends BaseProps,\n NoChildrenProp {\n mode: ComboBoxProps['mode'];\n /** Previous selection */\n values: string[] | string | undefined;\n /** Current selected LHS */\n selectedField: T;\n /** Current selected comparator */\n comparator: Comparator;\n /** Rhs for the condition */\n rhs: NonNullable<LeafCondition['rhs']>;\n /** Passed Parameters array for Rhstype PARAMETER */\n parameters: ParameterValue[];\n /** Callback for changes */\n onChange: (selection: string[] | string) => void;\n /** Callback for blur */\n onBlur?: (selection?: string[] | string) => void;\n /** Callback for clear */\n onClear?: () => void;\n /** Used to indicate any errors on the control */\n status?: 'error';\n /** Placeholder text to display in empty control */\n placeholder?: ComboBoxProps['placeholder'];\n /** Custom label for input. Makes label visible if provided. */\n label?: ComboBoxProps['label'];\n /** Guidance text that appears below the input. */\n info?: ComboBoxProps['info'];\n /** sets status and info */\n setApiError?: Dispatch<SetStateAction<string | null>>;\n}\n\nconst getFilteredOptions = (\n options: (string | ParameterValue | ReferenceValue)[],\n filterValue: string\n) => {\n const matcher = createStringMatcher(filterValue);\n return options.filter(option => {\n if (typeof option === 'object') return matcher.test(option.primary);\n return matcher.test(option);\n });\n};\n\nconst getItems = (\n item: (string | ParameterValue | ReferenceValue)[],\n values: string[] | string | undefined\n) => {\n return item.map(option => {\n if (typeof option === 'object') {\n return {\n ...option,\n selected: Array.isArray(values) ? values.includes(option.id) : values === option.id\n };\n }\n return {\n id: option,\n primary: option,\n selected: Array.isArray(values) ? values.includes(option) : values === option\n };\n });\n};\n\n/** A control for selecting multiple values using checkboxes in an overlay */\nconst ValueSelector = <F extends object & { id: string; possibleValues?: ValueSelection<F> }>({\n values,\n selectedField,\n comparator,\n rhs,\n onChange,\n onBlur,\n onClear,\n status,\n mode,\n parameters,\n placeholder,\n label,\n info,\n setApiError\n}: ValueSelectorProps<F>) => {\n const t = useI18n();\n\n const inputRef = useRef<HTMLDivElement>(null);\n\n const [filterValue, setFilterValue] = useState('');\n const prevFilterValue = usePrevious(filterValue);\n const [loading, setLoading] = useState(false);\n const isSelectedFieldPossibleValuesFunction =\n hasProp(selectedField, 'possibleValues') && typeof selectedField.possibleValues === 'function';\n const [hasMore, setHasMore] = useState(isSelectedFieldPossibleValuesFunction);\n const [items, setItems] = useState<MenuProps['items']>([]);\n const [selected, setSelected] = useState<ComboBoxProps['selected']>();\n\n const fetchPossibleValues = useCallback(\n (isFirstChunkLoad: boolean, subscribed: boolean = true) => {\n if (isSelectedFieldPossibleValuesFunction && (isFirstChunkLoad || !loading)) {\n setLoading(true);\n if (isFirstChunkLoad) {\n setApiError?.(null);\n setItems([]);\n }\n (selectedField.possibleValues as ValueSelectionFunction<F>)({\n searchString: filterValue,\n comparator,\n lhs: selectedField,\n pageNumber: isFirstChunkLoad ? 1 : Math.floor(items.length / CHUNK_SIZE) + 1,\n pageSize: CHUNK_SIZE\n })\n .then(response => {\n if (subscribed) {\n setApiError?.(null);\n setHasMore(response.length >= CHUNK_SIZE);\n const newItems = getItems(response, values);\n setItems(curr => (isFirstChunkLoad ? newItems : [...curr, ...newItems]));\n setLoading(false);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n setLoading(false);\n }\n });\n }\n },\n [\n isSelectedFieldPossibleValuesFunction,\n loading,\n items,\n selectedField,\n filterValue,\n comparator,\n values\n ]\n );\n\n useEffect(() => {\n let subscribed = true;\n\n if (hasProp(rhs, 'parameterId')) {\n setItems(getItems(getFilteredOptions(parameters, filterValue), values));\n } else if (hasProp(selectedField, 'possibleValues')) {\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n if (prevFilterValue !== filterValue) {\n fetchPossibleValues(true, subscribed);\n } else {\n setItems(curr =>\n curr.map(i => ({\n ...i,\n selected: Array.isArray(values) ? values.includes(i.id) : values === i.id\n }))\n );\n }\n } else if (Array.isArray(possibleValues)) {\n setItems(getItems(getFilteredOptions(possibleValues, filterValue), values));\n } else {\n setItems([]);\n }\n }\n\n return () => {\n subscribed = false;\n };\n }, [\n rhs,\n parameters,\n filterValue,\n values,\n selectedField.id,\n selectedField.possibleValues,\n comparator\n ]);\n\n useEffect(() => {\n setFilterValue('');\n }, [selectedField, comparator]);\n\n useEffect(() => {\n let subscribed = true;\n\n const handlePossibleValues = (ids: string[], setSelectedFn: (options: Selected[]) => void) => {\n const filteredIds = ids.filter(id => id !== '');\n if (filteredIds.length === 0) {\n setSelectedFn([]);\n return;\n }\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n (possibleValues as ValueSelectionFunction<F>)({\n lhs: selectedField,\n ids: filteredIds\n })\n .then(response => {\n if (subscribed) {\n const options = response.map(option =>\n typeof option === 'object'\n ? { id: option.id, text: option.primary }\n : { id: option, text: option }\n );\n setSelectedFn(options);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n return [];\n }\n });\n } else if (Array.isArray(possibleValues)) {\n const options = filteredIds.map(id => {\n const optionLabel = possibleValues.find(\n opt => typeof opt === 'object' && opt.id === id\n ) as ReferenceValue;\n return { id, text: optionLabel?.primary ?? id };\n });\n setSelectedFn(options);\n }\n };\n\n if (typeof values === 'string' && values) {\n if (hasProp(rhs, 'parameterId')) {\n const selectedItem = parameters.find(item => item.id === values);\n setSelected({\n items: { id: values, text: selectedItem !== undefined ? selectedItem.primary : values }\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues([values], options => setSelected({ items: options[0] }));\n } else {\n setSelected({\n items: { id: values, text: values }\n });\n }\n } else if (Array.isArray(values) && values.length > 0) {\n const onRemove = (value: string) => {\n onChange(\n (() => {\n const current = values as string[];\n return current.filter(selection => selection !== value) as string | string[];\n })()\n );\n };\n if (hasProp(rhs, 'parameterId')) {\n setSelected({\n items: values.map(s => {\n const optionLabel = parameters.find(opt => typeof opt === 'object' && opt.id === s);\n return { id: s, text: optionLabel?.primary ?? s };\n }),\n onRemove\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues(values, options => setSelected({ items: options, onRemove }));\n } else {\n setSelected({ items: values.map(s => ({ id: s, text: s })), onRemove });\n }\n } else {\n setSelected(undefined);\n }\n\n return () => {\n subscribed = false;\n };\n }, [values, rhs, parameters, selectedField.id, selectedField.possibleValues]);\n\n return (\n <ComboBox\n ref={inputRef}\n mode={mode}\n label={label ?? t('condition_builder_possible_values_label')}\n placeholder={placeholder}\n value={filterValue}\n onChange={e => {\n setFilterValue(e.target.value);\n if (mode === 'single-select' && !e.target.value) onChange('');\n }}\n onBlur={() => {\n onBlur?.(values);\n setFilterValue('');\n }}\n menu={{\n items,\n onItemClick: id => {\n if (mode === 'single-select') {\n setFilterValue('');\n onChange(id);\n } else {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.includes(id)\n ? current.filter(selection => selection !== id)\n : [...current, id];\n })()\n );\n }\n },\n loading,\n loadMore: hasMore ? () => fetchPossibleValues(false) : undefined,\n accent: createStringMatcher(filterValue)\n }}\n onMenuOpen={() => fetchPossibleValues(true)}\n selected={selected}\n status={status}\n info={info}\n actions={\n onClear && (\n <StyledClearButton\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n onChange(mode === 'single-select' ? '' : []);\n onClear();\n if (inputRef.current) {\n const inputEl = inputRef.current.querySelector('input');\n inputEl?.focus();\n }\n }}\n >\n <Icon name='times' />\n </StyledClearButton>\n )\n }\n />\n );\n};\n\nexport default ValueSelector;\n"]}
|
|
1
|
+
{"version":3,"file":"ValueSelector.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { BaseProps, ComboBoxProps, MenuProps, NoChildrenProp } from '@pega/cosmos-react-core';\nimport {\n ComboBox,\n createStringMatcher,\n hasProp,\n Icon,\n useI18n,\n usePrevious\n} from '@pega/cosmos-react-core';\nimport type { Selected } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\nimport { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';\n\nimport type {\n LeafCondition,\n ParameterValue,\n ReferenceValue,\n ValueSelection\n} from '../ConditionBuilder.types';\nimport type { Comparator } from '../core/types';\n\nconst CHUNK_SIZE = 10;\n\ninterface ValueSelectorProps<T extends { id: string; possibleValues?: ValueSelection<T> }>\n extends BaseProps,\n NoChildrenProp {\n mode: ComboBoxProps['mode'];\n /** Previous selection */\n values: string[] | string | undefined;\n /** Current selected LHS */\n selectedField: T;\n /** Current selected comparator */\n comparator: Comparator;\n /** Rhs for the condition */\n rhs: NonNullable<LeafCondition['rhs']>;\n /** Passed Parameters array for Rhstype PARAMETER */\n parameters: ParameterValue[];\n /** Callback for changes */\n onChange: (selection: string[] | string) => void;\n /** Callback for blur */\n onBlur?: (selection?: string[] | string) => void;\n /** Callback for clear */\n onClear?: () => void;\n /** Used to indicate any errors on the control */\n status?: 'error';\n /** Placeholder text to display in empty control */\n placeholder?: ComboBoxProps['placeholder'];\n /** Custom label for input. Makes label visible if provided. */\n label?: ComboBoxProps['label'];\n /** Guidance text that appears below the input. */\n info?: ComboBoxProps['info'];\n /** sets status and info */\n setApiError?: Dispatch<SetStateAction<string | null>>;\n}\n\nconst getFilteredOptions = (\n options: (string | ParameterValue | ReferenceValue)[],\n filterValue: string\n) => {\n const matcher = createStringMatcher(filterValue);\n return options.filter(option => {\n if (typeof option === 'object') return matcher.test(option.primary);\n return matcher.test(option);\n });\n};\n\nconst getItems = (\n item: (string | ParameterValue | ReferenceValue)[],\n values: string[] | string | undefined\n) => {\n return item.map(option => {\n if (typeof option === 'object') {\n return {\n ...option,\n selected: Array.isArray(values) ? values.includes(option.id) : values === option.id\n };\n }\n return {\n id: option,\n primary: option,\n selected: Array.isArray(values) ? values.includes(option) : values === option\n };\n });\n};\n\n/** A control for selecting multiple values using checkboxes in an overlay */\nconst ValueSelector = <F extends object & { id: string; possibleValues?: ValueSelection<F> }>({\n values,\n selectedField,\n comparator,\n rhs,\n onChange,\n onBlur,\n onClear,\n status,\n mode,\n parameters,\n placeholder,\n label,\n info,\n setApiError\n}: ValueSelectorProps<F>) => {\n const t = useI18n();\n\n const inputRef = useRef<HTMLDivElement>(null);\n\n const [filterValue, setFilterValue] = useState('');\n const prevFilterValue = usePrevious(filterValue);\n const [loading, setLoading] = useState(false);\n const isSelectedFieldPossibleValuesFunction =\n hasProp(selectedField, 'possibleValues') && typeof selectedField.possibleValues === 'function';\n const [hasMore, setHasMore] = useState(isSelectedFieldPossibleValuesFunction);\n const [items, setItems] = useState<MenuProps['items']>([]);\n const [selected, setSelected] = useState<ComboBoxProps['selected']>();\n\n const fetchPossibleValues = useCallback(\n (isFirstChunkLoad: boolean, subscribed: boolean = true) => {\n const { possibleValues: fn } = selectedField;\n if (typeof fn === 'function' && (isFirstChunkLoad || !loading)) {\n setLoading(true);\n if (isFirstChunkLoad) {\n setApiError?.(null);\n setItems([]);\n }\n fn({\n searchString: filterValue,\n comparator,\n lhs: selectedField,\n pageNumber: isFirstChunkLoad ? 1 : Math.floor(items.length / CHUNK_SIZE) + 1,\n pageSize: CHUNK_SIZE\n })\n .then(response => {\n if (subscribed) {\n setApiError?.(null);\n setHasMore(response.length >= CHUNK_SIZE);\n const newItems = getItems(response, values);\n setItems(curr => (isFirstChunkLoad ? newItems : [...curr, ...newItems]));\n setLoading(false);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n setLoading(false);\n }\n });\n }\n },\n [loading, items, selectedField, filterValue, comparator, values]\n );\n\n useEffect(() => {\n let subscribed = true;\n\n if (hasProp(rhs, 'parameterId')) {\n setItems(getItems(getFilteredOptions(parameters, filterValue), values));\n } else if (hasProp(selectedField, 'possibleValues')) {\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n if (prevFilterValue !== filterValue) {\n fetchPossibleValues(true, subscribed);\n } else {\n setItems(curr =>\n curr.map(i => ({\n ...i,\n selected: Array.isArray(values) ? values.includes(i.id) : values === i.id\n }))\n );\n }\n } else if (Array.isArray(possibleValues)) {\n setItems(getItems(getFilteredOptions(possibleValues, filterValue), values));\n } else {\n setItems([]);\n }\n }\n\n return () => {\n subscribed = false;\n };\n }, [\n rhs,\n parameters,\n filterValue,\n values,\n selectedField.id,\n selectedField.possibleValues,\n comparator\n ]);\n\n useEffect(() => {\n setFilterValue('');\n }, [selectedField, comparator]);\n\n useEffect(() => {\n let subscribed = true;\n\n const handlePossibleValues = (ids: string[], setSelectedFn: (options: Selected[]) => void) => {\n const filteredIds = ids.filter(id => id !== '');\n if (filteredIds.length === 0) {\n setSelectedFn([]);\n return;\n }\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n possibleValues({\n lhs: selectedField,\n ids: filteredIds\n })\n .then(response => {\n if (subscribed) {\n const options = response.map(option =>\n typeof option === 'object'\n ? { id: option.id, text: option.primary }\n : { id: option, text: option }\n );\n setSelectedFn(options);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n return [];\n }\n });\n } else if (Array.isArray(possibleValues)) {\n const options = filteredIds.map(id => {\n const optionLabel = possibleValues.find(\n (opt): opt is ReferenceValue => typeof opt === 'object' && opt.id === id\n );\n return { id, text: optionLabel?.primary ?? id };\n });\n setSelectedFn(options);\n }\n };\n\n if (typeof values === 'string' && values) {\n if (hasProp(rhs, 'parameterId')) {\n const selectedItem = parameters.find(item => item.id === values);\n setSelected({\n items: { id: values, text: selectedItem !== undefined ? selectedItem.primary : values }\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues([values], options => setSelected({ items: options[0] }));\n } else {\n setSelected({\n items: { id: values, text: values }\n });\n }\n } else if (Array.isArray(values) && values.length > 0) {\n const onRemove = (value: string) => {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.filter(selection => selection !== value);\n })()\n );\n };\n if (hasProp(rhs, 'parameterId')) {\n setSelected({\n items: values.map(s => {\n const optionLabel = parameters.find(opt => typeof opt === 'object' && opt.id === s);\n return { id: s, text: optionLabel?.primary ?? s };\n }),\n onRemove\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues(values, options => setSelected({ items: options, onRemove }));\n } else {\n setSelected({ items: values.map(s => ({ id: s, text: s })), onRemove });\n }\n } else {\n setSelected(undefined);\n }\n\n return () => {\n subscribed = false;\n };\n }, [values, rhs, parameters, selectedField.id, selectedField.possibleValues]);\n\n return (\n <ComboBox\n ref={inputRef}\n mode={mode}\n label={label ?? t('condition_builder_possible_values_label')}\n placeholder={placeholder}\n value={filterValue}\n onChange={e => {\n setFilterValue(e.target.value);\n if (mode === 'single-select' && !e.target.value) onChange('');\n }}\n onBlur={() => {\n onBlur?.(values);\n setFilterValue('');\n }}\n menu={{\n items,\n onItemClick: id => {\n if (mode === 'single-select') {\n setFilterValue('');\n onChange(id);\n } else {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.includes(id)\n ? current.filter(selection => selection !== id)\n : [...current, id];\n })()\n );\n }\n },\n loading,\n loadMore: hasMore ? () => fetchPossibleValues(false) : undefined,\n accent: createStringMatcher(filterValue)\n }}\n onMenuOpen={() => fetchPossibleValues(true)}\n selected={selected}\n status={status}\n info={info}\n actions={\n onClear && (\n <StyledClearButton\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n onChange(mode === 'single-select' ? '' : []);\n onClear();\n if (inputRef.current) {\n const inputEl = inputRef.current.querySelector('input');\n inputEl?.focus();\n }\n }}\n >\n <Icon name='times' />\n </StyledClearButton>\n )\n }\n />\n );\n};\n\nexport default ValueSelector;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/cosmos-react-condition-builder",
|
|
3
|
-
"version": "9.0.0-build.29.
|
|
3
|
+
"version": "9.0.0-build.29.6",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"author": "Pegasystems",
|
|
6
6
|
"sideEffects": [
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"build": "tsc -b tsconfig.build.json"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@pega/cosmos-react-core": "9.0.0-build.29.
|
|
20
|
+
"@pega/cosmos-react-core": "9.0.0-build.29.6",
|
|
21
21
|
"@types/react": "^17.0.62 || ^18.3.3",
|
|
22
22
|
"@types/react-dom": "^17.0.20 || ^18.3.0",
|
|
23
23
|
"dayjs": "^1.11.13",
|