@pega/lists-core 9.0.0-build.29.2 → 9.0.0-build.29.21
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 +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.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 +17 -0
- package/lib/src/core/RsInternal.js.map +1 -1
- package/lib/src/core/a11y/BaseA11y.d.ts.map +1 -1
- package/lib/src/core/a11y/BaseA11y.js +2 -1
- package/lib/src/core/a11y/BaseA11y.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 +16 -1
- package/lib/src/core/constants.js.map +1 -1
- package/lib/src/core/features/featureFactory.d.ts +5 -0
- package/lib/src/core/features/featureFactory.d.ts.map +1 -1
- package/lib/src/core/features/featureFactory.js +5 -3
- 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 +5 -2
- package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js +3 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +71 -33
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/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/animation.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.js +3 -2
- package/lib/src/core/features/uIFeatures/beforeRender/animation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +18 -15
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +6 -7
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts +13 -2
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js +88 -114
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.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.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +4 -3
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +2 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -1
- package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
- package/lib/src/core/generators/ViewGenerator.js +1 -1
- package/lib/src/core/generators/ViewGenerator.js.map +1 -1
- package/lib/src/core/reducers/personalizationReducer.d.ts +1 -1
- package/lib/src/core/test/junitMocks.d.ts +2 -0
- package/lib/src/core/test/junitMocks.d.ts.map +1 -1
- package/lib/src/core/test/junitMocks.js +4 -0
- package/lib/src/core/test/junitMocks.js.map +1 -1
- package/lib/src/core/utils/util.d.ts +24 -0
- package/lib/src/core/utils/util.d.ts.map +1 -1
- package/lib/src/core/utils/util.js +78 -4
- package/lib/src/core/utils/util.js.map +1 -1
- package/lib/types/ApiContext.types.d.ts +11 -2
- 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 +24 -2
- package/lib/types/Meta.types.d.ts.map +1 -1
- package/lib/types/Meta.types.js +4 -0
- package/lib/types/Meta.types.js.map +1 -1
- package/lib/types.d.ts +4 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { isRowActionFieldEnabled, isRowErrorFieldEnabled, isRowReorderFieldEnabled, isRowSelectFieldEnabled, withMemoization } from '../../../utils/util';
|
|
2
|
-
import {
|
|
3
|
-
import { rowActionColumnMeta, rowDragDropColumnMeta, rowErrorColumnMeta, rowSelectColumnMeta } from '../../../constants';
|
|
4
|
-
import defaultTranslations from '../../../defaultTranslations';
|
|
1
|
+
import { isRowActionFieldEnabled, isRowDeleteFieldEnabled, isRowDeleteFieldVisible, isRowErrorFieldEnabled, isRowReorderFieldEnabled, isRowSelectFieldEnabled, withMemoization, shouldCreateColumnForField, translateLabel } from '../../../utils/util';
|
|
2
|
+
import { rowActionColumnMeta, rowDeleteColumnMeta, rowDragDropColumnMeta, rowErrorColumnMeta, rowSelectColumnMeta } from '../../../constants';
|
|
5
3
|
import Column from '../../../generators/ColumnGenerator';
|
|
6
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Adds a column to the view at a frozen index.
|
|
6
|
+
* If the column's field ID is not in the frozen-columns list, it is also frozen at the given index.
|
|
7
|
+
*
|
|
8
|
+
* @param rsInternal - The internal RS object.
|
|
9
|
+
* @param field - The field definition for the column.
|
|
10
|
+
* @param options - Column config options (excluding `field`).
|
|
11
|
+
* @param index - The freeze index to apply.
|
|
12
|
+
*/
|
|
13
|
+
export const addFrozenColumnAtIndex = (rsInternal, field, options, index) => {
|
|
7
14
|
const { getView, getRsStateResolver } = rsInternal;
|
|
8
15
|
const { getState } = getRsStateResolver();
|
|
9
16
|
const addedColumn = getView().addColumn(
|
|
@@ -13,110 +20,56 @@ const addFrozenColumnAtIndex = (rsInternal, field, options, index) => {
|
|
|
13
20
|
addedColumn.applyFreezeAtIndex(index);
|
|
14
21
|
}
|
|
15
22
|
};
|
|
16
|
-
export const isTranslationKey = (key) => {
|
|
17
|
-
return key in defaultTranslations;
|
|
18
|
-
};
|
|
19
23
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* This happens when the field is required by the current template configuration
|
|
24
|
-
* (e.g., Timeline, Gallery, Map) or when it is marked as a row header.
|
|
24
|
+
* Adds all OOTB columns (error, drag-drop, select, action) to the view.
|
|
25
|
+
* Must be called after base columns have been committed via `setProp`.
|
|
25
26
|
*
|
|
26
|
-
*
|
|
27
|
+
* @param rsInternal - The internal RS object used to access the view and store.
|
|
27
28
|
*/
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
return true;
|
|
31
|
-
if (fieldDef.filterPickList)
|
|
32
|
-
return true;
|
|
33
|
-
const template = meta.template;
|
|
34
|
-
if (template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE) {
|
|
35
|
-
const { timelineFields = {} } = meta;
|
|
36
|
-
const referenceNames = [
|
|
37
|
-
timelineFields.title?.name,
|
|
38
|
-
timelineFields.date?.name,
|
|
39
|
-
timelineFields.content?.name,
|
|
40
|
-
timelineFields.status?.name,
|
|
41
|
-
timelineFields.icon?.name
|
|
42
|
-
].filter(Boolean);
|
|
43
|
-
return referenceNames.includes(fieldDef.name);
|
|
44
|
-
}
|
|
45
|
-
if (template === REPEATING_STRUCTURE_TEMPLATES.GALLERY) {
|
|
46
|
-
const { galleryConfig = {} } = meta;
|
|
47
|
-
const referenceIds = [
|
|
48
|
-
galleryConfig.header?.field,
|
|
49
|
-
galleryConfig.heroImage?.source?.field
|
|
50
|
-
].filter(Boolean);
|
|
51
|
-
return referenceIds.includes(fieldDef.id);
|
|
52
|
-
}
|
|
53
|
-
if (template === REPEATING_STRUCTURE_TEMPLATES.MAP) {
|
|
54
|
-
const { mapFieldIds = {} } = meta;
|
|
55
|
-
const referenceIds = [mapFieldIds.location, mapFieldIds.label, mapFieldIds.content].filter(Boolean);
|
|
56
|
-
return referenceIds.includes(fieldDef.id);
|
|
57
|
-
}
|
|
58
|
-
return false;
|
|
59
|
-
};
|
|
60
|
-
const prepareOOTBColumns = ([rsInternal]) => {
|
|
61
|
-
const { getView } = rsInternal;
|
|
29
|
+
const prepareOOTBColumns = (rsInternal) => {
|
|
30
|
+
const meta = rsInternal.getView().meta;
|
|
62
31
|
const translate = rsInternal.getRsStore().translate;
|
|
63
|
-
let
|
|
64
|
-
// Add error column.
|
|
65
|
-
if (isRowErrorFieldEnabled(
|
|
66
|
-
addFrozenColumnAtIndex(rsInternal,
|
|
67
|
-
// Error column is added as a hidden column. Toggles based on state.errors.dataErrors
|
|
68
|
-
{
|
|
32
|
+
let ootbIndex = 0;
|
|
33
|
+
// Add error column (initially hidden; toggled by state.errors.dataErrors).
|
|
34
|
+
if (isRowErrorFieldEnabled(meta)) {
|
|
35
|
+
addFrozenColumnAtIndex(rsInternal, {
|
|
69
36
|
...rowErrorColumnMeta.field,
|
|
70
|
-
label:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}, rowErrorColumnMeta.options, ootColumnsIndex);
|
|
75
|
-
ootColumnsIndex += 1;
|
|
37
|
+
label: translateLabel(rowErrorColumnMeta.field.label, translate),
|
|
38
|
+
show: meta.rowErrorField?.show ?? false
|
|
39
|
+
}, rowErrorColumnMeta.options, ootbIndex);
|
|
40
|
+
ootbIndex += 1;
|
|
76
41
|
}
|
|
77
|
-
// Add row drag
|
|
78
|
-
if (isRowReorderFieldEnabled(
|
|
42
|
+
// Add row drag-drop column.
|
|
43
|
+
if (isRowReorderFieldEnabled(meta)) {
|
|
79
44
|
addFrozenColumnAtIndex(rsInternal, {
|
|
80
45
|
...rowDragDropColumnMeta.field,
|
|
81
|
-
label:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}, rowDragDropColumnMeta.options, ootColumnsIndex);
|
|
86
|
-
ootColumnsIndex += 1;
|
|
46
|
+
label: translateLabel(rowDragDropColumnMeta.field.label, translate),
|
|
47
|
+
show: meta.rowReorderField?.show ?? true
|
|
48
|
+
}, rowDragDropColumnMeta.options, ootbIndex);
|
|
49
|
+
ootbIndex += 1;
|
|
87
50
|
}
|
|
88
51
|
// Add selection column.
|
|
89
|
-
if (isRowSelectFieldEnabled(
|
|
52
|
+
if (isRowSelectFieldEnabled(meta)) {
|
|
90
53
|
addFrozenColumnAtIndex(rsInternal, {
|
|
91
54
|
...rowSelectColumnMeta.field,
|
|
92
|
-
label:
|
|
93
|
-
|
|
94
|
-
: rowSelectColumnMeta.field.label
|
|
95
|
-
}, rowSelectColumnMeta.options, ootColumnsIndex);
|
|
55
|
+
label: translateLabel(rowSelectColumnMeta.field.label, translate)
|
|
56
|
+
}, rowSelectColumnMeta.options, ootbIndex);
|
|
96
57
|
}
|
|
97
58
|
// Add row action column.
|
|
98
|
-
if (isRowActionFieldEnabled(
|
|
99
|
-
getView().addColumn({
|
|
59
|
+
if (isRowActionFieldEnabled(meta)) {
|
|
60
|
+
rsInternal.getView().addColumn({
|
|
100
61
|
...rowActionColumnMeta.field,
|
|
101
|
-
label:
|
|
102
|
-
? translate(rowActionColumnMeta.field.label)
|
|
103
|
-
: rowActionColumnMeta.field.label
|
|
62
|
+
label: translateLabel(rowActionColumnMeta.field.label, translate)
|
|
104
63
|
}, rowActionColumnMeta.options);
|
|
105
64
|
}
|
|
65
|
+
if (isRowDeleteFieldEnabled(meta)) {
|
|
66
|
+
rsInternal.getView().addColumn({
|
|
67
|
+
...rowDeleteColumnMeta.field,
|
|
68
|
+
label: translateLabel(rowDeleteColumnMeta.field.label, translate),
|
|
69
|
+
show: isRowDeleteFieldVisible(meta)
|
|
70
|
+
}, rowDeleteColumnMeta.options);
|
|
71
|
+
}
|
|
106
72
|
};
|
|
107
|
-
/**
|
|
108
|
-
* Prepares {@link Column columns} for the view on initial load.
|
|
109
|
-
* Creates columns only for {@link FieldDef fieldDefs} that are visible or row headers.
|
|
110
|
-
*
|
|
111
|
-
* @param rsInternal - The internal RS object used to access the view and store.
|
|
112
|
-
*/
|
|
113
|
-
function prepareColumns([rsInternal]) {
|
|
114
|
-
const { fieldDefs } = rsInternal.getView().meta;
|
|
115
|
-
const columns = fieldDefs
|
|
116
|
-
.filter(fieldDef => fieldDef.show || shouldCreateColumnForField(rsInternal.getView().meta, fieldDef))
|
|
117
|
-
.map(fieldDef => new Column({ field: fieldDef }, rsInternal));
|
|
118
|
-
rsInternal.getView().setProp({ columns });
|
|
119
|
-
}
|
|
120
73
|
/**
|
|
121
74
|
* Prepares newly visible, grouped, and custom-field-dependent {@link Column columns} for the view.
|
|
122
75
|
*
|
|
@@ -131,47 +84,68 @@ function prepareColumns([rsInternal]) {
|
|
|
131
84
|
*/
|
|
132
85
|
export function prepareNewlyVisibleAndReferredColumns([rsInternal, state]) {
|
|
133
86
|
const rsStore = rsInternal.getRsStore();
|
|
134
|
-
|
|
135
|
-
const
|
|
87
|
+
// Build the full set of required column IDs in a single pass over all state slices.
|
|
88
|
+
const requiredColumnIds = new Set(state.visibleColumns);
|
|
89
|
+
state.groups?.forEach(group => {
|
|
90
|
+
requiredColumnIds.add(group.columnId);
|
|
91
|
+
// Grouped columns are also created for group headers and labels.
|
|
92
|
+
group.additionalFields?.forEach(field => requiredColumnIds.add(field.id));
|
|
93
|
+
});
|
|
136
94
|
// Custom field expressions reference dependent column IDs as plain strings.
|
|
137
95
|
// These columns may be hidden but still need Column generators for rendering.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return;
|
|
152
|
-
const createdColumns = newlyAddedColumns.reduce((acc, columnId) => {
|
|
153
|
-
const fieldDef = rsStore.getFieldDefById(columnId);
|
|
154
|
-
if (fieldDef) {
|
|
155
|
-
acc.push(new Column({ field: fieldDef }, rsInternal));
|
|
96
|
+
state.customFields?.forEach(cf => {
|
|
97
|
+
cf.expression.forEach(e => {
|
|
98
|
+
if (typeof e === 'string')
|
|
99
|
+
requiredColumnIds.add(e);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
const existingColumnIds = new Set(rsInternal.getView().columns?.map(col => col.field.id) ?? []);
|
|
103
|
+
const createdColumns = [...requiredColumnIds].reduce((acc, columnId) => {
|
|
104
|
+
if (!existingColumnIds.has(columnId)) {
|
|
105
|
+
const fieldDef = rsStore.getFieldDefById(columnId);
|
|
106
|
+
if (fieldDef) {
|
|
107
|
+
acc.push(new Column({ field: fieldDef }, rsInternal));
|
|
108
|
+
}
|
|
156
109
|
}
|
|
157
110
|
return acc;
|
|
158
111
|
}, []);
|
|
112
|
+
if (!createdColumns.length)
|
|
113
|
+
return;
|
|
159
114
|
rsInternal.getView().setProp({
|
|
160
115
|
columns: [...(rsInternal.getView().columns ?? []), ...createdColumns]
|
|
161
116
|
});
|
|
162
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Prepares {@link Column columns} for the view on initial load.
|
|
120
|
+
* Creates columns from visible/required {@link FieldDef fieldDefs} in a single pass,
|
|
121
|
+
* then delegates OOTB column setup and newly-visible column setup to their respective helpers.
|
|
122
|
+
*
|
|
123
|
+
* @param rsInternal - The internal RS object used to access the view and store.
|
|
124
|
+
*/
|
|
125
|
+
function prepareColumns([rsInternal, state]) {
|
|
126
|
+
const meta = rsInternal.getView().meta;
|
|
127
|
+
// build columns for visible/required fieldDefs.
|
|
128
|
+
const columns = meta.fieldDefs.reduce((acc, fieldDef) => {
|
|
129
|
+
if (shouldCreateColumnForField(meta, fieldDef)) {
|
|
130
|
+
acc.push(new Column({ field: fieldDef }, rsInternal));
|
|
131
|
+
}
|
|
132
|
+
return acc;
|
|
133
|
+
}, []);
|
|
134
|
+
// Set base columns first so subsequent addColumn calls append to the correct view.
|
|
135
|
+
rsInternal.getView().setProp({ columns });
|
|
136
|
+
prepareOOTBColumns(rsInternal);
|
|
137
|
+
prepareNewlyVisibleAndReferredColumns([rsInternal, state]);
|
|
138
|
+
}
|
|
163
139
|
/**
|
|
164
140
|
* Prepares {@link View.columns columns} for the view from {@link Meta.fieldDefs fieldDefs}.
|
|
165
141
|
*/
|
|
166
142
|
export default (rsInternal) => {
|
|
167
143
|
const memoizedPrepareColumns = withMemoization(prepareColumns);
|
|
168
144
|
const memoizedPrepareNewlyVisibleAndReferredColumns = withMemoization(prepareNewlyVisibleAndReferredColumns);
|
|
169
|
-
const memoizedPrepareOOTBColumns = withMemoization(prepareOOTBColumns);
|
|
170
145
|
return function execute(featureProps) {
|
|
171
146
|
const state = featureProps.getState();
|
|
172
|
-
memoizedPrepareColumns([rsInternal], [rsInternal.getView().meta]);
|
|
147
|
+
memoizedPrepareColumns([rsInternal, state], [rsInternal.getView().meta]);
|
|
173
148
|
memoizedPrepareNewlyVisibleAndReferredColumns([rsInternal, state], [state.visibleColumns, state.groups, state.customFields]);
|
|
174
|
-
memoizedPrepareOOTBColumns([rsInternal], [rsInternal.getView().meta]);
|
|
175
149
|
};
|
|
176
150
|
};
|
|
177
151
|
//# sourceMappingURL=prepareColumns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareColumns.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/prepareColumns.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n isRowActionFieldEnabled,\n isRowErrorFieldEnabled,\n isRowReorderFieldEnabled,\n isRowSelectFieldEnabled,\n withMemoization\n} from '../../../utils/util';\nimport type RsInternal from '../../../RsInternal';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport {\n REPEATING_STRUCTURE_TEMPLATES,\n type FieldDef,\n type Meta\n} from '../../../../../types/Meta.types';\nimport {\n rowActionColumnMeta,\n rowDragDropColumnMeta,\n rowErrorColumnMeta,\n rowSelectColumnMeta\n} from '../../../constants';\nimport type { ColumnConfig } from '../../../generators/ColumnGenerator.types';\nimport defaultTranslations from '../../../defaultTranslations';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { State } from '../../../../../types/State.types';\nimport Column from '../../../generators/ColumnGenerator';\n\nconst addFrozenColumnAtIndex = (\n rsInternal: RsInternal,\n field: FieldDef,\n options: OmitStrict<ColumnConfig, 'field'>,\n index: number\n) => {\n const { getView, getRsStateResolver } = rsInternal;\n const { getState } = getRsStateResolver();\n const addedColumn = getView().addColumn(\n // error column initially should be hidden and will be displayed only when there are errors in state, unless consumer needs to display it on load.\n field,\n options\n );\n if (!getState().freezeColumns?.includes(field.id)) {\n addedColumn.applyFreezeAtIndex(index);\n }\n};\n\nexport const isTranslationKey = (key: string): key is keyof typeof defaultTranslations => {\n return key in defaultTranslations;\n};\n\n/**\n * Returns true if a column should still be created for the given fieldDef\n * even when the field is not visible (`show = false`).\n *\n * This happens when the field is required by the current template configuration\n * (e.g., Timeline, Gallery, Map) or when it is marked as a row header.\n *\n * TODO: Refactor, move template-field resolution into the RS layer (e.g. `useRepeat`).\n */\nconst shouldCreateColumnForField = (meta: Meta, fieldDef: FieldDef): boolean => {\n if (fieldDef.isRowHeader) return true;\n\n if (fieldDef.filterPickList) return true;\n\n const template = meta.template;\n\n if (template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE) {\n const { timelineFields = {} } = meta;\n\n const referenceNames = [\n timelineFields.title?.name,\n timelineFields.date?.name,\n timelineFields.content?.name,\n timelineFields.status?.name,\n timelineFields.icon?.name\n ].filter(Boolean);\n\n return referenceNames.includes(fieldDef.name);\n }\n\n if (template === REPEATING_STRUCTURE_TEMPLATES.GALLERY) {\n const { galleryConfig = {} } = meta;\n\n const referenceIds = [\n galleryConfig.header?.field,\n galleryConfig.heroImage?.source?.field\n ].filter(Boolean);\n\n return referenceIds.includes(fieldDef.id);\n }\n\n if (template === REPEATING_STRUCTURE_TEMPLATES.MAP) {\n const { mapFieldIds = {} } = meta;\n\n const referenceIds = [mapFieldIds.location, mapFieldIds.label, mapFieldIds.content].filter(\n Boolean\n );\n\n return referenceIds.includes(fieldDef.id);\n }\n\n return false;\n};\n\nconst prepareOOTBColumns = ([rsInternal]: [rsInternal: RsInternal]) => {\n const { getView } = rsInternal;\n const translate = rsInternal.getRsStore().translate;\n let ootColumnsIndex = 0;\n // Add error column.\n if (isRowErrorFieldEnabled(getView().meta)) {\n addFrozenColumnAtIndex(\n rsInternal,\n // Error column is added as a hidden column. Toggles based on state.errors.dataErrors\n {\n ...rowErrorColumnMeta.field,\n label: isTranslationKey(rowErrorColumnMeta.field.label)\n ? translate(rowErrorColumnMeta.field.label)\n : rowErrorColumnMeta.field.label,\n show: getView().meta.rowErrorField?.show ?? false\n },\n rowErrorColumnMeta.options,\n ootColumnsIndex\n );\n ootColumnsIndex += 1;\n }\n // Add row drag drop column.\n if (isRowReorderFieldEnabled(getView().meta)) {\n addFrozenColumnAtIndex(\n rsInternal,\n {\n ...rowDragDropColumnMeta.field,\n label: isTranslationKey(rowDragDropColumnMeta.field.label)\n ? translate(rowDragDropColumnMeta.field.label)\n : rowDragDropColumnMeta.field.label,\n show: getView().meta.rowReorderField?.show ?? true\n },\n rowDragDropColumnMeta.options,\n ootColumnsIndex\n );\n ootColumnsIndex += 1;\n }\n // Add selection column.\n if (isRowSelectFieldEnabled(getView().meta)) {\n addFrozenColumnAtIndex(\n rsInternal,\n {\n ...rowSelectColumnMeta.field,\n label: isTranslationKey(rowSelectColumnMeta.field.label)\n ? translate(rowSelectColumnMeta.field.label)\n : rowSelectColumnMeta.field.label\n },\n rowSelectColumnMeta.options,\n ootColumnsIndex\n );\n }\n\n // Add row action column.\n if (isRowActionFieldEnabled(getView().meta)) {\n getView().addColumn(\n {\n ...rowActionColumnMeta.field,\n label: isTranslationKey(rowActionColumnMeta.field.label)\n ? translate(rowActionColumnMeta.field.label)\n : rowActionColumnMeta.field.label\n },\n rowActionColumnMeta.options\n );\n }\n};\n\n/**\n * Prepares {@link Column columns} for the view on initial load.\n * Creates columns only for {@link FieldDef fieldDefs} that are visible or row headers.\n *\n * @param rsInternal - The internal RS object used to access the view and store.\n */\nfunction prepareColumns([rsInternal]: [rsInternal: RsInternal]) {\n const { fieldDefs } = rsInternal.getView().meta;\n\n const columns = fieldDefs\n .filter(\n fieldDef => fieldDef.show || shouldCreateColumnForField(rsInternal.getView().meta, fieldDef)\n )\n .map(fieldDef => new Column({ field: fieldDef }, rsInternal));\n\n rsInternal.getView().setProp({ columns });\n}\n\n/**\n * Prepares newly visible, grouped, and custom-field-dependent {@link Column columns} for the view.\n *\n * Runs on {@link State.visibleColumns visibleColumns}, {@link State.groups groups},\n * and {@link State.customFields customFields} state changes.\n * Finds column IDs that are present in `visibleColumns`, `groups`, or referenced in\n * `customFields` expressions but not yet in {@link View.columns view.columns},\n * creates a {@link Column} for each using the corresponding {@link FieldDef} from the store.\n *\n * @param rsInternal - The internal RS object used to access the view and store.\n * @param state - The current RS state containing `visibleColumns`, `groups`, and `customFields`.\n */\nexport function prepareNewlyVisibleAndReferredColumns([rsInternal, state]: [\n rsInternal: RsInternal,\n state: State\n]) {\n const rsStore = rsInternal.getRsStore();\n const groupColumnIds = state.groups?.map(group => group.columnId) ?? [];\n const groupAdditionalFieldIds =\n state.groups?.flatMap(group => group.additionalFields?.map(field => field.id) ?? []) ?? [];\n\n // Custom field expressions reference dependent column IDs as plain strings.\n // These columns may be hidden but still need Column generators for rendering.\n const customFieldDependentColumnIds =\n state.customFields?.flatMap(cf =>\n cf.expression.filter((e): e is string => typeof e === 'string')\n ) ?? [];\n\n // Grouped columns are also created for group headers and labels.\n const visibleAndGroupedColumns = [\n ...new Set([\n ...(state.visibleColumns ?? []),\n ...groupColumnIds,\n ...groupAdditionalFieldIds,\n ...customFieldDependentColumnIds\n ])\n ];\n\n // Finding columns that are newly added in visibleColumns and groups, which are not yet present in view.columns.\n const newlyAddedColumns = visibleAndGroupedColumns.filter(\n columnId => !rsInternal.getView().columns?.some(col => col.field.id === columnId)\n );\n\n if (!newlyAddedColumns.length) return;\n\n const createdColumns = newlyAddedColumns.reduce<Column[]>((acc, columnId) => {\n const fieldDef = rsStore.getFieldDefById(columnId);\n if (fieldDef) {\n acc.push(new Column({ field: fieldDef }, rsInternal));\n }\n return acc;\n }, []);\n\n rsInternal.getView().setProp({\n columns: [...(rsInternal.getView().columns ?? []), ...createdColumns]\n });\n}\n\n/**\n * Prepares {@link View.columns columns} for the view from {@link Meta.fieldDefs fieldDefs}.\n */\nexport default (rsInternal: RsInternal) => {\n const memoizedPrepareColumns = withMemoization(prepareColumns);\n const memoizedPrepareNewlyVisibleAndReferredColumns = withMemoization(\n prepareNewlyVisibleAndReferredColumns\n );\n const memoizedPrepareOOTBColumns = withMemoization(prepareOOTBColumns);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedPrepareColumns([rsInternal], [rsInternal.getView().meta]);\n memoizedPrepareNewlyVisibleAndReferredColumns(\n [rsInternal, state],\n [state.visibleColumns, state.groups, state.customFields]\n );\n memoizedPrepareOOTBColumns([rsInternal], [rsInternal.getView().meta]);\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"prepareColumns.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/prepareColumns.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n isRowActionFieldEnabled,\n isRowDeleteFieldEnabled,\n isRowDeleteFieldVisible,\n isRowErrorFieldEnabled,\n isRowReorderFieldEnabled,\n isRowSelectFieldEnabled,\n withMemoization,\n shouldCreateColumnForField,\n translateLabel\n} from '../../../utils/util';\nimport type RsInternal from '../../../RsInternal';\nimport {\n rowActionColumnMeta,\n rowDeleteColumnMeta,\n rowDragDropColumnMeta,\n rowErrorColumnMeta,\n rowSelectColumnMeta\n} from '../../../constants';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { State } from '../../../../../types/State.types';\nimport Column from '../../../generators/ColumnGenerator';\nimport type { FieldDef } from '../../../../../types/Meta.types';\nimport type { ColumnConfig } from '../../../generators/ColumnGenerator.types';\n\n/**\n * Adds a column to the view at a frozen index.\n * If the column's field ID is not in the frozen-columns list, it is also frozen at the given index.\n *\n * @param rsInternal - The internal RS object.\n * @param field - The field definition for the column.\n * @param options - Column config options (excluding `field`).\n * @param index - The freeze index to apply.\n */\nexport const addFrozenColumnAtIndex = (\n rsInternal: RsInternal,\n field: FieldDef,\n options: OmitStrict<ColumnConfig, 'field'>,\n index: number\n) => {\n const { getView, getRsStateResolver } = rsInternal;\n const { getState } = getRsStateResolver();\n const addedColumn = getView().addColumn(\n // error column initially should be hidden and will be displayed only when there are errors in state, unless consumer needs to display it on load.\n field,\n options\n );\n if (!getState().freezeColumns?.includes(field.id)) {\n addedColumn.applyFreezeAtIndex(index);\n }\n};\n\n/**\n * Adds all OOTB columns (error, drag-drop, select, action) to the view.\n * Must be called after base columns have been committed via `setProp`.\n *\n * @param rsInternal - The internal RS object used to access the view and store.\n */\nconst prepareOOTBColumns = (rsInternal: RsInternal) => {\n const meta = rsInternal.getView().meta;\n const translate = rsInternal.getRsStore().translate;\n let ootbIndex = 0;\n\n // Add error column (initially hidden; toggled by state.errors.dataErrors).\n if (isRowErrorFieldEnabled(meta)) {\n addFrozenColumnAtIndex(\n rsInternal,\n {\n ...rowErrorColumnMeta.field,\n label: translateLabel(rowErrorColumnMeta.field.label, translate),\n show: meta.rowErrorField?.show ?? false\n },\n rowErrorColumnMeta.options,\n ootbIndex\n );\n ootbIndex += 1;\n }\n\n // Add row drag-drop column.\n if (isRowReorderFieldEnabled(meta)) {\n addFrozenColumnAtIndex(\n rsInternal,\n {\n ...rowDragDropColumnMeta.field,\n label: translateLabel(rowDragDropColumnMeta.field.label, translate),\n show: meta.rowReorderField?.show ?? true\n },\n rowDragDropColumnMeta.options,\n ootbIndex\n );\n ootbIndex += 1;\n }\n\n // Add selection column.\n if (isRowSelectFieldEnabled(meta)) {\n addFrozenColumnAtIndex(\n rsInternal,\n {\n ...rowSelectColumnMeta.field,\n label: translateLabel(rowSelectColumnMeta.field.label, translate)\n },\n rowSelectColumnMeta.options,\n ootbIndex\n );\n }\n\n // Add row action column.\n if (isRowActionFieldEnabled(meta)) {\n rsInternal.getView().addColumn(\n {\n ...rowActionColumnMeta.field,\n label: translateLabel(rowActionColumnMeta.field.label, translate)\n },\n rowActionColumnMeta.options\n );\n }\n\n if (isRowDeleteFieldEnabled(meta)) {\n rsInternal.getView().addColumn(\n {\n ...rowDeleteColumnMeta.field,\n label: translateLabel(rowDeleteColumnMeta.field.label, translate),\n show: isRowDeleteFieldVisible(meta)\n },\n rowDeleteColumnMeta.options\n );\n }\n};\n\n/**\n * Prepares newly visible, grouped, and custom-field-dependent {@link Column columns} for the view.\n *\n * Runs on {@link State.visibleColumns visibleColumns}, {@link State.groups groups},\n * and {@link State.customFields customFields} state changes.\n * Finds column IDs that are present in `visibleColumns`, `groups`, or referenced in\n * `customFields` expressions but not yet in {@link View.columns view.columns},\n * creates a {@link Column} for each using the corresponding {@link FieldDef} from the store.\n *\n * @param rsInternal - The internal RS object used to access the view and store.\n * @param state - The current RS state containing `visibleColumns`, `groups`, and `customFields`.\n */\nexport function prepareNewlyVisibleAndReferredColumns([rsInternal, state]: [\n rsInternal: RsInternal,\n state: State\n]) {\n const rsStore = rsInternal.getRsStore();\n\n // Build the full set of required column IDs in a single pass over all state slices.\n const requiredColumnIds = new Set<string>(state.visibleColumns);\n\n state.groups?.forEach(group => {\n requiredColumnIds.add(group.columnId);\n // Grouped columns are also created for group headers and labels.\n group.additionalFields?.forEach(field => requiredColumnIds.add(field.id));\n });\n\n // Custom field expressions reference dependent column IDs as plain strings.\n // These columns may be hidden but still need Column generators for rendering.\n state.customFields?.forEach(cf => {\n cf.expression.forEach(e => {\n if (typeof e === 'string') requiredColumnIds.add(e);\n });\n });\n\n const existingColumnIds = new Set(rsInternal.getView().columns?.map(col => col.field.id) ?? []);\n\n const createdColumns = [...requiredColumnIds].reduce<Column[]>((acc, columnId) => {\n if (!existingColumnIds.has(columnId)) {\n const fieldDef = rsStore.getFieldDefById(columnId);\n if (fieldDef) {\n acc.push(new Column({ field: fieldDef }, rsInternal));\n }\n }\n return acc;\n }, []);\n\n if (!createdColumns.length) return;\n\n rsInternal.getView().setProp({\n columns: [...(rsInternal.getView().columns ?? []), ...createdColumns]\n });\n}\n\n/**\n * Prepares {@link Column columns} for the view on initial load.\n * Creates columns from visible/required {@link FieldDef fieldDefs} in a single pass,\n * then delegates OOTB column setup and newly-visible column setup to their respective helpers.\n *\n * @param rsInternal - The internal RS object used to access the view and store.\n */\nfunction prepareColumns([rsInternal, state]: [rsInternal: RsInternal, state: State]) {\n const meta = rsInternal.getView().meta;\n\n // build columns for visible/required fieldDefs.\n const columns = meta.fieldDefs.reduce<Column[]>((acc, fieldDef) => {\n if (shouldCreateColumnForField(meta, fieldDef)) {\n acc.push(new Column({ field: fieldDef }, rsInternal));\n }\n return acc;\n }, []);\n\n // Set base columns first so subsequent addColumn calls append to the correct view.\n rsInternal.getView().setProp({ columns });\n\n prepareOOTBColumns(rsInternal);\n prepareNewlyVisibleAndReferredColumns([rsInternal, state]);\n}\n\n/**\n * Prepares {@link View.columns columns} for the view from {@link Meta.fieldDefs fieldDefs}.\n */\nexport default (rsInternal: RsInternal) => {\n const memoizedPrepareColumns = withMemoization(prepareColumns);\n const memoizedPrepareNewlyVisibleAndReferredColumns = withMemoization(\n prepareNewlyVisibleAndReferredColumns\n );\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedPrepareColumns([rsInternal, state], [rsInternal.getView().meta]);\n memoizedPrepareNewlyVisibleAndReferredColumns(\n [rsInternal, state],\n [state.visibleColumns, state.groups, state.customFields]\n );\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowDragDrop.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rowDragDrop.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AA+RrE;;;GAGG;yBACa,YAAY,UAAU,MASZ,cAAc,wBAAwB;AAThE,wBAgBE"}
|
|
@@ -16,8 +16,8 @@ const removeDragEffect = (target) => {
|
|
|
16
16
|
elm.style.opacity = '1';
|
|
17
17
|
});
|
|
18
18
|
};
|
|
19
|
-
const setGhostImage = ({ getView }, e) => {
|
|
20
|
-
const dragProxy = document.createElement('div');
|
|
19
|
+
const setGhostImage = ({ getView, browserContext }, e) => {
|
|
20
|
+
const dragProxy = browserContext.document.createElement('div');
|
|
21
21
|
const elem = getSelector(e.currentTarget);
|
|
22
22
|
dragProxy.style.height = `${Math.min(elem.offsetHeight, getView().getScrollNode().offsetHeight)}px`;
|
|
23
23
|
dragProxy.style.width = `${Math.min(elem.offsetWidth, getView().virtualizeElements.rootVirtualiser.getParentContainer().clientWidth)}px`;
|
|
@@ -58,7 +58,7 @@ const removeDropEffect = (target) => {
|
|
|
58
58
|
elm.style.transform = null;
|
|
59
59
|
});
|
|
60
60
|
};
|
|
61
|
-
const contextDragOverCb = ({ getRsStore, getView }, e) => {
|
|
61
|
+
const contextDragOverCb = ({ getRsStore, getView, browserContext }, e) => {
|
|
62
62
|
e.stopPropagation();
|
|
63
63
|
e.preventDefault();
|
|
64
64
|
const rsStore = getRsStore();
|
|
@@ -77,7 +77,7 @@ const contextDragOverCb = ({ getRsStore, getView }, e) => {
|
|
|
77
77
|
elm.dispatchEvent(new MouseEvent('dragleave', {
|
|
78
78
|
bubbles: true,
|
|
79
79
|
cancelable: true,
|
|
80
|
-
view: window
|
|
80
|
+
view: browserContext.window
|
|
81
81
|
}));
|
|
82
82
|
}
|
|
83
83
|
};
|
|
@@ -102,7 +102,7 @@ const contextDropCb = ({ getRsStore, getView }, ev) => {
|
|
|
102
102
|
};
|
|
103
103
|
const dragStartCb = (featureProps, ev) => {
|
|
104
104
|
const dragOverCallBack = contextDragOverCb.bind(null, featureProps);
|
|
105
|
-
document.addEventListener('dragover', dragOverCallBack);
|
|
105
|
+
featureProps.browserContext.document.addEventListener('dragover', dragOverCallBack);
|
|
106
106
|
const dropCallBack = contextDropCb.bind(null, featureProps);
|
|
107
107
|
featureProps.getView().getDomContainer().addEventListener('drop', dropCallBack);
|
|
108
108
|
// We have to keep event handler in reference so that we can remove right handler when drag ends.
|
|
@@ -124,10 +124,14 @@ const dragStartCb = (featureProps, ev) => {
|
|
|
124
124
|
ev.currentTarget.classList.add('dragStart');
|
|
125
125
|
addDragEffect(ev.currentTarget);
|
|
126
126
|
};
|
|
127
|
-
const dragEndCb = ({ getRsStore, getView }, ev) => {
|
|
127
|
+
const dragEndCb = ({ getRsStore, getView, browserContext }, ev) => {
|
|
128
128
|
const rsStore = getRsStore();
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
if (rsStore.rowDragDropRef.contextDragOverCb) {
|
|
130
|
+
browserContext.document.removeEventListener('dragover', rsStore.rowDragDropRef.contextDragOverCb);
|
|
131
|
+
}
|
|
132
|
+
if (rsStore.rowDragDropRef.contextDropCb) {
|
|
133
|
+
getView().getDomContainer()?.removeEventListener('drop', rsStore.rowDragDropRef.contextDropCb);
|
|
134
|
+
}
|
|
131
135
|
rsStore.rowDragDropRef.dropTarget = [];
|
|
132
136
|
rsStore.rowDragDropRef.dropTargetCoord = null;
|
|
133
137
|
rsStore.rowDragDropRef.forcedDragLeave = false;
|
|
@@ -156,7 +160,7 @@ const isValidDragEnter = (rsStore, e) => {
|
|
|
156
160
|
}
|
|
157
161
|
return isValid;
|
|
158
162
|
};
|
|
159
|
-
const dragEnterCb = ({ getRsStore }, ev) => {
|
|
163
|
+
const dragEnterCb = ({ getRsStore, browserContext }, ev) => {
|
|
160
164
|
ev.stopPropagation();
|
|
161
165
|
const rsStore = getRsStore();
|
|
162
166
|
if (isValidDragEnter(rsStore, ev)) {
|
|
@@ -177,7 +181,7 @@ const dragEnterCb = ({ getRsStore }, ev) => {
|
|
|
177
181
|
elm.dispatchEvent(new MouseEvent('dragleave', {
|
|
178
182
|
bubbles: true,
|
|
179
183
|
cancelable: true,
|
|
180
|
-
view: window
|
|
184
|
+
view: browserContext.window
|
|
181
185
|
}));
|
|
182
186
|
}
|
|
183
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowDragDrop.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"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","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type RsStore from '../../../RsStore';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type View from '../../../generators/ViewGenerator';\n\nconst DropSelector = '[data-drop]';\nconst getSelector = (t: HTMLElement): HTMLElement | null => t.closest(DropSelector);\n\nconst addDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '0.5';\n });\n};\n\nconst removeDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '1';\n });\n};\n\nconst setGhostImage = ({ getView }: BeforeRenderFeatureProps, e: DragEvent) => {\n const dragProxy = document.createElement('div');\n const elem = getSelector(e.currentTarget as HTMLElement)!;\n dragProxy.style.height = `${Math.min(\n elem.offsetHeight,\n getView().getScrollNode()!.offsetHeight\n )}px`;\n dragProxy.style.width = `${Math.min(\n elem.offsetWidth,\n getView().virtualizeElements.rootVirtualiser.getParentContainer().clientWidth\n )}px`;\n dragProxy.style.position = 'absolute';\n dragProxy.style.top = '-1000000px';\n dragProxy.style.left = '-10000000px';\n dragProxy.style.background = 'rgba(0, 0, 0, 0.21)';\n dragProxy.style.zIndex = '-1';\n getView().getDomContainer()!.appendChild(dragProxy);\n if (e.dataTransfer) {\n e.dataTransfer.setDragImage(dragProxy, 0, 0);\n }\n\n setTimeout(() => {\n dragProxy.parentNode!.removeChild(dragProxy);\n }, 1000);\n};\n\nconst isColliding = (x: DOMRect['x'], y: DOMRect['y'], coord: DOMRect) => {\n const smallBuffer = 2;\n return !(\n x < coord.left - smallBuffer ||\n x > coord.right + smallBuffer ||\n y > coord.bottom + smallBuffer ||\n y < coord.top - smallBuffer\n );\n};\n\nconst addDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n // Need to handle this in better way.TODO: need clean up as well.\n elm.style.transition = 'transform 0.25s';\n elm.style.transform = 'translate(20px)';\n });\n};\n\nconst removeDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.transition = null;\n elm.style.transform = null;\n });\n};\n\nconst contextDragOverCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, e: DragEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const rsStore = getRsStore();\n const domContainerCoord = getView().getDomContainer()!.getBoundingClientRect();\n if (\n rsStore.rowDragDropRef.dragLeaveSkipped &&\n rsStore.rowDragDropRef.dropTarget &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n (!isColliding(e.clientX, e.clientY, rsStore.rowDragDropRef.dropTargetCoord!) ||\n // Force trigger drag leave on the drop target when the dragged row moves outside the RS DOM container.\n e.clientX > domContainerCoord.right ||\n e.clientX < domContainerCoord.left)\n ) {\n rsStore.rowDragDropRef.forcedDragLeave = true;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n};\n\nconst contextDropCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n const rsStore = getRsStore();\n const elm = rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1];\n if (\n rsStore.rowDragDropRef.dropTargetCoord &&\n elm !== rsStore.rowDragDropRef.dragTarget &&\n isColliding(ev.clientX, ev.clientY, rsStore.rowDragDropRef.dropTargetCoord)\n ) {\n removeDropEffect(elm);\n elm.classList.remove('dragEnter');\n const destinationKey = elm.closest('.row')!.getAttribute('data-key')!;\n const sourceKey = rsStore.rowDragDropRef.dragTarget?.closest('.row')!.getAttribute('data-key')!;\n rsStore.rowDragDropRef.dragTarget = undefined;\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n rsStore.rowDragDropRef.dropTarget = [];\n getView().type.handleRowReorder(sourceKey, destinationKey);\n }\n};\n\nconst dragStartCb = (featureProps: BeforeRenderFeatureProps, ev: DragEvent) => {\n const dragOverCallBack = contextDragOverCb.bind(null, featureProps);\n document.addEventListener('dragover', dragOverCallBack);\n const dropCallBack = contextDropCb.bind(null, featureProps);\n featureProps.getView().getDomContainer()!.addEventListener('drop', dropCallBack);\n\n // We have to keep event handler in reference so that we can remove right handler when drag ends.\n // Handler might change in between because of deps.\n featureProps.getRsStore().rowDragDropRef.contextDropCb = dropCallBack;\n featureProps.getRsStore().rowDragDropRef.contextDragOverCb = dragOverCallBack;\n\n setGhostImage(featureProps, ev);\n if (ev.dataTransfer) {\n ev.dataTransfer.effectAllowed = 'move';\n // Setting up some dummy data(dragged row item key) to make drag drop work in firefox. Refer https://medium.com/%40reiberdatschi/common-pitfalls-with-html5-drag-n-drop-api-9f011a09ee6c\n ev.dataTransfer.setData('text/plain', 'RS_Dragged_Row_Item');\n }\n\n // fail safe reset drag target.\n if (featureProps.getRsStore().rowDragDropRef.dragTarget)\n featureProps.getRsStore().rowDragDropRef.dragTarget = undefined;\n featureProps.getRsStore().rowDragDropRef.isDragTargetTypeRow =\n (ev.currentTarget as HTMLElement).getAttribute('data-drag-type') === 'row';\n featureProps.getRsStore().rowDragDropRef.dragTarget = getSelector(\n ev.currentTarget as HTMLElement\n )!;\n (ev.currentTarget as HTMLElement).classList.add('dragStart');\n addDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst dragEndCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n const rsStore = getRsStore();\n document.removeEventListener('dragover', rsStore.rowDragDropRef.contextDragOverCb!);\n getView().getDomContainer()!.removeEventListener('drop', rsStore.rowDragDropRef.contextDropCb!);\n rsStore.rowDragDropRef.dropTarget = [];\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.forcedDragLeave = false;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragStart');\n removeDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst isValidDragEnter = (rsStore: RsStore, e: DragEvent) => {\n let isValid = true;\n if (!rsStore.rowDragDropRef.isDragTargetTypeRow) return false;\n if (rsStore.rowDragDropRef.dragTarget === e.currentTarget) isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] ===\n e.currentTarget\n )\n isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] !==\n e.currentTarget\n ) {\n const currentTargetCoord = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const dropTargetCoord =\n rsStore.rowDragDropRef.dropTarget[\n rsStore.rowDragDropRef.dropTarget.length - 1\n ].getBoundingClientRect();\n if (\n !isColliding(e.clientX, e.clientY, currentTargetCoord) &&\n isColliding(e.clientX, e.clientY, dropTargetCoord)\n )\n isValid = false;\n }\n return isValid;\n};\n\nconst dragEnterCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (isValidDragEnter(rsStore, ev)) {\n rsStore.rowDragDropRef.dropTarget = rsStore.rowDragDropRef.dropTarget.length\n ? [...rsStore.rowDragDropRef.dropTarget]\n : [];\n rsStore.rowDragDropRef.dropTarget.push(ev.currentTarget as HTMLElement);\n (ev.currentTarget as HTMLElement).classList.add('dragEnter');\n if (ev.dataTransfer) {\n ev.dataTransfer.dropEffect = 'move';\n }\n rsStore.rowDragDropRef.dropTargetCoord = (\n ev.currentTarget as HTMLElement\n ).getBoundingClientRect();\n addDropEffect(ev.currentTarget as HTMLElement);\n\n if (rsStore.rowDragDropRef.dropTarget.length > 1) {\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n rsStore.rowDragDropRef.forcedDragLeave = true;\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n }\n};\n\nconst dragLeaveCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (rsStore.rowDragDropRef.forcedDragLeave) {\n rsStore.rowDragDropRef.forcedDragLeave = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragEnter');\n removeDropEffect(ev.currentTarget as HTMLElement);\n } else if (\n !(ev.currentTarget as HTMLElement).contains(ev.relatedTarget as HTMLElement) &&\n rsStore.rowDragDropRef.dragTarget !== ev.currentTarget\n ) {\n rsStore.rowDragDropRef.dragLeaveSkipped = true;\n }\n};\n\nconst dragProps = (featureProps: BeforeRenderFeatureProps) => ({\n 'data-drag-type': 'row',\n draggable: true,\n onDragStart: dragStartCb.bind(null, featureProps),\n onDragEnd: dragEndCb.bind(null, featureProps)\n});\n\nconst dropProps = (featureProps: BeforeRenderFeatureProps) => ({\n onDragEnter: dragEnterCb.bind(null, featureProps),\n onDragLeave: dragLeaveCb.bind(null, featureProps),\n 'data-drop': 'dropzone'\n});\n\nfunction addDragDropBehavior([featureProps]: [featureProps: BeforeRenderFeatureProps]) {\n if (!featureProps.getView().meta.reorderItems) {\n return;\n }\n featureProps.getView().rows!.forEach(r => {\n if (!(r.dragProps && r.dropProps)) {\n r.setProp({\n dragProps: dragProps(featureProps),\n dropProps: dropProps(featureProps)\n });\n }\n });\n}\n\n/**\n * Manages drag drop behavior of rows whenever the {@link View.rows rows} are changed in the view on publish of `AFTER_FETCH` event.\n *\n */\nexport default (rsInternal: RsInternal) => {\n rsInternal.getRsStore().rowDragDropRef = {\n dropTarget: [],\n dragTarget: undefined,\n dropZones: []\n };\n const memoizedAddDragDropBehavior = withMemoization(addDragDropBehavior);\n\n // TODO: Move subscription outside execute function\n return function execute(featureProps: BeforeRenderFeatureProps) {\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () =>\n memoizedAddDragDropBehavior([featureProps], [featureProps.getView().rows])\n );\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"rowDragDrop.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"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","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type RsStore from '../../../RsStore';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type View from '../../../generators/ViewGenerator';\n\nconst DropSelector = '[data-drop]';\nconst getSelector = (t: HTMLElement): HTMLElement | null => t.closest(DropSelector);\n\nconst addDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '0.5';\n });\n};\n\nconst removeDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '1';\n });\n};\n\nconst setGhostImage = ({ getView, browserContext }: BeforeRenderFeatureProps, e: DragEvent) => {\n const dragProxy = browserContext.document.createElement('div');\n const elem = getSelector(e.currentTarget as HTMLElement)!;\n dragProxy.style.height = `${Math.min(\n elem.offsetHeight,\n getView().getScrollNode()!.offsetHeight\n )}px`;\n dragProxy.style.width = `${Math.min(\n elem.offsetWidth,\n getView().virtualizeElements.rootVirtualiser.getParentContainer().clientWidth\n )}px`;\n dragProxy.style.position = 'absolute';\n dragProxy.style.top = '-1000000px';\n dragProxy.style.left = '-10000000px';\n dragProxy.style.background = 'rgba(0, 0, 0, 0.21)';\n dragProxy.style.zIndex = '-1';\n getView().getDomContainer()!.appendChild(dragProxy);\n if (e.dataTransfer) {\n e.dataTransfer.setDragImage(dragProxy, 0, 0);\n }\n\n setTimeout(() => {\n dragProxy.parentNode!.removeChild(dragProxy);\n }, 1000);\n};\n\nconst isColliding = (x: DOMRect['x'], y: DOMRect['y'], coord: DOMRect) => {\n const smallBuffer = 2;\n return !(\n x < coord.left - smallBuffer ||\n x > coord.right + smallBuffer ||\n y > coord.bottom + smallBuffer ||\n y < coord.top - smallBuffer\n );\n};\n\nconst addDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n // Need to handle this in better way.TODO: need clean up as well.\n elm.style.transition = 'transform 0.25s';\n elm.style.transform = 'translate(20px)';\n });\n};\n\nconst removeDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.transition = null;\n elm.style.transform = null;\n });\n};\n\nconst contextDragOverCb = (\n { getRsStore, getView, browserContext }: BeforeRenderFeatureProps,\n e: DragEvent\n) => {\n e.stopPropagation();\n e.preventDefault();\n const rsStore = getRsStore();\n const domContainerCoord = getView().getDomContainer()!.getBoundingClientRect();\n if (\n rsStore.rowDragDropRef.dragLeaveSkipped &&\n rsStore.rowDragDropRef.dropTarget &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n (!isColliding(e.clientX, e.clientY, rsStore.rowDragDropRef.dropTargetCoord!) ||\n // Force trigger drag leave on the drop target when the dragged row moves outside the RS DOM container.\n e.clientX > domContainerCoord.right ||\n e.clientX < domContainerCoord.left)\n ) {\n rsStore.rowDragDropRef.forcedDragLeave = true;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: browserContext.window\n })\n );\n }\n};\n\nconst contextDropCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n const rsStore = getRsStore();\n const elm = rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1];\n if (\n rsStore.rowDragDropRef.dropTargetCoord &&\n elm !== rsStore.rowDragDropRef.dragTarget &&\n isColliding(ev.clientX, ev.clientY, rsStore.rowDragDropRef.dropTargetCoord)\n ) {\n removeDropEffect(elm);\n elm.classList.remove('dragEnter');\n const destinationKey = elm.closest('.row')!.getAttribute('data-key')!;\n const sourceKey = rsStore.rowDragDropRef.dragTarget?.closest('.row')!.getAttribute('data-key')!;\n rsStore.rowDragDropRef.dragTarget = undefined;\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n rsStore.rowDragDropRef.dropTarget = [];\n getView().type.handleRowReorder(sourceKey, destinationKey);\n }\n};\n\nconst dragStartCb = (featureProps: BeforeRenderFeatureProps, ev: DragEvent) => {\n const dragOverCallBack = contextDragOverCb.bind(null, featureProps);\n featureProps.browserContext.document.addEventListener('dragover', dragOverCallBack);\n const dropCallBack = contextDropCb.bind(null, featureProps);\n featureProps.getView().getDomContainer()!.addEventListener('drop', dropCallBack);\n\n // We have to keep event handler in reference so that we can remove right handler when drag ends.\n // Handler might change in between because of deps.\n featureProps.getRsStore().rowDragDropRef.contextDropCb = dropCallBack;\n featureProps.getRsStore().rowDragDropRef.contextDragOverCb = dragOverCallBack;\n\n setGhostImage(featureProps, ev);\n if (ev.dataTransfer) {\n ev.dataTransfer.effectAllowed = 'move';\n // Setting up some dummy data(dragged row item key) to make drag drop work in firefox. Refer https://medium.com/%40reiberdatschi/common-pitfalls-with-html5-drag-n-drop-api-9f011a09ee6c\n ev.dataTransfer.setData('text/plain', 'RS_Dragged_Row_Item');\n }\n\n // fail safe reset drag target.\n if (featureProps.getRsStore().rowDragDropRef.dragTarget)\n featureProps.getRsStore().rowDragDropRef.dragTarget = undefined;\n featureProps.getRsStore().rowDragDropRef.isDragTargetTypeRow =\n (ev.currentTarget as HTMLElement).getAttribute('data-drag-type') === 'row';\n featureProps.getRsStore().rowDragDropRef.dragTarget = getSelector(\n ev.currentTarget as HTMLElement\n )!;\n (ev.currentTarget as HTMLElement).classList.add('dragStart');\n addDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst dragEndCb = (\n { getRsStore, getView, browserContext }: BeforeRenderFeatureProps,\n ev: DragEvent\n) => {\n const rsStore = getRsStore();\n if (rsStore.rowDragDropRef.contextDragOverCb) {\n browserContext.document.removeEventListener(\n 'dragover',\n rsStore.rowDragDropRef.contextDragOverCb\n );\n }\n if (rsStore.rowDragDropRef.contextDropCb) {\n getView().getDomContainer()?.removeEventListener('drop', rsStore.rowDragDropRef.contextDropCb);\n }\n rsStore.rowDragDropRef.dropTarget = [];\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.forcedDragLeave = false;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragStart');\n removeDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst isValidDragEnter = (rsStore: RsStore, e: DragEvent) => {\n let isValid = true;\n if (!rsStore.rowDragDropRef.isDragTargetTypeRow) return false;\n if (rsStore.rowDragDropRef.dragTarget === e.currentTarget) isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] ===\n e.currentTarget\n )\n isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] !==\n e.currentTarget\n ) {\n const currentTargetCoord = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const dropTargetCoord =\n rsStore.rowDragDropRef.dropTarget[\n rsStore.rowDragDropRef.dropTarget.length - 1\n ].getBoundingClientRect();\n if (\n !isColliding(e.clientX, e.clientY, currentTargetCoord) &&\n isColliding(e.clientX, e.clientY, dropTargetCoord)\n )\n isValid = false;\n }\n return isValid;\n};\n\nconst dragEnterCb = ({ getRsStore, browserContext }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (isValidDragEnter(rsStore, ev)) {\n rsStore.rowDragDropRef.dropTarget = rsStore.rowDragDropRef.dropTarget.length\n ? [...rsStore.rowDragDropRef.dropTarget]\n : [];\n rsStore.rowDragDropRef.dropTarget.push(ev.currentTarget as HTMLElement);\n (ev.currentTarget as HTMLElement).classList.add('dragEnter');\n if (ev.dataTransfer) {\n ev.dataTransfer.dropEffect = 'move';\n }\n rsStore.rowDragDropRef.dropTargetCoord = (\n ev.currentTarget as HTMLElement\n ).getBoundingClientRect();\n addDropEffect(ev.currentTarget as HTMLElement);\n\n if (rsStore.rowDragDropRef.dropTarget.length > 1) {\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n rsStore.rowDragDropRef.forcedDragLeave = true;\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: browserContext.window\n })\n );\n }\n }\n};\n\nconst dragLeaveCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (rsStore.rowDragDropRef.forcedDragLeave) {\n rsStore.rowDragDropRef.forcedDragLeave = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragEnter');\n removeDropEffect(ev.currentTarget as HTMLElement);\n } else if (\n !(ev.currentTarget as HTMLElement).contains(ev.relatedTarget as HTMLElement) &&\n rsStore.rowDragDropRef.dragTarget !== ev.currentTarget\n ) {\n rsStore.rowDragDropRef.dragLeaveSkipped = true;\n }\n};\n\nconst dragProps = (featureProps: BeforeRenderFeatureProps) => ({\n 'data-drag-type': 'row',\n draggable: true,\n onDragStart: dragStartCb.bind(null, featureProps),\n onDragEnd: dragEndCb.bind(null, featureProps)\n});\n\nconst dropProps = (featureProps: BeforeRenderFeatureProps) => ({\n onDragEnter: dragEnterCb.bind(null, featureProps),\n onDragLeave: dragLeaveCb.bind(null, featureProps),\n 'data-drop': 'dropzone'\n});\n\nfunction addDragDropBehavior([featureProps]: [featureProps: BeforeRenderFeatureProps]) {\n if (!featureProps.getView().meta.reorderItems) {\n return;\n }\n featureProps.getView().rows!.forEach(r => {\n if (!(r.dragProps && r.dropProps)) {\n r.setProp({\n dragProps: dragProps(featureProps),\n dropProps: dropProps(featureProps)\n });\n }\n });\n}\n\n/**\n * Manages drag drop behavior of rows whenever the {@link View.rows rows} are changed in the view on publish of `AFTER_FETCH` event.\n *\n */\nexport default (rsInternal: RsInternal) => {\n rsInternal.getRsStore().rowDragDropRef = {\n dropTarget: [],\n dragTarget: undefined,\n dropZones: []\n };\n const memoizedAddDragDropBehavior = withMemoization(addDragDropBehavior);\n\n // TODO: Move subscription outside execute function\n return function execute(featureProps: BeforeRenderFeatureProps) {\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () =>\n memoizedAddDragDropBehavior([featureProps], [featureProps.getView().rows])\n );\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateHydration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateHydration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stateHydration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateHydration.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAO9D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAU1D;AACD;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAuB/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAqFtD;AA+ED;;;;;;GAMG;+BAKuB,cAAc,wBAAwB;AAJhE,wBAQE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { actionHydrateState } from '../../../actions/actions';
|
|
2
|
-
import { withMemoization, pickProperties, isEmpty,
|
|
2
|
+
import { withMemoization, pickProperties, isEmpty, isRowDeleteFieldVisible, isRowSelectFieldEnabled, getVisibleColumnsFromHidden, getVisibleColumnsFromFieldDefs, isRowReorderFieldVisible, isRowErrorFieldVisible, isRowActionFieldEnabled } from '../../../utils/util';
|
|
3
3
|
import { personalizationProps } from '../../../reducers/personalizationReducer';
|
|
4
|
-
import { rowActionColumnMeta, rowDragDropColumnMeta, rowErrorColumnMeta, rowSelectColumnMeta, TEMPLATES } from '../../../constants';
|
|
4
|
+
import { rowActionColumnMeta, rowDeleteColumnMeta, rowDragDropColumnMeta, rowErrorColumnMeta, rowSelectColumnMeta, TEMPLATES } from '../../../constants';
|
|
5
5
|
import { getCurrentVersionedState } from '../../../reducers/versioning';
|
|
6
6
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
7
7
|
/**
|
|
@@ -15,7 +15,8 @@ export function getVisibleOotbColumns(meta) {
|
|
|
15
15
|
{ enabled: isRowErrorFieldVisible(meta), id: rowErrorColumnMeta.field.id },
|
|
16
16
|
{ enabled: isRowReorderFieldVisible(meta), id: rowDragDropColumnMeta.field.id },
|
|
17
17
|
{ enabled: isRowSelectFieldEnabled(meta), id: rowSelectColumnMeta.field.id },
|
|
18
|
-
{ enabled: isRowActionFieldEnabled(meta), id: rowActionColumnMeta.field.id }
|
|
18
|
+
{ enabled: isRowActionFieldEnabled(meta), id: rowActionColumnMeta.field.id },
|
|
19
|
+
{ enabled: isRowDeleteFieldVisible(meta), id: rowDeleteColumnMeta.field.id }
|
|
19
20
|
];
|
|
20
21
|
return ootbColumns.filter(({ enabled }) => enabled).map(({ id }) => id);
|
|
21
22
|
}
|