@pega/lists-react 8.21.7 → 8.21.9-1
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":"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":"AA6CA;;;;;mDAoJC;;;;;;;;;;;sBAjMqB,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 } 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":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,MAAM,EACN,MAAM,EACN,UAAU,EACV,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEjG,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAIpC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACxF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,AAAD,EAAG,gBAAgB,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtE,uHAAuH;IACvH,MAAM,uBAAuB,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC5D,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,KAAK,MAAM,CAC1C,CAAC;IACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,IAAI,CAAC,mBAAmB;YACtB,MAAM;iBACH,eAAe,EAAE;iBACjB,IAAI,CAAC,YAAY,CAAC,EAAE;gBACnB,qBAAqB,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;IACT,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACtB,IAAI,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,qBAAqB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,yIAAyI;IACzI,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,uBAAuB,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;YACjE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,mEAAmE;IACrE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;YAAE,OAAO;QAC7E,gBAAgB,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE/B,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;QAC/D,aAAa,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,qBAAqB,GAAG,IAAI,CAAC;QACjC,MAAM,KAAK,GACT,aAAa,KAAK,aAAa,CAAC,MAAM,IAAI,aAAa,KAAK,aAAa,CAAC,SAAS;YACjF,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAChC,qBAAqB,GAAG,SAAS,CAAC;YAChC,6GAA6G;YAC7G,gBAAgB,EAAE,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;YACnE,UAAU,EAAE,aAAa;YACzB,MAAM;YACN,KAAK;SACN,CAAC,CAAC;QACH,QAAQ,CAAC;YACP,SAAS,EAAE,qBAAqB;SACjC,CAAC,CAAC;QACH,aAAa,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAE9E,MAAM,kBAAkB,GAAG,WAAW,CACpC,KAAK,CAAC,EAAE;QACN,+CAA+C;QAC/C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACxD,sEAAsE;QACtE,IAAI,OAAO,EAAE,CAAC;YACZ,iBAAiB,CAAC,OAAO,GAAG,qBAAqB;gBAC/C,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QACzE,iBAAiB,CAAC,OAAO,GAAG,qBAAqB;aAC9C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;aACf,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,2GAA2G;IAC3G,MAAM,gBAAgB,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,CAChF,aAAa,CAAC,UAAU,CAAC,CAC1B,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE5D,IAAI,CAAC,gBAAgB,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,CACL,MAAC,UAAU,IACT,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,EACnC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,gBAAgB,CAAC,OAAO,aAEhC,KAAC,MAAM,IAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,YACvF,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAC5C,KAAC,MAAM,IAAe,KAAK,EAAE,GAAG,CAAC,GAAG,YACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IADV,GAAG,CAAC,GAAG,CAEX,CACV,CAAC,GACK,EACR,gBAAgB,IAAI,CACnB,MAAC,kBAAkB,IAAC,SAAS,EAAC,YAAY,aACxC,KAAC,aAAa,cACX,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACvB,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BAClD,kFAAkF;4BAClF,qGAAqG;4BACrG,4GAA4G;4BAC5G,MAAM,OAAO,GAAG;gCACd,mBAAmB,EAAE,GAAG,EAAE;oCACxB,OAAO;wCACL,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;wCAC/C,IAAI,EAAE,cAAc;qCACrB,CAAC;gCACJ,CAAC;gCACD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;6BACrB,CAAC;4BACF,OAAO,CACL,KAAC,QAAQ,IAEP,EAAE,EAAE,IAAI,EACR,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,IAAI,EACX,KAAK,EACH,KAAC,eAAe,OAAK,MAAM,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,OAAO,GAAI,IAPxE,IAAI,CAST,CACH,CAAC;wBACJ,CAAC,CAAC,GACY,EACf,CAAC,mBAAmB,IAAI,KAAC,QAAQ,IAAC,SAAS,EAAC,OAAO,GAAG,IACpC,CACtB,IACU,CACd,CAAC;AACJ,CAAC;AAED,YAAY,CAAC,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU;IACpD,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACxC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CACpC,CAAC","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 { addFilter, getFilterInitializers, comparatorMap } 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);\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 === '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 { addFilter, getFilterInitializers, comparatorMap } 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);\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 === '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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/lists-react",
|
|
3
|
-
"version": "8.21.
|
|
3
|
+
"version": "8.21.9-1",
|
|
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,10 +14,10 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-condition-builder": "8.21.
|
|
18
|
-
"@pega/cosmos-react-core": "8.21.
|
|
19
|
-
"@pega/cosmos-react-rte": "8.21.
|
|
20
|
-
"@pega/cosmos-react-work": "8.21.
|
|
17
|
+
"@pega/cosmos-react-condition-builder": "8.21.9-1",
|
|
18
|
+
"@pega/cosmos-react-core": "8.21.9-1",
|
|
19
|
+
"@pega/cosmos-react-rte": "8.21.9-1",
|
|
20
|
+
"@pega/cosmos-react-work": "8.21.9-1",
|
|
21
21
|
"@types/lodash.get": "^4.4.9",
|
|
22
22
|
"@types/react": "^17.0.62 || ^18.3.3",
|
|
23
23
|
"@types/react-dom": "^17.0.20 || ^18.3.0",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"dayjs": "^1.11.13",
|
|
26
26
|
"fast-deep-equal": "^3.1.3",
|
|
27
27
|
"lodash.get": "^4.4.2",
|
|
28
|
-
"pega-repeating-structures-core": "npm:@pega/lists-core@8.21.
|
|
29
|
-
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@8.21.
|
|
28
|
+
"pega-repeating-structures-core": "npm:@pega/lists-core@8.21.9-1",
|
|
29
|
+
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@8.21.9-1",
|
|
30
30
|
"polished": "^4.1.0",
|
|
31
31
|
"prop-types": "^15.8.1",
|
|
32
32
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@testing-library/react": "^16.0.0",
|
|
46
46
|
"@testing-library/user-event": "^14.6.1",
|
|
47
47
|
"jest-axe": "^8.0.0",
|
|
48
|
-
"srs-utils": "8.21.
|
|
48
|
+
"srs-utils": "8.21.9-1",
|
|
49
49
|
"typescript": "~5.8.3"
|
|
50
50
|
}
|
|
51
51
|
}
|