@pega/lists-core 9.0.0-build.9.9 → 9.0.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.
- 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,9 @@
|
|
|
1
|
-
import { actionColumnDragDrop, actionColumnToggle, actionUpdateColumnOrder } from '../../../actions/actions';
|
|
1
|
+
import { actionColumnDragDrop, actionColumnToggle, actionUpdateColumnOrder, addColumnIntoVisibility } from '../../../actions/actions';
|
|
2
2
|
import { withMemoization } from '../../../utils/util';
|
|
3
3
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
4
|
+
function isMergeColumnsPayload(payload) {
|
|
5
|
+
return typeof payload === 'object' && payload !== null && 'uniqueID' in payload;
|
|
6
|
+
}
|
|
4
7
|
const deleteStaleColumns = (getView, customFields) => {
|
|
5
8
|
// deleted custom column from state should also be removed from meta if any.
|
|
6
9
|
getView()
|
|
@@ -11,8 +14,8 @@ const deleteStaleColumns = (getView, customFields) => {
|
|
|
11
14
|
getView().removeColumn(id);
|
|
12
15
|
});
|
|
13
16
|
};
|
|
14
|
-
const addColumn = (getView, customField) => {
|
|
15
|
-
const primaryFieldDef =
|
|
17
|
+
const addColumn = (getView, getRsStore, customField) => {
|
|
18
|
+
const primaryFieldDef = getRsStore().getFieldDefById(customField.primaryColumnId);
|
|
16
19
|
const column = {
|
|
17
20
|
isCustomColumn: true,
|
|
18
21
|
formatterAllowed: false,
|
|
@@ -33,10 +36,16 @@ const addColumn = (getView, customField) => {
|
|
|
33
36
|
category: [],
|
|
34
37
|
type: 'custom'
|
|
35
38
|
};
|
|
39
|
+
/*
|
|
40
|
+
Updating the fieldDef within the meta mutatively.
|
|
41
|
+
This will ensure that the fieldDef is added in all places where the meta is referenced(view.meta, rsStore.meta).
|
|
42
|
+
*/
|
|
43
|
+
getView().meta.fieldDefs.push(field);
|
|
36
44
|
const customColumn = getView().addColumn(field, column);
|
|
45
|
+
getRsStore().fieldDefsMap.set(customField.id, field);
|
|
37
46
|
return [customColumn, primaryFieldDef];
|
|
38
47
|
};
|
|
39
|
-
const updateCustomColumns = ([{ getView, getState, queuedActions: actions, dispatch }]) => {
|
|
48
|
+
const updateCustomColumns = ([{ getView, getRsStore, getState, queuedActions: actions, dispatch }]) => {
|
|
40
49
|
const state = getState();
|
|
41
50
|
const customFields = state?.customFields || [];
|
|
42
51
|
deleteStaleColumns(getView, customFields);
|
|
@@ -44,19 +53,24 @@ const updateCustomColumns = ([{ getView, getState, queuedActions: actions, dispa
|
|
|
44
53
|
// if column already exist in meta, skip it otherwise add a new
|
|
45
54
|
const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);
|
|
46
55
|
if (!column) {
|
|
47
|
-
const [customColumn, primaryFieldDef] = addColumn(getView, customField);
|
|
56
|
+
const [customColumn, primaryFieldDef] = addColumn(getView, getRsStore, customField);
|
|
48
57
|
if (!state?.colOrder?.includes(customColumn.field.id)) {
|
|
49
58
|
dispatch(actionUpdateColumnOrder([customColumn.field.id]));
|
|
50
59
|
dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));
|
|
51
60
|
}
|
|
52
61
|
}
|
|
53
62
|
});
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
// Add newly created customColumn into visibleColumns
|
|
64
|
+
const action = actions[0];
|
|
65
|
+
if ('payload' in action && isMergeColumnsPayload(action.payload)) {
|
|
66
|
+
dispatch(addColumnIntoVisibility(action.payload.uniqueID));
|
|
67
|
+
}
|
|
68
|
+
if ('payload' in action && isMergeColumnsPayload(action.payload) && action.payload.hideColumns) {
|
|
69
|
+
dispatch(actionColumnToggle(action.payload.hideColumns));
|
|
56
70
|
}
|
|
57
71
|
};
|
|
58
72
|
/**
|
|
59
|
-
* Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.
|
|
73
|
+
* Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.visibleColumns} with {@link State.customFields customFields} information when following properties are changed:
|
|
60
74
|
* - {@link State.customFields}
|
|
61
75
|
* - `active` in {@link State.personalization}
|
|
62
76
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,qDAAqD;AAErD,MAAM,kBAAkB,GAAG,CACzB,OAA4C,EAC5C,YAA2B,EACrB,EAAE;IACR,4EAA4E;IAC5E,OAAO,EAAE;SACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;SACtC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAI,aAAa;YAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,OAA4C,EAC5C,WAAwB,EACJ,EAAE;IACtB,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"customColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldDef } from '../../../../../types/Meta.types';\nimport {\n actionColumnDragDrop,\n actionColumnToggle,\n actionUpdateColumnOrder,\n addColumnIntoVisibility\n} from '../../../actions/actions';\nimport type { MergeColumnsPayload } from '../../../actions/actions.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { CustomField, State } from '../../../../../types/State.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nfunction isMergeColumnsPayload(payload: unknown): payload is MergeColumnsPayload {\n return typeof payload === 'object' && payload !== null && 'uniqueID' in payload;\n}\n\nconst deleteStaleColumns = (\n getView: BeforeRenderFeatureProps['getView'],\n customFields: CustomField[]\n): void => {\n // deleted custom column from state should also be removed from meta if any.\n getView()\n .columns?.filter(c => c.isCustomColumn)\n .forEach(({ field: { id } }) => {\n const isStaleColumn = customFields.every(customField => customField.id !== id);\n if (isStaleColumn) getView().removeColumn(id);\n });\n};\n\nconst addColumn = (\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore'],\n customField: CustomField\n): [Column, FieldDef] => {\n const primaryFieldDef = getRsStore().getFieldDefById(customField.primaryColumnId);\n const column = {\n isCustomColumn: true,\n formatterAllowed: false,\n label: customField.label,\n cellRenderer: getView().meta.customFieldRenderer || 'customCellRenderer',\n headerCellRenderer: getView().meta.customHeaderRenderer || 'headerCellRenderer'\n };\n const { idHash, width, ...restOfFieldDef } =\n primaryFieldDef!; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */\n const field: FieldDef = {\n ...restOfFieldDef,\n grouping: false,\n filter: false,\n resize: true,\n sort: false,\n aggregation: false,\n id: customField.id,\n label: customField.label,\n category: [],\n type: 'custom'\n };\n\n /*\n Updating the fieldDef within the meta mutatively.\n This will ensure that the fieldDef is added in all places where the meta is referenced(view.meta, rsStore.meta).\n */\n getView().meta.fieldDefs.push(field);\n const customColumn = getView().addColumn(field, column);\n\n getRsStore().fieldDefsMap.set(customField.id, field);\n return [customColumn, primaryFieldDef!];\n};\n\nconst updateCustomColumns = ([\n { getView, getRsStore, getState, queuedActions: actions, dispatch }\n]: [featureProps: BeforeRenderFeatureProps]): void => {\n const state = getState();\n const customFields = state?.customFields || [];\n deleteStaleColumns(getView, customFields);\n\n customFields.forEach(customField => {\n // if column already exist in meta, skip it otherwise add a new\n const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);\n if (!column) {\n const [customColumn, primaryFieldDef] = addColumn(getView, getRsStore, customField);\n if (!state?.colOrder?.includes(customColumn.field.id)) {\n dispatch(actionUpdateColumnOrder([customColumn.field.id]));\n dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));\n }\n }\n });\n\n // Add newly created customColumn into visibleColumns\n const action = actions[0];\n if ('payload' in action && isMergeColumnsPayload(action.payload)) {\n dispatch(addColumnIntoVisibility(action.payload.uniqueID));\n }\n\n if ('payload' in action && isMergeColumnsPayload(action.payload) && action.payload.hideColumns) {\n dispatch(actionColumnToggle(action.payload.hideColumns));\n }\n};\n\n/**\n * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.visibleColumns} with {@link State.customFields customFields} information when following properties are changed:\n * - {@link State.customFields}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedUpdateCustomColumns = withMemoization(updateCustomColumns);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedUpdateCustomColumns(\n [featureProps],\n [state.customFields, state?.personalization?.active]\n );\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"errorColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAsBrE;;;;GAIG;+BAGuB,cAAc,wBAAwB;AAFhE,wBAOE"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { withMemoization } from '../../../utils/util';
|
|
2
2
|
import { rowErrorColumnMeta } from '../../../constants';
|
|
3
3
|
function toggleErrorColumnVisibility([{ getView, getState }]) {
|
|
4
|
-
const {
|
|
5
|
-
const errorCol = getView().columns?.find(c => c.field.name === rowErrorColumnMeta.field.name);
|
|
4
|
+
const { visibleColumns, errors } = getState();
|
|
6
5
|
const hasDataErrors = errors?.dataErrors && !!Object.keys(errors.dataErrors).length;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const isErrorColumnVisible = visibleColumns?.includes(rowErrorColumnMeta.field.id);
|
|
7
|
+
if (!isErrorColumnVisible && hasDataErrors) {
|
|
8
|
+
// Show error column: errors exist but column is not visible.
|
|
9
|
+
getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: true });
|
|
10
|
+
}
|
|
11
|
+
else if (isErrorColumnVisible && !hasDataErrors) {
|
|
12
|
+
// Hide error column: no errors but column is still visible.
|
|
13
|
+
getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: false });
|
|
11
14
|
}
|
|
12
15
|
}
|
|
13
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD,SAAS,2BAA2B,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAE1D;IACC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"errorColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD,SAAS,2BAA2B,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAE1D;IACC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,oBAAoB,GAAG,cAAc,EAAE,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEnF,IAAI,CAAC,oBAAoB,IAAI,aAAa,EAAE,CAAC;QAC3C,6DAA6D;QAC7D,OAAO,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC;QAClD,4DAA4D;QAC5D,OAAO,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,mCAAmC,GAAG,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACzF,OAAO,SAAS,OAAO,CAAC,YAAsC;QAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;QACzE,mCAAmC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { rowErrorColumnMeta } from '../../../constants';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { State } from '../../../../../types/State.types';\nimport type { Meta } from '../../../../../types/Meta.types';\n\nfunction toggleErrorColumnVisibility([{ getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { visibleColumns, errors } = getState();\n const hasDataErrors = errors?.dataErrors && !!Object.keys(errors.dataErrors).length;\n const isErrorColumnVisible = visibleColumns?.includes(rowErrorColumnMeta.field.id);\n\n if (!isErrorColumnVisible && hasDataErrors) {\n // Show error column: errors exist but column is not visible.\n getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: true });\n } else if (isErrorColumnVisible && !hasDataErrors) {\n // Hide error column: no errors but column is still visible.\n getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: false });\n }\n}\n\n/**\n *\n * Adds `error column` in the view {@link View.columns columns} when {@link Meta.showErrorField showErrorField} is set in `Meta`.\n * It also toggles error column visibility when {@link State.errors} is changed.\n */\nexport default () => {\n const memoizedToggleErrorColumnVisibility = withMemoization(toggleErrorColumnVisibility);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const errors = featureProps.getState().errors;\n const haDataErrors = !!(errors && Object.keys(errors.dataErrors).length);\n memoizedToggleErrorColumnVisibility([featureProps], [haDataErrors]);\n };\n};\n"]}
|
|
@@ -2,6 +2,7 @@ import type { BeforeRenderFeatureProps } from '../../featureFactory';
|
|
|
2
2
|
/**
|
|
3
3
|
* Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:
|
|
4
4
|
* - {@link State.filterExpression}
|
|
5
|
+
* - {@link state.visibleColumns}
|
|
5
6
|
* - `query` in {@link State.search}
|
|
6
7
|
* - `active` in {@link State.personalization}
|
|
7
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAuCrE;;;;;;GAMG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAeE"}
|
|
@@ -5,13 +5,17 @@ const onFilter = ([{ getView, getState }]) => {
|
|
|
5
5
|
const filteredFields = filterExpression ? getFilters({ filterExpression }) : [];
|
|
6
6
|
const isFilterApplied = !!((filteredFields && filteredFields.length) ||
|
|
7
7
|
(search?.query && search.query.trim().length));
|
|
8
|
+
// Compare new search query with previous searchText to detect search change
|
|
9
|
+
const prevSearchText = getView().state.searchText;
|
|
10
|
+
const newSearchQuery = search?.query ?? '';
|
|
11
|
+
const isSearchChanged = newSearchQuery !== prevSearchText;
|
|
8
12
|
getView().columns?.forEach(column => {
|
|
9
13
|
const filtered = !!(filterExpression && getFilters({ filterExpression }).includes(column.field.name));
|
|
10
14
|
column = column.setProp({
|
|
11
15
|
filtered
|
|
12
16
|
});
|
|
13
|
-
// For search to reflect in cells using highlighter,
|
|
14
|
-
if (
|
|
17
|
+
// For search to reflect in cells using highlighter, refresh searchable columns when search query changes
|
|
18
|
+
if (isSearchChanged && column.field.searchable) {
|
|
15
19
|
column = column.setProp({
|
|
16
20
|
refresh: Date.now()
|
|
17
21
|
});
|
|
@@ -23,6 +27,7 @@ const onFilter = ([{ getView, getState }]) => {
|
|
|
23
27
|
/**
|
|
24
28
|
* Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:
|
|
25
29
|
* - {@link State.filterExpression}
|
|
30
|
+
* - {@link state.visibleColumns}
|
|
26
31
|
* - `query` in {@link State.search}
|
|
27
32
|
* - `active` in {@link State.personalization}
|
|
28
33
|
*/
|
|
@@ -30,7 +35,12 @@ export default () => {
|
|
|
30
35
|
const memoizedOnFilter = withMemoization(onFilter);
|
|
31
36
|
return function execute(featureProps) {
|
|
32
37
|
const state = featureProps.getState();
|
|
33
|
-
memoizedOnFilter([featureProps], [
|
|
38
|
+
memoizedOnFilter([featureProps], [
|
|
39
|
+
state.filterExpression,
|
|
40
|
+
state.search?.query,
|
|
41
|
+
state?.personalization?.active,
|
|
42
|
+
state.visibleColumns
|
|
43
|
+
]);
|
|
34
44
|
};
|
|
35
45
|
};
|
|
36
46
|
//# sourceMappingURL=filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMlE,qDAAqD;AAErD,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAA2C,EAAE,EAAE;IACrF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,eAAe,GAAG,CAAC,CAAC,CACxB,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC;QACzC,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAC9C,CAAC;IAEF,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,CACjB,gBAAgB,IAAI,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACjF,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YACtB,QAAQ;SACT,CAAC,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMlE,qDAAqD;AAErD,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAA2C,EAAE,EAAE;IACrF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,eAAe,GAAG,CAAC,CAAC,CACxB,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC;QACzC,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAC9C,CAAC;IAEF,4EAA4E;IAC5E,MAAM,cAAc,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IAClD,MAAM,cAAc,GAAG,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,cAAc,KAAK,cAAc,CAAC;IAE1D,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,CACjB,gBAAgB,IAAI,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACjF,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YACtB,QAAQ;SACT,CAAC,CAAC;QACH,yGAAyG;QACzG,IAAI,eAAe,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEnD,OAAO,SAAS,OAAO,CAAC,YAAsC;QAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,gBAAgB,CACd,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM,EAAE,KAAK;YACnB,KAAK,EAAE,eAAe,EAAE,MAAM;YAC9B,KAAK,CAAC,cAAc;SACrB,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization, getFilters } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { State } from '../../../../../types/State.types';\nimport type Column from '../../../generators/ColumnGenerator';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nconst onFilter = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]) => {\n const { filterExpression, search } = getState();\n const filteredFields = filterExpression ? getFilters({ filterExpression }) : [];\n const isFilterApplied = !!(\n (filteredFields && filteredFields.length) ||\n (search?.query && search.query.trim().length)\n );\n\n // Compare new search query with previous searchText to detect search change\n const prevSearchText = getView().state.searchText;\n const newSearchQuery = search?.query ?? '';\n const isSearchChanged = newSearchQuery !== prevSearchText;\n\n getView().columns?.forEach(column => {\n const filtered = !!(\n filterExpression && getFilters({ filterExpression }).includes(column.field.name)\n );\n column = column.setProp({\n filtered\n });\n // For search to reflect in cells using highlighter, refresh searchable columns when search query changes\n if (isSearchChanged && column.field.searchable) {\n column = column.setProp({\n refresh: Date.now()\n });\n }\n });\n\n // global level filter applied\n getView().setProp('isFilterApplied', isFilterApplied);\n};\n\n/**\n * Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:\n * - {@link State.filterExpression}\n * - {@link state.visibleColumns}\n * - `query` in {@link State.search}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedOnFilter = withMemoization(onFilter);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedOnFilter(\n [featureProps],\n [\n state.filterExpression,\n state.search?.query,\n state?.personalization?.active,\n state.visibleColumns\n ]\n );\n };\n};\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { State } from '../../../../../types/State.types';
|
|
2
2
|
import type View from '../../../generators/ViewGenerator';
|
|
3
3
|
import type { BeforeRenderFeatureProps } from '../../featureFactory';
|
|
4
|
-
export declare const calculateFieldLeft: (colId: string, columns: View["columns"], freezeColumns?: State["freezeColumns"],
|
|
4
|
+
export declare const calculateFieldLeft: (colId: string, columns: View["columns"], freezeColumns?: State["freezeColumns"], visibleColumns?: State["visibleColumns"], columnWidths?: State["columnWidths"]) => number;
|
|
5
5
|
/**
|
|
6
6
|
* Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:
|
|
7
7
|
* - {@link State.freezeColumns}
|
|
8
|
-
* - {@link State.
|
|
8
|
+
* - {@link State.visibleColumns}
|
|
9
9
|
* - {@link State.columnWidths}
|
|
10
10
|
* - `active` in {@link State.personalization}
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,mCAAmC,CAAC;AAE1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,SAAS,IAAI,CAAC,SAAS,CAAC,EACxB,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,
|
|
1
|
+
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,mCAAmC,CAAC;AAE1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,SAAS,IAAI,CAAC,SAAS,CAAC,EACxB,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,iBAAgB,KAAK,CAAC,gBAAgB,CAAM,EAC5C,eAAc,KAAK,CAAC,cAAc,CAAM,WAiBzC,CAAC;AA8CF;;;;;;GAMG;+BAGuB,cAAc,wBAAwB;AAFhE,wBAcE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { withMemoization, isFreezingEnabled } from '../../../utils/util';
|
|
2
|
-
export const calculateFieldLeft = (colId, columns, freezeColumns = [],
|
|
2
|
+
export const calculateFieldLeft = (colId, columns, freezeColumns = [], visibleColumns = [], columnWidths = {}) => {
|
|
3
3
|
let left = 0;
|
|
4
4
|
// iterate through the frozen columns and add its width to left if it appears before current column
|
|
5
5
|
for (let j = 0; j < freezeColumns.length; j += 1) {
|
|
@@ -8,7 +8,7 @@ export const calculateFieldLeft = (colId, columns, freezeColumns = [], hiddenCol
|
|
|
8
8
|
break;
|
|
9
9
|
}
|
|
10
10
|
// If the column is frozen but if it is hidden then don't consider
|
|
11
|
-
if (
|
|
11
|
+
if (visibleColumns.includes(id)) {
|
|
12
12
|
const previousCol = columns?.find(c => `${c.field.id}` === id);
|
|
13
13
|
const width = columnWidths[previousCol.field.id] || previousCol.field.width;
|
|
14
14
|
left += width;
|
|
@@ -16,11 +16,11 @@ export const calculateFieldLeft = (colId, columns, freezeColumns = [], hiddenCol
|
|
|
16
16
|
}
|
|
17
17
|
return left;
|
|
18
18
|
};
|
|
19
|
-
const getLastFrozenField = (freezeColumns = [],
|
|
19
|
+
const getLastFrozenField = (freezeColumns = [], visibleColumns = []) => {
|
|
20
20
|
let lastFrozenColumnId = '';
|
|
21
21
|
for (let i = freezeColumns.length - 1; i > -1; i -= 1) {
|
|
22
22
|
const id = freezeColumns[i];
|
|
23
|
-
if (
|
|
23
|
+
if (visibleColumns.includes(id)) {
|
|
24
24
|
lastFrozenColumnId = id;
|
|
25
25
|
break;
|
|
26
26
|
}
|
|
@@ -32,8 +32,8 @@ const setPositions = ([{ getView, getState }]) => {
|
|
|
32
32
|
if (!isFreezingEnabled(getView().meta)) {
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
|
-
const { freezeColumns = [],
|
|
36
|
-
const lastFrozenColumnId = getLastFrozenField(freezeColumns,
|
|
35
|
+
const { freezeColumns = [], visibleColumns = [], columnWidths } = getState();
|
|
36
|
+
const lastFrozenColumnId = getLastFrozenField(freezeColumns, visibleColumns);
|
|
37
37
|
getView().columns?.forEach(column => {
|
|
38
38
|
const { id } = column.field;
|
|
39
39
|
const style = { ...column.style };
|
|
@@ -42,7 +42,7 @@ const setPositions = ([{ getView, getState }]) => {
|
|
|
42
42
|
let lastFrozen = false;
|
|
43
43
|
if (freezeColumns.includes(`${id}`)) {
|
|
44
44
|
frozen = true;
|
|
45
|
-
left = calculateFieldLeft(id, getView().columns, freezeColumns,
|
|
45
|
+
left = calculateFieldLeft(id, getView().columns, freezeColumns, visibleColumns, columnWidths);
|
|
46
46
|
if (`${id}` === lastFrozenColumnId) {
|
|
47
47
|
lastFrozen = true;
|
|
48
48
|
}
|
|
@@ -58,7 +58,7 @@ const setPositions = ([{ getView, getState }]) => {
|
|
|
58
58
|
/**
|
|
59
59
|
* Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:
|
|
60
60
|
* - {@link State.freezeColumns}
|
|
61
|
-
* - {@link State.
|
|
61
|
+
* - {@link State.visibleColumns}
|
|
62
62
|
* - {@link State.columnWidths}
|
|
63
63
|
* - `active` in {@link State.personalization}
|
|
64
64
|
*/
|
|
@@ -66,7 +66,12 @@ export default () => {
|
|
|
66
66
|
const memoizedSetPositions = withMemoization(setPositions);
|
|
67
67
|
return function execute(featureProps) {
|
|
68
68
|
const state = featureProps.getState();
|
|
69
|
-
memoizedSetPositions([featureProps], [
|
|
69
|
+
memoizedSetPositions([featureProps], [
|
|
70
|
+
state.freezeColumns,
|
|
71
|
+
state.visibleColumns,
|
|
72
|
+
state.columnWidths,
|
|
73
|
+
state?.personalization?.active
|
|
74
|
+
]);
|
|
70
75
|
};
|
|
71
76
|
};
|
|
72
77
|
//# sourceMappingURL=freeze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,OAAwB,EACxB,gBAAwC,EAAE,EAC1C,
|
|
1
|
+
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from '../../../../../types/State.types';\nimport type View from '../../../generators/ViewGenerator';\nimport { withMemoization, isFreezingEnabled } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Column from '../../../generators/ColumnGenerator';\n\nexport const calculateFieldLeft = (\n colId: string,\n columns: View['columns'],\n freezeColumns: State['freezeColumns'] = [],\n visibleColumns: State['visibleColumns'] = [],\n columnWidths: State['columnWidths'] = {}\n) => {\n let left = 0;\n // iterate through the frozen columns and add its width to left if it appears before current column\n for (let j = 0; j < freezeColumns.length; j += 1) {\n const id = freezeColumns[j];\n if (id === `${colId}`) {\n break;\n }\n // If the column is frozen but if it is hidden then don't consider\n if (visibleColumns.includes(id)) {\n const previousCol = columns?.find(c => `${c.field.id}` === id);\n const width = columnWidths[previousCol!.field.id] || previousCol!.field.width;\n left += width!;\n }\n }\n return left;\n};\n\nconst getLastFrozenField = (\n freezeColumns: State['freezeColumns'] = [],\n visibleColumns: State['visibleColumns'] = []\n) => {\n let lastFrozenColumnId = '';\n for (let i = freezeColumns.length - 1; i > -1; i -= 1) {\n const id = freezeColumns[i];\n if (visibleColumns.includes(id)) {\n lastFrozenColumnId = id;\n break;\n }\n }\n return lastFrozenColumnId;\n};\n\nconst setPositions = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]): void => {\n // TODO: Remove this early exit optimization once we start preparing the column objects only for visible fields.\n if (!isFreezingEnabled(getView().meta)) {\n return;\n }\n const { freezeColumns = [], visibleColumns = [], columnWidths } = getState();\n const lastFrozenColumnId = getLastFrozenField(freezeColumns, visibleColumns);\n getView().columns?.forEach(column => {\n const { id } = column.field;\n const style = { ...column.style };\n let left = 0;\n let frozen = false;\n let lastFrozen = false;\n if (freezeColumns.includes(`${id}`)) {\n frozen = true;\n left = calculateFieldLeft(id, getView().columns, freezeColumns, visibleColumns, columnWidths);\n if (`${id}` === lastFrozenColumnId) {\n lastFrozen = true;\n }\n }\n style.left = `${left}px`;\n column = column.setProp({\n style,\n frozen,\n lastFrozen\n });\n });\n};\n\n/**\n * Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:\n * - {@link State.freezeColumns}\n * - {@link State.visibleColumns}\n * - {@link State.columnWidths}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedSetPositions = withMemoization(setPositions);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedSetPositions(\n [featureProps],\n [\n state.freezeColumns,\n state.visibleColumns,\n state.columnWidths,\n state?.personalization?.active\n ]\n );\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AA8hBJ;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAYC,wBAAwB;AAZ/D,wBAqEE"}
|
|
@@ -3,7 +3,7 @@ import { actionGroupingExpandCollapseAll } from '../../../actions/actions';
|
|
|
3
3
|
import { AFTER_FETCH } from '../../../pubSub/events';
|
|
4
4
|
import GroupGenerator from '../../../generators/GroupGenerator';
|
|
5
5
|
function isNodeExpanded(groupToggle, node, defaultState) {
|
|
6
|
-
/** Groups with 0
|
|
6
|
+
/** Groups with count 0 should not be expandable. */
|
|
7
7
|
if (node.count === 0) {
|
|
8
8
|
return false;
|
|
9
9
|
}
|
|
@@ -15,13 +15,12 @@ const getLabel = (view, groupBy, getState) => {
|
|
|
15
15
|
const { columnId, dateFunction } = getGroupFromKey(groupBy, getState().groups);
|
|
16
16
|
let { label } = view.columns.find(column => column.field.id.toString() === columnId.toString());
|
|
17
17
|
if (dateFunction) {
|
|
18
|
-
// @ts-expect-error dateFunction cannot be used to index dateFunctionLabels. Check this.
|
|
19
18
|
label += ` (${dateFunctionLabels[dateFunction]})`;
|
|
20
19
|
}
|
|
21
20
|
return label;
|
|
22
21
|
};
|
|
23
|
-
// This function checks if hierarchy
|
|
24
|
-
// which will decide whether start and end Index would be there on leaf node or on hierarchical node.
|
|
22
|
+
// This function checks if hierarchy exists or not.
|
|
23
|
+
// which will decide whether start and end Index would be there on the leaf node or on the hierarchical node.
|
|
25
24
|
const doesExistInViewInfo = (viewInfo, hierarchy = [], isHierarchical = false) => {
|
|
26
25
|
return viewInfo.some(v => {
|
|
27
26
|
const filters = Object.values(v.filters);
|
|
@@ -40,13 +39,13 @@ const doesExistInViewInfo = (viewInfo, hierarchy = [], isHierarchical = false) =
|
|
|
40
39
|
};
|
|
41
40
|
const prepareGroupHeaders = (props) => {
|
|
42
41
|
const [groupingInfo = [], viewInfo = [], rsInternal, groupToggle = {}, allGroupsExpanded] = props;
|
|
43
|
-
// If group and viewInfo are empty,
|
|
42
|
+
// If group and viewInfo are empty, prepare group header for top level leaf node.
|
|
44
43
|
// This is for easing on UI , one contract whether grouping is in place/not.
|
|
45
44
|
// TODO: support for enabling feature on view.
|
|
46
45
|
const view = rsInternal.getView();
|
|
47
46
|
const { getState } = rsInternal.getRsStateResolver();
|
|
48
47
|
if (groupingInfo.length === 0) {
|
|
49
|
-
// construct view header object.
|
|
48
|
+
// construct a view header object.
|
|
50
49
|
const viewHeader = new GroupGenerator({
|
|
51
50
|
isVisible: false,
|
|
52
51
|
isLeafNode: true,
|
|
@@ -75,7 +74,7 @@ const prepareGroupHeaders = (props) => {
|
|
|
75
74
|
const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);
|
|
76
75
|
const isSubGroupPresent = child.children && child.children.length;
|
|
77
76
|
const label = child.isHierarchical ? '' : getLabel(view, child.groupBy, getState);
|
|
78
|
-
// construct view header object.
|
|
77
|
+
// construct a view header object.
|
|
79
78
|
const viewHeader = new GroupGenerator({
|
|
80
79
|
isVisible: !!child.visibleRow,
|
|
81
80
|
isLeafNode: !isSubGroupPresent,
|
|
@@ -93,7 +92,7 @@ const prepareGroupHeaders = (props) => {
|
|
|
93
92
|
data: 'data' in child ? child.data : undefined,
|
|
94
93
|
additionalFieldsData: 'additionalFieldsData' in child ? child.additionalFieldsData : undefined
|
|
95
94
|
}, rsInternal);
|
|
96
|
-
// If header node is a leaf node then
|
|
95
|
+
// If the header node is a leaf node, then, add start index and endIndex to resolve data.
|
|
97
96
|
if ((viewHeader.isLeafNode || viewHeader.isHierarchical) &&
|
|
98
97
|
viewHeader.isExpanded &&
|
|
99
98
|
doesExistInViewInfo(viewInfo, viewHeader.hierarchy, viewHeader.isHierarchical)) {
|
|
@@ -136,7 +135,7 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
|
|
|
136
135
|
parentGroups[currentGroup.groupBy] = currentGroup.name;
|
|
137
136
|
}
|
|
138
137
|
count += 1;
|
|
139
|
-
// group has subgroups and group is expanded
|
|
138
|
+
// the group has subgroups and a group is expanded
|
|
140
139
|
const isExpanded = isNodeExpanded(groupToggle, group[i], allGroupsExpanded);
|
|
141
140
|
let includeThisGroup = false;
|
|
142
141
|
if (count > from && count - 1 <= to) {
|
|
@@ -144,8 +143,8 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
|
|
|
144
143
|
includedRowCount += 1;
|
|
145
144
|
}
|
|
146
145
|
group[i].visibleRow = includeThisGroup;
|
|
147
|
-
// Footer should be shown only if node expands.
|
|
148
|
-
// groupToggle will
|
|
146
|
+
// Footer should be shown only if the node expands.
|
|
147
|
+
// groupToggle will affect footer visibility so reset a footer flag.
|
|
149
148
|
group[i].showHierarchicalFooter = false;
|
|
150
149
|
if (group[i].children && isExpanded) {
|
|
151
150
|
[count, includedRowCount] = getRecordsCount(group[i].children, count, includedRowCount, parentGroups, from, to, groupFilters, groupToggle, allGroupsExpanded, state, getView);
|
|
@@ -154,7 +153,7 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
|
|
|
154
153
|
!!group[i].children.find(g => g.visibleRow && (g.isHierarchical || !g.children));
|
|
155
154
|
}
|
|
156
155
|
else if (!group[i].children && isExpanded) {
|
|
157
|
-
// group doesn't have subgroups and group is expanded
|
|
156
|
+
// the group doesn't have subgroups and the group is expanded
|
|
158
157
|
const innerCount = count + group[i].count;
|
|
159
158
|
if (count <= to) {
|
|
160
159
|
let groupFrom = 0;
|
|
@@ -199,8 +198,8 @@ const constructGroupingPagination = (groupingInfo, groupToggle, paginationOption
|
|
|
199
198
|
getRecordsCount(groupingInfo, 0, 0, {}, paginationOptions.startIndex, paginationOptions.endIndex, groupFilters, groupToggle, allGroupsExpanded, state, getView);
|
|
200
199
|
return groupFilters;
|
|
201
200
|
};
|
|
202
|
-
// This is basically used to update count on non
|
|
203
|
-
// which is sum of count of leaf node children in their hierarchy.
|
|
201
|
+
// This is basically used to update count on non-leaf node.
|
|
202
|
+
// which is the sum of count of leaf node children in their hierarchy.
|
|
204
203
|
function updateCountOnNonLeafNode(groupingInfo) {
|
|
205
204
|
const updateCount = (child) => {
|
|
206
205
|
if (child.count !== undefined)
|
|
@@ -339,8 +338,8 @@ const getTotalItemCount = (getView, state, groupingInfo) => {
|
|
|
339
338
|
const { groupToggle, allGroupsExpanded } = state;
|
|
340
339
|
while (stack.length) {
|
|
341
340
|
const child = stack.shift();
|
|
342
|
-
// We are considering header count whether if it is of hierarchical node or
|
|
343
|
-
// a normal group node and it has data associated with it in its hierarchy.
|
|
341
|
+
// We are considering header count whether if it is of a hierarchical node or
|
|
342
|
+
// a normal group node, and it has data associated with it in its hierarchy.
|
|
344
343
|
if (child) {
|
|
345
344
|
totalItemCount += 1;
|
|
346
345
|
const isSubGroupPresent = child.children && child.children.length;
|
|
@@ -374,15 +373,15 @@ function postFetch(rsInternal, memoizedPrepareGroupHeaders) {
|
|
|
374
373
|
const rsStore = getRsStore();
|
|
375
374
|
const { getState } = getRsStateResolver();
|
|
376
375
|
if (!rsStore.groupingInfo || !rsStore.groupingInfo.length) {
|
|
377
|
-
// As we are giving ways to always use header though grouping is not in place
|
|
376
|
+
// As we are giving ways to always use header, though grouping is not in place
|
|
378
377
|
// update total item count given by API.
|
|
379
378
|
getView().setProp('totalItemCount', getView().resultsCount);
|
|
380
379
|
memoizedPrepareGroupHeaders([[], [], rsInternal], [getView().rows.length]);
|
|
381
380
|
}
|
|
382
381
|
else {
|
|
383
|
-
// As our group headers are representing data in UI
|
|
382
|
+
// As our group headers are representing data in UI, so
|
|
384
383
|
// like data after every fetch group headers should also change so that
|
|
385
|
-
// UI get to know about latest group.
|
|
384
|
+
// UI get to know about the latest group.
|
|
386
385
|
getView().setProp('totalItemCount', getTotalItemCount(getView, getState(), rsStore.groupingInfo));
|
|
387
386
|
memoizedPrepareGroupHeaders([
|
|
388
387
|
rsStore.groupingInfo,
|
|
@@ -408,8 +407,8 @@ export default (rsInternal) => {
|
|
|
408
407
|
const memorizeOnHierarchicalGroupChange = withMemoization(onHierarchicalGroupChange);
|
|
409
408
|
const memoizedUpdateGroupFilters = withMemoization(updateGroupFilters);
|
|
410
409
|
const memoizedAutoExpandGroups = withMemoization(autoExpandGroups);
|
|
411
|
-
// Prepare group header even though groups are not present to have one flow.
|
|
412
|
-
// depend on after fetch event as
|
|
410
|
+
// Prepare a group header even though groups are not present to have one flow.
|
|
411
|
+
// depend on after fetch event as it depends on data when no grouping is there.
|
|
413
412
|
rsInternal
|
|
414
413
|
.getPubSubUtils()
|
|
415
414
|
.subscribe(AFTER_FETCH, () => postFetch(rsInternal, withMemoization(prepareGroupHeaders)));
|
|
@@ -424,7 +423,7 @@ export default (rsInternal) => {
|
|
|
424
423
|
state.personalization?.active,
|
|
425
424
|
state.refresh,
|
|
426
425
|
state.aggregationInfo,
|
|
427
|
-
state.
|
|
426
|
+
state.visibleColumns
|
|
428
427
|
]);
|
|
429
428
|
memoizedAutoExpandGroups([featureProps], [state.personalization?.active]);
|
|
430
429
|
await memorizeOnHierarchicalGroupChange([featureProps], [
|
|
@@ -434,10 +433,10 @@ export default (rsInternal) => {
|
|
|
434
433
|
state.aggregationInfo,
|
|
435
434
|
state.personalization?.active
|
|
436
435
|
]);
|
|
437
|
-
// In new grouping, update group info in state.
|
|
436
|
+
// In the new grouping, update group info in state.
|
|
438
437
|
// Action dispatched for group info will prepare group headers.
|
|
439
438
|
if (state.paginationOptions) {
|
|
440
|
-
// TODO: use this
|
|
439
|
+
// TODO: use this comparator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012
|
|
441
440
|
// const comparator =(prev, next) => {
|
|
442
441
|
// if (prev[1] !== next[1] || prev[3] !== next[3]) return false;
|
|
443
442
|
// return compareArray(prev[2], next[2], ['children', 'count', 'name']);
|