@pega/lists-core 8.1.0 → 8.2.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/src/core/features/uIFeatures/beforeRender/freeze.d.ts +1 -2
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.js +5 -53
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.js.map +1 -1
- package/lib/src/core/features/uIFeatures/index.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { State } from '../../../../../types/State.types';
|
|
2
|
-
import type RsInternal from '../../../RsInternal';
|
|
3
2
|
import type View from '../../../generators/ViewGenerator';
|
|
4
3
|
import type { BeforeRenderFeatureProps } from '../../featureFactory';
|
|
5
4
|
export declare const calculateFieldLeft: (colId: string, columns: View["columns"], freezeColumns?: State["freezeColumns"], hiddenColumns?: State["hiddenColumns"], columnWidths?: State["columnWidths"]) => number;
|
|
@@ -10,6 +9,6 @@ export declare const calculateFieldLeft: (colId: string, columns: View["columns"
|
|
|
10
9
|
* - {@link State.columnWidths}
|
|
11
10
|
* - `active` in {@link State.personalization}
|
|
12
11
|
*/
|
|
13
|
-
declare const _default: (
|
|
12
|
+
declare const _default: () => (featureProps: BeforeRenderFeatureProps) => void;
|
|
14
13
|
export default _default;
|
|
15
14
|
//# sourceMappingURL=freeze.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,mCAAmC,CAAC;AAE1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,SAAS,IAAI,CAAC,SAAS,CAAC,EACxB,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,eAAc,KAAK,CAAC,cAAc,CAAM,WAiBzC,CAAC;AA8CF;;;;;;GAMG;+BAGuB,cAAc,wBAAwB;AAFhE,wBASE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { withMemoization,
|
|
1
|
+
import { withMemoization, isFreezingEnabled } from '../../../utils/util';
|
|
2
2
|
export const calculateFieldLeft = (colId, columns, freezeColumns = [], hiddenColumns = [], columnWidths = {}) => {
|
|
3
3
|
let left = 0;
|
|
4
4
|
// iterate through the frozen columns and add its width to left if it appears before current column
|
|
@@ -27,36 +27,15 @@ const getLastFrozenField = (freezeColumns = [], hiddenColumns = []) => {
|
|
|
27
27
|
}
|
|
28
28
|
return lastFrozenColumnId;
|
|
29
29
|
};
|
|
30
|
-
const
|
|
31
|
-
const container = getView()?.getDomContainer?.()?.getElementsByClassName('container')?.[0];
|
|
32
|
-
if (!container)
|
|
33
|
-
return;
|
|
34
|
-
if (isHorizontallyScrolled) {
|
|
35
|
-
container.classList.add('horizontally-scrolled');
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
container.classList.remove('horizontally-scrolled');
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
const handleScrollEventOnInstance = (rsInternal, e) => {
|
|
42
|
-
const { scrollLeft } = e.target;
|
|
43
|
-
if (scrollLeft === 0) {
|
|
44
|
-
setHorizontallyScrolled(rsInternal, false);
|
|
45
|
-
}
|
|
46
|
-
else if (scrollLeft > 0) {
|
|
47
|
-
setHorizontallyScrolled(rsInternal, true);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
const setPositions = ([{ getView, getState }, scrollEventHandler]) => {
|
|
30
|
+
const setPositions = ([{ getView, getState }]) => {
|
|
51
31
|
// TODO: Remove this early exit optimization once we start preparing the column objects only for visible fields.
|
|
52
32
|
if (!isFreezingEnabled(getView().meta)) {
|
|
53
33
|
return;
|
|
54
34
|
}
|
|
55
35
|
const { freezeColumns = [], hiddenColumns = [], columnWidths } = getState();
|
|
56
36
|
const lastFrozenColumnId = getLastFrozenField(freezeColumns, hiddenColumns);
|
|
57
|
-
let freezeTotalWidthExpr = [];
|
|
58
37
|
getView().columns?.forEach(column => {
|
|
59
|
-
const { id
|
|
38
|
+
const { id } = column.field;
|
|
60
39
|
const style = { ...column.style };
|
|
61
40
|
let left = 0;
|
|
62
41
|
let frozen = false;
|
|
@@ -67,10 +46,6 @@ const setPositions = ([{ getView, getState }, scrollEventHandler]) => {
|
|
|
67
46
|
if (`${id}` === lastFrozenColumnId) {
|
|
68
47
|
lastFrozen = true;
|
|
69
48
|
}
|
|
70
|
-
// FIXME: convert this to pure js state
|
|
71
|
-
if (!column.hidden) {
|
|
72
|
-
freezeTotalWidthExpr.push(`var(--col-width-${idHash})`);
|
|
73
|
-
}
|
|
74
49
|
}
|
|
75
50
|
style.left = `${left}px`;
|
|
76
51
|
column = column.setProp({
|
|
@@ -79,20 +54,6 @@ const setPositions = ([{ getView, getState }, scrollEventHandler]) => {
|
|
|
79
54
|
lastFrozen
|
|
80
55
|
});
|
|
81
56
|
});
|
|
82
|
-
freezeTotalWidthExpr = freezeTotalWidthExpr.join(' + ');
|
|
83
|
-
getView().setProp('freezeLine', {
|
|
84
|
-
styles: {
|
|
85
|
-
left: `calc(${freezeTotalWidthExpr} - 1px)`
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
const scrollerElem = getScrollerElem(getView());
|
|
89
|
-
if (scrollerElem) {
|
|
90
|
-
// TODO fixme: for now we need a cleanup phase for afterRender Feature, so removing listener and adding again to put it on dom node between renders
|
|
91
|
-
// @ts-expect-error Using handler as arrow function causing TS error. Check this.
|
|
92
|
-
scrollerElem.removeEventListener('scroll', scrollEventHandler);
|
|
93
|
-
// @ts-expect-error Using handler as arrow function causing TS error. Check this.
|
|
94
|
-
scrollerElem.addEventListener('scroll', scrollEventHandler);
|
|
95
|
-
}
|
|
96
57
|
};
|
|
97
58
|
/**
|
|
98
59
|
* Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:
|
|
@@ -101,20 +62,11 @@ const setPositions = ([{ getView, getState }, scrollEventHandler]) => {
|
|
|
101
62
|
* - {@link State.columnWidths}
|
|
102
63
|
* - `active` in {@link State.personalization}
|
|
103
64
|
*/
|
|
104
|
-
export default (
|
|
105
|
-
const scrollEventHandler = handleScrollEventOnInstance.bind(null, rsInternal);
|
|
65
|
+
export default () => {
|
|
106
66
|
const memoizedSetPositions = withMemoization(setPositions);
|
|
107
67
|
return function execute(featureProps) {
|
|
108
68
|
const state = featureProps.getState();
|
|
109
|
-
memoizedSetPositions(
|
|
110
|
-
// @ts-expect-error Using bind on event listener causing Types mismatch. Check this.
|
|
111
|
-
[featureProps, scrollEventHandler], [
|
|
112
|
-
state.freezeColumns,
|
|
113
|
-
state.hiddenColumns,
|
|
114
|
-
state.columnWidths,
|
|
115
|
-
scrollEventHandler,
|
|
116
|
-
state?.personalization?.active
|
|
117
|
-
]);
|
|
69
|
+
memoizedSetPositions([featureProps], [state.freezeColumns, state.hiddenColumns, state.columnWidths, state?.personalization?.active]);
|
|
118
70
|
};
|
|
119
71
|
};
|
|
120
72
|
//# sourceMappingURL=freeze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from '../../../../../types/State.types';\nimport type View from '../../../generators/ViewGenerator';\nimport { withMemoization, isFreezingEnabled } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Column from '../../../generators/ColumnGenerator';\n\nexport const calculateFieldLeft = (\n colId: string,\n columns: View['columns'],\n freezeColumns: State['freezeColumns'] = [],\n hiddenColumns: State['hiddenColumns'] = [],\n columnWidths: State['columnWidths'] = {}\n) => {\n let left = 0;\n // iterate through the frozen columns and add its width to left if it appears before current column\n for (let j = 0; j < freezeColumns.length; j += 1) {\n const id = freezeColumns[j];\n if (id === `${colId}`) {\n break;\n }\n // If the column is frozen but if it is hidden then don't consider\n if (!hiddenColumns.includes(id)) {\n const previousCol = columns?.find(c => `${c.field.id}` === id);\n const width = columnWidths[previousCol!.field.id] || previousCol!.field.width;\n left += width!;\n }\n }\n return left;\n};\n\nconst getLastFrozenField = (\n freezeColumns: State['freezeColumns'] = [],\n hiddenColumns: State['hiddenColumns'] = []\n) => {\n let lastFrozenColumnId = '';\n for (let i = freezeColumns.length - 1; i > -1; i -= 1) {\n const id = freezeColumns[i];\n if (!hiddenColumns.includes(id)) {\n lastFrozenColumnId = id;\n break;\n }\n }\n return lastFrozenColumnId;\n};\n\nconst setPositions = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]): void => {\n // TODO: Remove this early exit optimization once we start preparing the column objects only for visible fields.\n if (!isFreezingEnabled(getView().meta)) {\n return;\n }\n const { freezeColumns = [], hiddenColumns = [], columnWidths } = getState();\n const lastFrozenColumnId = getLastFrozenField(freezeColumns, hiddenColumns);\n getView().columns?.forEach(column => {\n const { id } = column.field;\n const style = { ...column.style };\n let left = 0;\n let frozen = false;\n let lastFrozen = false;\n if (freezeColumns.includes(`${id}`)) {\n frozen = true;\n left = calculateFieldLeft(id, getView().columns, freezeColumns, hiddenColumns, columnWidths);\n if (`${id}` === lastFrozenColumnId) {\n lastFrozen = true;\n }\n }\n style.left = `${left}px`;\n column = column.setProp({\n style,\n frozen,\n lastFrozen\n });\n });\n};\n\n/**\n * Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:\n * - {@link State.freezeColumns}\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedSetPositions = withMemoization(setPositions);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedSetPositions(\n [featureProps],\n [state.freezeColumns, state.hiddenColumns, state.columnWidths, state?.personalization?.active]\n );\n };\n};\n"]}
|
|
@@ -5,7 +5,7 @@ declare const _default: {
|
|
|
5
5
|
busyIndicator: (rsInternal: import("../../RsInternal").default) => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
6
6
|
columnSizing: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
7
7
|
columnResize: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
8
|
-
freeze: (
|
|
8
|
+
freeze: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
9
9
|
animation: (rsInternal: import("../../RsInternal").default) => void;
|
|
10
10
|
rowHeight: () => (featureProps: import("../featureFactory").BeforeRenderFeatureProps) => void;
|
|
11
11
|
grouping: (rsInternal: import("../../RsInternal").default) => ((featureProps: import("../featureFactory").BeforeRenderFeatureProps) => Promise<void>) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAiBA,OAAO,2BAA2B,MAAM,4CAA4C,CAAC;AAuBrF,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EANrD,kEAAqC;6BAlBhC,kEAAsC;6BA2Eq3D,kEAAsC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAiBA,OAAO,2BAA2B,MAAM,4CAA4C,CAAC;AAuBrF,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EANrD,kEAAqC;6BAlBhC,kEAAsC;6BA2Eq3D,kEAAsC;uBAnB37D,kEACe;;0BAxDU,kEAAsC;;;uBActC,kEAC5B;6BA2DqO,kEAAsC;;4BAlE7O,kEACtB;8BAiEw1L,kEAAsC;kCAnC14L,kEAEA;6BAvCc,kEAClB;2BASoB,kEAAsC;2EA8DyzC,kEAAsC;yCA5D11C,kEAC5B;+BA2D6yG,kEAAsC;4BAxDt2G,kEAAsC;kCAwD0qL,kEAAsC;;;gCArE9sL,kEAC5B;kCAJD,kEAClB;4BAgDD,kEAEN;qBAqBitC,kEAAsC;kCAvE5qC,kEAC1C;sCAQrB,kEAAsC;0EA8Dw/N,kEAAsC;wEAAh1H,kEAAsC;wCAlDpuG,kEAGxD;4BA8BG,kEAEM;6BAjEyC,kEAC5B;sEAwBhC,kEAAsC;2BAkDhC,kEACQ;4BA/DF,kEAAsC;;uCAmEirB,kEAAsC;;;0BAA6qC,sDAA0B;iCAAiwC,sDAA0B;yCA/D9sG,sDAA0B;;;AAezD,wBA+CE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/lists-core",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "Core headless UI library that the users can use to write their own UI and create repeating structures like table, gallery, timeline etc.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pegasystems",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-condition-builder": "8.
|
|
18
|
-
"@pega/cosmos-react-core": "8.
|
|
19
|
-
"@pega/cosmos-react-work": "8.
|
|
17
|
+
"@pega/cosmos-react-condition-builder": "8.2.0",
|
|
18
|
+
"@pega/cosmos-react-core": "8.2.0",
|
|
19
|
+
"@pega/cosmos-react-work": "8.2.0",
|
|
20
20
|
"@types/lodash.get": "^4.4.9",
|
|
21
21
|
"@types/uuid": "^9.0.0",
|
|
22
22
|
"dayjs": "^1.11.13",
|