@pega/lists-core 9.0.0-build.9.8 → 9.0.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/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/src/core/RsCore.d.ts +1 -1
- package/lib/src/core/RsCore.js +1 -1
- package/lib/src/core/RsCore.js.map +1 -1
- package/lib/src/core/RsInternal.d.ts +23 -0
- package/lib/src/core/RsInternal.d.ts.map +1 -1
- package/lib/src/core/RsInternal.js +18 -2
- package/lib/src/core/RsInternal.js.map +1 -1
- package/lib/src/core/RsProps.d.ts +0 -7
- package/lib/src/core/RsProps.d.ts.map +1 -1
- package/lib/src/core/RsProps.js +0 -7
- package/lib/src/core/RsProps.js.map +1 -1
- package/lib/src/core/RsStore.d.ts +5 -1
- package/lib/src/core/RsStore.d.ts.map +1 -1
- package/lib/src/core/RsStore.js +12 -0
- package/lib/src/core/RsStore.js.map +1 -1
- package/lib/src/core/StateResolver.d.ts +0 -1
- package/lib/src/core/StateResolver.d.ts.map +1 -1
- package/lib/src/core/StateResolver.js +19 -9
- package/lib/src/core/StateResolver.js.map +1 -1
- package/lib/src/core/a11y/BaseA11y.d.ts +25 -6
- package/lib/src/core/a11y/BaseA11y.d.ts.map +1 -1
- package/lib/src/core/a11y/BaseA11y.js +39 -8
- package/lib/src/core/a11y/BaseA11y.js.map +1 -1
- package/lib/src/core/actions/actionConstants.d.ts +7 -4
- package/lib/src/core/actions/actionConstants.d.ts.map +1 -1
- package/lib/src/core/actions/actionConstants.js +8 -5
- package/lib/src/core/actions/actionConstants.js.map +1 -1
- package/lib/src/core/actions/actions.d.ts +35 -34
- package/lib/src/core/actions/actions.d.ts.map +1 -1
- package/lib/src/core/actions/actions.js +47 -40
- package/lib/src/core/actions/actions.js.map +1 -1
- package/lib/src/core/actions/actions.types.d.ts +34 -27
- package/lib/src/core/actions/actions.types.d.ts.map +1 -1
- package/lib/src/core/actions/actions.types.js.map +1 -1
- package/lib/src/core/config/config.d.ts +1 -1
- package/lib/src/core/config/config.d.ts.map +1 -1
- package/lib/src/core/config/config.js +5 -2
- package/lib/src/core/config/config.js.map +1 -1
- package/lib/src/core/constants.d.ts +4 -0
- package/lib/src/core/constants.d.ts.map +1 -1
- package/lib/src/core/constants.js +22 -5
- package/lib/src/core/constants.js.map +1 -1
- package/lib/src/core/defaultTranslations.d.ts +6 -1
- package/lib/src/core/defaultTranslations.d.ts.map +1 -1
- package/lib/src/core/defaultTranslations.js +6 -1
- package/lib/src/core/defaultTranslations.js.map +1 -1
- package/lib/src/core/features/featureFactory.d.ts +6 -2
- package/lib/src/core/features/featureFactory.d.ts.map +1 -1
- package/lib/src/core/features/featureFactory.js +9 -8
- package/lib/src/core/features/featureFactory.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/animation.js +11 -2
- package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts +2 -16
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js +48 -89
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts +3 -4
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +83 -45
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js +2 -2
- package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts +4 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js +15 -14
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js +10 -2
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.js +5 -4
- package/lib/src/core/features/uIFeatures/beforeRender/animation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.d.ts +13 -0
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.d.ts.map +1 -0
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.js +40 -0
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.js.map +1 -0
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts +2 -0
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js +14 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js +7 -5
- package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js +13 -5
- package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +20 -17
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts +2 -4
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +61 -40
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSort.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js +10 -5
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js +4 -4
- package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js +9 -8
- package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js +22 -8
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js +9 -6
- package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts +1 -0
- package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/filter.js +13 -3
- package/lib/src/core/features/uIFeatures/beforeRender/filter.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.js +14 -9
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +23 -24
- package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts +32 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js +128 -32
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js +4 -4
- package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js +14 -10
- package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts +16 -4
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +124 -72
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +116 -37
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -1
- package/lib/src/core/features/uIFeatures/index.d.ts +2 -3
- package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/index.js +2 -4
- package/lib/src/core/features/uIFeatures/index.js.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.d.ts +15 -21
- package/lib/src/core/generators/ColumnGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.js +32 -95
- package/lib/src/core/generators/ColumnGenerator.js.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.types.d.ts +16 -13
- package/lib/src/core/generators/ColumnGenerator.types.d.ts.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.types.js.map +1 -1
- package/lib/src/core/generators/GroupGenerator.d.ts +5 -1
- package/lib/src/core/generators/GroupGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/GroupGenerator.js +20 -0
- package/lib/src/core/generators/GroupGenerator.js.map +1 -1
- package/lib/src/core/generators/RowGenerator.d.ts +2 -2
- package/lib/src/core/generators/RowGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/RowGenerator.js +3 -4
- package/lib/src/core/generators/RowGenerator.js.map +1 -1
- package/lib/src/core/generators/RowGenerator.types.d.ts +2 -1
- package/lib/src/core/generators/RowGenerator.types.d.ts.map +1 -1
- package/lib/src/core/generators/RowGenerator.types.js.map +1 -1
- package/lib/src/core/generators/ViewGenerator.d.ts +42 -28
- package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/ViewGenerator.js +101 -61
- package/lib/src/core/generators/ViewGenerator.js.map +1 -1
- package/lib/src/core/generators/ViewGenerator.types.d.ts +13 -1
- package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -1
- package/lib/src/core/generators/ViewGenerator.types.js.map +1 -1
- package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts +3 -0
- package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts.map +1 -1
- package/lib/src/core/generators/viewUtilityMethods.d.ts +23 -10
- package/lib/src/core/generators/viewUtilityMethods.d.ts.map +1 -1
- package/lib/src/core/generators/viewUtilityMethods.js +50 -11
- package/lib/src/core/generators/viewUtilityMethods.js.map +1 -1
- package/lib/src/core/index.d.ts.map +1 -1
- package/lib/src/core/index.js +1 -2
- package/lib/src/core/index.js.map +1 -1
- package/lib/src/core/reducers/changeTemplate.d.ts +5 -0
- package/lib/src/core/reducers/changeTemplate.d.ts.map +1 -0
- package/lib/src/core/reducers/changeTemplate.js +14 -0
- package/lib/src/core/reducers/changeTemplate.js.map +1 -0
- package/lib/src/core/reducers/dragDrop.d.ts.map +1 -1
- package/lib/src/core/reducers/dragDrop.js +5 -4
- package/lib/src/core/reducers/dragDrop.js.map +1 -1
- package/lib/src/core/reducers/error.d.ts +8 -4
- package/lib/src/core/reducers/error.d.ts.map +1 -1
- package/lib/src/core/reducers/{edit.d.ts → galleryView.d.ts} +1 -1
- package/lib/src/core/reducers/galleryView.d.ts.map +1 -0
- package/lib/src/core/reducers/galleryView.js +11 -0
- package/lib/src/core/reducers/galleryView.js.map +1 -0
- package/lib/src/core/reducers/grouping.d.ts.map +1 -1
- package/lib/src/core/reducers/grouping.js +7 -0
- package/lib/src/core/reducers/grouping.js.map +1 -1
- package/lib/src/core/reducers/index.d.ts +8 -4
- package/lib/src/core/reducers/index.d.ts.map +1 -1
- package/lib/src/core/reducers/index.js +5 -3
- package/lib/src/core/reducers/index.js.map +1 -1
- package/lib/src/core/reducers/personalizationDirtyReducer.d.ts.map +1 -1
- package/lib/src/core/reducers/personalizationDirtyReducer.js +8 -4
- package/lib/src/core/reducers/personalizationDirtyReducer.js.map +1 -1
- package/lib/src/core/reducers/personalizationReducer.d.ts +3 -2
- package/lib/src/core/reducers/personalizationReducer.d.ts.map +1 -1
- package/lib/src/core/reducers/personalizationReducer.js +12 -4
- package/lib/src/core/reducers/personalizationReducer.js.map +1 -1
- package/lib/src/core/reducers/renderFormatter.d.ts.map +1 -1
- package/lib/src/core/reducers/renderFormatter.js +13 -3
- package/lib/src/core/reducers/renderFormatter.js.map +1 -1
- package/lib/src/core/reducers/rowSelect.d.ts.map +1 -1
- package/lib/src/core/reducers/rowSelect.js +0 -8
- package/lib/src/core/reducers/rowSelect.js.map +1 -1
- package/lib/src/core/reducers/versioning/index.d.ts +1 -1
- package/lib/src/core/reducers/versioning/index.d.ts.map +1 -1
- package/lib/src/core/reducers/versioning/index.js +1 -1
- package/lib/src/core/reducers/versioning/index.js.map +1 -1
- package/lib/src/core/reducers/visibility.d.ts +2 -1
- package/lib/src/core/reducers/visibility.d.ts.map +1 -1
- package/lib/src/core/reducers/visibility.js +69 -19
- package/lib/src/core/reducers/visibility.js.map +1 -1
- package/lib/src/core/test/junitMocks.d.ts +1322 -0
- package/lib/src/core/test/junitMocks.d.ts.map +1 -1
- package/lib/src/core/test/junitMocks.js +32 -51
- package/lib/src/core/test/junitMocks.js.map +1 -1
- package/lib/src/core/utils/condition-utils.d.ts +1 -1
- package/lib/src/core/utils/condition-utils.d.ts.map +1 -1
- package/lib/src/core/utils/condition-utils.js +5 -3
- package/lib/src/core/utils/condition-utils.js.map +1 -1
- package/lib/src/core/utils/util.d.ts +58 -9
- package/lib/src/core/utils/util.d.ts.map +1 -1
- package/lib/src/core/utils/util.js +151 -18
- package/lib/src/core/utils/util.js.map +1 -1
- package/lib/types/ApiContext.types.d.ts +69 -7
- package/lib/types/ApiContext.types.d.ts.map +1 -1
- package/lib/types/ApiContext.types.js.map +1 -1
- package/lib/types/Meta.types.d.ts +153 -11
- package/lib/types/Meta.types.d.ts.map +1 -1
- package/lib/types/Meta.types.js +7 -1
- package/lib/types/Meta.types.js.map +1 -1
- package/lib/types/RsCoreBootArgs.types.d.ts +11 -13
- package/lib/types/RsCoreBootArgs.types.d.ts.map +1 -1
- package/lib/types/RsCoreBootArgs.types.js.map +1 -1
- package/lib/types/State.types.d.ts +32 -30
- package/lib/types/State.types.d.ts.map +1 -1
- package/lib/types/State.types.js.map +1 -1
- package/lib/types.d.ts +10 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +6 -8
- package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts +0 -12
- package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts.map +0 -1
- package/lib/src/core/features/uIFeatures/beforeRender/edit.js +0 -94
- package/lib/src/core/features/uIFeatures/beforeRender/edit.js.map +0 -1
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts +0 -12
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts.map +0 -1
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js +0 -51
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js.map +0 -1
- package/lib/src/core/reducers/edit.d.ts.map +0 -1
- package/lib/src/core/reducers/edit.js +0 -65
- package/lib/src/core/reducers/edit.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { DEFAULT_FORMAT } from '../../../constants';
|
|
1
|
+
import { DEFAULT_FORMAT, rowActionColumnMeta, rowDeleteColumnMeta, rowDragDropColumnMeta, rowErrorColumnMeta, rowSelectColumnMeta } from '../../../constants';
|
|
2
2
|
import { actionSanitizeState } from '../../../actions/actions';
|
|
3
|
-
import {
|
|
3
|
+
import { withMemoization } from '../../../utils/util';
|
|
4
|
+
// eslint-disable-next-line sonarjs/no-unused-collection
|
|
4
5
|
let cleanedUpFieldIds = [];
|
|
5
6
|
const SANITIZE_PROPERTIES = [
|
|
6
7
|
'sortingOrder',
|
|
@@ -9,17 +10,50 @@ const SANITIZE_PROPERTIES = [
|
|
|
9
10
|
'columnWidths',
|
|
10
11
|
'colOrder',
|
|
11
12
|
'aggregationInfo',
|
|
12
|
-
'groups'
|
|
13
|
+
'groups',
|
|
14
|
+
'_groupsSnapshot',
|
|
15
|
+
'visibleColumns'
|
|
13
16
|
];
|
|
17
|
+
const STATE_SLICE_TO_FIELD_FEATURE_MAP = new Map([
|
|
18
|
+
['aggregationInfo', 'aggregation'],
|
|
19
|
+
['sortingOrder', 'sort'],
|
|
20
|
+
['groups', 'grouping'],
|
|
21
|
+
['_groupsSnapshot', 'grouping'],
|
|
22
|
+
['filterExpression', 'filter'],
|
|
23
|
+
['freezeColumns', 'freeze']
|
|
24
|
+
]);
|
|
25
|
+
const OOTB_COLUMN_FIELD_MAP = new Map([
|
|
26
|
+
['RowActionMenu', rowActionColumnMeta.field],
|
|
27
|
+
['RowDeleteAction', rowDeleteColumnMeta.field],
|
|
28
|
+
['RowSelect', rowSelectColumnMeta.field],
|
|
29
|
+
['RowDragDrop', rowDragDropColumnMeta.field],
|
|
30
|
+
['RowError', rowErrorColumnMeta.field]
|
|
31
|
+
]);
|
|
32
|
+
function getField(id, columns, fieldDefsMap) {
|
|
33
|
+
// Hidden columns fieldDefs will be present in fieldDefsMap.
|
|
34
|
+
const fieldFromMap = fieldDefsMap.get(id);
|
|
35
|
+
if (fieldFromMap)
|
|
36
|
+
return fieldFromMap;
|
|
37
|
+
// OOTB columns are not in fieldDefsMap, check known OOTB column meta.
|
|
38
|
+
const fieldFromOOTB = OOTB_COLUMN_FIELD_MAP.get(id);
|
|
39
|
+
if (fieldFromOOTB)
|
|
40
|
+
return fieldFromOOTB;
|
|
41
|
+
// Custom columns won't be in fieldDefsMap or OOTB map, fall back to view columns.
|
|
42
|
+
return columns.find(c => c.field.id === id)?.field;
|
|
43
|
+
}
|
|
14
44
|
export function findInvalidFieldInFilterRecursively(obj, fieldDefs) {
|
|
15
45
|
let found = false;
|
|
16
46
|
// Todo: comeback to this if ISSUE-79362 is resolved
|
|
17
47
|
// for now using name rather than ID to check for filterExpression as FE uses name rather than ID
|
|
18
|
-
if (obj?.field
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
48
|
+
if (obj?.field) {
|
|
49
|
+
// TODO this need to be filter via ID rather than name.
|
|
50
|
+
const fieldDef = fieldDefs.find(field => field.name === obj.field);
|
|
51
|
+
// Either the field is not found in fieldDefs or the fieldDef does not support filtering
|
|
52
|
+
if (!fieldDef || !fieldDef.filter) {
|
|
53
|
+
cleanedUpFieldIds.push(obj.field);
|
|
54
|
+
found = true;
|
|
55
|
+
return found;
|
|
56
|
+
}
|
|
23
57
|
}
|
|
24
58
|
if (obj && typeof obj === 'object') {
|
|
25
59
|
// DO we have the field in children? If Yes return true
|
|
@@ -30,27 +64,40 @@ export function findInvalidFieldInFilterRecursively(obj, fieldDefs) {
|
|
|
30
64
|
}
|
|
31
65
|
return found;
|
|
32
66
|
}
|
|
67
|
+
function sanitizeAdditionalFields(additionalFields, fieldDefsMap) {
|
|
68
|
+
return additionalFields.filter(({ id }) => {
|
|
69
|
+
if (!fieldDefsMap.has(id)) {
|
|
70
|
+
cleanedUpFieldIds.push(id);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
33
76
|
/**
|
|
34
77
|
* Filter out the conditional style formats that are referencing invalid fields which are not present in {@link Meta.fieldDefs}.
|
|
35
78
|
* @param conditionalStyleFormats formats to sanitize
|
|
36
|
-
* @param fieldDefs valid {@link
|
|
79
|
+
* @param fieldDefs valid {@link fieldDefs}
|
|
37
80
|
* @returns sanitized formats.
|
|
38
81
|
*/
|
|
39
82
|
export function sanitizeConditionalStyleFormats(conditionalStyleFormats, fieldDefs) {
|
|
40
83
|
return conditionalStyleFormats.filter(({ condition, fieldName }) => {
|
|
41
84
|
return (!findInvalidFieldInFilterRecursively(condition, fieldDefs) &&
|
|
42
|
-
|
|
85
|
+
// TODO: Replace field name lookup with field ID once the filter expression uses field ID instead of name.
|
|
86
|
+
fieldDefs.some(field => field.name === fieldName));
|
|
43
87
|
});
|
|
44
88
|
}
|
|
45
|
-
function sanitizeArray(columns, state, prop) {
|
|
89
|
+
function sanitizeArray(columns, state, prop, fieldDefsMap) {
|
|
46
90
|
let modified = false;
|
|
47
91
|
const items = [...state[prop]];
|
|
48
92
|
const isObject = typeof items[0] === 'object';
|
|
49
93
|
for (let i = items.length - 1; i >= 0; i -= 1) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
94
|
+
const key = isObject
|
|
95
|
+
? items[i].columnId
|
|
96
|
+
: items[i];
|
|
97
|
+
const field = getField(`${key}`, columns, fieldDefsMap);
|
|
98
|
+
const mappedFieldFeature = STATE_SLICE_TO_FIELD_FEATURE_MAP.get(prop);
|
|
99
|
+
// Clear up the referred fields in state slice, for non existent field or if the feature is disabled for a field.
|
|
100
|
+
if (!field || (mappedFieldFeature && !field[mappedFieldFeature])) {
|
|
54
101
|
const removedItem = items.splice(i, 1);
|
|
55
102
|
cleanedUpFieldIds.push(isObject
|
|
56
103
|
? removedItem[0]?.columnId
|
|
@@ -63,11 +110,15 @@ function sanitizeArray(columns, state, prop) {
|
|
|
63
110
|
}
|
|
64
111
|
return items;
|
|
65
112
|
}
|
|
66
|
-
function sanitizeObject(columns, state, prop) {
|
|
113
|
+
function sanitizeObject(columns, state, prop, fieldDefsMap) {
|
|
67
114
|
let modified = false;
|
|
68
115
|
const items = { ...state[prop] };
|
|
69
116
|
Object.keys(items).forEach(id => {
|
|
70
|
-
|
|
117
|
+
// Hidden Columns fieldDefs will be present in fieldDefsMap.
|
|
118
|
+
const field = getField(id, columns, fieldDefsMap);
|
|
119
|
+
const mappedFieldFeature = STATE_SLICE_TO_FIELD_FEATURE_MAP.get(prop);
|
|
120
|
+
// Clear up the referred fields in state slice, for non existent field or if the feature is disabled for a field.
|
|
121
|
+
if (!field || (mappedFieldFeature && !field[mappedFieldFeature])) {
|
|
71
122
|
cleanedUpFieldIds.push(id);
|
|
72
123
|
delete items[id];
|
|
73
124
|
modified = true;
|
|
@@ -78,14 +129,17 @@ function sanitizeObject(columns, state, prop) {
|
|
|
78
129
|
}
|
|
79
130
|
return items;
|
|
80
131
|
}
|
|
81
|
-
function processCustomFields(customFields,
|
|
132
|
+
function processCustomFields(customFields, fieldDefsMap) {
|
|
82
133
|
let modified = false;
|
|
83
134
|
for (let i = customFields.length - 1; i >= 0; i -= 1) {
|
|
84
135
|
// if any field is missing in a custom column expression , remove that column.
|
|
85
|
-
const { expression } = customFields[i];
|
|
136
|
+
const { expression, primaryColumnId } = customFields[i];
|
|
86
137
|
const fieldIdsInCustomField = expression.filter(e => !Array.isArray(e));
|
|
87
|
-
const staleFieldIds = fieldIdsInCustomField.filter(id => !
|
|
88
|
-
|
|
138
|
+
const staleFieldIds = fieldIdsInCustomField.filter(id => !fieldDefsMap.has(`${id}`));
|
|
139
|
+
const primaryFieldDef = fieldDefsMap.get(`${primaryColumnId}`);
|
|
140
|
+
// Clear up the non existent fields used for customFields OR customizeColumn is disabled on the primary field.
|
|
141
|
+
if ((staleFieldIds && staleFieldIds.length) ||
|
|
142
|
+
(primaryFieldDef && !primaryFieldDef.customizeColumn)) {
|
|
89
143
|
cleanedUpFieldIds.push(...staleFieldIds);
|
|
90
144
|
modified = true;
|
|
91
145
|
customFields.splice(i, 1);
|
|
@@ -94,13 +148,16 @@ function processCustomFields(customFields, fieldDefs) {
|
|
|
94
148
|
return modified;
|
|
95
149
|
}
|
|
96
150
|
// TODO: As of today this only handles switching to default format if renderformatter is removed. It does not remove renderformatter for a column from state if the column is removed from meta.
|
|
97
|
-
function sanitizedRenderFormatter(renderFormatter,
|
|
151
|
+
function sanitizedRenderFormatter(renderFormatter, view, fieldDefsMap) {
|
|
98
152
|
let modified = false;
|
|
99
153
|
Object.keys(renderFormatter).forEach(fieldId => {
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
102
|
-
const
|
|
103
|
-
const
|
|
154
|
+
const field = fieldDefsMap.get(fieldId);
|
|
155
|
+
if (field) {
|
|
156
|
+
const formattersForType = view.renderFormatterTypeMap?.[field.type] || [];
|
|
157
|
+
const columnRenderFormatters = field.formatters ?? formattersForType ?? [];
|
|
158
|
+
const selectedRenderFormatter = typeof renderFormatter[fieldId] === 'string'
|
|
159
|
+
? renderFormatter[fieldId]
|
|
160
|
+
: renderFormatter[fieldId].type;
|
|
104
161
|
if (!columnRenderFormatters.find(crf => crf.value === selectedRenderFormatter)) {
|
|
105
162
|
const defaultRenderFormatter = columnRenderFormatters.find(crf => crf.label === DEFAULT_FORMAT);
|
|
106
163
|
renderFormatter[fieldId] = defaultRenderFormatter?.value || DEFAULT_FORMAT;
|
|
@@ -122,17 +179,17 @@ function getType(obj, prop) {
|
|
|
122
179
|
}
|
|
123
180
|
return 0;
|
|
124
181
|
}
|
|
125
|
-
function sanitizeProperties(properties, state,
|
|
182
|
+
function sanitizeProperties(properties, columns, state, fieldDefsMap) {
|
|
126
183
|
return properties.reduce((acc, p) => {
|
|
127
184
|
const type = getType(state, p);
|
|
128
185
|
if (type === 1) {
|
|
129
|
-
const sanitizedArray = sanitizeArray(columns, state, p);
|
|
186
|
+
const sanitizedArray = sanitizeArray(columns, state, p, fieldDefsMap);
|
|
130
187
|
if (sanitizedArray !== state[p]) {
|
|
131
188
|
acc[p] = sanitizedArray;
|
|
132
189
|
}
|
|
133
190
|
}
|
|
134
191
|
else if (type === 2) {
|
|
135
|
-
const sanitizedObject = sanitizeObject(columns, state, p);
|
|
192
|
+
const sanitizedObject = sanitizeObject(columns, state, p, fieldDefsMap);
|
|
136
193
|
if (sanitizedObject !== state[p]) {
|
|
137
194
|
acc[p] = sanitizedObject;
|
|
138
195
|
}
|
|
@@ -144,15 +201,16 @@ function sanitizeProperties(properties, state, columns) {
|
|
|
144
201
|
return acc;
|
|
145
202
|
}, {});
|
|
146
203
|
}
|
|
147
|
-
const sanitize = ([{ getView, getState, dispatch }]) => {
|
|
204
|
+
const sanitize = ([{ getView, getState, dispatch, getRsStore }]) => {
|
|
148
205
|
const state = { ...getState() };
|
|
206
|
+
const fieldDefsMap = getRsStore().fieldDefsMap;
|
|
149
207
|
const { fieldDefs } = getView().meta;
|
|
150
208
|
// sanitize state with simple array and object structures with one level
|
|
151
|
-
const payload = sanitizeProperties(SANITIZE_PROPERTIES,
|
|
209
|
+
const payload = sanitizeProperties(SANITIZE_PROPERTIES, getView().columns ?? [], state, fieldDefsMap);
|
|
152
210
|
// sanitize Custom Fields
|
|
153
211
|
if (state.customFields && state.customFields.length > 0) {
|
|
154
212
|
const customFields = [...state.customFields];
|
|
155
|
-
if (processCustomFields(customFields,
|
|
213
|
+
if (processCustomFields(customFields, fieldDefsMap)) {
|
|
156
214
|
payload.customFields = customFields;
|
|
157
215
|
}
|
|
158
216
|
}
|
|
@@ -165,14 +223,16 @@ const sanitize = ([{ getView, getState, dispatch }]) => {
|
|
|
165
223
|
if (state.hierarchicalGroup) {
|
|
166
224
|
const ids = [state.hierarchicalGroup.columnId, state.hierarchicalGroup.targetId];
|
|
167
225
|
ids.forEach(id => {
|
|
168
|
-
if (!
|
|
226
|
+
if (!id)
|
|
227
|
+
return;
|
|
228
|
+
if (!fieldDefsMap.has(id)) {
|
|
169
229
|
payload.hierarchicalGroup = {};
|
|
170
230
|
}
|
|
171
231
|
});
|
|
172
232
|
}
|
|
173
233
|
if (state.renderFormatter) {
|
|
174
234
|
const renderFormatter = { ...state.renderFormatter };
|
|
175
|
-
if (sanitizedRenderFormatter(renderFormatter, getView()
|
|
235
|
+
if (sanitizedRenderFormatter(renderFormatter, getView(), fieldDefsMap)) {
|
|
176
236
|
payload.renderFormatter = renderFormatter;
|
|
177
237
|
}
|
|
178
238
|
}
|
|
@@ -180,8 +240,27 @@ const sanitize = ([{ getView, getState, dispatch }]) => {
|
|
|
180
240
|
if (state.conditionalStyleFormats) {
|
|
181
241
|
payload.conditionalStyleFormats = sanitizeConditionalStyleFormats(state.conditionalStyleFormats, fieldDefs);
|
|
182
242
|
}
|
|
183
|
-
//
|
|
184
|
-
|
|
243
|
+
// TODO: sanitize for now removed state.?editInfo
|
|
244
|
+
if (state.groups) {
|
|
245
|
+
payload.groups = state.groups.map(group => {
|
|
246
|
+
if (group.additionalFields) {
|
|
247
|
+
const sanitizedAdditionalFields = sanitizeAdditionalFields(group.additionalFields, fieldDefsMap);
|
|
248
|
+
group.additionalFields = [...sanitizedAdditionalFields];
|
|
249
|
+
}
|
|
250
|
+
return group;
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
254
|
+
if (state._groupsSnapshot) {
|
|
255
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
256
|
+
payload._groupsSnapshot = state._groupsSnapshot.map(group => {
|
|
257
|
+
if (group.additionalFields) {
|
|
258
|
+
const sanitizedAdditionalFields = sanitizeAdditionalFields(group.additionalFields, fieldDefsMap);
|
|
259
|
+
group.additionalFields = [...sanitizedAdditionalFields];
|
|
260
|
+
}
|
|
261
|
+
return group;
|
|
262
|
+
});
|
|
263
|
+
}
|
|
185
264
|
cleanedUpFieldIds = [];
|
|
186
265
|
// Dispatch payload only if there is something to sanitize in state
|
|
187
266
|
if (Object.keys(payload).length !== 0) {
|
|
@@ -192,7 +271,7 @@ const sanitize = ([{ getView, getState, dispatch }]) => {
|
|
|
192
271
|
* Sanitizes the RS state using the preset {@link Meta} information. Fields defined in {@link FieldDef} that are not included in the preset {@link Meta} but are part of the following {@link State} slices are removed:
|
|
193
272
|
* - {@link State.sortingOrder}
|
|
194
273
|
* - {@link State.freezeColumns}
|
|
195
|
-
* - {@link State.
|
|
274
|
+
* - {@link State.visibleColumns}
|
|
196
275
|
* - {@link State.columnWidths}
|
|
197
276
|
* - {@link State.colOrder}
|
|
198
277
|
* - {@link State.aggregationInfo}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateSanitization.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateSanitization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExcludeStrict } from '@pega/cosmos-react-core';\n\nimport { DEFAULT_FORMAT } from '../../../constants';\nimport { actionSanitizeState } from '../../../actions/actions';\nimport { logInvalidFields, withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { CustomField, State } from '../../../../../types/State.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport type {\n ConditionalStyleFormat,\n FieldDef,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Meta\n} from '../../../../../types/Meta.types';\n\nlet cleanedUpFieldIds: string[] = [];\nconst SANITIZE_PROPERTIES = [\n 'sortingOrder',\n 'freezeColumns',\n 'hiddenColumns',\n 'columnWidths',\n 'colOrder',\n 'aggregationInfo',\n 'groups'\n] satisfies (keyof State)[];\n\ntype PropertiesValue = State[(typeof SANITIZE_PROPERTIES)[number]];\ntype ObjectTypes<T> = T extends object ? (T extends any[] ? never : T) : never;\ntype ArrayTypes<T> = T extends any[] ? T : never;\n\ntype ObjectPropertiesValue = ObjectTypes<PropertiesValue>;\ntype ArrayPropertiesValue = ArrayTypes<PropertiesValue>;\n\nexport function findInvalidFieldInFilterRecursively(\n obj: Record<string, any>,\n fieldDefs: FieldDef[]\n): boolean {\n let found = false;\n // Todo: comeback to this if ISSUE-79362 is resolved\n // for now using name rather than ID to check for filterExpression as FE uses name rather than ID\n if (obj?.field && !fieldDefs.find(f => f.name === obj.field)) {\n cleanedUpFieldIds.push(obj.field);\n found = true;\n // THe field is not in fieldDefs? so return true saying found an invalid entry\n return found;\n }\n\n if (obj && typeof obj === 'object') {\n // DO we have the field in children? If Yes return true\n return Object.keys(obj).some(i => {\n found = findInvalidFieldInFilterRecursively(obj[i], fieldDefs);\n return found;\n });\n }\n return found;\n}\n/**\n * Filter out the conditional style formats that are referencing invalid fields which are not present in {@link Meta.fieldDefs}.\n * @param conditionalStyleFormats formats to sanitize\n * @param fieldDefs valid {@link Meta.fieldDefs}\n * @returns sanitized formats.\n */\nexport function sanitizeConditionalStyleFormats(\n conditionalStyleFormats: ConditionalStyleFormat[],\n fieldDefs: FieldDef[]\n) {\n return conditionalStyleFormats.filter(({ condition, fieldName }) => {\n return (\n !findInvalidFieldInFilterRecursively(condition, fieldDefs) &&\n fieldDefs.some(fieldDef => fieldDef.name === fieldName)\n );\n });\n}\n\nfunction sanitizeArray(columns: Column[], state: State, prop: keyof State): ArrayPropertiesValue {\n let modified = false;\n const items = [...(state[prop] as ArrayPropertiesValue)];\n const isObject = typeof items[0] === 'object';\n for (let i = items.length - 1; i >= 0; i -= 1) {\n if (\n !columns.find(\n col =>\n `${col.field.id}` ===\n (isObject\n ? (items[i] as ExcludeStrict<ArrayPropertiesValue[number], string>).columnId\n : items[i])\n )\n ) {\n const removedItem = items.splice(i, 1);\n cleanedUpFieldIds.push(\n isObject\n ? (removedItem[0] as ExcludeStrict<ArrayPropertiesValue[number], string>)?.columnId\n : (removedItem[0] as string)\n );\n modified = true;\n }\n }\n if (!modified) {\n return state[prop] as ArrayPropertiesValue;\n }\n return items as ArrayPropertiesValue;\n}\n\nfunction sanitizeObject(columns: Column[], state: State, prop: keyof State): ObjectPropertiesValue {\n let modified = false;\n const items = { ...(state[prop] as ObjectPropertiesValue) };\n Object.keys(items).forEach(id => {\n if (!columns.find(col => `${col.field.id}` === id)) {\n cleanedUpFieldIds.push(id);\n delete items[id];\n modified = true;\n }\n });\n if (!modified) {\n return state[prop] as ObjectPropertiesValue;\n }\n return items;\n}\n\nfunction processCustomFields(customFields: CustomField[], fieldDefs: FieldDef[]) {\n let modified = false;\n for (let i = customFields.length - 1; i >= 0; i -= 1) {\n // if any field is missing in a custom column expression , remove that column.\n const { expression } = customFields[i];\n const fieldIdsInCustomField = expression.filter(e => !Array.isArray(e));\n const staleFieldIds = fieldIdsInCustomField.filter(\n id => !fieldDefs.find(f => `${f.id}` === id)\n );\n if (staleFieldIds && staleFieldIds.length) {\n cleanedUpFieldIds.push(...(staleFieldIds as string[]));\n modified = true;\n customFields.splice(i, 1);\n }\n }\n\n return modified;\n}\n\n// TODO: As of today this only handles switching to default format if renderformatter is removed. It does not remove renderformatter for a column from state if the column is removed from meta.\nfunction sanitizedRenderFormatter(\n renderFormatter: NonNullable<State['renderFormatter']>,\n columns: Column[]\n): boolean {\n let modified = false;\n Object.keys(renderFormatter).forEach(fieldId => {\n const column = columns.find(c => c.field.name === fieldId);\n if (column) {\n const columnRenderFormatters = column.getRenderFormatters() || [];\n const selectedRenderFormatter = renderFormatter[fieldId];\n if (!columnRenderFormatters.find(crf => crf.value === selectedRenderFormatter)) {\n const defaultRenderFormatter = columnRenderFormatters.find(\n crf => crf.label === DEFAULT_FORMAT\n );\n renderFormatter[fieldId] = defaultRenderFormatter?.value || DEFAULT_FORMAT;\n cleanedUpFieldIds.push(fieldId);\n modified = true;\n }\n }\n });\n return modified;\n}\n\nfunction getType(obj: State, prop: keyof State): number {\n if (obj[prop]) {\n if (Array.isArray(obj[prop])) {\n // Array.\n return 1;\n }\n // object.\n return 2;\n }\n return 0;\n}\nfunction sanitizeProperties(properties: (keyof State)[], state: State, columns: Column[]) {\n return properties.reduce<State>((acc, p) => {\n const type = getType(state, p);\n if (type === 1) {\n const sanitizedArray = sanitizeArray(columns, state, p);\n if (sanitizedArray !== state[p]) {\n (acc[p] as ArrayPropertiesValue) = sanitizedArray;\n }\n } else if (type === 2) {\n const sanitizedObject = sanitizeObject(columns, state, p);\n if (sanitizedObject !== state[p]) {\n (acc[p] as Record<string, number>) = sanitizedObject;\n }\n } else {\n // No-action as we are not worried about sanitization to scalar props in state\n // most of the state we are worried about is array or object\n }\n return acc;\n }, {} satisfies State);\n}\n\nconst sanitize = ([{ getView, getState, dispatch }]: [featureProps: BeforeRenderFeatureProps]) => {\n const state = { ...getState() };\n const { fieldDefs } = getView().meta;\n\n // sanitize state with simple array and object structures with one level\n const payload = sanitizeProperties(SANITIZE_PROPERTIES, state, getView().columns!);\n\n // sanitize Custom Fields\n if (state.customFields && state.customFields.length > 0) {\n const customFields = [...state.customFields];\n if (processCustomFields(customFields, fieldDefs)) {\n payload.customFields = customFields;\n }\n }\n\n // sanitize filterExpression\n if (\n state.filterExpression &&\n findInvalidFieldInFilterRecursively(state.filterExpression, fieldDefs)\n ) {\n payload.filterExpression = undefined;\n }\n\n // sanitize hierarchicalGroup\n if (state.hierarchicalGroup) {\n const ids = [state.hierarchicalGroup.columnId, state.hierarchicalGroup.targetId];\n ids.forEach(id => {\n if (!fieldDefs.find(field => field.id === id)) {\n payload.hierarchicalGroup = {};\n }\n });\n }\n\n if (state.renderFormatter) {\n const renderFormatter = { ...state.renderFormatter };\n if (sanitizedRenderFormatter(renderFormatter, getView().columns!)) {\n payload.renderFormatter = renderFormatter;\n }\n }\n\n // Sanitize conditionalStyleFormats\n if (state.conditionalStyleFormats) {\n payload.conditionalStyleFormats = sanitizeConditionalStyleFormats(\n state.conditionalStyleFormats,\n fieldDefs\n );\n }\n\n // Log all invalid IDs found in state\n logInvalidFields(cleanedUpFieldIds);\n cleanedUpFieldIds = [];\n\n // Dispatch payload only if there is something to sanitize in state\n if (Object.keys(payload).length !== 0) {\n dispatch(actionSanitizeState(payload));\n }\n};\n\n/**\n * Sanitizes the RS state using the preset {@link Meta} information. Fields defined in {@link FieldDef} that are not included in the preset {@link Meta} but are part of the following {@link State} slices are removed:\n * - {@link State.sortingOrder}\n * - {@link State.freezeColumns}\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n * - {@link State.colOrder}\n * - {@link State.aggregationInfo}\n * - {@link State.groups}\n * - {@link State.renderFormatter}\n * - {@link State.hierarchicalGroup}\n * - {@link State.filterExpression}\n * - {@link State.conditionalStyleFormats}\n *\n * This operation is triggered when {@link State.personalization.active} or {@link State.customFields} is updated.\n */\nexport default () => {\n const memoizedSanitize = withMemoization(sanitize);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedSanitize([featureProps], [state.customFields, state.personalization?.active]);\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"stateSanitization.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateSanitization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExcludeStrict } from '@pega/cosmos-react-core';\n\nimport {\n DEFAULT_FORMAT,\n rowActionColumnMeta,\n rowDeleteColumnMeta,\n rowDragDropColumnMeta,\n rowErrorColumnMeta,\n rowSelectColumnMeta\n} from '../../../constants';\nimport { actionSanitizeState } from '../../../actions/actions';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { CustomField, GroupAdditionalField, State } from '../../../../../types/State.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport type {\n ConditionalStyleFormat,\n FieldDef,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Meta\n} from '../../../../../types/Meta.types';\nimport type View from '../../../generators/ViewGenerator';\n\n// eslint-disable-next-line sonarjs/no-unused-collection\nlet cleanedUpFieldIds: string[] = [];\nconst SANITIZE_PROPERTIES = [\n 'sortingOrder',\n 'freezeColumns',\n 'hiddenColumns',\n 'columnWidths',\n 'colOrder',\n 'aggregationInfo',\n 'groups',\n '_groupsSnapshot',\n 'visibleColumns'\n] satisfies (keyof State)[];\n\nconst STATE_SLICE_TO_FIELD_FEATURE_MAP: Map<keyof State, keyof FieldDef> = new Map([\n ['aggregationInfo', 'aggregation'],\n ['sortingOrder', 'sort'],\n ['groups', 'grouping'],\n ['_groupsSnapshot', 'grouping'],\n ['filterExpression', 'filter'],\n ['freezeColumns', 'freeze']\n]);\n\ntype PropertiesValue = State[(typeof SANITIZE_PROPERTIES)[number]];\ntype ObjectTypes<T> = T extends object ? (T extends any[] ? never : T) : never;\ntype ArrayTypes<T> = T extends any[] ? T : never;\n\ntype ObjectPropertiesValue = ObjectTypes<PropertiesValue>;\ntype ArrayPropertiesValue = ArrayTypes<PropertiesValue>;\n\nconst OOTB_COLUMN_FIELD_MAP = new Map<string, FieldDef>([\n ['RowActionMenu', rowActionColumnMeta.field],\n ['RowDeleteAction', rowDeleteColumnMeta.field],\n ['RowSelect', rowSelectColumnMeta.field],\n ['RowDragDrop', rowDragDropColumnMeta.field],\n ['RowError', rowErrorColumnMeta.field]\n]);\n\nfunction getField(\n id: string,\n columns: Column[],\n fieldDefsMap: Map<string, FieldDef>\n): FieldDef | undefined {\n // Hidden columns fieldDefs will be present in fieldDefsMap.\n const fieldFromMap = fieldDefsMap.get(id);\n if (fieldFromMap) return fieldFromMap;\n\n // OOTB columns are not in fieldDefsMap, check known OOTB column meta.\n const fieldFromOOTB = OOTB_COLUMN_FIELD_MAP.get(id);\n if (fieldFromOOTB) return fieldFromOOTB;\n\n // Custom columns won't be in fieldDefsMap or OOTB map, fall back to view columns.\n return columns.find(c => c.field.id === id)?.field;\n}\nexport function findInvalidFieldInFilterRecursively(\n obj: Record<string, any>,\n fieldDefs: FieldDef[]\n): boolean {\n let found = false;\n // Todo: comeback to this if ISSUE-79362 is resolved\n // for now using name rather than ID to check for filterExpression as FE uses name rather than ID\n if (obj?.field) {\n // TODO this need to be filter via ID rather than name.\n const fieldDef = fieldDefs.find(field => field.name === obj.field);\n // Either the field is not found in fieldDefs or the fieldDef does not support filtering\n if (!fieldDef || !fieldDef.filter) {\n cleanedUpFieldIds.push(obj.field);\n found = true;\n\n return found;\n }\n }\n\n if (obj && typeof obj === 'object') {\n // DO we have the field in children? If Yes return true\n return Object.keys(obj).some(i => {\n found = findInvalidFieldInFilterRecursively(obj[i], fieldDefs);\n return found;\n });\n }\n return found;\n}\n\nfunction sanitizeAdditionalFields(\n additionalFields: GroupAdditionalField[],\n fieldDefsMap: Map<string, FieldDef>\n) {\n return additionalFields.filter(({ id }) => {\n if (!fieldDefsMap.has(id)) {\n cleanedUpFieldIds.push(id);\n return false;\n }\n return true;\n });\n}\n/**\n * Filter out the conditional style formats that are referencing invalid fields which are not present in {@link Meta.fieldDefs}.\n * @param conditionalStyleFormats formats to sanitize\n * @param fieldDefs valid {@link fieldDefs}\n * @returns sanitized formats.\n */\nexport function sanitizeConditionalStyleFormats(\n conditionalStyleFormats: ConditionalStyleFormat[],\n fieldDefs: FieldDef[]\n) {\n return conditionalStyleFormats.filter(({ condition, fieldName }) => {\n return (\n !findInvalidFieldInFilterRecursively(condition, fieldDefs) &&\n // TODO: Replace field name lookup with field ID once the filter expression uses field ID instead of name.\n fieldDefs.some(field => field.name === fieldName)\n );\n });\n}\n\nfunction sanitizeArray(\n columns: Column[],\n state: State,\n prop: keyof State,\n fieldDefsMap: Map<string, FieldDef>\n): ArrayPropertiesValue {\n let modified = false;\n const items = [...(state[prop] as ArrayPropertiesValue)];\n const isObject = typeof items[0] === 'object';\n for (let i = items.length - 1; i >= 0; i -= 1) {\n const key = isObject\n ? (items[i] as ExcludeStrict<ArrayPropertiesValue[number], string>).columnId\n : items[i];\n\n const field = getField(`${key}`, columns, fieldDefsMap);\n const mappedFieldFeature = STATE_SLICE_TO_FIELD_FEATURE_MAP.get(prop);\n // Clear up the referred fields in state slice, for non existent field or if the feature is disabled for a field.\n if (!field || (mappedFieldFeature && !field[mappedFieldFeature])) {\n const removedItem = items.splice(i, 1);\n cleanedUpFieldIds.push(\n isObject\n ? (removedItem[0] as ExcludeStrict<ArrayPropertiesValue[number], string>)?.columnId\n : (removedItem[0] as string)\n );\n modified = true;\n }\n }\n if (!modified) {\n return state[prop] as ArrayPropertiesValue;\n }\n return items as ArrayPropertiesValue;\n}\n\nfunction sanitizeObject(\n columns: Column[],\n state: State,\n prop: keyof State,\n fieldDefsMap: Map<string, FieldDef>\n): ObjectPropertiesValue {\n let modified = false;\n const items = { ...(state[prop] as ObjectPropertiesValue) };\n Object.keys(items).forEach(id => {\n // Hidden Columns fieldDefs will be present in fieldDefsMap.\n const field = getField(id, columns, fieldDefsMap);\n const mappedFieldFeature = STATE_SLICE_TO_FIELD_FEATURE_MAP.get(prop);\n\n // Clear up the referred fields in state slice, for non existent field or if the feature is disabled for a field.\n if (!field || (mappedFieldFeature && !field[mappedFieldFeature])) {\n cleanedUpFieldIds.push(id);\n delete items[id];\n modified = true;\n }\n });\n if (!modified) {\n return state[prop] as ObjectPropertiesValue;\n }\n return items;\n}\n\nfunction processCustomFields(customFields: CustomField[], fieldDefsMap: Map<string, FieldDef>) {\n let modified = false;\n for (let i = customFields.length - 1; i >= 0; i -= 1) {\n // if any field is missing in a custom column expression , remove that column.\n const { expression, primaryColumnId } = customFields[i];\n const fieldIdsInCustomField = expression.filter(e => !Array.isArray(e));\n const staleFieldIds = fieldIdsInCustomField.filter(id => !fieldDefsMap.has(`${id}`));\n const primaryFieldDef = fieldDefsMap.get(`${primaryColumnId}`);\n // Clear up the non existent fields used for customFields OR customizeColumn is disabled on the primary field.\n if (\n (staleFieldIds && staleFieldIds.length) ||\n (primaryFieldDef && !primaryFieldDef.customizeColumn)\n ) {\n cleanedUpFieldIds.push(...(staleFieldIds as string[]));\n modified = true;\n customFields.splice(i, 1);\n }\n }\n\n return modified;\n}\n\n// TODO: As of today this only handles switching to default format if renderformatter is removed. It does not remove renderformatter for a column from state if the column is removed from meta.\nfunction sanitizedRenderFormatter(\n renderFormatter: NonNullable<State['renderFormatter']>,\n view: View,\n fieldDefsMap: Map<string, FieldDef>\n): boolean {\n let modified = false;\n Object.keys(renderFormatter).forEach(fieldId => {\n const field = fieldDefsMap.get(fieldId);\n\n if (field) {\n const formattersForType = view.renderFormatterTypeMap?.[field.type] || [];\n const columnRenderFormatters = field.formatters ?? formattersForType ?? [];\n const selectedRenderFormatter =\n typeof renderFormatter[fieldId] === 'string'\n ? renderFormatter[fieldId]\n : renderFormatter[fieldId].type;\n if (!columnRenderFormatters.find(crf => crf.value === selectedRenderFormatter)) {\n const defaultRenderFormatter = columnRenderFormatters.find(\n crf => crf.label === DEFAULT_FORMAT\n );\n renderFormatter[fieldId] = defaultRenderFormatter?.value || DEFAULT_FORMAT;\n cleanedUpFieldIds.push(fieldId);\n modified = true;\n }\n }\n });\n return modified;\n}\n\nfunction getType(obj: State, prop: keyof State): number {\n if (obj[prop]) {\n if (Array.isArray(obj[prop])) {\n // Array.\n return 1;\n }\n // object.\n return 2;\n }\n return 0;\n}\nfunction sanitizeProperties(\n properties: (keyof State)[],\n columns: Column[],\n state: State,\n fieldDefsMap: Map<string, FieldDef>\n) {\n return properties.reduce<State>((acc, p) => {\n const type = getType(state, p);\n if (type === 1) {\n const sanitizedArray = sanitizeArray(columns, state, p, fieldDefsMap);\n if (sanitizedArray !== state[p]) {\n (acc[p] as ArrayPropertiesValue) = sanitizedArray;\n }\n } else if (type === 2) {\n const sanitizedObject = sanitizeObject(columns, state, p, fieldDefsMap);\n if (sanitizedObject !== state[p]) {\n (acc[p] as Record<string, number>) = sanitizedObject;\n }\n } else {\n // No-action as we are not worried about sanitization to scalar props in state\n // most of the state we are worried about is array or object\n }\n return acc;\n }, {} satisfies State);\n}\n\nconst sanitize = ([{ getView, getState, dispatch, getRsStore }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const state = { ...getState() };\n const fieldDefsMap = getRsStore().fieldDefsMap;\n const { fieldDefs } = getView().meta;\n\n // sanitize state with simple array and object structures with one level\n const payload = sanitizeProperties(\n SANITIZE_PROPERTIES,\n getView().columns ?? [],\n state,\n fieldDefsMap\n );\n\n // sanitize Custom Fields\n if (state.customFields && state.customFields.length > 0) {\n const customFields = [...state.customFields];\n if (processCustomFields(customFields, fieldDefsMap)) {\n payload.customFields = customFields;\n }\n }\n\n // sanitize filterExpression\n if (\n state.filterExpression &&\n findInvalidFieldInFilterRecursively(state.filterExpression, fieldDefs)\n ) {\n payload.filterExpression = undefined;\n }\n\n // sanitize hierarchicalGroup\n if (state.hierarchicalGroup) {\n const ids = [state.hierarchicalGroup.columnId, state.hierarchicalGroup.targetId];\n ids.forEach(id => {\n if (!id) return;\n\n if (!fieldDefsMap.has(id)) {\n payload.hierarchicalGroup = {};\n }\n });\n }\n\n if (state.renderFormatter) {\n const renderFormatter = { ...state.renderFormatter };\n if (sanitizedRenderFormatter(renderFormatter, getView(), fieldDefsMap)) {\n payload.renderFormatter = renderFormatter;\n }\n }\n\n // Sanitize conditionalStyleFormats\n if (state.conditionalStyleFormats) {\n payload.conditionalStyleFormats = sanitizeConditionalStyleFormats(\n state.conditionalStyleFormats,\n fieldDefs\n );\n }\n\n // TODO: sanitize for now removed state.?editInfo\n\n if (state.groups) {\n payload.groups = state.groups.map(group => {\n if (group.additionalFields) {\n const sanitizedAdditionalFields = sanitizeAdditionalFields(\n group.additionalFields,\n fieldDefsMap\n );\n group.additionalFields = [...sanitizedAdditionalFields];\n }\n return group;\n });\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (state._groupsSnapshot) {\n // eslint-disable-next-line no-underscore-dangle\n payload._groupsSnapshot = state._groupsSnapshot.map(group => {\n if (group.additionalFields) {\n const sanitizedAdditionalFields = sanitizeAdditionalFields(\n group.additionalFields,\n fieldDefsMap\n );\n group.additionalFields = [...sanitizedAdditionalFields];\n }\n return group;\n });\n }\n cleanedUpFieldIds = [];\n\n // Dispatch payload only if there is something to sanitize in state\n if (Object.keys(payload).length !== 0) {\n dispatch(actionSanitizeState(payload));\n }\n};\n\n/**\n * Sanitizes the RS state using the preset {@link Meta} information. Fields defined in {@link FieldDef} that are not included in the preset {@link Meta} but are part of the following {@link State} slices are removed:\n * - {@link State.sortingOrder}\n * - {@link State.freezeColumns}\n * - {@link State.visibleColumns}\n * - {@link State.columnWidths}\n * - {@link State.colOrder}\n * - {@link State.aggregationInfo}\n * - {@link State.groups}\n * - {@link State.renderFormatter}\n * - {@link State.hierarchicalGroup}\n * - {@link State.filterExpression}\n * - {@link State.conditionalStyleFormats}\n *\n * This operation is triggered when {@link State.personalization.active} or {@link State.customFields} is updated.\n */\nexport default () => {\n const memoizedSanitize = withMemoization(sanitize);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedSanitize([featureProps], [state.customFields, state.personalization?.active]);\n };\n};\n"]}
|
|
@@ -22,16 +22,15 @@ declare const _default: {
|
|
|
22
22
|
aggregation: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => Promise<void>;
|
|
23
23
|
stateSanitization: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
24
24
|
prepareRows: (rsInternal: import("../../RsInternal").default) => void;
|
|
25
|
-
prepareColumns: (rsInternal: import("../../RsInternal").default) => () => void;
|
|
25
|
+
prepareColumns: (rsInternal: import("../../RsInternal").default) => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
26
26
|
columnFormatter: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
27
27
|
ColumnDisplayMode: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
28
28
|
columnAlias: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
29
|
-
edit: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => undefined;
|
|
30
29
|
toggleHeaderIcons: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
31
30
|
changePersonalisation: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
31
|
+
changeTemplate: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
32
32
|
rowDragDrop: (rsInternal: import("../../RsInternal").default) => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
33
33
|
rowSelect: (rsInternal: import("../../RsInternal").default) => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => Promise<void>;
|
|
34
|
-
toggleSelectAllCheckbox: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
35
34
|
moveRecords: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => undefined;
|
|
36
35
|
renderHeader: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
37
36
|
refresh: (rsInternal: import("../../RsInternal").default) => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAsCA,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EAJZ,kEAClB;6BAnBlB,kEAAsC;6BAuE01G,kEAAsC;uBARr6G,kEAEM;;0BA3DwC,kEAChB;;uBAYF,kEACR;6BAmD2mC,kEAAsC;;4BAzDvnC,kEACpC;8BAwD4wM,kEAAsC;kCAzB9zM,kEAEH;6BAvCgC,kEAChB;2BAGgB,kEAC5B;2EAyDu0D,kEAAsC;yCA9Cn2D,kEAEG;+BA4C+qL,kEAAsC;4BAnDrsL,kEACd;kCAkD+4T,kEAAsC;;6EAA/1L,kEAAsC;gCA7D9mI,kEACpB;kCAR2C,kEAC1C;4BAmEmF,kEAAsC;kCAlEjH,kEAAsC;sCAQ/B,kEAC7B;+BADwD,kEAC5B;0EAyDg1P,kEAAsC;wEAA78I,kEAAsC;4BALx+G,kEACO;6BAxEmD,kEAC5B;sEAwBU,kEACd;2BAkDsF,kEAAsC;4BA7DnI,kEACpB;;uCA4D86B,kEAAsC;;;0BAAotD,sDAA0B;iCAAkjB,sDAA0B;yCA3DzuG,sDAC5B;;;AAYZ,wBA6CE"}
|
|
@@ -24,14 +24,13 @@ import aggregation from './beforeRender/aggregation';
|
|
|
24
24
|
import prepareRows from './beforeRender/prepareRows';
|
|
25
25
|
import prepareColumns from './beforeRender/prepareColumns';
|
|
26
26
|
import columnAlias from './beforeRender/columnAlias';
|
|
27
|
-
import edit from './beforeRender/edit';
|
|
28
27
|
import busyIndicator from './beforeRender/busyIndicator';
|
|
29
28
|
import columnAutoSizing from './afterRender/columnSizing';
|
|
30
29
|
import rowDragDrop from './beforeRender/rowDragDrop';
|
|
31
30
|
import toggleHeaderIcons from './beforeRender/toggleHeaderIcons';
|
|
32
31
|
import changePersonalisation from './beforeRender/changePersonalisation';
|
|
32
|
+
import changeTemplate from './beforeRender/changeTemplate';
|
|
33
33
|
import rowSelect from './beforeRender/rowSelect';
|
|
34
|
-
import toggleSelectAllCheckbox from './beforeRender/toggleSelectAllCheckbox';
|
|
35
34
|
import moveRecords from './beforeRender/moveListRecords';
|
|
36
35
|
import renderHeader from './beforeRender/renderHeader';
|
|
37
36
|
import refresh from './beforeRender/refresh';
|
|
@@ -66,12 +65,11 @@ export default {
|
|
|
66
65
|
columnFormatter,
|
|
67
66
|
ColumnDisplayMode,
|
|
68
67
|
columnAlias,
|
|
69
|
-
edit,
|
|
70
68
|
toggleHeaderIcons,
|
|
71
69
|
changePersonalisation,
|
|
70
|
+
changeTemplate,
|
|
72
71
|
rowDragDrop,
|
|
73
72
|
rowSelect,
|
|
74
|
-
toggleSelectAllCheckbox,
|
|
75
73
|
moveRecords,
|
|
76
74
|
renderHeader,
|
|
77
75
|
refresh,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAC9E,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,wBAAwB,MAAM,yCAAyC,CAAC;AAC/E,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAC9E,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,wBAAwB,MAAM,yCAAyC,CAAC;AAC/E,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,gBAAgB,MAAM,4BAA4B,CAAC;AAC1D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAE3E,eAAe;IACb,YAAY,EAAE;QACZ,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,MAAM;QACN,SAAS,EAAE,YAAY;QACvB,SAAS;QACT,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,eAAe;QACf,WAAW;QACX,aAAa;QACb,iBAAiB;QACjB,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,wBAAwB;QACxB,cAAc;QACd,WAAW;QACX,iBAAiB;QACjB,WAAW;QACX,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,WAAW;QACX,iBAAiB;QACjB,qBAAqB;QACrB,cAAc;QACd,WAAW;QACX,SAAS;QACT,WAAW;QACX,YAAY;QACZ,OAAO;QACP,UAAU;QACV,WAAW;QACX,WAAW;QACX,sBAAsB;KACvB;IACD,WAAW,EAAE;QACX,SAAS,EAAE,aAAa;QACxB,gBAAgB;QAChB,wBAAwB;KACzB;CACF,CAAC","sourcesContent":["import freeze from './beforeRender/freeze';\nimport preAnimation from './beforeRender/animation';\nimport rowHeight from './beforeRender/rowHeight';\nimport columnOrder from './beforeRender/columnOrder';\nimport columnVisualOrder from './beforeRender/columnVisualOrder';\nimport columnReOrder from './beforeRender/columnReOrder';\nimport personalization from './beforeRender/personalization';\nimport customColumn from './beforeRender/customColumn';\nimport columnToggle from './beforeRender/columnToggle';\nimport columnSort from './beforeRender/columnSort';\nimport columnFormatter from './beforeRender/columnFormatter';\nimport ColumnDisplayMode from './beforeRender/columnDisplayMode';\nimport postAnimation from './afterRender/animation';\nimport customizeParentContainer from './afterRender/customizeParentContainer';\nimport columnSizing from './beforeRender/columnSizing';\nimport columnResize from './beforeRender/columnSizing/resize';\nimport grouping from './beforeRender/grouping';\nimport filter from './beforeRender/filter';\nimport adjustHeight from './beforeRender/adjustHeight';\nimport adjustHeightToFitRecords from './beforeRender/adjustHeightToFitRecords';\nimport stateHydration from './beforeRender/stateHydration';\nimport stateSanitization from './beforeRender/stateSanitization';\nimport aggregation from './beforeRender/aggregation';\nimport prepareRows from './beforeRender/prepareRows';\nimport prepareColumns from './beforeRender/prepareColumns';\nimport columnAlias from './beforeRender/columnAlias';\nimport busyIndicator from './beforeRender/busyIndicator';\nimport columnAutoSizing from './afterRender/columnSizing';\nimport rowDragDrop from './beforeRender/rowDragDrop';\nimport toggleHeaderIcons from './beforeRender/toggleHeaderIcons';\nimport changePersonalisation from './beforeRender/changePersonalisation';\nimport changeTemplate from './beforeRender/changeTemplate';\nimport rowSelect from './beforeRender/rowSelect';\nimport moveRecords from './beforeRender/moveListRecords';\nimport renderHeader from './beforeRender/renderHeader';\nimport refresh from './beforeRender/refresh';\nimport resetFetch from './beforeRender/resetFetch';\nimport errorColumn from './beforeRender/errorColumn';\nimport scrollToTop from './beforeRender/scrollToTop';\nimport conditionalStyleFormat from './beforeRender/conditionalStyleFormat';\n\nexport default {\n beforeRender: {\n busyIndicator,\n columnSizing,\n columnResize,\n freeze,\n animation: preAnimation,\n rowHeight,\n grouping,\n filter,\n customColumn,\n personalization,\n columnOrder,\n columnReOrder,\n columnVisualOrder,\n columnToggle,\n columnSort,\n adjustHeight,\n adjustHeightToFitRecords,\n stateHydration,\n aggregation,\n stateSanitization,\n prepareRows,\n prepareColumns,\n columnFormatter,\n ColumnDisplayMode,\n columnAlias,\n toggleHeaderIcons,\n changePersonalisation,\n changeTemplate,\n rowDragDrop,\n rowSelect,\n moveRecords,\n renderHeader,\n refresh,\n resetFetch,\n errorColumn,\n scrollToTop,\n conditionalStyleFormat\n },\n afterRender: {\n animation: postAnimation,\n columnAutoSizing,\n customizeParentContainer\n }\n};\n"]}
|
|
@@ -5,7 +5,7 @@ import type { Sort, AggregationType } from '../../../types/State.types';
|
|
|
5
5
|
import type RsProps from '../RsProps';
|
|
6
6
|
import type RsInternal from '../RsInternal';
|
|
7
7
|
import type Row from './RowGenerator';
|
|
8
|
-
import {
|
|
8
|
+
import type { ColumnConfig, ColumnResizerProps, ColumnStyle, SortProperties, ColumnContext, ColumnRenderingEngineProps } from './ColumnGenerator.types';
|
|
9
9
|
import type { RowContext, RowData } from './RowGenerator.types';
|
|
10
10
|
import type { FormatterFunction } from './ViewGenerator.types';
|
|
11
11
|
export default class Column {
|
|
@@ -53,8 +53,11 @@ export default class Column {
|
|
|
53
53
|
*/
|
|
54
54
|
formatterAllowed: boolean;
|
|
55
55
|
/** Indicates the current formatter applied to the column. */
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
formatterConfig?: string | {
|
|
57
|
+
type: string;
|
|
58
|
+
config: unknown;
|
|
59
|
+
};
|
|
60
|
+
/** The formatter function corresponding to the {@link formatterConfig}. */
|
|
58
61
|
formatter?: FormatterFunction;
|
|
59
62
|
/** The name of the renderer for this cell. */
|
|
60
63
|
cellRenderer?: string;
|
|
@@ -79,8 +82,6 @@ export default class Column {
|
|
|
79
82
|
/** Indicates if the column is a custom column derived from Customize column feature.
|
|
80
83
|
* E.g. column generated by joining 2 columns. */
|
|
81
84
|
isCustomColumn: boolean;
|
|
82
|
-
/** Indicates if the column is in edit mode. */
|
|
83
|
-
editMode: boolean;
|
|
84
85
|
/** Visual order of the column with respect to other columns */
|
|
85
86
|
order?: number;
|
|
86
87
|
/** CSS classes for the column.
|
|
@@ -167,8 +168,6 @@ export default class Column {
|
|
|
167
168
|
width: `${number}px`;
|
|
168
169
|
};
|
|
169
170
|
'data-col-id': string;
|
|
170
|
-
onDoubleClick: ((e: KeyboardEvent | MouseEvent) => void) | null;
|
|
171
|
-
onKeyDown: ((e: KeyboardEvent | MouseEvent) => void) | null;
|
|
172
171
|
classList: string[];
|
|
173
172
|
'aria-colindex': number;
|
|
174
173
|
role: string;
|
|
@@ -199,25 +198,15 @@ export default class Column {
|
|
|
199
198
|
* Sets the current execution context, {@link RowContext}, when rendering a cell for this column.
|
|
200
199
|
* This dynamic context is updated for each cell in the column as it is rendered.
|
|
201
200
|
*/
|
|
202
|
-
setExecutionContext(row: Row): void;
|
|
201
|
+
setExecutionContext(row: Row | null): void;
|
|
203
202
|
/**
|
|
204
203
|
* Retrieves the current execution context, i.e., {@link RowContext}, when rendering a cell for this column.
|
|
205
204
|
* This context dynamically updates as each cell in the column is rendered.
|
|
206
205
|
*/
|
|
207
206
|
getExecutionContext(): RowContext | null;
|
|
208
|
-
/**
|
|
209
|
-
* Sets the {@link Column.executionContext execution context} to the row of the cell being edited.
|
|
210
|
-
* It relies on the editInfo state to identify the cell being edited.
|
|
211
|
-
*/
|
|
212
|
-
setEditContext(): void;
|
|
213
|
-
/**
|
|
214
|
-
* Checks whether any value cell in this column is currently in edit mode.
|
|
215
|
-
*/
|
|
216
|
-
isCellInEditMode(): boolean | null;
|
|
217
207
|
/**
|
|
218
208
|
* Returns the current column {@link ColumnContext context}.
|
|
219
209
|
* @param overriddenExecutionContext - optional param to override the execution context with custom {@link RowContext}.
|
|
220
|
-
* @returns
|
|
221
210
|
*
|
|
222
211
|
* @public
|
|
223
212
|
*/
|
|
@@ -225,7 +214,7 @@ export default class Column {
|
|
|
225
214
|
/**
|
|
226
215
|
* Updates property of the column with value. The updated value will be reflected on next re-render.
|
|
227
216
|
* @param prop Either partial of {@link Column} or individual properties of {@link Column}.
|
|
228
|
-
* @param
|
|
217
|
+
* @param value An optional parameter to provide value for {@link prop} in case prop is not of type {@link ColumnConfig}
|
|
229
218
|
* @returns void
|
|
230
219
|
*/
|
|
231
220
|
setPropMutatively(prop: Partial<OmitStrict<Column, 'data' | 'isAutoSizable' | 'parent'>> | ExcludeStrict<keyof Column, 'data' | 'isAutoSizable' | 'parent'>, value?: Column[keyof Column]): void;
|
|
@@ -234,7 +223,7 @@ export default class Column {
|
|
|
234
223
|
* Always use `setProp` to update properties of {@link Column} to ensure immutability.
|
|
235
224
|
*
|
|
236
225
|
* @param prop Either a partial {@link ColumnConfig} or individual properties of {@link ColumnConfig}.
|
|
237
|
-
* @param
|
|
226
|
+
* @param value Optional value to set for `prop` if `prop` is not of type {@link ColumnConfig}.
|
|
238
227
|
* @returns void
|
|
239
228
|
*/
|
|
240
229
|
setProp(prop: Partial<ColumnConfig> | keyof ColumnConfig, value?: ColumnConfig[keyof ColumnConfig]): Column;
|
|
@@ -292,7 +281,12 @@ export default class Column {
|
|
|
292
281
|
* Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.
|
|
293
282
|
* @param name - Formatter name.
|
|
294
283
|
*/
|
|
295
|
-
applyFormatter(
|
|
284
|
+
applyFormatter(config: NonNullable<Column['formatterConfig']>): void;
|
|
285
|
+
/** Removes formatter of the current column.
|
|
286
|
+
*
|
|
287
|
+
* Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.
|
|
288
|
+
*/
|
|
289
|
+
removeFormatter(): void;
|
|
296
290
|
/**
|
|
297
291
|
* Applies {@link mode displayMode} to hierarchical column.
|
|
298
292
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,KAAK,EACV,sBAAsB,EACtB,QAAQ,EACR,IAAI,EACJ,WAAW,EACZ,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ColumnGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.ts"],"names":[],"mappings":"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"}
|