@pega/lists-react 9.10.0 → 9.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.
- package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js +2 -1
- package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js.map +1 -1
- package/lib/Core/Components/Filters/SelectFilter.d.ts.map +1 -1
- package/lib/Core/Components/Filters/SelectFilter.js +19 -1
- package/lib/Core/Components/Filters/SelectFilter.js.map +1 -1
- package/lib/Core/Components/Toolbar/utils/utils.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/utils/utils.js +10 -4
- package/lib/Core/Components/Toolbar/utils/utils.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonalizationCreateEdit.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/PersonalizationCreateEdit.jsx"],"names":[],"mappings":"AAOA;;;;;
|
|
1
|
+
{"version":3,"file":"PersonalizationCreateEdit.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/PersonalizationCreateEdit.jsx"],"names":[],"mappings":"AAOA;;;;;4CAsHC;;;;;;;;;;;QAUW,mCAAQ;;;;;;;sBAtIE,YAAY"}
|
|
@@ -54,6 +54,8 @@ export default function PersonalizationCreateEdit({ view, onFinish, editing = fa
|
|
|
54
54
|
setViewName(e.target.value);
|
|
55
55
|
};
|
|
56
56
|
const onSubmit = () => {
|
|
57
|
+
if (error)
|
|
58
|
+
return;
|
|
57
59
|
const trimmedName = viewName.trim();
|
|
58
60
|
if (!trimmedName) {
|
|
59
61
|
viewNameRef.current.focus();
|
|
@@ -72,7 +74,6 @@ export default function PersonalizationCreateEdit({ view, onFinish, editing = fa
|
|
|
72
74
|
view.type.createPersonalization(trimmedName, markAsDefault || null);
|
|
73
75
|
}
|
|
74
76
|
onFinish();
|
|
75
|
-
return undefined;
|
|
76
77
|
};
|
|
77
78
|
return (_jsx(FormDialog, { heading: translate(editing ? 'Edit customized view' : 'Add customized view'), onCancel: onFinish, onSubmit: onSubmit, target: target, children: _jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(Input, { ref: viewNameRef, name: 'viewName', required: true, label: translate('View name'), autoComplete: 'off', status: error ? 'error' : undefined, info: error, value: viewName, onChange: onChange }), !(editing && isAppDefaultView) && (_jsx(Checkbox, { checked: markAsDefault, label: translate('Always show this view first'), onChange: () => setMarkAsDefault(curState => !curState) }))] }) }));
|
|
78
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonalizationCreateEdit.js","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/PersonalizationCreateEdit.jsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PersonalizationCreateEdit.js","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/PersonalizationCreateEdit.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Flex, Input, Checkbox, FormDialog } from '@pega/cosmos-react-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\n\nexport default function PersonalizationCreateEdit({ view, onFinish, editing = false, target }) {\n const {\n state: { personalization },\n meta: { nonPersonalizationViewName }\n } = view;\n const personalizationNames = useMemo(() => {\n const personalizations = personalization?.allPersonalizations || {};\n return Object.keys(personalizations).map(key => personalizations[key]?.name?.toLowerCase());\n }, [personalization]);\n const [translate] = useTranslate();\n const currentPersonalization = personalization?.allPersonalizations?.[personalization.active];\n const currentPersonalizationName = currentPersonalization?.name;\n const isAppDefaultView = personalization.active === 'APP_DEFAULT';\n const [viewName, setViewName] = useState(() => {\n if (editing) return currentPersonalizationName;\n return '';\n });\n const [error, setError] = useState();\n const viewNameRef = useRef(null);\n const defaultNameError = `${nonPersonalizationViewName} ${translate(\n 'name is reserved for non Personalized view and cannot be used.'\n )}`;\n const viewAlreadyPresentError = translate('This view is already present.');\n const viewNameEmptyError = translate('This view name cannot be empty.');\n const viewNameMaxLengthError = translate('View name must contain less than 65 characters.');\n const [markAsDefault, setMarkAsDefault] = useState(\n !!(editing && personalization.defaultPersonalization === personalization.active)\n );\n\n useEffect(() => {\n if (viewName && viewName.toLowerCase() === nonPersonalizationViewName.toLowerCase()) {\n setError(defaultNameError);\n return;\n }\n if (\n personalizationNames.includes(viewName?.trim().toLowerCase()) &&\n !(editing && viewName.trim() === currentPersonalizationName)\n ) {\n setError(viewAlreadyPresentError);\n return;\n }\n if (viewName?.length > 64) {\n setError(viewNameMaxLengthError);\n return;\n }\n setError(null);\n }, [\n defaultNameError,\n currentPersonalizationName,\n editing,\n nonPersonalizationViewName,\n personalizationNames,\n viewName,\n viewAlreadyPresentError,\n viewNameMaxLengthError\n ]);\n\n const onChange = e => {\n setViewName(e.target.value);\n };\n\n const onSubmit = () => {\n if (error) return;\n\n const trimmedName = viewName.trim();\n if (!trimmedName) {\n viewNameRef.current.focus();\n setError(viewNameEmptyError);\n return;\n }\n if (editing) {\n view.type.editPersonalization(\n personalization.active,\n trimmedName,\n // markAsDefault is meant to be null rather than false as APIS will remove the default if it sees false\n // but will be a no-op if undefined or null\n markAsDefault || null,\n isAppDefaultView\n );\n } else {\n // markAsDefault is meant to be null rather than false as APIS will remove the default if it sees false\n // but will be a no-op if undefined or null\n view.type.createPersonalization(trimmedName, markAsDefault || null);\n }\n\n onFinish();\n };\n\n return (\n <FormDialog\n heading={translate(editing ? 'Edit customized view' : 'Add customized view')}\n onCancel={onFinish}\n onSubmit={onSubmit}\n target={target}\n >\n <Flex container={{ direction: 'column', gap: 2 }}>\n <Input\n ref={viewNameRef}\n name='viewName'\n required\n label={translate('View name')}\n autoComplete='off'\n status={error ? 'error' : undefined}\n info={error}\n value={viewName}\n onChange={onChange}\n />\n\n {!(editing && isAppDefaultView) && (\n <Checkbox\n checked={markAsDefault}\n label={translate('Always show this view first')}\n onChange={() => setMarkAsDefault(curState => !curState)}\n />\n )}\n </Flex>\n </FormDialog>\n );\n}\n\nPersonalizationCreateEdit.propTypes = {\n onFinish: PropTypes.func,\n view: PropTypes.objectOf(PropTypes.any).isRequired,\n editing: PropTypes.bool,\n target: PropTypes.instanceOf(Element)\n};\n\nPersonalizationCreateEdit.defaultProps = {\n onFinish: () => {},\n editing: false\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectFilter.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Filters/SelectFilter.jsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectFilter.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Filters/SelectFilter.jsx"],"names":[],"mappings":"AAmDA;;;;;mDAoJC;;;;;;;;;;;sBAvMqB,YAAY"}
|
|
@@ -4,8 +4,26 @@ import { useState, useEffect, useCallback, useRef } from 'react';
|
|
|
4
4
|
import styled from 'styled-components';
|
|
5
5
|
import { Checkbox, CheckboxGroup, Select, Option, FormDialog, Progress } from '@pega/cosmos-react-core';
|
|
6
6
|
import { addFilter, getFilterInitializers, comparatorMap, FieldType, isEmpty } from 'pega-repeating-structures-core';
|
|
7
|
+
import { StyledChildrenWrap, StyledDialogContent } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.styles';
|
|
7
8
|
import RenderingEngine from '../RenderingEngine/RenderCell';
|
|
8
9
|
import useTranslate from '../../Hooks/useTranslate';
|
|
10
|
+
const StyledSelectFilterDialog = styled(FormDialog) `
|
|
11
|
+
${StyledDialogContent} {
|
|
12
|
+
/* Flex height chain so the checkbox list scrolls internally instead of the
|
|
13
|
+
dialog content. */
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
flex: 1;
|
|
17
|
+
min-height: 0;
|
|
18
|
+
|
|
19
|
+
${StyledChildrenWrap} {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
flex: 1;
|
|
23
|
+
min-height: 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
9
27
|
const CheckboxGroupStyle = styled.div `
|
|
10
28
|
max-height: 11.719rem;
|
|
11
29
|
overflow: auto;
|
|
@@ -93,7 +111,7 @@ export default function SelectFilter({ column, finishPopOver, onFilter, popoverB
|
|
|
93
111
|
const selectedValueSet = new Set(selectedValuesRef.current);
|
|
94
112
|
if (!popoverButtonRef.current)
|
|
95
113
|
return null;
|
|
96
|
-
return (_jsxs(
|
|
114
|
+
return (_jsxs(StyledSelectFilterDialog, { heading: translate('Filter column'), onSubmit: submitFilter, onCancel: finishPopOver, target: popoverButtonRef.current, children: [_jsx(Select, { defaultValue: comparator, onChange: e => onFilterChange({ value: e.target.value }), children: (column.field.filterParams || []).map(opt => (_jsx(Option, { value: opt.key, children: translate(opt.value) }, opt.key))) }), showUniqueValues && (_jsxs(CheckboxGroupStyle, { className: 'popup-menu', "data-testid": 'select-filter-values', children: [_jsx(CheckboxGroup, { children: uniqueValues.map(item => {
|
|
97
115
|
const isItemSelected = selectedValueSet.has(item);
|
|
98
116
|
// Custom context prepared for Rendering engine should contain getExecutionContext
|
|
99
117
|
// otherwise the execution context will be populated wrongly from the previous table rendering cycle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectFilter.js","sourceRoot":"","sources":["../../../../Core/Components/Filters/SelectFilter.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport {\n Checkbox,\n CheckboxGroup,\n Select,\n Option,\n FormDialog,\n Progress\n} from '@pega/cosmos-react-core';\nimport {\n addFilter,\n getFilterInitializers,\n comparatorMap,\n FieldType,\n isEmpty\n} from 'pega-repeating-structures-core';\n\nimport RenderingEngine from '../RenderingEngine/RenderCell';\nimport useTranslate from '../../Hooks/useTranslate';\n\nconst CheckboxGroupStyle = styled.div`\n max-height: 11.719rem;\n overflow: auto;\n margin-top: 0.5rem;\n`;\n\nexport default function SelectFilter({ column, finishPopOver, onFilter, popoverButtonRef }) {\n const [fInput, fValue, , filterExpression] = getFilterInitializers(column);\n const [uniqueValues, setUniqueColumnValues] = useState([]);\n const [uniqueValuesFetched, setUniqueValuesFetched] = useState(false);\n // Prepopulate the select filter with values only when global filter condition matches with condition in select filter.\n const prePopulateSelectFilter = column.field.filterParams.some(\n filterParam => filterParam.key === fValue\n );\n const selectedValuesRef = useRef(prePopulateSelectFilter ? fInput : []);\n const [comparator, setComparator] = useState(fValue);\n\n const syncUniqueValues = useCallback(() => {\n if (!uniqueValuesFetched)\n column\n .getUniqueValues()\n .then(filteredData => {\n setUniqueColumnValues(filteredData.filter(v => !isEmpty(v)));\n })\n .finally(() => {\n setUniqueValuesFetched(true);\n });\n }, [column, uniqueValuesFetched]);\n const [translate] = useTranslate();\n useEffect(() => {\n const resultSet = new Set();\n column.data.forEach(d => {\n if (d) resultSet.add(d);\n });\n setUniqueColumnValues([...resultSet]);\n }, [column]);\n\n // set the comparator as 1st option by default only if global filter criteria does not match with select filter (prepopulateSelectFilter)\n useEffect(() => {\n if (!prePopulateSelectFilter && column.field.filterParams?.[0]?.key)\n setComparator(column.field.filterParams[0].key);\n // Should be call only on initial load thats why empty dependencies\n }, []);\n\n useEffect(() => {\n if (!column.field?.filterParams?.find(item => item.key !== 'select')) return;\n syncUniqueValues();\n }, [column, syncUniqueValues]);\n\n const onFilterChange = useCallback(({ value: comparatorType }) => {\n setComparator(comparatorType);\n }, []);\n\n const submitFilter = useCallback(() => {\n const formattedComp = comparatorMap[comparator];\n let localFilterExpression = null;\n const input =\n formattedComp === comparatorMap.isNull || formattedComp === comparatorMap.isNotNull\n ? null\n : selectedValuesRef.current;\n localFilterExpression = addFilter({\n // Ignore the initial filter expression if prePopulateSelectFilter is true as user has chosen to override it.\n filterExpression: prePopulateSelectFilter ? null : filterExpression,\n comparator: formattedComp,\n column,\n input\n });\n onFilter({\n filterExp: localFilterExpression\n });\n finishPopOver();\n }, [comparator, filterExpression, column, onFilter, prePopulateSelectFilter]);\n\n const onSelectOrDeselect = useCallback(\n event => {\n /* Disabling operators like isAnyOf isNoneOf */\n const { value, checked } = event.target;\n const inputValue = column.field.type === FieldType.NUMBER ? parseFloat(value) : value;\n const currentSelectedValues = selectedValuesRef.current;\n /* collecting set of unique values to sent with different operators */\n if (checked) {\n selectedValuesRef.current = currentSelectedValues\n ? [...new Set([inputValue, ...currentSelectedValues])]\n : [...new Set([inputValue])];\n return;\n }\n\n const index = currentSelectedValues.findIndex(val => val === inputValue);\n selectedValuesRef.current = currentSelectedValues\n .slice(0, index)\n .concat(currentSelectedValues.slice(index + 1));\n },\n [column]\n );\n\n // show unique values checkboxes for selection only if comparator is other than 'IS_NULL' and 'IS_NOT_NULL'\n const showUniqueValues = ![comparatorMap.isNull, comparatorMap.isNotNull].includes(\n comparatorMap[comparator]\n );\n const selectedValueSet = new Set(selectedValuesRef.current);\n\n if (!popoverButtonRef.current) return null;\n\n return (\n <FormDialog\n heading={translate('Filter column')}\n onSubmit={submitFilter}\n onCancel={finishPopOver}\n target={popoverButtonRef.current}\n >\n <Select defaultValue={comparator} onChange={e => onFilterChange({ value: e.target.value })}>\n {(column.field.filterParams || []).map(opt => (\n <Option key={opt.key} value={opt.key}>\n {translate(opt.value)}\n </Option>\n ))}\n </Select>\n {showUniqueValues && (\n <CheckboxGroupStyle className='popup-menu'>\n <CheckboxGroup>\n {uniqueValues.map(item => {\n const isItemSelected = selectedValueSet.has(item);\n // Custom context prepared for Rendering engine should contain getExecutionContext\n // otherwise the execution context will be populated wrongly from the previous table rendering cycle.\n // For Select filter execution context should be derived from unique values that are displayed in the modal.\n const context = {\n getExecutionContext: () => {\n return {\n getValue: () => ({ [column.field.name]: item }),\n name: 'selectFilter'\n };\n },\n getValue: () => item\n };\n return (\n <Checkbox\n key={item}\n id={item}\n defaultChecked={isItemSelected}\n name={item}\n onClick={onSelectOrDeselect}\n value={item}\n label={\n <RenderingEngine {...column.getRenderingEngineProps()} context={context} />\n }\n />\n );\n })}\n </CheckboxGroup>\n {!uniqueValuesFetched && <Progress placement='block' />}\n </CheckboxGroupStyle>\n )}\n </FormDialog>\n );\n}\n\nSelectFilter.propTypes = {\n column: PropTypes.objectOf(PropTypes.any).isRequired,\n finishPopOver: PropTypes.func.isRequired,\n onFilter: PropTypes.func.isRequired\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SelectFilter.js","sourceRoot":"","sources":["../../../../Core/Components/Filters/SelectFilter.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport {\n Checkbox,\n CheckboxGroup,\n Select,\n Option,\n FormDialog,\n Progress\n} from '@pega/cosmos-react-core';\nimport {\n addFilter,\n getFilterInitializers,\n comparatorMap,\n FieldType,\n isEmpty\n} from 'pega-repeating-structures-core';\nimport {\n StyledChildrenWrap,\n StyledDialogContent\n} from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.styles';\n\nimport RenderingEngine from '../RenderingEngine/RenderCell';\nimport useTranslate from '../../Hooks/useTranslate';\n\nconst StyledSelectFilterDialog = styled(FormDialog)`\n ${StyledDialogContent} {\n /* Flex height chain so the checkbox list scrolls internally instead of the\n dialog content. */\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n\n ${StyledChildrenWrap} {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n }\n }\n`;\n\nconst CheckboxGroupStyle = styled.div`\n max-height: 11.719rem;\n overflow: auto;\n margin-top: 0.5rem;\n`;\n\nexport default function SelectFilter({ column, finishPopOver, onFilter, popoverButtonRef }) {\n const [fInput, fValue, , filterExpression] = getFilterInitializers(column);\n const [uniqueValues, setUniqueColumnValues] = useState([]);\n const [uniqueValuesFetched, setUniqueValuesFetched] = useState(false);\n // Prepopulate the select filter with values only when global filter condition matches with condition in select filter.\n const prePopulateSelectFilter = column.field.filterParams.some(\n filterParam => filterParam.key === fValue\n );\n const selectedValuesRef = useRef(prePopulateSelectFilter ? fInput : []);\n const [comparator, setComparator] = useState(fValue);\n\n const syncUniqueValues = useCallback(() => {\n if (!uniqueValuesFetched)\n column\n .getUniqueValues()\n .then(filteredData => {\n setUniqueColumnValues(filteredData.filter(v => !isEmpty(v)));\n })\n .finally(() => {\n setUniqueValuesFetched(true);\n });\n }, [column, uniqueValuesFetched]);\n const [translate] = useTranslate();\n useEffect(() => {\n const resultSet = new Set();\n column.data.forEach(d => {\n if (d) resultSet.add(d);\n });\n setUniqueColumnValues([...resultSet]);\n }, [column]);\n\n // set the comparator as 1st option by default only if global filter criteria does not match with select filter (prepopulateSelectFilter)\n useEffect(() => {\n if (!prePopulateSelectFilter && column.field.filterParams?.[0]?.key)\n setComparator(column.field.filterParams[0].key);\n // Should be call only on initial load thats why empty dependencies\n }, []);\n\n useEffect(() => {\n if (!column.field?.filterParams?.find(item => item.key !== 'select')) return;\n syncUniqueValues();\n }, [column, syncUniqueValues]);\n\n const onFilterChange = useCallback(({ value: comparatorType }) => {\n setComparator(comparatorType);\n }, []);\n\n const submitFilter = useCallback(() => {\n const formattedComp = comparatorMap[comparator];\n let localFilterExpression = null;\n const input =\n formattedComp === comparatorMap.isNull || formattedComp === comparatorMap.isNotNull\n ? null\n : selectedValuesRef.current;\n localFilterExpression = addFilter({\n // Ignore the initial filter expression if prePopulateSelectFilter is true as user has chosen to override it.\n filterExpression: prePopulateSelectFilter ? null : filterExpression,\n comparator: formattedComp,\n column,\n input\n });\n onFilter({\n filterExp: localFilterExpression\n });\n finishPopOver();\n }, [comparator, filterExpression, column, onFilter, prePopulateSelectFilter]);\n\n const onSelectOrDeselect = useCallback(\n event => {\n /* Disabling operators like isAnyOf isNoneOf */\n const { value, checked } = event.target;\n const inputValue = column.field.type === FieldType.NUMBER ? parseFloat(value) : value;\n const currentSelectedValues = selectedValuesRef.current;\n /* collecting set of unique values to sent with different operators */\n if (checked) {\n selectedValuesRef.current = currentSelectedValues\n ? [...new Set([inputValue, ...currentSelectedValues])]\n : [...new Set([inputValue])];\n return;\n }\n\n const index = currentSelectedValues.findIndex(val => val === inputValue);\n selectedValuesRef.current = currentSelectedValues\n .slice(0, index)\n .concat(currentSelectedValues.slice(index + 1));\n },\n [column]\n );\n\n // show unique values checkboxes for selection only if comparator is other than 'IS_NULL' and 'IS_NOT_NULL'\n const showUniqueValues = ![comparatorMap.isNull, comparatorMap.isNotNull].includes(\n comparatorMap[comparator]\n );\n const selectedValueSet = new Set(selectedValuesRef.current);\n\n if (!popoverButtonRef.current) return null;\n\n return (\n <StyledSelectFilterDialog\n heading={translate('Filter column')}\n onSubmit={submitFilter}\n onCancel={finishPopOver}\n target={popoverButtonRef.current}\n >\n <Select defaultValue={comparator} onChange={e => onFilterChange({ value: e.target.value })}>\n {(column.field.filterParams || []).map(opt => (\n <Option key={opt.key} value={opt.key}>\n {translate(opt.value)}\n </Option>\n ))}\n </Select>\n {showUniqueValues && (\n <CheckboxGroupStyle className='popup-menu' data-testid='select-filter-values'>\n <CheckboxGroup>\n {uniqueValues.map(item => {\n const isItemSelected = selectedValueSet.has(item);\n // Custom context prepared for Rendering engine should contain getExecutionContext\n // otherwise the execution context will be populated wrongly from the previous table rendering cycle.\n // For Select filter execution context should be derived from unique values that are displayed in the modal.\n const context = {\n getExecutionContext: () => {\n return {\n getValue: () => ({ [column.field.name]: item }),\n name: 'selectFilter'\n };\n },\n getValue: () => item\n };\n return (\n <Checkbox\n key={item}\n id={item}\n defaultChecked={isItemSelected}\n name={item}\n onClick={onSelectOrDeselect}\n value={item}\n label={\n <RenderingEngine {...column.getRenderingEngineProps()} context={context} />\n }\n />\n );\n })}\n </CheckboxGroup>\n {!uniqueValuesFetched && <Progress placement='block' />}\n </CheckboxGroupStyle>\n )}\n </StyledSelectFilterDialog>\n );\n}\n\nSelectFilter.propTypes = {\n column: PropTypes.objectOf(PropTypes.any).isRequired,\n finishPopOver: PropTypes.func.isRequired,\n onFilter: PropTypes.func.isRequired\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/utils/utils.js"],"names":[],"mappings":";AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEE;AAEF,oEA/DW,MAAM;;;IAIJ,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/utils/utils.js"],"names":[],"mappings":";AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEE;AAEF,oEA/DW,MAAM;;;IAIJ,KAAK,CAsHjB"}
|
|
@@ -110,14 +110,20 @@ function getMenuItemsFromColumns(fieldDefs, fieldProp, { selectedField, columns
|
|
|
110
110
|
// TODO primary should be renderer rather string for user reference fields to show display value instead of id in condition builder.
|
|
111
111
|
...(filterPickListColumn && {
|
|
112
112
|
possibleValues: args => filterPickListColumn.getUniqueValues().then(records => {
|
|
113
|
-
const
|
|
114
|
-
|
|
113
|
+
const searchString = args?.searchString?.toString().toLowerCase().trim();
|
|
114
|
+
const filteredValues = records
|
|
115
|
+
.filter(id => id !== null &&
|
|
116
|
+
id !== undefined &&
|
|
117
|
+
(!searchString || id.toString().toLowerCase().includes(searchString)))
|
|
115
118
|
.map(id => ({ id, primary: id }));
|
|
116
119
|
// ConditionBuilder calls with { ids } to resolve display text for pre-selected values
|
|
117
120
|
if (args && 'ids' in args) {
|
|
118
|
-
return
|
|
121
|
+
return args.ids.reduce((selectedValues, id) => {
|
|
122
|
+
selectedValues.push(filteredValues.find(value => value.id === id) || { id, primary: id });
|
|
123
|
+
return selectedValues;
|
|
124
|
+
}, []);
|
|
119
125
|
}
|
|
120
|
-
return
|
|
126
|
+
return filteredValues;
|
|
121
127
|
})
|
|
122
128
|
})
|
|
123
129
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/utils/utils.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/utils/utils.js"],"names":[],"mappings":"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","sourcesContent":["import { FieldType } from 'pega-repeating-structures-core';\n\nimport { typeMap } from '../../Filters/config';\n\nconst getCategoryItems = (id, arr) => {\n for (const obj of arr) {\n if (obj.id === id && obj.items) {\n return obj.items;\n }\n }\n};\n\nconst prepareCategoryInfo = (id, label, arr) => {\n const items = [];\n arr.push({ id, primary: label, items });\n return items;\n};\n\nconst prepareCategoryItems = (categories, items) => {\n let curPath = '';\n let leafCategoryArr = items;\n for (let i = 0; i < categories.length; i += 1) {\n curPath = i > 0 ? `${curPath}.${categories[i].label}-${i}` : `${categories[i].label}-${i}`;\n\n const existingCategoryArr = getCategoryItems(curPath, leafCategoryArr);\n if (!existingCategoryArr) {\n leafCategoryArr = prepareCategoryInfo(curPath, categories[i].label, leafCategoryArr);\n } else {\n leafCategoryArr = existingCategoryArr;\n }\n }\n return leafCategoryArr;\n};\n\n/**\n * returns copy of embedded property's leafNode model from store or null\n * @function getMenuItemsFromColumns\n * @param fieldDefs - field definitions to build menu items from\n * @param {string} fieldProp value for id prop(either 'name' of 'id')\n * @param options.selectedField - field id that is already selected (for sort/group/filter actions)\n * @param options.columns - live column objects that expose `field.filterPickList` and `getUniqueValues()`\n * @param options.defaultType - fallback field type if not specified on the field definition\n * @returns {array} returns an array of objects where each object is one category\n *\n * @example <caption>Example for getMenuItemsFromColumns.</caption>\n * We have two fields named ID and Priority where ID does not belong to any category and priority belongs to Bugs class category\n *\n * columns example(fieldDefs) :\n * [\n * {\n filter: true,\n type: 'text',\n name: 'pyID',\n label: 'ID',\n id: '2',\n category: [{ label: 'Profile' }],\n sort: true\n },\n {\n type: 'text',\n name: 'pyLabel',\n label: 'Name',\n id: '3',\n category: [{ label: 'Profile' }],\n sort: true\n },\n {\n type: 'text',\n name: 'pyOperatorName',\n label: 'Operator name',\n id: '4',\n filterPicklist:true\n }\n ]\n *\n * getMenuItemsFromColumns(fieldDefs) returns :\n * [\n {\n id: 'pyID',\n primary: ID,\n items: undefined,\n selected: undefined\n },\n {\n id: ‘pyLabel’,\n primary: ‘Name’,\n selected: undefined,\n items: [ {id: ‘Priority', primary: ‘Priority’, selected: true, items: undefined}]\n },\n {\n id: 'pyOperatorName',\n primary: 'Operator name',\n selected: undefined,\n possibleValues: function() {\n // Fetch unique values for Operator name column\n }\n }\n\n ]\n*/\n\nfunction getMenuItemsFromColumns(\n fieldDefs,\n fieldProp,\n { selectedField, columns = [], defaultType = FieldType.TEXT } = {}\n) {\n const items = [];\n let categoryArr = [];\n\n if (!fieldDefs) {\n return items;\n }\n\n fieldDefs.forEach(field => {\n const filterPickListColumn =\n field.filterPickList && columns?.find(c => c.field.name === field[fieldProp]);\n\n const leafCategoryItem = {\n id: field[fieldProp],\n primary: field.label,\n type: typeMap[field.type?.toLowerCase()] || typeMap[defaultType],\n selected: field.id === selectedField,\n // Attach possibleValues for picklist columns (e.g. UserReference, WorkStatus)\n // TODO primary should be renderer rather string for user reference fields to show display value instead of id in condition builder.\n ...(filterPickListColumn && {\n possibleValues: args =>\n filterPickListColumn.getUniqueValues().then(records => {\n const searchString = args?.searchString?.toString().toLowerCase().trim();\n const filteredValues = records\n .filter(\n id =>\n id !== null &&\n id !== undefined &&\n (!searchString || id.toString().toLowerCase().includes(searchString))\n )\n .map(id => ({ id, primary: id }));\n\n // ConditionBuilder calls with { ids } to resolve display text for pre-selected values\n if (args && 'ids' in args) {\n return args.ids.reduce((selectedValues, id) => {\n selectedValues.push(\n filteredValues.find(value => value.id === id) || { id, primary: id }\n );\n return selectedValues;\n }, []);\n }\n\n return filteredValues;\n })\n })\n };\n\n categoryArr = items;\n if (field.category) {\n categoryArr = prepareCategoryItems(field.category, categoryArr);\n }\n categoryArr.push(leafCategoryItem);\n });\n\n return items;\n}\nexport default getMenuItemsFromColumns;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/lists-react",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.11.0",
|
|
4
4
|
"description": "Repeating view structures such as Table, Gallery(Repeating layouts), Kanban etc.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pegasystems",
|
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-condition-builder": "9.
|
|
18
|
-
"@pega/cosmos-react-core": "9.
|
|
19
|
-
"@pega/cosmos-react-rte": "9.
|
|
17
|
+
"@pega/cosmos-react-condition-builder": "9.11.0",
|
|
18
|
+
"@pega/cosmos-react-core": "9.11.0",
|
|
19
|
+
"@pega/cosmos-react-rte": "9.11.0",
|
|
20
20
|
"@types/lodash-es": "^4.17.12",
|
|
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",
|
|
24
24
|
"fast-deep-equal": "^3.1.3",
|
|
25
25
|
"lodash-es": "^4.18.1",
|
|
26
|
-
"pega-repeating-structures-core": "npm:@pega/lists-core@9.
|
|
27
|
-
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@9.
|
|
26
|
+
"pega-repeating-structures-core": "npm:@pega/lists-core@9.11.0",
|
|
27
|
+
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@9.11.0",
|
|
28
28
|
"polished": "^4.1.0",
|
|
29
29
|
"prop-types": "^15.8.1",
|
|
30
30
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@testing-library/react": "^16.0.0",
|
|
43
43
|
"@testing-library/user-event": "^14.6.1",
|
|
44
44
|
"jest-axe": "^8.0.0",
|
|
45
|
-
"srs-utils": "9.
|
|
45
|
+
"srs-utils": "9.11.0",
|
|
46
46
|
"typescript": "~5.9.3"
|
|
47
47
|
}
|
|
48
48
|
}
|