@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,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { navigatorIsAvailable } from '@pega/cosmos-react-core';
|
|
2
|
+
import { FieldType } from '../../../types/Meta.types';
|
|
2
3
|
import { defaultPresetIdIndex, rowDensityClasses, rowSelectColumnMeta, rowActionColumnMeta, rowDragDropColumnMeta, SELECTION_MODES, TEMPLATES } from '../constants';
|
|
3
4
|
import * as actions from '../actions/actions';
|
|
4
|
-
import { getExternalStateKeys,
|
|
5
|
+
import { getExternalStateKeys, normalizeFieldDef } from '../utils/util';
|
|
5
6
|
import defaultConfig from '../config/config';
|
|
6
7
|
import Column from './ColumnGenerator';
|
|
8
|
+
/** Module-level Set of action column IDs for O(1) membership checks. */
|
|
9
|
+
const ACTION_COLUMN_IDS = new Set([
|
|
10
|
+
rowSelectColumnMeta.field.id,
|
|
11
|
+
rowDragDropColumnMeta.field.id,
|
|
12
|
+
rowActionColumnMeta.field.id
|
|
13
|
+
]);
|
|
7
14
|
/** A view model blueprint that represents the whole view of a repeating structure component. */
|
|
8
15
|
export default class View {
|
|
9
16
|
/** A dispatcher function to dispatch actions to RsCore. */
|
|
@@ -24,7 +31,7 @@ export default class View {
|
|
|
24
31
|
rsID;
|
|
25
32
|
/** Current data for the view. */
|
|
26
33
|
data;
|
|
27
|
-
/** Current {@link Column columns} for the view. */
|
|
34
|
+
/** Current visible {@link Column columns} for the view. */
|
|
28
35
|
columns;
|
|
29
36
|
/** Current {@link Row rows} for the view. */
|
|
30
37
|
rows;
|
|
@@ -59,12 +66,6 @@ export default class View {
|
|
|
59
66
|
freezeLine;
|
|
60
67
|
/** Meta of the repeating structures. */
|
|
61
68
|
meta;
|
|
62
|
-
/**
|
|
63
|
-
* This function is provided a click handler for a row via row generator.
|
|
64
|
-
* @param {RowData} data - current row data
|
|
65
|
-
* @returns {void} void
|
|
66
|
-
*/
|
|
67
|
-
onRowClickAction;
|
|
68
69
|
/** A list of customised the toolbar actions to be displayed at the top of a repeating structure, apart from ootb toolbar actions. */
|
|
69
70
|
toolBarOptions;
|
|
70
71
|
/** An object of formatter functions which formats the raw value. */
|
|
@@ -114,6 +115,22 @@ export default class View {
|
|
|
114
115
|
* undefined: Use default behavior (skip first count announcement, announce on subsequent count updates).
|
|
115
116
|
*/
|
|
116
117
|
announceCount;
|
|
118
|
+
/** Indicates if global search is enabled.
|
|
119
|
+
* If a view does not contain any visible columns which are searchable, then this will be false.
|
|
120
|
+
* @default true
|
|
121
|
+
*/
|
|
122
|
+
enableGlobalSearch;
|
|
123
|
+
/** Array of warning details from API responses to display at top of table */
|
|
124
|
+
warningMessages;
|
|
125
|
+
/**
|
|
126
|
+
* The Table ↔ Gallery toggle is only surfaced on small screens, and only when the authored template (`meta.template`) is Table
|
|
127
|
+
* Currently active template for the view. Defaults to `meta.template` but can be
|
|
128
|
+
* overridden at runtime (e.g. when the user toggles between Table and Gallery).
|
|
129
|
+
*
|
|
130
|
+
* Renderers and toolbar code should read this property — not `meta.template` — so
|
|
131
|
+
* that runtime template switches take effect without altering the persisted preset.
|
|
132
|
+
*/
|
|
133
|
+
template;
|
|
117
134
|
/**
|
|
118
135
|
* Creates a view instance that represents the whole view of repeating structures.
|
|
119
136
|
* It has properties like rows, columns, data to build a repeating structures view.
|
|
@@ -121,14 +138,14 @@ export default class View {
|
|
|
121
138
|
* @param rsInternal The {@link RsInternal} object.
|
|
122
139
|
*/
|
|
123
140
|
constructor(config, rsInternal) {
|
|
124
|
-
const { data, columns, rows = [], groupHeaders, resultsCount, hasMoreResults, totalItemCount, showCount, viewHeight, selectedRecordsCount, bodyHeight, bodyMaxHeight, rowHeight, rowHeightClass, isFilterApplied, isLoading, freezeLine, state, domContainer, scrollerNode, meta, itemElement, virtualizeElements, debugInfo = [], requiredDef, hierarchicalGroupEnabled, singleSelectionRowKey, confirmationActionDetails, externalStateKeys, isCountUpdateRequired, countGeneratedInternally, isInstantRender, refreshNotification, announceCount } = config;
|
|
141
|
+
const { data, columns, rows = [], groupHeaders, resultsCount, hasMoreResults, totalItemCount, showCount, viewHeight, selectedRecordsCount, bodyHeight, bodyMaxHeight, rowHeight, rowHeightClass, isFilterApplied, isLoading, freezeLine, state, domContainer, scrollerNode, meta, itemElement, virtualizeElements, debugInfo = [], requiredDef, hierarchicalGroupEnabled, singleSelectionRowKey, confirmationActionDetails, externalStateKeys, isCountUpdateRequired, countGeneratedInternally, isInstantRender, refreshNotification, announceCount, enableGlobalSearch, warningMessages, template } = config;
|
|
125
142
|
const { getRsStore, getRsProps, getRsStateResolver } = rsInternal;
|
|
126
143
|
this.#rsInternal = rsInternal;
|
|
127
144
|
this.#rsStore = getRsStore();
|
|
128
145
|
const rsProps = getRsProps();
|
|
129
146
|
const rsStateResolver = getRsStateResolver();
|
|
130
147
|
this.#dispatch = rsStateResolver.dispatch;
|
|
131
|
-
this.#viewID =
|
|
148
|
+
this.#viewID = crypto.randomUUID();
|
|
132
149
|
// TODO: temporary solution until renderFactory is moved out of core library
|
|
133
150
|
this.renderFactory = rsProps.renderFactory;
|
|
134
151
|
this.rsID = rsInternal.getRsID();
|
|
@@ -150,7 +167,6 @@ export default class View {
|
|
|
150
167
|
this.isLoading = isLoading;
|
|
151
168
|
this.freezeLine = freezeLine;
|
|
152
169
|
this.meta = meta;
|
|
153
|
-
this.onRowClickAction = rsProps.onRowClickAction;
|
|
154
170
|
this.toolBarOptions = rsProps.toolBarOptions;
|
|
155
171
|
this.formatters = rsProps.formatters;
|
|
156
172
|
this.styleFormats = rsProps.styleFormats;
|
|
@@ -173,9 +189,13 @@ export default class View {
|
|
|
173
189
|
this.isInstantRender = isInstantRender;
|
|
174
190
|
this.refreshNotification = refreshNotification;
|
|
175
191
|
this.announceCount = announceCount;
|
|
192
|
+
this.enableGlobalSearch = enableGlobalSearch ?? true;
|
|
193
|
+
this.warningMessages = warningMessages;
|
|
194
|
+
this.template = template ?? meta.template;
|
|
176
195
|
// FIXME: keep the state on view in sync with the emitted stated from StateResolver
|
|
177
196
|
this.state = {
|
|
178
197
|
searchText: state?.search?.query || '',
|
|
198
|
+
galleryLayout: state?.galleryLayout,
|
|
179
199
|
personalization: state?.personalization,
|
|
180
200
|
filterExpression: state?.filterExpression,
|
|
181
201
|
clearColFilter: state?.clearColFilter,
|
|
@@ -186,6 +206,7 @@ export default class View {
|
|
|
186
206
|
showHeaderIcons: state?.showHeaderIcons,
|
|
187
207
|
colOrder: state?.colOrder,
|
|
188
208
|
hiddenColumns: state?.hiddenColumns,
|
|
209
|
+
visibleColumns: state?.visibleColumns,
|
|
189
210
|
freezeColumns: state?.freezeColumns,
|
|
190
211
|
columnWidths: state?.columnWidths,
|
|
191
212
|
customFields: state?.customFields,
|
|
@@ -194,10 +215,8 @@ export default class View {
|
|
|
194
215
|
notifications: state?.notifications,
|
|
195
216
|
rowSelectionChangeSet: state?.rowSelectionChangeSet,
|
|
196
217
|
selectedRows: state?.selectedRows,
|
|
197
|
-
editInfo: state?.editInfo,
|
|
198
218
|
bootstrap: state?.bootstrap,
|
|
199
219
|
refresh: state?.refresh,
|
|
200
|
-
showSelectAllCheckbox: state?.showSelectAllCheckbox,
|
|
201
220
|
externalState: state?.externalState,
|
|
202
221
|
columnAlias: state?.columnAlias,
|
|
203
222
|
aggregationInfo: state?.aggregationInfo,
|
|
@@ -226,11 +245,11 @@ export default class View {
|
|
|
226
245
|
this.applyColumnsAutoSize = this.applyColumnsAutoSize.bind(this);
|
|
227
246
|
this.addColumn = this.addColumn.bind(this);
|
|
228
247
|
this.getUIProps = this.getUIProps.bind(this);
|
|
248
|
+
this.getVisibleColumns = this.getVisibleColumns.bind(this);
|
|
229
249
|
}
|
|
230
250
|
// Used by setProp for mutation
|
|
231
251
|
/**
|
|
232
252
|
* Retruns the View properties that is used by setProp while creating new view.
|
|
233
|
-
* @returns
|
|
234
253
|
*/
|
|
235
254
|
#get() {
|
|
236
255
|
return {
|
|
@@ -257,7 +276,6 @@ export default class View {
|
|
|
257
276
|
formatters: this.formatters,
|
|
258
277
|
renderFormatterTypeMap: this.renderFormatterTypeMap,
|
|
259
278
|
state: this.state,
|
|
260
|
-
onRowClickAction: this.onRowClickAction,
|
|
261
279
|
domContainer: this.domContainer,
|
|
262
280
|
scrollerNode: this.scrollerNode,
|
|
263
281
|
itemElement: this.itemElement,
|
|
@@ -271,9 +289,16 @@ export default class View {
|
|
|
271
289
|
countGeneratedInternally: this.countGeneratedInternally,
|
|
272
290
|
isInstantRender: this.isInstantRender,
|
|
273
291
|
refreshNotification: this.refreshNotification,
|
|
274
|
-
announceCount: this.announceCount
|
|
292
|
+
announceCount: this.announceCount,
|
|
293
|
+
enableGlobalSearch: this.enableGlobalSearch,
|
|
294
|
+
warningMessages: this.warningMessages,
|
|
295
|
+
template: this.template
|
|
275
296
|
};
|
|
276
297
|
}
|
|
298
|
+
/** Returns the warning messages array */
|
|
299
|
+
getWarningMessages() {
|
|
300
|
+
return this.warningMessages;
|
|
301
|
+
}
|
|
277
302
|
/**
|
|
278
303
|
* Attach utility functions of view to {@link type} property.
|
|
279
304
|
* @param functions
|
|
@@ -290,11 +315,11 @@ export default class View {
|
|
|
290
315
|
setViewUpdateCallback(updateViewCallback) {
|
|
291
316
|
this.#updateView = updateViewCallback;
|
|
292
317
|
}
|
|
318
|
+
// TODO: evaluate if comparing old/new before setProp helps
|
|
293
319
|
/**
|
|
294
320
|
* This is used to create immutable objects of {@link View} instance. Always call setProp if updating any properties of View to make it immutable.
|
|
295
321
|
* @param prop Either partial of {@link ViewConfig} or individual properties of {@link ViewConfig}.
|
|
296
|
-
* @param
|
|
297
|
-
* @returns void
|
|
322
|
+
* @param value An optional parameter to provide value for {@link prop} in case prop is not of type {@link ViewConfig}
|
|
298
323
|
*/
|
|
299
324
|
setProp(prop, value) {
|
|
300
325
|
const { getView } = this.#rsInternal;
|
|
@@ -317,14 +342,25 @@ export default class View {
|
|
|
317
342
|
getUIProps() {
|
|
318
343
|
const activeView = this.state.personalization?.active;
|
|
319
344
|
const personalizations = this.state.personalization?.allPersonalizations;
|
|
320
|
-
|
|
345
|
+
let ariaLabel = personalizations && Object.keys(personalizations).length > 1
|
|
321
346
|
? `${this.meta.title}: ${personalizations[activeView]?.name}`
|
|
322
347
|
: this.meta.title;
|
|
348
|
+
ariaLabel += this.requiredDef?.validatemessage
|
|
349
|
+
? ` ${this.#rsStore.translate('Error')} ${this.requiredDef.validatemessage}`
|
|
350
|
+
: '';
|
|
351
|
+
if (this.requiredDef?.required ?? this.meta?.requiredOnLoad) {
|
|
352
|
+
ariaLabel += ` ${this.#rsStore.translate('required')}`;
|
|
353
|
+
}
|
|
354
|
+
const isMacOs = navigatorIsAvailable && navigator.userAgent.match(/(Windows|Macintosh)/)?.[0] === 'Macintosh';
|
|
355
|
+
const navigationHelpKey = `${isMacOs ? 'Command' : 'Control'} /`;
|
|
323
356
|
return {
|
|
324
357
|
role: 'grid',
|
|
325
358
|
'aria-rowcount': (this.totalItemCount ?? 0) + 1, // include header row as well in total row count announcement
|
|
326
359
|
'aria-colcount': this.getVisibleColumns(true).length, // include action columns as well for total column count announcement
|
|
327
|
-
'aria-label': this.#rsStore.translate('view_navigation_instructions', [
|
|
360
|
+
'aria-label': this.#rsStore.translate('view_navigation_instructions', [
|
|
361
|
+
ariaLabel,
|
|
362
|
+
navigationHelpKey
|
|
363
|
+
])
|
|
328
364
|
};
|
|
329
365
|
}
|
|
330
366
|
/** Returns the default(preset at 0th index in {@link RsStore.presets presets} array) preset id. */
|
|
@@ -335,6 +371,9 @@ export default class View {
|
|
|
335
371
|
get isReady() {
|
|
336
372
|
return this.state.bootstrap;
|
|
337
373
|
}
|
|
374
|
+
get galleryLayout() {
|
|
375
|
+
return this.state?.galleryLayout;
|
|
376
|
+
}
|
|
338
377
|
/** Indicates if {@link Meta.selectionMode selection mode} is ON */
|
|
339
378
|
get isInSelectionMode() {
|
|
340
379
|
return !!(this.meta?.selectionMode && SELECTION_MODES[this.meta.selectionMode]);
|
|
@@ -350,13 +389,7 @@ export default class View {
|
|
|
350
389
|
return {
|
|
351
390
|
isExpanded: this.state.allGroupsExpanded,
|
|
352
391
|
handleChange: (isExpanded) => this.#dispatch(actions.actionGroupingExpandCollapseAll(isExpanded)),
|
|
353
|
-
enable: this.showGroupingExpandCollapseAll
|
|
354
|
-
// Do not show right border if OOTB columns are on.
|
|
355
|
-
classList: this.state.showSelectAllCheckbox ||
|
|
356
|
-
this.state.errors?.dataErrors ||
|
|
357
|
-
isRowReorderFieldEnabled(this.meta)
|
|
358
|
-
? ['no-border-right']
|
|
359
|
-
: []
|
|
392
|
+
enable: this.showGroupingExpandCollapseAll
|
|
360
393
|
};
|
|
361
394
|
}
|
|
362
395
|
/** Indicates if there are no records in the view. */
|
|
@@ -374,7 +407,7 @@ export default class View {
|
|
|
374
407
|
}
|
|
375
408
|
/** Return the predefined CSS classes for a view. */
|
|
376
409
|
get className() {
|
|
377
|
-
if (this.
|
|
410
|
+
if (this.template !== TEMPLATES.TABLE)
|
|
378
411
|
return '';
|
|
379
412
|
// if every visible column has a width defined in field def, no need to hide the columns and wait for width calculation
|
|
380
413
|
if (this.getVisibleColumns().every(col => !!col?.field?.width))
|
|
@@ -393,18 +426,13 @@ export default class View {
|
|
|
393
426
|
// Check if any column with new field exists, don't add it and show warnings.
|
|
394
427
|
const existingColumn = this.columns?.find(c => c.field.id === field.id);
|
|
395
428
|
if (!existingColumn) {
|
|
396
|
-
const rowActionColumnIndex = this.columns?.findIndex(c => c.field.id === rowActionColumnMeta.field.id);
|
|
397
|
-
/*
|
|
398
|
-
The row action column should always be the last column in the view.
|
|
399
|
-
The newly added column should take the position of the row action column
|
|
400
|
-
and push it to the last in the array.
|
|
401
|
-
*/
|
|
402
|
-
if (rowActionColumnIndex && rowActionColumnIndex !== -1) {
|
|
403
|
-
return this.addColumnAtIndex(field, option, rowActionColumnIndex);
|
|
404
|
-
}
|
|
405
429
|
normalizeFieldDef(field, defaultConfig.defaultFieldDef);
|
|
406
430
|
const column = new Column({ field, ...option }, this.#rsInternal);
|
|
407
|
-
|
|
431
|
+
// Do not include action fields in fieldDefsMap to avoid showing them in actions menu.
|
|
432
|
+
if (!(field.type === FieldType.ACTION_FIELD_TYPE)) {
|
|
433
|
+
this.#rsStore.fieldDefsMap.set(field.id, field);
|
|
434
|
+
}
|
|
435
|
+
const cloned = [...(this.columns ?? [])];
|
|
408
436
|
cloned.push(column);
|
|
409
437
|
this.columns = cloned;
|
|
410
438
|
return column;
|
|
@@ -420,12 +448,12 @@ export default class View {
|
|
|
420
448
|
*/
|
|
421
449
|
addColumnAtIndex(field, option, index) {
|
|
422
450
|
// Check if any column with new field exists, don't add it and show warnings.
|
|
423
|
-
const existingColumn = this.columns?.find(
|
|
451
|
+
const existingColumn = this.columns?.find(col => col.field.id === field.id);
|
|
424
452
|
if (!existingColumn) {
|
|
425
453
|
// Full blow the meta
|
|
426
454
|
normalizeFieldDef(field, defaultConfig.defaultFieldDef);
|
|
427
455
|
const column = new Column({ field, ...option }, this.#rsInternal);
|
|
428
|
-
const cloned = [...this.columns];
|
|
456
|
+
const cloned = [...(this.columns ?? [])];
|
|
429
457
|
cloned.splice(index, 0, column);
|
|
430
458
|
this.columns = cloned;
|
|
431
459
|
return column;
|
|
@@ -442,6 +470,8 @@ export default class View {
|
|
|
442
470
|
const existingColumn = this.columns?.find(c => c.field.id === fieldId);
|
|
443
471
|
if (existingColumn) {
|
|
444
472
|
this.columns = this.columns?.filter(c => c.field.id !== fieldId);
|
|
473
|
+
this.#rsStore.fieldDefsMap.delete(fieldId);
|
|
474
|
+
this.meta.fieldDefs = this.meta.fieldDefs.filter(fd => fd.id !== fieldId);
|
|
445
475
|
return true;
|
|
446
476
|
}
|
|
447
477
|
// eslint-disable-next-line no-console
|
|
@@ -451,7 +481,6 @@ export default class View {
|
|
|
451
481
|
/**
|
|
452
482
|
* Return the rendering engine props of a given column
|
|
453
483
|
* @param id The {@link Column.field.id id} of the column for which rendering engine props are required.
|
|
454
|
-
* @returns
|
|
455
484
|
*/
|
|
456
485
|
getRenderingEnginePropsById(id) {
|
|
457
486
|
const column = this.columns?.find(c => c.field.id === id);
|
|
@@ -459,7 +488,6 @@ export default class View {
|
|
|
459
488
|
}
|
|
460
489
|
/**
|
|
461
490
|
* Returns the row density id for a given {@link rowHeightClass}.
|
|
462
|
-
* @returns
|
|
463
491
|
*/
|
|
464
492
|
getRowDensity() {
|
|
465
493
|
return Object.values(rowDensityClasses).find(obj => obj.className === this.rowHeightClass).id;
|
|
@@ -477,14 +505,15 @@ export default class View {
|
|
|
477
505
|
getRenderingEnginePropsById: this.getRenderingEnginePropsById,
|
|
478
506
|
selectedRecordsCount: this.selectedRecordsCount,
|
|
479
507
|
resultsCount: this.resultsCount,
|
|
508
|
+
hasMoreResults: this.hasMoreResults,
|
|
480
509
|
getRequiredDef: () => this.requiredDef,
|
|
481
|
-
getRowDensity: this.getRowDensity
|
|
510
|
+
getRowDensity: this.getRowDensity,
|
|
511
|
+
getVisibleColumns: this.getVisibleColumns
|
|
482
512
|
};
|
|
483
513
|
}
|
|
484
514
|
/**
|
|
485
515
|
* It returns the formatter function available for a given formatterName from {@link RsProps.formatters formatters} passed to RS Core.
|
|
486
516
|
* @param formatterName
|
|
487
|
-
* @returns
|
|
488
517
|
*/
|
|
489
518
|
getFormatterByKey(formatterName) {
|
|
490
519
|
return this.formatters?.[formatterName];
|
|
@@ -526,22 +555,19 @@ export default class View {
|
|
|
526
555
|
this.virtualizeElements[name] = virtualizerInstance;
|
|
527
556
|
}
|
|
528
557
|
/**
|
|
529
|
-
*
|
|
530
|
-
* @returns
|
|
558
|
+
* @returns The parent dom container HTML element.
|
|
531
559
|
*/
|
|
532
560
|
getDomContainer() {
|
|
533
561
|
return this.domContainer;
|
|
534
562
|
}
|
|
535
563
|
/**
|
|
536
|
-
*
|
|
537
|
-
* @returns
|
|
564
|
+
* @returns The scroller element(the element used in virtualizer as a scrollable area.)
|
|
538
565
|
*/
|
|
539
566
|
getScrollNode() {
|
|
540
567
|
return this.scrollerNode;
|
|
541
568
|
}
|
|
542
569
|
/**
|
|
543
|
-
*
|
|
544
|
-
* @returns
|
|
570
|
+
* @returns Returns the header row of the Repeating structures view.
|
|
545
571
|
*/
|
|
546
572
|
getItemElement() {
|
|
547
573
|
return this.itemElement;
|
|
@@ -552,7 +578,6 @@ export default class View {
|
|
|
552
578
|
* This flag is just to hide the user interaction items from the UI for the respective features. It will not stop running the respective features.
|
|
553
579
|
* @param feature The feature name
|
|
554
580
|
* @param column an optional column parameter if you want to check if the feature is available for the given column.
|
|
555
|
-
* @returns boolean
|
|
556
581
|
*/
|
|
557
582
|
shouldDisplayFeature(feature, column) {
|
|
558
583
|
const viewDisplayFeatureFlag = this.meta?.displayFeatures[feature];
|
|
@@ -582,17 +607,32 @@ export default class View {
|
|
|
582
607
|
}
|
|
583
608
|
/**
|
|
584
609
|
* Returns the array of visible columns.
|
|
585
|
-
* @
|
|
586
|
-
* @
|
|
587
|
-
* @returns array of visible columns with/without including action columns(rowSelect, rowDragDrop and rowActionColumn).
|
|
610
|
+
* @param includeActionColumns - include action columns (rowSelect, rowDragDrop, rowActionColumn). Default is `false`.
|
|
611
|
+
* @returns array of visible columns with/without action columns.
|
|
588
612
|
*/
|
|
589
613
|
getVisibleColumns(includeActionColumns = false) {
|
|
590
|
-
const
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
614
|
+
const visibleIds = new Set(this.state.visibleColumns);
|
|
615
|
+
return (this.columns?.filter(col => visibleIds.has(col.field.id) &&
|
|
616
|
+
(includeActionColumns || !ACTION_COLUMN_IDS.has(col.field.id))) ?? []);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Returns the array of visible column IDs.
|
|
620
|
+
* @param includeActionColumns - include action column IDs (rowSelect, rowDragDrop, rowActionColumn). Default is `false`.
|
|
621
|
+
* @returns array of visible column IDs with/without action columns.
|
|
622
|
+
*/
|
|
623
|
+
getVisibleColumnIds(includeActionColumns = false) {
|
|
624
|
+
if (includeActionColumns) {
|
|
625
|
+
return this.state.visibleColumns ?? [];
|
|
626
|
+
}
|
|
627
|
+
return this.state.visibleColumns?.filter(id => !ACTION_COLUMN_IDS.has(id)) ?? [];
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* Returns the {@link FieldDef fieldDefs} from {@link meta} for the current view.
|
|
631
|
+
* This reflects the latest state of fieldDefs including any additions or removals made after initialization.
|
|
632
|
+
* @returns array of {@link FieldDef fieldDefs} from {@link meta}.
|
|
633
|
+
*/
|
|
634
|
+
getFieldDefs() {
|
|
635
|
+
return this.meta.fieldDefs;
|
|
596
636
|
}
|
|
597
637
|
}
|
|
598
638
|
//# sourceMappingURL=ViewGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewGenerator.js","sourceRoot":"","sources":["../../../../src/core/generators/ViewGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuidV4 } from 'uuid';\n\nimport type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport type { Meta } from '../../../types/Meta.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../types/State.types';\nimport {\n defaultPresetIdIndex,\n rowDensityClasses,\n rowSelectColumnMeta,\n rowActionColumnMeta,\n rowDragDropColumnMeta,\n SELECTION_MODES,\n TEMPLATES\n} from '../constants';\nimport * as actions from '../actions/actions';\nimport { getExternalStateKeys, isRowReorderFieldEnabled, normalizeFieldDef } from '../utils/util';\nimport defaultConfig from '../config/config';\nimport type RsStore from '../RsStore';\nimport type RsInternal from '../RsInternal';\nimport type RsProps from '../RsProps';\nimport type StateResolver from '../StateResolver';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type ActionTypes from '../actions/actionConstants';\n\nimport type { UtilityFunctions } from './viewUtilityMethods';\nimport Column from './ColumnGenerator';\nimport type Row from './RowGenerator';\nimport type {\n ConfirmationActionDetails,\n DebugInfo,\n FormatterFunction,\n FreezeLine,\n RefreshNotification,\n RequiredDefinition,\n UIProps,\n ViewConfig,\n ViewContext,\n ViewState,\n VirtualizeElement\n} from './ViewGenerator.types';\nimport type { RowData } from './RowGenerator.types';\nimport type { ColumnConfig } from './ColumnGenerator.types';\nimport type GroupGenerator from './GroupGenerator';\n\n/** A view model blueprint that represents the whole view of a repeating structure component. */\nexport default class View {\n /** A dispatcher function to dispatch actions to RsCore. */\n #dispatch: StateResolver['dispatch'];\n /** Rs store object */\n #rsStore: RsStore;\n /** Unique id for the current view */\n #viewID: string;\n /** Rs internal object reference. */\n #rsInternal: RsInternal;\n /** used to pass the latest view to rsInternal. */\n #updateView!: RsInternal['updateView'];\n /** Value of unique key to identify the single selected row. */\n #singleSelectionRowKey?: string;\n /** Render factory reference from {@link RsProps} */\n renderFactory: RsProps['renderFactory'];\n /** A unique id to identify the current repeating structure. */\n rsID: string;\n /** Current data for the view. */\n data?: RowData[];\n /** Current {@link Column columns} for the view. */\n columns?: Column[];\n /** Current {@link Row rows} for the view. */\n rows?: Row[];\n /** Current group headers for the view. */\n groupHeaders?: GroupGenerator[];\n /** Indicates the visible records count for the current view after applying any type of filter operation. */\n resultsCount?: number;\n /** Indicates whether to show the overall count on view or not. */\n showCount?: boolean;\n /** Indicates if the view has more records. */\n hasMoreResults?: boolean;\n /** Indicates the total record count of the view including group headers.\n */\n totalItemCount?: number;\n /** Indicates the total selected records count. */\n selectedRecordsCount?: number;\n /** Indicates the total height of the view. */\n viewHeight?: number;\n /** Indicates the current height of the container that contains data records like rows. */\n bodyHeight?: number | string;\n /** Indicates max height of the current parent container. */\n bodyMaxHeight?: number;\n /** Indicates the current height of each data row. It does not include group header row. */\n rowHeight?: number;\n /** Indicates the class name of the current selected row density. */\n rowHeightClass?: string;\n /** Indicates if the filter is applied for the current view. */\n isFilterApplied?: boolean;\n /** Indicates if the view is in loading state and not ready. It is used to show loaders in case of api calls. */\n isLoading?: boolean;\n /** Styles for the freeze line to be shown when freezing is applied. */\n freezeLine?: FreezeLine;\n /** Meta of the repeating structures. */\n meta: Meta;\n /**\n * This function is provided a click handler for a row via row generator.\n * @param {RowData} data - current row data\n * @returns {void} void\n */\n onRowClickAction?: RsProps['onRowClickAction'];\n /** A list of customised the toolbar actions to be displayed at the top of a repeating structure, apart from ootb toolbar actions. */\n toolBarOptions?: RsProps['toolBarOptions'];\n /** An object of formatter functions which formats the raw value. */\n formatters?: RsProps['formatters'];\n /** A collection of style formats that can be applied for styling the data. */\n styleFormats?: RsProps['styleFormats'];\n /** A map of formatters that will be displayed to consumer to format a fieldDef in repeating structure. */\n renderFormatterTypeMap?: RsProps['renderFormatterTypeMap'];\n /** Reference to the top level Html element of repeating structures. */\n domContainer?: HTMLElement;\n /** Reference to the scroller element of repeating structures */\n scrollerNode?: HTMLElement;\n /** Reference to the header element of repeating structures. */\n itemElement?: HTMLElement;\n /** Reference to the virtualizer instance of the repeating structures. */\n virtualizeElements: VirtualizeElement;\n /** Indicates if hierarchical grouping is enabled. */\n hierarchicalGroupEnabled?: boolean;\n /** The details of the confirmation action modal triggered from consumer of repeating structures. */\n confirmationActionDetails?: ConfirmationActionDetails;\n /** Indicates if a count update is required. E.g. after applying filter a reset of count is required. */\n isCountUpdateRequired?: boolean;\n /** Indicates if count is generated internally. Used for RS core internal purpose. */\n countGeneratedInternally?: boolean;\n /** The state shared with the view after completion of one render cycle. */\n state: ViewState;\n /** The details of the debug information shared by the consumer of repeating structures.\n * It is displayed as one of the toolbar actions to debug the {@link ApiContext api context methods} latency. */\n debugInfo?: DebugInfo[];\n /** The definition of a required view. It has a boolean flag to indicate if the current repeating structures view\n * is required and a validation message to be displayed in case of required validation failure.\n * This definition is passed by consumer of repeating structures. */\n requiredDef?: RequiredDefinition;\n /** A set of {@link State.externalState external state} valid keys derived from meta.\n * E.g. value of {@link Meta.externalFilters external filters in meta} is a valid external state key. */\n externalStateKeys?: string[];\n /** Stores all the view related utility functions */\n type!: UtilityFunctions;\n /** Indicates if the current view object is generated via instantRender. */\n isInstantRender?: boolean;\n /** Config to show refreshNotification. This will be set upon receiving {@link ActionTypes.NOTIFY_DATA_REFRESH NOTIFY_DATA_REFRESH} action. */\n refreshNotification?: RefreshNotification;\n\n /**\n Overrides the default count announcement behavior for screen readers.\n * true: Always announce the row count, including on first render.\n * false: Never announce the row count.\n * undefined: Use default behavior (skip first count announcement, announce on subsequent count updates).\n */\n announceCount?: boolean;\n /**\n * Creates a view instance that represents the whole view of repeating structures.\n * It has properties like rows, columns, data to build a repeating structures view.\n * @param options An options object to create a view instance. If passed the view is created with this set of options.\n * @param rsInternal The {@link RsInternal} object.\n */\n constructor(config: ViewConfig, rsInternal: RsInternal) {\n const {\n data,\n columns,\n rows = [],\n groupHeaders,\n resultsCount,\n hasMoreResults,\n totalItemCount,\n showCount,\n viewHeight,\n selectedRecordsCount,\n bodyHeight,\n bodyMaxHeight,\n rowHeight,\n rowHeightClass,\n isFilterApplied,\n isLoading,\n freezeLine,\n state,\n domContainer,\n scrollerNode,\n meta,\n itemElement,\n virtualizeElements,\n debugInfo = [] as DebugInfo[],\n requiredDef,\n hierarchicalGroupEnabled,\n singleSelectionRowKey,\n confirmationActionDetails,\n externalStateKeys,\n isCountUpdateRequired,\n countGeneratedInternally,\n isInstantRender,\n refreshNotification,\n announceCount\n } = config;\n const { getRsStore, getRsProps, getRsStateResolver } = rsInternal;\n this.#rsInternal = rsInternal;\n this.#rsStore = getRsStore();\n const rsProps = getRsProps();\n const rsStateResolver = getRsStateResolver();\n\n this.#dispatch = rsStateResolver.dispatch;\n this.#viewID = uuidV4();\n\n // TODO: temporary solution until renderFactory is moved out of core library\n this.renderFactory = rsProps.renderFactory;\n this.rsID = rsInternal.getRsID();\n\n this.data = data;\n this.columns = columns!;\n this.rows = rows;\n this.groupHeaders = groupHeaders;\n this.resultsCount = resultsCount;\n this.hasMoreResults = hasMoreResults;\n this.showCount = meta.showCount ? showCount : false;\n this.totalItemCount = totalItemCount;\n this.selectedRecordsCount = selectedRecordsCount;\n this.viewHeight = viewHeight;\n this.bodyHeight = bodyHeight;\n this.bodyMaxHeight = bodyMaxHeight;\n this.rowHeight = rowHeight;\n this.rowHeightClass = rowHeightClass;\n this.isFilterApplied = isFilterApplied;\n this.isLoading = isLoading;\n this.freezeLine = freezeLine;\n this.meta = meta;\n this.onRowClickAction = rsProps.onRowClickAction;\n this.toolBarOptions = rsProps.toolBarOptions;\n this.formatters = rsProps.formatters;\n this.styleFormats = rsProps.styleFormats;\n this.renderFormatterTypeMap = rsProps.renderFormatterTypeMap;\n this.#singleSelectionRowKey = singleSelectionRowKey;\n\n this.domContainer = domContainer;\n this.scrollerNode = scrollerNode;\n this.itemElement = itemElement;\n this.virtualizeElements = virtualizeElements || {};\n this.hierarchicalGroupEnabled = hierarchicalGroupEnabled;\n this.confirmationActionDetails = {\n ...confirmationActionDetails!,\n showConfirmationAction: state?.showConfirmationAction!\n };\n this.isCountUpdateRequired = isCountUpdateRequired;\n this.countGeneratedInternally = countGeneratedInternally;\n this.debugInfo = debugInfo;\n this.requiredDef = requiredDef;\n this.externalStateKeys = externalStateKeys || getExternalStateKeys(this.meta);\n this.isInstantRender = isInstantRender;\n this.refreshNotification = refreshNotification;\n this.announceCount = announceCount;\n // FIXME: keep the state on view in sync with the emitted stated from StateResolver\n this.state = {\n searchText: state?.search?.query || '',\n personalization: state?.personalization,\n filterExpression: state?.filterExpression,\n clearColFilter: state?.clearColFilter,\n sortingOrder: state?.sortingOrder,\n groups: state?.groups,\n allGroupsExpanded: state?.allGroupsExpanded,\n groupToggle: state?.groupToggle,\n showHeaderIcons: state?.showHeaderIcons,\n colOrder: state?.colOrder,\n hiddenColumns: state?.hiddenColumns,\n freezeColumns: state?.freezeColumns,\n columnWidths: state?.columnWidths,\n customFields: state?.customFields,\n selectedHeightOption: state?.selectedHeightOption,\n paginationOptions: state?.paginationOptions,\n notifications: state?.notifications,\n rowSelectionChangeSet: state?.rowSelectionChangeSet,\n selectedRows: state?.selectedRows,\n editInfo: state?.editInfo,\n bootstrap: state?.bootstrap,\n refresh: state?.refresh,\n showSelectAllCheckbox: state?.showSelectAllCheckbox,\n externalState: state?.externalState,\n columnAlias: state?.columnAlias,\n aggregationInfo: state?.aggregationInfo,\n errors: state?.errors,\n responsive: state?.responsive, // stores the responsive behavior of DOM container w.r.t. various breakpoints.\n conditionalStyleFormats: state?.conditionalStyleFormats\n };\n\n /** IMP: For generator methods use traditional function syntax\n * rather than arrow function for memory efficiency\n * and bind 'this' to the methods which requires 'this' context. */\n this.getRenderingEnginePropsById = this.getRenderingEnginePropsById.bind(this);\n this.getFormatterByKey = this.getFormatterByKey.bind(this);\n this.getContext = this.getContext.bind(this);\n this.setProp = this.setProp.bind(this);\n this.addColumnAtIndex = this.addColumnAtIndex.bind(this);\n this.getRowDensity = this.getRowDensity.bind(this);\n this.setDomContainer = this.setDomContainer.bind(this);\n this.setItemElement = this.setItemElement.bind(this);\n this.shouldDisplayFeature = this.shouldDisplayFeature.bind(this);\n this.setScrollNode = this.setScrollNode.bind(this);\n this.putVirtualizeElement = this.putVirtualizeElement.bind(this);\n this.getDomContainer = this.getDomContainer.bind(this);\n this.getItemElement = this.getItemElement.bind(this);\n this.getScrollNode = this.getScrollNode.bind(this);\n this.getVirtualizeElement = this.getVirtualizeElement.bind(this);\n this.applyColumnsAutoSize = this.applyColumnsAutoSize.bind(this);\n this.addColumn = this.addColumn.bind(this);\n this.getUIProps = this.getUIProps.bind(this);\n }\n\n // Used by setProp for mutation\n /**\n * Retruns the View properties that is used by setProp while creating new view.\n * @returns\n */\n #get(): ViewConfig &\n Pick<RsProps, 'toolBarOptions' | 'formatters' | 'renderFormatterTypeMap' | 'onRowClickAction'> {\n return {\n data: this.data,\n singleSelectionRowKey: this.#singleSelectionRowKey,\n columns: this.columns,\n rows: this.rows,\n groupHeaders: this.groupHeaders,\n resultsCount: this.resultsCount,\n showCount: this.showCount,\n hasMoreResults: this.hasMoreResults,\n totalItemCount: this.totalItemCount,\n selectedRecordsCount: this.selectedRecordsCount,\n viewHeight: this.viewHeight,\n bodyHeight: this.bodyHeight,\n bodyMaxHeight: this.bodyMaxHeight,\n rowHeight: this.rowHeight,\n rowHeightClass: this.rowHeightClass,\n isFilterApplied: this.isFilterApplied,\n isLoading: this.isLoading,\n freezeLine: this.freezeLine,\n meta: this.meta,\n toolBarOptions: this.toolBarOptions,\n formatters: this.formatters,\n renderFormatterTypeMap: this.renderFormatterTypeMap,\n state: this.state,\n onRowClickAction: this.onRowClickAction,\n domContainer: this.domContainer,\n scrollerNode: this.scrollerNode,\n itemElement: this.itemElement,\n virtualizeElements: this.virtualizeElements,\n debugInfo: this.debugInfo,\n requiredDef: this.requiredDef,\n hierarchicalGroupEnabled: this.hierarchicalGroupEnabled,\n confirmationActionDetails: this.confirmationActionDetails,\n externalStateKeys: this.externalStateKeys,\n isCountUpdateRequired: this.isCountUpdateRequired,\n countGeneratedInternally: this.countGeneratedInternally,\n isInstantRender: this.isInstantRender,\n refreshNotification: this.refreshNotification,\n announceCount: this.announceCount\n };\n }\n\n /**\n * Attach utility functions of view to {@link type} property.\n * @param functions\n * @returns void\n */\n addUtilityFunctions(functions: UtilityFunctions) {\n this.type = functions;\n }\n\n /**\n * Sets the {@link updateView} callback function.\n * @param updateViewCallback\n * @returns void\n */\n setViewUpdateCallback(updateViewCallback: RsInternal['updateView']) {\n this.#updateView = updateViewCallback;\n }\n\n /**\n * This is used to create immutable objects of {@link View} instance. Always call setProp if updating any properties of View to make it immutable.\n * @param prop Either partial of {@link ViewConfig} or individual properties of {@link ViewConfig}.\n * @param [value] An optional parameter to provide value for {@link prop} in case prop is not of type {@link ViewConfig}\n * @returns void\n */\n setProp(prop: Partial<ViewConfig> | keyof ViewConfig, value?: ViewConfig[keyof ViewConfig]) {\n const { getView } = this.#rsInternal;\n if (getView().#viewID !== this.#viewID) {\n // eslint-disable-next-line no-console\n console.warn('Doing setProp on a stale view. This might cause bugs.');\n }\n const pObject = typeof prop === 'object' ? prop : { [prop]: value };\n\n const clonedView = new View({ ...this.#get(), ...(pObject as ViewConfig) }, this.#rsInternal);\n\n if (!Object.hasOwn(pObject, 'state')) {\n clonedView.state = this.state;\n }\n\n this.#updateView(clonedView);\n\n return clonedView;\n }\n\n // FIXME: add tranlsations back\n /**\n * Returns the ui props for the {@link View} used for accessibility.\n */\n getUIProps(): UIProps {\n const activeView = this.state.personalization?.active!;\n const personalizations = this.state.personalization?.allPersonalizations;\n const ariaLabel =\n personalizations && Object.keys(personalizations).length > 1\n ? `${this.meta.title}: ${personalizations[activeView]?.name}`\n : this.meta.title!;\n return {\n role: 'grid',\n 'aria-rowcount': (this.totalItemCount ?? 0) + 1, // include header row as well in total row count announcement\n 'aria-colcount': this.getVisibleColumns(true).length, // include action columns as well for total column count announcement\n 'aria-label': this.#rsStore.translate('view_navigation_instructions', [ariaLabel])\n };\n }\n\n /** Returns the default(preset at 0th index in {@link RsStore.presets presets} array) preset id. */\n get defaultPresetId(): string | undefined {\n return this.#rsStore.presets?.[defaultPresetIdIndex].id;\n }\n\n /** Indicates if the view is ready.(means the RS component is mounted). */\n get isReady() {\n return this.state.bootstrap;\n }\n\n /** Indicates if {@link Meta.selectionMode selection mode} is ON */\n get isInSelectionMode(): boolean {\n return !!(this.meta?.selectionMode && SELECTION_MODES[this.meta.selectionMode]);\n }\n\n /** Indicates if the Group Expand all functionality should be shown on UI. */\n get showGroupingExpandCollapseAll(): boolean {\n return !!this.#rsStore.groupingInfo?.length;\n }\n\n /** A set of props that can be used to configure Group Expand all Header cell. */\n get groupingHeaderCellProps() {\n if (!this.showGroupingExpandCollapseAll) return {};\n return {\n isExpanded: this.state.allGroupsExpanded,\n handleChange: (isExpanded: boolean): void =>\n this.#dispatch(actions.actionGroupingExpandCollapseAll(isExpanded)),\n enable: this.showGroupingExpandCollapseAll as boolean,\n // Do not show right border if OOTB columns are on.\n classList:\n this.state.showSelectAllCheckbox ||\n this.state.errors?.dataErrors ||\n isRowReorderFieldEnabled(this.meta)\n ? ['no-border-right']\n : []\n };\n }\n\n /** Indicates if there are no records in the view. */\n get hasNoRecords() {\n return !Number.isNaN(this.resultsCount) && this.resultsCount === 0;\n }\n\n /** Indicates if there are any frozen columns in the view. */\n get hasNoFrozenColumns() {\n return (this.columns?.filter(c => c.frozen && !c.hidden).length ?? 0) === 0;\n }\n\n /** Indicates to hide the freeze line if selection column is the only frozen column in the view. */\n get bHideFreezeLine() {\n const frozenColumns = this.columns?.filter(col => col.frozen && !col.hidden) ?? [];\n return frozenColumns.length === 1 && frozenColumns[0].field.id === rowSelectColumnMeta.field.id;\n }\n\n /** Return the predefined CSS classes for a view. */\n get className(): string {\n if (this.meta?.template !== TEMPLATES.TABLE) return '';\n // if every visible column has a width defined in field def, no need to hide the columns and wait for width calculation\n if (this.getVisibleColumns().every(col => !!col?.field?.width)) return '';\n if (!this.#rsStore.columnSizingTriggerdOnRowsAvailable) return 'hide-rows-till-ready';\n return '';\n }\n\n /**\n * Adds a column to the {@link columns Columns} of the view\n * @param field The {@link Column.field field} for the column.\n * @param option Extra options.\n * @returns the new column or existing column if it already exists.\n */\n addColumn(field: Column['field'], option: OmitStrict<ColumnConfig, 'field'>): Column {\n // Check if any column with new field exists, don't add it and show warnings.\n const existingColumn = this.columns?.find(c => c.field.id === field.id);\n\n if (!existingColumn) {\n const rowActionColumnIndex = this.columns?.findIndex(\n c => c.field.id === rowActionColumnMeta.field.id\n );\n /*\n The row action column should always be the last column in the view.\n The newly added column should take the position of the row action column\n and push it to the last in the array.\n */\n if (rowActionColumnIndex && rowActionColumnIndex !== -1) {\n return this.addColumnAtIndex(field, option, rowActionColumnIndex);\n }\n normalizeFieldDef(field, defaultConfig.defaultFieldDef);\n const column = new Column({ field, ...option }, this.#rsInternal);\n const cloned = [...this.columns!];\n cloned.push(column);\n this.columns = cloned;\n return column;\n }\n return existingColumn;\n }\n\n /**\n * Adds a column at a specified index in the {@link columns Columns} of the view.\n * @param field The {@link Column.field field} for the column.\n * @param option Extra options.\n * @param index The index at which the column needs to be inserted in the {@link columns Columns} array of view.\n * @returns void\n */\n addColumnAtIndex(\n field: Column['field'],\n option: OmitStrict<ColumnConfig, 'field'>,\n index: number\n ): Column {\n // Check if any column with new field exists, don't add it and show warnings.\n const existingColumn = this.columns?.find(c => c.field.id === field.id);\n if (!existingColumn) {\n // Full blow the meta\n normalizeFieldDef(field, defaultConfig.defaultFieldDef);\n const column = new Column({ field, ...option }, this.#rsInternal);\n const cloned = [...this.columns!];\n cloned.splice(index, 0, column);\n this.columns = cloned;\n return column;\n }\n return existingColumn;\n }\n\n /**\n * Remove a column from the {@link columns Columns} array of the view.\n * @param fieldId The {@link Column.field.id fieldId} of the column to be removed.\n * @returns boolean - Indicates if the column is successfully removed from the view.\n */\n removeColumn(fieldId: string) {\n // Check if column exists, delete it and show warnings if not exists.\n const existingColumn = this.columns?.find(c => c.field.id === fieldId);\n if (existingColumn) {\n this.columns = this.columns?.filter(c => c.field.id !== fieldId);\n return true;\n }\n // eslint-disable-next-line no-console\n console.warn(`Column with id ${fieldId} not found.`);\n\n return false;\n }\n\n /**\n * Return the rendering engine props of a given column\n * @param id The {@link Column.field.id id} of the column for which rendering engine props are required.\n * @returns\n */\n getRenderingEnginePropsById(id: string) {\n const column = this.columns?.find(c => c.field.id === id);\n return column?.getRenderingEngineProps();\n }\n\n /**\n * Returns the row density id for a given {@link rowHeightClass}.\n * @returns\n */\n getRowDensity(): string {\n return Object.values(rowDensityClasses).find(obj => obj.className === this.rowHeightClass)!.id;\n }\n\n /** Returns the current view context. While building a RS view,\n * pass getContext to the consumers of RS to access the view related information.\n *\n * @public\n * */\n getContext(): ViewContext {\n return {\n getMeta: () => this.meta,\n getState: () => this.state,\n getColumns: () => this.columns,\n getRenderingEnginePropsById: this.getRenderingEnginePropsById,\n selectedRecordsCount: this.selectedRecordsCount,\n resultsCount: this.resultsCount,\n getRequiredDef: () => this.requiredDef,\n getRowDensity: this.getRowDensity\n };\n }\n\n /**\n * It returns the formatter function available for a given formatterName from {@link RsProps.formatters formatters} passed to RS Core.\n * @param formatterName\n * @returns\n */\n getFormatterByKey(formatterName: string): FormatterFunction | undefined {\n return this.formatters?.[formatterName];\n }\n\n /**\n * This sets the parent dom container in RS core. RS Core utilizes this dom container for DOM related features.\n * Set this as part of initialization of Repeating structures.\n *\n * Refer `Initialization section` in [README.md](../../../README.md)\n * @param n - the parent container of the whole Repeating structures.\n */\n setDomContainer(n: HTMLElement): void {\n this.domContainer = n;\n }\n\n /**\n * This sets the the header element in RS core. RS Core utilizes this header element for DOM related features e.g. animation.\n * Pass Html header element of the repeating structures to this method as part of initialization of Repeating structures.\n *\n * Refer `Initialization section` in [README.md](../../../README.md)\n * @param n The header element\n */\n setItemElement(n: HTMLElement): void {\n this.itemElement = n;\n }\n\n /**\n * This sets the scroller element(the element used in virtualizer as a scrollable area, e.g. a buffer container) of repeating structures into RS core. RS Core utilizes this scroller element for scrolling related features.\n * Pass Html scrollable area element of the repeating structures to this method as part of initialization of Repeating structures.\n * @param n The scroller element\n */\n setScrollNode(n: HTMLElement): void {\n this.scrollerNode = n;\n }\n\n /**\n * This sets the virtualizer instance in the RS core.\n * @param name unique id of the virtualizer\n * @param element the instance of the virtualizer\n */\n putVirtualizeElement(\n name: string,\n virtualizerInstance: VirtualizeElement[keyof VirtualizeElement[number]]\n ) {\n this.virtualizeElements[name] = virtualizerInstance;\n }\n\n /**\n * Returns the parent dom container HTML element.\n * @returns\n */\n getDomContainer() {\n return this.domContainer;\n }\n\n /**\n * Returns the scroller element(the element used in virtualizer as a scrollable area.)\n * @returns\n */\n getScrollNode() {\n return this.scrollerNode;\n }\n\n /**\n * Returns the header row of the Repeating structures view.\n * @returns\n */\n getItemElement() {\n return this.itemElement;\n }\n\n /**\n * Indicates if the given {@link feature} should be displayed on the Repeating structures UI or not.\n * This flag can be derived for a given {@link column} too apart from the whole view.\n * This flag is just to hide the user interaction items from the UI for the respective features. It will not stop running the respective features.\n * @param feature The feature name\n * @param column an optional column parameter if you want to check if the feature is available for the given column.\n * @returns boolean\n */\n shouldDisplayFeature(feature: 'filter' | 'sort' | 'grouping', column?: Column): boolean {\n const viewDisplayFeatureFlag = this.meta?.displayFeatures![feature];\n return !!(column ? !!column.field[feature] && viewDisplayFeatureFlag : viewDisplayFeatureFlag);\n }\n\n /**\n * Returns virtualizer instance for a given virtualizer name.\n * @param name unique id of the virtualizer\n */\n getVirtualizeElement(\n name: string\n ): VirtualizeElement[keyof VirtualizeElement[number]] | undefined {\n return this.virtualizeElements[name];\n }\n\n /**\n * It triggers the autosize of columns.\n * @param reset An optional flag to reset the column widths to its default configured width.\n */\n applyColumnsAutoSize(reset = true) {\n this.#dispatch(actions.actionColumnsAutoSize(this.columns!, this.getDomContainer()!, reset));\n }\n\n /** Returns value of unique key to identify the single selected row */\n getSingleSelectionRowKey() {\n return this.#singleSelectionRowKey;\n }\n\n /** Sets the value of unique key to identify the single selected row */\n setSingleSelectionRowKey(key: string) {\n this.#singleSelectionRowKey = key;\n }\n\n /**\n * Returns the array of visible columns.\n * @function getVisibleColumns\n * @param includeActionColumns include action columns. Default value is false.\n * @returns array of visible columns with/without including action columns(rowSelect, rowDragDrop and rowActionColumn).\n */\n getVisibleColumns(includeActionColumns = false) {\n const actionColumns = [\n rowSelectColumnMeta.field.id,\n rowDragDropColumnMeta.field.id,\n rowActionColumnMeta.field.id\n ];\n return (\n this.columns?.filter(\n column =>\n !column.hidden && (includeActionColumns || !actionColumns.includes(column.field.id))\n ) ?? []\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ViewGenerator.js","sourceRoot":"","sources":["../../../../src/core/generators/ViewGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { navigatorIsAvailable, type OmitStrict } from '@pega/cosmos-react-core';\n\nimport { FieldType, type FieldDef, type Meta } from '../../../types/Meta.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../types/State.types';\nimport {\n defaultPresetIdIndex,\n rowDensityClasses,\n rowSelectColumnMeta,\n rowActionColumnMeta,\n rowDragDropColumnMeta,\n SELECTION_MODES,\n TEMPLATES\n} from '../constants';\nimport * as actions from '../actions/actions';\nimport { getExternalStateKeys, normalizeFieldDef } from '../utils/util';\nimport defaultConfig from '../config/config';\nimport type RsStore from '../RsStore';\nimport type RsInternal from '../RsInternal';\nimport type RsProps from '../RsProps';\nimport type StateResolver from '../StateResolver';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type ActionTypes from '../actions/actionConstants';\n\nimport type { UtilityFunctions } from './viewUtilityMethods';\nimport Column from './ColumnGenerator';\nimport type Row from './RowGenerator';\nimport type {\n ConfirmationActionDetails,\n DebugInfo,\n FormatterFunction,\n FreezeLine,\n RefreshNotification,\n RequiredDefinition,\n UIProps,\n ViewConfig,\n ViewContext,\n ViewState,\n VirtualizeElement,\n WarningDetail\n} from './ViewGenerator.types';\nimport type { RowData } from './RowGenerator.types';\nimport type { ColumnConfig } from './ColumnGenerator.types';\nimport type GroupGenerator from './GroupGenerator';\n\n/** Module-level Set of action column IDs for O(1) membership checks. */\nconst ACTION_COLUMN_IDS = new Set([\n rowSelectColumnMeta.field.id,\n rowDragDropColumnMeta.field.id,\n rowActionColumnMeta.field.id\n]);\n\n/** A view model blueprint that represents the whole view of a repeating structure component. */\nexport default class View {\n /** A dispatcher function to dispatch actions to RsCore. */\n #dispatch: StateResolver['dispatch'];\n /** Rs store object */\n #rsStore: RsStore;\n /** Unique id for the current view */\n #viewID: string;\n /** Rs internal object reference. */\n #rsInternal: RsInternal;\n /** used to pass the latest view to rsInternal. */\n #updateView!: RsInternal['updateView'];\n /** Value of unique key to identify the single selected row. */\n #singleSelectionRowKey?: string;\n /** Render factory reference from {@link RsProps} */\n renderFactory: RsProps['renderFactory'];\n /** A unique id to identify the current repeating structure. */\n rsID: string;\n /** Current data for the view. */\n data?: RowData[];\n /** Current visible {@link Column columns} for the view. */\n columns?: Column[];\n /** Current {@link Row rows} for the view. */\n rows?: Row[];\n /** Current group headers for the view. */\n groupHeaders?: GroupGenerator[];\n /** Indicates the visible records count for the current view after applying any type of filter operation. */\n resultsCount?: number;\n /** Indicates whether to show the overall count on view or not. */\n showCount?: boolean;\n /** Indicates if the view has more records. */\n hasMoreResults?: boolean;\n /** Indicates the total record count of the view including group headers.\n */\n totalItemCount?: number;\n /** Indicates the total selected records count. */\n selectedRecordsCount?: number;\n /** Indicates the total height of the view. */\n viewHeight?: number;\n /** Indicates the current height of the container that contains data records like rows. */\n bodyHeight?: number | string;\n /** Indicates max height of the current parent container. */\n bodyMaxHeight?: number;\n /** Indicates the current height of each data row. It does not include group header row. */\n rowHeight?: number;\n /** Indicates the class name of the current selected row density. */\n rowHeightClass?: string;\n /** Indicates if the filter is applied for the current view. */\n isFilterApplied?: boolean;\n /** Indicates if the view is in loading state and not ready. It is used to show loaders in case of api calls. */\n isLoading?: boolean;\n /** Styles for the freeze line to be shown when freezing is applied. */\n freezeLine?: FreezeLine;\n /** Meta of the repeating structures. */\n meta: Meta;\n /** A list of customised the toolbar actions to be displayed at the top of a repeating structure, apart from ootb toolbar actions. */\n toolBarOptions?: RsProps['toolBarOptions'];\n /** An object of formatter functions which formats the raw value. */\n formatters?: RsProps['formatters'];\n /** A collection of style formats that can be applied for styling the data. */\n styleFormats?: RsProps['styleFormats'];\n /** A map of formatters that will be displayed to consumer to format a fieldDef in repeating structure. */\n renderFormatterTypeMap?: RsProps['renderFormatterTypeMap'];\n /** Reference to the top level Html element of repeating structures. */\n domContainer?: HTMLElement;\n /** Reference to the scroller element of repeating structures */\n scrollerNode?: HTMLElement;\n /** Reference to the header element of repeating structures. */\n itemElement?: HTMLElement;\n /** Reference to the virtualizer instance of the repeating structures. */\n virtualizeElements: VirtualizeElement;\n /** Indicates if hierarchical grouping is enabled. */\n hierarchicalGroupEnabled?: boolean;\n /** The details of the confirmation action modal triggered from consumer of repeating structures. */\n confirmationActionDetails?: ConfirmationActionDetails;\n /** Indicates if a count update is required. E.g. after applying filter a reset of count is required. */\n isCountUpdateRequired?: boolean;\n /** Indicates if count is generated internally. Used for RS core internal purpose. */\n countGeneratedInternally?: boolean;\n /** The state shared with the view after completion of one render cycle. */\n state: ViewState;\n /** The details of the debug information shared by the consumer of repeating structures.\n * It is displayed as one of the toolbar actions to debug the {@link ApiContext api context methods} latency. */\n debugInfo?: DebugInfo[];\n /** The definition of a required view. It has a boolean flag to indicate if the current repeating structures view\n * is required and a validation message to be displayed in case of required validation failure.\n * This definition is passed by consumer of repeating structures. */\n requiredDef?: RequiredDefinition;\n /** A set of {@link State.externalState external state} valid keys derived from meta.\n * E.g. value of {@link Meta.externalFilters external filters in meta} is a valid external state key. */\n externalStateKeys?: string[];\n /** Stores all the view related utility functions */\n type!: UtilityFunctions;\n /** Indicates if the current view object is generated via instantRender. */\n isInstantRender?: boolean;\n /** Config to show refreshNotification. This will be set upon receiving {@link ActionTypes.NOTIFY_DATA_REFRESH NOTIFY_DATA_REFRESH} action. */\n refreshNotification?: RefreshNotification;\n\n /**\n Overrides the default count announcement behavior for screen readers.\n * true: Always announce the row count, including on first render.\n * false: Never announce the row count.\n * undefined: Use default behavior (skip first count announcement, announce on subsequent count updates).\n */\n announceCount?: boolean;\n /** Indicates if global search is enabled.\n * If a view does not contain any visible columns which are searchable, then this will be false.\n * @default true\n */\n enableGlobalSearch: boolean;\n /** Array of warning details from API responses to display at top of table */\n warningMessages?: WarningDetail[];\n /**\n * The Table ↔ Gallery toggle is only surfaced on small screens, and only when the authored template (`meta.template`) is Table\n * Currently active template for the view. Defaults to `meta.template` but can be\n * overridden at runtime (e.g. when the user toggles between Table and Gallery).\n *\n * Renderers and toolbar code should read this property — not `meta.template` — so\n * that runtime template switches take effect without altering the persisted preset.\n */\n template?: Meta['template'];\n /**\n * Creates a view instance that represents the whole view of repeating structures.\n * It has properties like rows, columns, data to build a repeating structures view.\n * @param options An options object to create a view instance. If passed the view is created with this set of options.\n * @param rsInternal The {@link RsInternal} object.\n */\n constructor(config: ViewConfig, rsInternal: RsInternal) {\n const {\n data,\n columns,\n rows = [],\n groupHeaders,\n resultsCount,\n hasMoreResults,\n totalItemCount,\n showCount,\n viewHeight,\n selectedRecordsCount,\n bodyHeight,\n bodyMaxHeight,\n rowHeight,\n rowHeightClass,\n isFilterApplied,\n isLoading,\n freezeLine,\n state,\n domContainer,\n scrollerNode,\n meta,\n itemElement,\n virtualizeElements,\n debugInfo = [] as DebugInfo[],\n requiredDef,\n hierarchicalGroupEnabled,\n singleSelectionRowKey,\n confirmationActionDetails,\n externalStateKeys,\n isCountUpdateRequired,\n countGeneratedInternally,\n isInstantRender,\n refreshNotification,\n announceCount,\n enableGlobalSearch,\n warningMessages,\n template\n } = config;\n const { getRsStore, getRsProps, getRsStateResolver } = rsInternal;\n this.#rsInternal = rsInternal;\n this.#rsStore = getRsStore();\n const rsProps = getRsProps();\n const rsStateResolver = getRsStateResolver();\n\n this.#dispatch = rsStateResolver.dispatch;\n this.#viewID = crypto.randomUUID();\n\n // TODO: temporary solution until renderFactory is moved out of core library\n this.renderFactory = rsProps.renderFactory;\n this.rsID = rsInternal.getRsID();\n\n this.data = data;\n this.columns = columns!;\n this.rows = rows;\n this.groupHeaders = groupHeaders;\n this.resultsCount = resultsCount;\n this.hasMoreResults = hasMoreResults;\n this.showCount = meta.showCount ? showCount : false;\n this.totalItemCount = totalItemCount;\n this.selectedRecordsCount = selectedRecordsCount;\n this.viewHeight = viewHeight;\n this.bodyHeight = bodyHeight;\n this.bodyMaxHeight = bodyMaxHeight;\n this.rowHeight = rowHeight;\n this.rowHeightClass = rowHeightClass;\n this.isFilterApplied = isFilterApplied;\n this.isLoading = isLoading;\n this.freezeLine = freezeLine;\n this.meta = meta;\n this.toolBarOptions = rsProps.toolBarOptions;\n this.formatters = rsProps.formatters;\n this.styleFormats = rsProps.styleFormats;\n this.renderFormatterTypeMap = rsProps.renderFormatterTypeMap;\n this.#singleSelectionRowKey = singleSelectionRowKey;\n\n this.domContainer = domContainer;\n this.scrollerNode = scrollerNode;\n this.itemElement = itemElement;\n this.virtualizeElements = virtualizeElements || {};\n this.hierarchicalGroupEnabled = hierarchicalGroupEnabled;\n this.confirmationActionDetails = {\n ...confirmationActionDetails!,\n showConfirmationAction: state?.showConfirmationAction!\n };\n this.isCountUpdateRequired = isCountUpdateRequired;\n this.countGeneratedInternally = countGeneratedInternally;\n this.debugInfo = debugInfo;\n this.requiredDef = requiredDef;\n this.externalStateKeys = externalStateKeys || getExternalStateKeys(this.meta);\n this.isInstantRender = isInstantRender;\n this.refreshNotification = refreshNotification;\n this.announceCount = announceCount;\n this.enableGlobalSearch = enableGlobalSearch ?? true;\n this.warningMessages = warningMessages;\n this.template = template ?? meta.template;\n // FIXME: keep the state on view in sync with the emitted stated from StateResolver\n this.state = {\n searchText: state?.search?.query || '',\n galleryLayout: state?.galleryLayout,\n personalization: state?.personalization,\n filterExpression: state?.filterExpression,\n clearColFilter: state?.clearColFilter,\n sortingOrder: state?.sortingOrder,\n groups: state?.groups,\n allGroupsExpanded: state?.allGroupsExpanded,\n groupToggle: state?.groupToggle,\n showHeaderIcons: state?.showHeaderIcons,\n colOrder: state?.colOrder,\n hiddenColumns: state?.hiddenColumns,\n visibleColumns: state?.visibleColumns,\n freezeColumns: state?.freezeColumns,\n columnWidths: state?.columnWidths,\n customFields: state?.customFields,\n selectedHeightOption: state?.selectedHeightOption,\n paginationOptions: state?.paginationOptions,\n notifications: state?.notifications,\n rowSelectionChangeSet: state?.rowSelectionChangeSet,\n selectedRows: state?.selectedRows,\n bootstrap: state?.bootstrap,\n refresh: state?.refresh,\n externalState: state?.externalState,\n columnAlias: state?.columnAlias,\n aggregationInfo: state?.aggregationInfo,\n errors: state?.errors,\n responsive: state?.responsive, // stores the responsive behavior of DOM container w.r.t. various breakpoints.\n conditionalStyleFormats: state?.conditionalStyleFormats\n };\n\n /** IMP: For generator methods use traditional function syntax\n * rather than arrow function for memory efficiency\n * and bind 'this' to the methods which requires 'this' context. */\n this.getRenderingEnginePropsById = this.getRenderingEnginePropsById.bind(this);\n this.getFormatterByKey = this.getFormatterByKey.bind(this);\n this.getContext = this.getContext.bind(this);\n this.setProp = this.setProp.bind(this);\n this.addColumnAtIndex = this.addColumnAtIndex.bind(this);\n this.getRowDensity = this.getRowDensity.bind(this);\n this.setDomContainer = this.setDomContainer.bind(this);\n this.setItemElement = this.setItemElement.bind(this);\n this.shouldDisplayFeature = this.shouldDisplayFeature.bind(this);\n this.setScrollNode = this.setScrollNode.bind(this);\n this.putVirtualizeElement = this.putVirtualizeElement.bind(this);\n this.getDomContainer = this.getDomContainer.bind(this);\n this.getItemElement = this.getItemElement.bind(this);\n this.getScrollNode = this.getScrollNode.bind(this);\n this.getVirtualizeElement = this.getVirtualizeElement.bind(this);\n this.applyColumnsAutoSize = this.applyColumnsAutoSize.bind(this);\n this.addColumn = this.addColumn.bind(this);\n this.getUIProps = this.getUIProps.bind(this);\n this.getVisibleColumns = this.getVisibleColumns.bind(this);\n }\n\n // Used by setProp for mutation\n /**\n * Retruns the View properties that is used by setProp while creating new view.\n */\n #get(): ViewConfig & Pick<RsProps, 'toolBarOptions' | 'formatters' | 'renderFormatterTypeMap'> {\n return {\n data: this.data,\n singleSelectionRowKey: this.#singleSelectionRowKey,\n columns: this.columns,\n rows: this.rows,\n groupHeaders: this.groupHeaders,\n resultsCount: this.resultsCount,\n showCount: this.showCount,\n hasMoreResults: this.hasMoreResults,\n totalItemCount: this.totalItemCount,\n selectedRecordsCount: this.selectedRecordsCount,\n viewHeight: this.viewHeight,\n bodyHeight: this.bodyHeight,\n bodyMaxHeight: this.bodyMaxHeight,\n rowHeight: this.rowHeight,\n rowHeightClass: this.rowHeightClass,\n isFilterApplied: this.isFilterApplied,\n isLoading: this.isLoading,\n freezeLine: this.freezeLine,\n meta: this.meta,\n toolBarOptions: this.toolBarOptions,\n formatters: this.formatters,\n renderFormatterTypeMap: this.renderFormatterTypeMap,\n state: this.state,\n domContainer: this.domContainer,\n scrollerNode: this.scrollerNode,\n itemElement: this.itemElement,\n virtualizeElements: this.virtualizeElements,\n debugInfo: this.debugInfo,\n requiredDef: this.requiredDef,\n hierarchicalGroupEnabled: this.hierarchicalGroupEnabled,\n confirmationActionDetails: this.confirmationActionDetails,\n externalStateKeys: this.externalStateKeys,\n isCountUpdateRequired: this.isCountUpdateRequired,\n countGeneratedInternally: this.countGeneratedInternally,\n isInstantRender: this.isInstantRender,\n refreshNotification: this.refreshNotification,\n announceCount: this.announceCount,\n enableGlobalSearch: this.enableGlobalSearch,\n warningMessages: this.warningMessages,\n template: this.template\n };\n }\n\n /** Returns the warning messages array */\n getWarningMessages(): ViewConfig['warningMessages'] {\n return this.warningMessages;\n }\n\n /**\n * Attach utility functions of view to {@link type} property.\n * @param functions\n * @returns void\n */\n addUtilityFunctions(functions: UtilityFunctions) {\n this.type = functions;\n }\n\n /**\n * Sets the {@link updateView} callback function.\n * @param updateViewCallback\n * @returns void\n */\n setViewUpdateCallback(updateViewCallback: RsInternal['updateView']) {\n this.#updateView = updateViewCallback;\n }\n\n // TODO: evaluate if comparing old/new before setProp helps\n /**\n * This is used to create immutable objects of {@link View} instance. Always call setProp if updating any properties of View to make it immutable.\n * @param prop Either partial of {@link ViewConfig} or individual properties of {@link ViewConfig}.\n * @param value An optional parameter to provide value for {@link prop} in case prop is not of type {@link ViewConfig}\n */\n setProp(prop: Partial<ViewConfig> | keyof ViewConfig, value?: ViewConfig[keyof ViewConfig]) {\n const { getView } = this.#rsInternal;\n if (getView().#viewID !== this.#viewID) {\n // eslint-disable-next-line no-console\n console.warn('Doing setProp on a stale view. This might cause bugs.');\n }\n const pObject = typeof prop === 'object' ? prop : { [prop]: value };\n\n const clonedView = new View({ ...this.#get(), ...(pObject as ViewConfig) }, this.#rsInternal);\n\n if (!Object.hasOwn(pObject, 'state')) {\n clonedView.state = this.state;\n }\n\n this.#updateView(clonedView);\n\n return clonedView;\n }\n\n // FIXME: add tranlsations back\n /**\n * Returns the ui props for the {@link View} used for accessibility.\n */\n getUIProps(): UIProps {\n const activeView = this.state.personalization?.active!;\n const personalizations = this.state.personalization?.allPersonalizations;\n let ariaLabel =\n personalizations && Object.keys(personalizations).length > 1\n ? `${this.meta.title}: ${personalizations[activeView]?.name}`\n : this.meta.title!;\n\n ariaLabel += this.requiredDef?.validatemessage\n ? ` ${this.#rsStore.translate('Error')} ${this.requiredDef.validatemessage}`\n : '';\n\n if (this.requiredDef?.required ?? this.meta?.requiredOnLoad) {\n ariaLabel += ` ${this.#rsStore.translate('required')}`;\n }\n\n const isMacOs =\n navigatorIsAvailable && navigator.userAgent.match(/(Windows|Macintosh)/)?.[0] === 'Macintosh';\n\n const navigationHelpKey = `${isMacOs ? 'Command' : 'Control'} /`;\n return {\n role: 'grid',\n 'aria-rowcount': (this.totalItemCount ?? 0) + 1, // include header row as well in total row count announcement\n 'aria-colcount': this.getVisibleColumns(true).length, // include action columns as well for total column count announcement\n 'aria-label': this.#rsStore.translate('view_navigation_instructions', [\n ariaLabel,\n navigationHelpKey\n ])\n };\n }\n\n /** Returns the default(preset at 0th index in {@link RsStore.presets presets} array) preset id. */\n get defaultPresetId(): string | undefined {\n return this.#rsStore.presets?.[defaultPresetIdIndex].id;\n }\n\n /** Indicates if the view is ready.(means the RS component is mounted). */\n get isReady() {\n return this.state.bootstrap;\n }\n\n get galleryLayout() {\n return this.state?.galleryLayout;\n }\n\n /** Indicates if {@link Meta.selectionMode selection mode} is ON */\n get isInSelectionMode(): boolean {\n return !!(this.meta?.selectionMode && SELECTION_MODES[this.meta.selectionMode]);\n }\n\n /** Indicates if the Group Expand all functionality should be shown on UI. */\n get showGroupingExpandCollapseAll(): boolean {\n return !!this.#rsStore.groupingInfo?.length;\n }\n\n /** A set of props that can be used to configure Group Expand all Header cell. */\n get groupingHeaderCellProps() {\n if (!this.showGroupingExpandCollapseAll) return {};\n return {\n isExpanded: this.state.allGroupsExpanded,\n handleChange: (isExpanded: boolean): void =>\n this.#dispatch(actions.actionGroupingExpandCollapseAll(isExpanded)),\n enable: this.showGroupingExpandCollapseAll\n };\n }\n\n /** Indicates if there are no records in the view. */\n get hasNoRecords() {\n return !Number.isNaN(this.resultsCount) && this.resultsCount === 0;\n }\n\n /** Indicates if there are any frozen columns in the view. */\n get hasNoFrozenColumns() {\n return (this.columns?.filter(c => c.frozen && !c.hidden).length ?? 0) === 0;\n }\n\n /** Indicates to hide the freeze line if selection column is the only frozen column in the view. */\n get bHideFreezeLine() {\n const frozenColumns = this.columns?.filter(col => col.frozen && !col.hidden) ?? [];\n return frozenColumns.length === 1 && frozenColumns[0].field.id === rowSelectColumnMeta.field.id;\n }\n\n /** Return the predefined CSS classes for a view. */\n get className(): string {\n if (this.template !== TEMPLATES.TABLE) return '';\n // if every visible column has a width defined in field def, no need to hide the columns and wait for width calculation\n if (this.getVisibleColumns().every(col => !!col?.field?.width)) return '';\n if (!this.#rsStore.columnSizingTriggerdOnRowsAvailable) return 'hide-rows-till-ready';\n return '';\n }\n\n /**\n * Adds a column to the {@link columns Columns} of the view\n * @param field The {@link Column.field field} for the column.\n * @param option Extra options.\n * @returns the new column or existing column if it already exists.\n */\n addColumn(field: Column['field'], option: OmitStrict<ColumnConfig, 'field'>): Column {\n // Check if any column with new field exists, don't add it and show warnings.\n const existingColumn = this.columns?.find(c => c.field.id === field.id);\n\n if (!existingColumn) {\n normalizeFieldDef(field, defaultConfig.defaultFieldDef);\n const column = new Column({ field, ...option }, this.#rsInternal);\n\n // Do not include action fields in fieldDefsMap to avoid showing them in actions menu.\n if (!(field.type === FieldType.ACTION_FIELD_TYPE)) {\n this.#rsStore.fieldDefsMap.set(field.id, field);\n }\n\n const cloned = [...(this.columns ?? [])];\n cloned.push(column);\n this.columns = cloned;\n return column;\n }\n return existingColumn;\n }\n\n /**\n * Adds a column at a specified index in the {@link columns Columns} of the view.\n * @param field The {@link Column.field field} for the column.\n * @param option Extra options.\n * @param index The index at which the column needs to be inserted in the {@link columns Columns} array of view.\n * @returns void\n */\n addColumnAtIndex(\n field: Column['field'],\n option: OmitStrict<ColumnConfig, 'field'>,\n index: number\n ): Column {\n // Check if any column with new field exists, don't add it and show warnings.\n const existingColumn = this.columns?.find(col => col.field.id === field.id);\n if (!existingColumn) {\n // Full blow the meta\n normalizeFieldDef(field, defaultConfig.defaultFieldDef);\n const column = new Column({ field, ...option }, this.#rsInternal);\n\n const cloned = [...(this.columns ?? [])];\n cloned.splice(index, 0, column);\n this.columns = cloned;\n return column;\n }\n return existingColumn;\n }\n\n /**\n * Remove a column from the {@link columns Columns} array of the view.\n * @param fieldId The {@link Column.field.id fieldId} of the column to be removed.\n * @returns boolean - Indicates if the column is successfully removed from the view.\n */\n removeColumn(fieldId: string) {\n // Check if column exists, delete it and show warnings if not exists.\n const existingColumn = this.columns?.find(c => c.field.id === fieldId);\n if (existingColumn) {\n this.columns = this.columns?.filter(c => c.field.id !== fieldId);\n this.#rsStore.fieldDefsMap.delete(fieldId);\n this.meta.fieldDefs = this.meta.fieldDefs.filter(fd => fd.id !== fieldId);\n return true;\n }\n // eslint-disable-next-line no-console\n console.warn(`Column with id ${fieldId} not found.`);\n\n return false;\n }\n\n /**\n * Return the rendering engine props of a given column\n * @param id The {@link Column.field.id id} of the column for which rendering engine props are required.\n */\n getRenderingEnginePropsById(id: string) {\n const column = this.columns?.find(c => c.field.id === id);\n return column?.getRenderingEngineProps();\n }\n\n /**\n * Returns the row density id for a given {@link rowHeightClass}.\n */\n getRowDensity(): string {\n return Object.values(rowDensityClasses).find(obj => obj.className === this.rowHeightClass)!.id;\n }\n\n /** Returns the current view context. While building a RS view,\n * pass getContext to the consumers of RS to access the view related information.\n *\n * @public\n * */\n getContext(): ViewContext {\n return {\n getMeta: () => this.meta,\n getState: () => this.state,\n getColumns: () => this.columns,\n getRenderingEnginePropsById: this.getRenderingEnginePropsById,\n selectedRecordsCount: this.selectedRecordsCount,\n resultsCount: this.resultsCount,\n hasMoreResults: this.hasMoreResults,\n getRequiredDef: () => this.requiredDef,\n getRowDensity: this.getRowDensity,\n getVisibleColumns: this.getVisibleColumns\n };\n }\n\n /**\n * It returns the formatter function available for a given formatterName from {@link RsProps.formatters formatters} passed to RS Core.\n * @param formatterName\n */\n getFormatterByKey(formatterName: string): FormatterFunction | undefined {\n return this.formatters?.[formatterName];\n }\n\n /**\n * This sets the parent dom container in RS core. RS Core utilizes this dom container for DOM related features.\n * Set this as part of initialization of Repeating structures.\n *\n * Refer `Initialization section` in [README.md](../../../README.md)\n * @param n - the parent container of the whole Repeating structures.\n */\n setDomContainer(n: HTMLElement): void {\n this.domContainer = n;\n }\n\n /**\n * This sets the the header element in RS core. RS Core utilizes this header element for DOM related features e.g. animation.\n * Pass Html header element of the repeating structures to this method as part of initialization of Repeating structures.\n *\n * Refer `Initialization section` in [README.md](../../../README.md)\n * @param n The header element\n */\n setItemElement(n: HTMLElement): void {\n this.itemElement = n;\n }\n\n /**\n * This sets the scroller element(the element used in virtualizer as a scrollable area, e.g. a buffer container) of repeating structures into RS core. RS Core utilizes this scroller element for scrolling related features.\n * Pass Html scrollable area element of the repeating structures to this method as part of initialization of Repeating structures.\n * @param n The scroller element\n */\n setScrollNode(n: HTMLElement): void {\n this.scrollerNode = n;\n }\n\n /**\n * This sets the virtualizer instance in the RS core.\n * @param name unique id of the virtualizer\n * @param element the instance of the virtualizer\n */\n putVirtualizeElement(\n name: string,\n virtualizerInstance: VirtualizeElement[keyof VirtualizeElement[number]]\n ) {\n this.virtualizeElements[name] = virtualizerInstance;\n }\n\n /**\n * @returns The parent dom container HTML element.\n */\n getDomContainer() {\n return this.domContainer;\n }\n\n /**\n * @returns The scroller element(the element used in virtualizer as a scrollable area.)\n */\n getScrollNode() {\n return this.scrollerNode;\n }\n\n /**\n * @returns Returns the header row of the Repeating structures view.\n */\n getItemElement() {\n return this.itemElement;\n }\n\n /**\n * Indicates if the given {@link feature} should be displayed on the Repeating structures UI or not.\n * This flag can be derived for a given {@link column} too apart from the whole view.\n * This flag is just to hide the user interaction items from the UI for the respective features. It will not stop running the respective features.\n * @param feature The feature name\n * @param column an optional column parameter if you want to check if the feature is available for the given column.\n */\n shouldDisplayFeature(feature: 'filter' | 'sort' | 'grouping', column?: Column): boolean {\n const viewDisplayFeatureFlag = this.meta?.displayFeatures![feature];\n return !!(column ? !!column.field[feature] && viewDisplayFeatureFlag : viewDisplayFeatureFlag);\n }\n\n /**\n * Returns virtualizer instance for a given virtualizer name.\n * @param name unique id of the virtualizer\n */\n getVirtualizeElement(\n name: string\n ): VirtualizeElement[keyof VirtualizeElement[number]] | undefined {\n return this.virtualizeElements[name];\n }\n\n /**\n * It triggers the autosize of columns.\n * @param reset An optional flag to reset the column widths to its default configured width.\n */\n applyColumnsAutoSize(reset = true) {\n this.#dispatch(actions.actionColumnsAutoSize(this.columns!, this.getDomContainer()!, reset));\n }\n\n /** Returns value of unique key to identify the single selected row */\n getSingleSelectionRowKey() {\n return this.#singleSelectionRowKey;\n }\n\n /** Sets the value of unique key to identify the single selected row */\n setSingleSelectionRowKey(key: string) {\n this.#singleSelectionRowKey = key;\n }\n\n /**\n * Returns the array of visible columns.\n * @param includeActionColumns - include action columns (rowSelect, rowDragDrop, rowActionColumn). Default is `false`.\n * @returns array of visible columns with/without action columns.\n */\n getVisibleColumns(includeActionColumns = false) {\n const visibleIds = new Set(this.state.visibleColumns);\n return (\n this.columns?.filter(\n col =>\n visibleIds.has(col.field.id) &&\n (includeActionColumns || !ACTION_COLUMN_IDS.has(col.field.id))\n ) ?? []\n );\n }\n\n /**\n * Returns the array of visible column IDs.\n * @param includeActionColumns - include action column IDs (rowSelect, rowDragDrop, rowActionColumn). Default is `false`.\n * @returns array of visible column IDs with/without action columns.\n */\n getVisibleColumnIds(includeActionColumns = false): string[] {\n if (includeActionColumns) {\n return this.state.visibleColumns ?? [];\n }\n return this.state.visibleColumns?.filter(id => !ACTION_COLUMN_IDS.has(id)) ?? [];\n }\n\n /**\n * Returns the {@link FieldDef fieldDefs} from {@link meta} for the current view.\n * This reflects the latest state of fieldDefs including any additions or removals made after initialization.\n * @returns array of {@link FieldDef fieldDefs} from {@link meta}.\n */\n getFieldDefs(): FieldDef[] {\n return this.meta.fieldDefs;\n }\n}\n"]}
|