@revolist/revogrid 4.12.2 → 4.12.4
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/dist/cjs/{app-globals-66b5e3d1.js → app-globals-f72a6199.js} +2 -2
- package/dist/cjs/{app-globals-66b5e3d1.js.map → app-globals-f72a6199.js.map} +1 -1
- package/dist/cjs/{column.drag.plugin-2c24c512.js → column.drag.plugin-f196a293.js} +181 -187
- package/dist/cjs/column.drag.plugin-f196a293.js.map +1 -0
- package/dist/cjs/{column.service-cb3d757e.js → column.service-b59380a3.js} +78 -58
- package/dist/cjs/column.service-b59380a3.js.map +1 -0
- package/dist/cjs/{dimension.helpers-4527475f.js → dimension.helpers-5b822a09.js} +3 -2
- package/dist/cjs/dimension.helpers-5b822a09.js.map +1 -0
- package/dist/cjs/{edit.utils-787a9e1d.js → edit.utils-32d4c9e4.js} +2 -2
- package/dist/cjs/{edit.utils-787a9e1d.js.map → edit.utils-32d4c9e4.js.map} +1 -1
- package/dist/cjs/{filter.button-48acc2db.js → filter.button-2708e602.js} +2 -2
- package/dist/cjs/{filter.button-48acc2db.js.map → filter.button-2708e602.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-9d81a1fe.js → header-cell-renderer-a66fe375.js} +3 -3
- package/dist/cjs/{header-cell-renderer-9d81a1fe.js.map → header-cell-renderer-a66fe375.js.map} +1 -1
- package/dist/cjs/{index-bdea2cb6.js → index-8006d065.js} +8 -1
- package/dist/cjs/index-8006d065.js.map +1 -0
- package/dist/cjs/index.cjs.js +26 -10
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{key.utils-fcd0dda2.js → key.utils-05f14738.js} +2 -2
- package/dist/cjs/{key.utils-fcd0dda2.js.map → key.utils-05f14738.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/revo-grid.cjs.entry.js +7 -7
- package/dist/cjs/revo-grid.cjs.js +2 -2
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +7 -7
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -5
- package/dist/cjs/revogr-data_4.cjs.entry.js +15 -51
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -2
- package/dist/cjs/sorting.sign-a1e9d97a.js +72 -0
- package/dist/cjs/sorting.sign-a1e9d97a.js.map +1 -0
- package/dist/cjs/{text-editor-9f64bd5e.js → text-editor-82f53111.js} +3 -3
- package/dist/cjs/{text-editor-9f64bd5e.js.map → text-editor-82f53111.js.map} +1 -1
- package/dist/cjs/{throttle-6a2a8510.js → throttle-08957661.js} +2 -2
- package/dist/cjs/{throttle-6a2a8510.js.map → throttle-08957661.js.map} +1 -1
- package/dist/cjs/{viewport.store-0c68c932.js → viewport.store-4dbfeaa3.js} +2 -2
- package/dist/cjs/{viewport.store-0c68c932.js.map → viewport.store-4dbfeaa3.js.map} +1 -1
- package/dist/collection/components/data/cell-renderer.js +1 -1
- package/dist/collection/components/data/cell-renderer.js.map +1 -1
- package/dist/collection/components/data/revogr-data.js +2 -1
- package/dist/collection/components/data/revogr-data.js.map +1 -1
- package/dist/collection/plugins/filter/filter.plugin.js +1 -5
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +58 -57
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +16 -6
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js +70 -54
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
- package/dist/collection/plugins/index.js +0 -1
- package/dist/collection/plugins/index.js.map +1 -1
- package/dist/collection/serve/data.js +5 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js +1 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
- package/dist/collection/types/interfaces.js.map +1 -1
- package/dist/collection/utils/column.utils.js +1 -1
- package/dist/collection/utils/column.utils.js.map +1 -1
- package/dist/esm/{app-globals-60fd3b54.js → app-globals-6b929fd8.js} +2 -2
- package/dist/esm/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +1 -1
- package/dist/esm/{column.drag.plugin-6a84d7b0.js → column.drag.plugin-caf3ce50.js} +180 -188
- package/dist/esm/column.drag.plugin-caf3ce50.js.map +1 -0
- package/dist/esm/{column.service-ff8f75de.js → column.service-f39c0a1d.js} +76 -59
- package/dist/esm/column.service-f39c0a1d.js.map +1 -0
- package/dist/esm/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +3 -2
- package/dist/esm/dimension.helpers-5567e424.js.map +1 -0
- package/dist/esm/{edit.utils-dd8b5cd7.js → edit.utils-b59306be.js} +2 -2
- package/dist/esm/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +1 -1
- package/dist/esm/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
- package/dist/esm/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-4508273a.js → header-cell-renderer-31f53644.js} +3 -3
- package/dist/esm/{header-cell-renderer-4508273a.js.map → header-cell-renderer-31f53644.js.map} +1 -1
- package/dist/esm/{index-b5695870.js → index-f6fae858.js} +8 -2
- package/dist/esm/index-f6fae858.js.map +1 -0
- package/dist/esm/index.js +11 -11
- package/dist/esm/{key.utils-38b263fb.js → key.utils-3632161b.js} +2 -2
- package/dist/esm/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/revo-grid.entry.js +7 -7
- package/dist/esm/revo-grid.js +3 -3
- package/dist/esm/revogr-attribution_7.entry.js +7 -7
- package/dist/esm/revogr-clipboard_3.entry.js +5 -5
- package/dist/esm/revogr-data_4.entry.js +13 -49
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +2 -2
- package/dist/esm/sorting.sign-c02e3b12.js +65 -0
- package/dist/esm/sorting.sign-c02e3b12.js.map +1 -0
- package/dist/esm/{text-editor-7fbbcea7.js → text-editor-e47e56c3.js} +3 -3
- package/dist/esm/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +1 -1
- package/dist/esm/{throttle-61be638a.js → throttle-05489451.js} +2 -2
- package/dist/esm/{throttle-61be638a.js.map → throttle-05489451.js.map} +1 -1
- package/dist/esm/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
- package/dist/esm/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +1 -1
- package/dist/revo-grid/app-globals-6b929fd8.js +5 -0
- package/dist/revo-grid/column.drag.plugin-caf3ce50.js +5 -0
- package/dist/revo-grid/column.drag.plugin-caf3ce50.js.map +1 -0
- package/dist/revo-grid/column.service-f39c0a1d.js +5 -0
- package/dist/revo-grid/column.service-f39c0a1d.js.map +1 -0
- package/dist/revo-grid/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +2 -2
- package/dist/revo-grid/{dimension.helpers-a4dd4f76.js.map → dimension.helpers-5567e424.js.map} +1 -1
- package/dist/revo-grid/edit.utils-b59306be.js +5 -0
- package/dist/revo-grid/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
- package/dist/revo-grid/{header-cell-renderer-4508273a.js → header-cell-renderer-31f53644.js} +2 -2
- package/dist/revo-grid/index-f6fae858.js +6 -0
- package/dist/revo-grid/index-f6fae858.js.map +1 -0
- package/dist/revo-grid/index.esm.js +1 -1
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/key.utils-3632161b.js +5 -0
- package/dist/revo-grid/revo-grid.entry.js +1 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.esm.js +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
- package/dist/revo-grid/sorting.sign-c02e3b12.js +5 -0
- package/dist/revo-grid/sorting.sign-c02e3b12.js.map +1 -0
- package/dist/revo-grid/text-editor-e47e56c3.js +5 -0
- package/dist/revo-grid/{throttle-61be638a.js → throttle-05489451.js} +2 -2
- package/dist/revo-grid/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
- package/dist/types/plugins/filter/filter.plugin.d.ts +2 -1
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -4
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -3
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +6 -3
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +0 -1
- package/dist/types/plugins/index.d.ts +0 -1
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +3 -1
- package/dist/types/types/interfaces.d.ts +19 -0
- package/dist/types/utils/column.utils.d.ts +1 -1
- package/hydrate/index.js +187 -158
- package/hydrate/index.mjs +187 -158
- package/package.json +1 -1
- package/standalone/column.service.js +73 -56
- package/standalone/column.service.js.map +1 -1
- package/standalone/data.store.js +1 -0
- package/standalone/data.store.js.map +1 -1
- package/standalone/index.js +3 -2
- package/standalone/index.js.map +1 -1
- package/standalone/revo-grid.js +174 -182
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-data2.js +19 -9
- package/standalone/revogr-data2.js.map +1 -1
- package/standalone/revogr-header2.js +1 -1
- package/standalone/revogr-overlay-selection2.js +1 -1
- package/dist/cjs/column.drag.plugin-2c24c512.js.map +0 -1
- package/dist/cjs/column.service-cb3d757e.js.map +0 -1
- package/dist/cjs/dimension.helpers-4527475f.js.map +0 -1
- package/dist/cjs/index-bdea2cb6.js.map +0 -1
- package/dist/cjs/sorting.sign-83d75503.js +0 -15
- package/dist/cjs/sorting.sign-83d75503.js.map +0 -1
- package/dist/esm/column.drag.plugin-6a84d7b0.js.map +0 -1
- package/dist/esm/column.service-ff8f75de.js.map +0 -1
- package/dist/esm/dimension.helpers-a4dd4f76.js.map +0 -1
- package/dist/esm/index-b5695870.js.map +0 -1
- package/dist/esm/sorting.sign-e096163a.js +0 -13
- package/dist/esm/sorting.sign-e096163a.js.map +0 -1
- package/dist/revo-grid/app-globals-60fd3b54.js +0 -5
- package/dist/revo-grid/column.drag.plugin-6a84d7b0.js +0 -5
- package/dist/revo-grid/column.drag.plugin-6a84d7b0.js.map +0 -1
- package/dist/revo-grid/column.service-ff8f75de.js +0 -5
- package/dist/revo-grid/column.service-ff8f75de.js.map +0 -1
- package/dist/revo-grid/edit.utils-dd8b5cd7.js +0 -5
- package/dist/revo-grid/index-b5695870.js +0 -6
- package/dist/revo-grid/index-b5695870.js.map +0 -1
- package/dist/revo-grid/key.utils-38b263fb.js +0 -5
- package/dist/revo-grid/sorting.sign-e096163a.js +0 -5
- package/dist/revo-grid/sorting.sign-e096163a.js.map +0 -1
- package/dist/revo-grid/text-editor-7fbbcea7.js +0 -5
- /package/dist/revo-grid/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +0 -0
- /package/dist/revo-grid/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +0 -0
- /package/dist/revo-grid/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +0 -0
- /package/dist/revo-grid/{header-cell-renderer-4508273a.js.map → header-cell-renderer-31f53644.js.map} +0 -0
- /package/dist/revo-grid/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +0 -0
- /package/dist/revo-grid/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +0 -0
- /package/dist/revo-grid/{throttle-61be638a.js.map → throttle-05489451.js.map} +0 -0
- /package/dist/revo-grid/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +0 -0
package/hydrate/index.mjs
CHANGED
|
@@ -2585,6 +2585,12 @@ var registerHost = (elm, cmpMeta) => {
|
|
|
2585
2585
|
elm["s-rc"] = [];
|
|
2586
2586
|
return hostRefs.set(elm, hostRef);
|
|
2587
2587
|
};
|
|
2588
|
+
var Build = {
|
|
2589
|
+
isDev: false,
|
|
2590
|
+
isBrowser: false,
|
|
2591
|
+
isServer: true,
|
|
2592
|
+
isTesting: false
|
|
2593
|
+
};
|
|
2588
2594
|
var styles = /* @__PURE__ */ new Map();
|
|
2589
2595
|
|
|
2590
2596
|
|
|
@@ -6636,6 +6642,7 @@ const trimmedPlugin$1 = (store) => ({
|
|
|
6636
6642
|
// full sorted items list
|
|
6637
6643
|
const proxy = store.get('proxyItems');
|
|
6638
6644
|
const trimmed = gatherTrimmedItems(newVal);
|
|
6645
|
+
// filter our physical indexes which are not trimmed
|
|
6639
6646
|
const newItems = proxy.filter(v => !trimmed[v]);
|
|
6640
6647
|
// set trimmed items in store
|
|
6641
6648
|
store.set('items', newItems);
|
|
@@ -6856,7 +6863,7 @@ function getCellData(val) {
|
|
|
6856
6863
|
}
|
|
6857
6864
|
return val;
|
|
6858
6865
|
}
|
|
6859
|
-
function getCellRaw(model, column) {
|
|
6866
|
+
function getCellRaw(model = {}, column) {
|
|
6860
6867
|
if (!column) {
|
|
6861
6868
|
return;
|
|
6862
6869
|
}
|
|
@@ -8787,13 +8794,70 @@ function getSource(source, items, withoutGrouping = false) {
|
|
|
8787
8794
|
function getExpanded(model = {}) {
|
|
8788
8795
|
return model[GROUP_EXPANDED];
|
|
8789
8796
|
}
|
|
8797
|
+
function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, expandedAll, prevExpanded, columnProps, }) {
|
|
8798
|
+
const depth = parentIds.length;
|
|
8799
|
+
const sourceWithGroups = [];
|
|
8800
|
+
// collapse all groups in the beginning
|
|
8801
|
+
let trimmed = {};
|
|
8802
|
+
// index mapping
|
|
8803
|
+
let oldNewIndexMap = {};
|
|
8804
|
+
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
8805
|
+
const levelIds = [...parentIds, groupId];
|
|
8806
|
+
const mergedIds = levelIds.join(',');
|
|
8807
|
+
const isGroupExpanded = isExpanded && (!!expandedAll || !!prevExpanded[mergedIds]);
|
|
8808
|
+
sourceWithGroups.push({
|
|
8809
|
+
[PSEUDO_GROUP_ITEM]: groupId,
|
|
8810
|
+
[GROUP_DEPTH]: depth,
|
|
8811
|
+
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
8812
|
+
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
8813
|
+
[GROUP_EXPANDED]: isGroupExpanded,
|
|
8814
|
+
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
8815
|
+
[columnProps[depth]]: groupId,
|
|
8816
|
+
});
|
|
8817
|
+
itemIndex += 1;
|
|
8818
|
+
if (!isGroupExpanded && depth) {
|
|
8819
|
+
trimmed[itemIndex] = true;
|
|
8820
|
+
}
|
|
8821
|
+
if (Array.isArray(innerGroupedValues)) {
|
|
8822
|
+
innerGroupedValues.forEach(value => {
|
|
8823
|
+
itemIndex += 1;
|
|
8824
|
+
if (!isGroupExpanded) {
|
|
8825
|
+
trimmed[itemIndex] = true;
|
|
8826
|
+
}
|
|
8827
|
+
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
|
|
8828
|
+
});
|
|
8829
|
+
sourceWithGroups.push(...innerGroupedValues);
|
|
8830
|
+
}
|
|
8831
|
+
else {
|
|
8832
|
+
const children = flattenGroupMaps({
|
|
8833
|
+
groupedValues: innerGroupedValues,
|
|
8834
|
+
parentIds: levelIds,
|
|
8835
|
+
isExpanded: isGroupExpanded,
|
|
8836
|
+
itemIndex,
|
|
8837
|
+
expandedAll,
|
|
8838
|
+
prevExpanded,
|
|
8839
|
+
columnProps,
|
|
8840
|
+
});
|
|
8841
|
+
sourceWithGroups.push(...children.source);
|
|
8842
|
+
trimmed = Object.assign(Object.assign({}, children.trimmed), trimmed);
|
|
8843
|
+
oldNewIndexMap = Object.assign(Object.assign({}, children.oldNewIndexMap), oldNewIndexMap);
|
|
8844
|
+
itemIndex = children.itemIndex;
|
|
8845
|
+
}
|
|
8846
|
+
});
|
|
8847
|
+
return {
|
|
8848
|
+
source: sourceWithGroups,
|
|
8849
|
+
oldNewIndexMap,
|
|
8850
|
+
trimmed,
|
|
8851
|
+
itemIndex,
|
|
8852
|
+
};
|
|
8853
|
+
}
|
|
8790
8854
|
/**
|
|
8791
8855
|
* Gather data for grouping
|
|
8792
8856
|
* @param array - flat data array
|
|
8793
8857
|
* @param columnProps - ids of groups
|
|
8794
8858
|
* @param expanded - potentially expanded items if present
|
|
8795
8859
|
*/
|
|
8796
|
-
function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault, }) {
|
|
8860
|
+
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
|
|
8797
8861
|
const groupedItems = new Map();
|
|
8798
8862
|
array.forEach((item, originalIndex) => {
|
|
8799
8863
|
const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
|
|
@@ -8806,72 +8870,31 @@ function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGrou
|
|
|
8806
8870
|
currentGroupLevel = currentGroupLevel.get(value);
|
|
8807
8871
|
});
|
|
8808
8872
|
if (!currentGroupLevel.has(lastLevelValue)) {
|
|
8809
|
-
|
|
8873
|
+
const groupItems = [];
|
|
8874
|
+
currentGroupLevel.set(lastLevelValue, groupItems);
|
|
8810
8875
|
}
|
|
8811
8876
|
const lastLevelItems = currentGroupLevel.get(lastLevelValue);
|
|
8812
8877
|
lastLevelItems.push(Object.assign(Object.assign({}, item), { [GROUP_ORIGINAL_INDEX]: originalIndex }));
|
|
8813
8878
|
});
|
|
8814
|
-
let itemIndex = -1;
|
|
8815
8879
|
const groupingDepth = columnProps.length;
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
8826
|
-
const levelIds = [...parentIds, groupId];
|
|
8827
|
-
const mergedIds = levelIds.join(',');
|
|
8828
|
-
const isGroupExpanded = isExpanded && (!!expandedAll || !!(prevExpanded === null || prevExpanded === void 0 ? void 0 : prevExpanded[mergedIds]));
|
|
8829
|
-
sourceWithGroups.push({
|
|
8830
|
-
[PSEUDO_GROUP_ITEM]: groupId,
|
|
8831
|
-
[GROUP_DEPTH]: depth,
|
|
8832
|
-
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
8833
|
-
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
8834
|
-
[GROUP_EXPANDED]: isGroupExpanded,
|
|
8835
|
-
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
8836
|
-
[columnProps[depth]]: groupId,
|
|
8837
|
-
});
|
|
8838
|
-
itemIndex += 1;
|
|
8839
|
-
if (!isGroupExpanded && depth) {
|
|
8840
|
-
trimmed[itemIndex] = true;
|
|
8841
|
-
}
|
|
8842
|
-
if (Array.isArray(innerGroupedValues)) {
|
|
8843
|
-
innerGroupedValues.forEach(value => {
|
|
8844
|
-
itemIndex += 1;
|
|
8845
|
-
if (!isGroupExpanded) {
|
|
8846
|
-
trimmed[itemIndex] = true;
|
|
8847
|
-
}
|
|
8848
|
-
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
|
|
8849
|
-
const pseudoGroupTestIds = levelIds.map((_value, index) => levelIds.slice(0, index + 1).join(','));
|
|
8850
|
-
pseudoGroupTestIds.forEach(pseudoGroupTestId => {
|
|
8851
|
-
if (!pseudoGroupTest[pseudoGroupTestId]) {
|
|
8852
|
-
pseudoGroupTest[pseudoGroupTestId] = [];
|
|
8853
|
-
}
|
|
8854
|
-
pseudoGroupTest[pseudoGroupTestId].push(itemIndex);
|
|
8855
|
-
});
|
|
8856
|
-
});
|
|
8857
|
-
sourceWithGroups.push(...innerGroupedValues);
|
|
8858
|
-
}
|
|
8859
|
-
else {
|
|
8860
|
-
flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);
|
|
8861
|
-
}
|
|
8862
|
-
});
|
|
8863
|
-
}
|
|
8864
|
-
flattenGroupMaps(groupedItems, [], true);
|
|
8880
|
+
const { source: sourceWithGroups, trimmed, oldNewIndexMap } = flattenGroupMaps({
|
|
8881
|
+
groupedValues: groupedItems,
|
|
8882
|
+
parentIds: [],
|
|
8883
|
+
isExpanded: true,
|
|
8884
|
+
itemIndex: -1,
|
|
8885
|
+
expandedAll,
|
|
8886
|
+
prevExpanded,
|
|
8887
|
+
columnProps
|
|
8888
|
+
});
|
|
8865
8889
|
return {
|
|
8866
8890
|
sourceWithGroups, // updates source mirror
|
|
8867
8891
|
depth: groupingDepth, // largest depth for grouping
|
|
8868
8892
|
trimmed, // used for expand/collapse grouping values
|
|
8869
8893
|
oldNewIndexMap, // used for mapping old values to new
|
|
8870
|
-
childrenByGroup: pseudoGroupTest, // used to get child items in group
|
|
8871
8894
|
};
|
|
8872
8895
|
}
|
|
8873
8896
|
function getGroupingName(rgRow) {
|
|
8874
|
-
return rgRow
|
|
8897
|
+
return rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM];
|
|
8875
8898
|
}
|
|
8876
8899
|
function isGrouping(rgRow) {
|
|
8877
8900
|
return typeof (rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM]) !== 'undefined';
|
|
@@ -11736,11 +11759,7 @@ class FilterPlugin extends BasePlugin {
|
|
|
11736
11759
|
if (defaultPrevented) {
|
|
11737
11760
|
return;
|
|
11738
11761
|
}
|
|
11739
|
-
|
|
11740
|
-
const isAddedEvent = await this.revogrid.addTrimmed(detail.itemsToFilter, FILTER_TRIMMED_TYPE);
|
|
11741
|
-
if (isAddedEvent.defaultPrevented) {
|
|
11742
|
-
return;
|
|
11743
|
-
}
|
|
11762
|
+
this.providers.data.setTrimmed({ [FILTER_TRIMMED_TYPE]: detail.itemsToFilter });
|
|
11744
11763
|
// applies the hasFilter to the columns to show filter icon
|
|
11745
11764
|
this.providers.column.updateColumns(columnsToUpdate);
|
|
11746
11765
|
this.emit('afterfilterapply', {
|
|
@@ -12752,6 +12771,56 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
|
|
|
12752
12771
|
return trimemedOptionsToUpgrade;
|
|
12753
12772
|
}
|
|
12754
12773
|
|
|
12774
|
+
const PADDING_DEPTH = 10;
|
|
12775
|
+
const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
|
|
12776
|
+
const props = Object.assign({ [DATA_ROW]: index });
|
|
12777
|
+
return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
|
|
12778
|
+
height: `${size}px`,
|
|
12779
|
+
transform: `translateY(${start}px)`,
|
|
12780
|
+
paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
|
|
12781
|
+
} }), cells));
|
|
12782
|
+
};
|
|
12783
|
+
|
|
12784
|
+
function expandEvent(e, model, virtualIndex) {
|
|
12785
|
+
var _a;
|
|
12786
|
+
const event = new CustomEvent('groupexpandclick', {
|
|
12787
|
+
detail: {
|
|
12788
|
+
model,
|
|
12789
|
+
virtualIndex,
|
|
12790
|
+
},
|
|
12791
|
+
cancelable: true,
|
|
12792
|
+
bubbles: true,
|
|
12793
|
+
});
|
|
12794
|
+
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
|
|
12795
|
+
}
|
|
12796
|
+
const GroupingRowRenderer = (props) => {
|
|
12797
|
+
const { model, itemIndex, hasExpand, groupingCustomRenderer, providers } = props;
|
|
12798
|
+
const name = model[PSEUDO_GROUP_ITEM];
|
|
12799
|
+
const expanded = model[GROUP_EXPANDED];
|
|
12800
|
+
const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
|
|
12801
|
+
if (!hasExpand) {
|
|
12802
|
+
return hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
|
|
12803
|
+
}
|
|
12804
|
+
if (groupingCustomRenderer) {
|
|
12805
|
+
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
12806
|
+
hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, {
|
|
12807
|
+
name,
|
|
12808
|
+
model,
|
|
12809
|
+
itemIndex,
|
|
12810
|
+
expanded,
|
|
12811
|
+
depth,
|
|
12812
|
+
providers,
|
|
12813
|
+
}))));
|
|
12814
|
+
}
|
|
12815
|
+
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
12816
|
+
hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
|
|
12817
|
+
name));
|
|
12818
|
+
};
|
|
12819
|
+
const expandSvgIconVNode = (expanded = false) => {
|
|
12820
|
+
return (hAsync("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
|
|
12821
|
+
hAsync("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" })));
|
|
12822
|
+
};
|
|
12823
|
+
|
|
12755
12824
|
class GroupingRowPlugin extends BasePlugin {
|
|
12756
12825
|
getStore(type = GROUPING_ROW_TYPE) {
|
|
12757
12826
|
return this.providers.data.stores[type].store;
|
|
@@ -12835,53 +12904,6 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12835
12904
|
const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
|
|
12836
12905
|
return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
|
|
12837
12906
|
}
|
|
12838
|
-
// subscribe to grid events to process them accordingly
|
|
12839
|
-
subscribe() {
|
|
12840
|
-
/** if grouping present and new data source arrived */
|
|
12841
|
-
this.addEventListener('beforesourceset', ({ detail }) => {
|
|
12842
|
-
var _a, _b, _c;
|
|
12843
|
-
if (!(((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length) && ((_c = detail === null || detail === void 0 ? void 0 : detail.source) === null || _c === void 0 ? void 0 : _c.length))) {
|
|
12844
|
-
return;
|
|
12845
|
-
}
|
|
12846
|
-
// if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
|
|
12847
|
-
if (this.isSortingRunning()) {
|
|
12848
|
-
return;
|
|
12849
|
-
}
|
|
12850
|
-
this.onDataSet(detail);
|
|
12851
|
-
});
|
|
12852
|
-
this.addEventListener('beforecolumnsset', ({ detail }) => {
|
|
12853
|
-
this.setColumns(detail);
|
|
12854
|
-
});
|
|
12855
|
-
/**
|
|
12856
|
-
* filter applied need to clear grouping and apply again
|
|
12857
|
-
* based on new results can be new grouping
|
|
12858
|
-
*/
|
|
12859
|
-
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
12860
|
-
/**
|
|
12861
|
-
* sorting applied need to clear grouping and apply again
|
|
12862
|
-
* based on new results whole grouping order will changed
|
|
12863
|
-
*/
|
|
12864
|
-
this.addEventListener('aftersortingapply', () => {
|
|
12865
|
-
var _a, _b;
|
|
12866
|
-
if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
12867
|
-
return;
|
|
12868
|
-
}
|
|
12869
|
-
this.doSourceUpdate(Object.assign({}, this.options));
|
|
12870
|
-
});
|
|
12871
|
-
/**
|
|
12872
|
-
* Apply logic for focus inside of grouping
|
|
12873
|
-
* We can't focus on grouping rows, navigation only inside of groups for now
|
|
12874
|
-
*/
|
|
12875
|
-
this.addEventListener('beforecellfocus', e => this.onFocus(e));
|
|
12876
|
-
/**
|
|
12877
|
-
* Prevent rgRow drag outside the group
|
|
12878
|
-
*/
|
|
12879
|
-
this.addEventListener('roworderchanged', e => this.onDrag(e));
|
|
12880
|
-
/**
|
|
12881
|
-
* When grouping expand icon was clicked
|
|
12882
|
-
*/
|
|
12883
|
-
this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
|
|
12884
|
-
}
|
|
12885
12907
|
/**
|
|
12886
12908
|
* Starts global source update with group clearing and applying new one
|
|
12887
12909
|
* Initiated when need to reapply grouping
|
|
@@ -12898,11 +12920,11 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12898
12920
|
* Group again
|
|
12899
12921
|
* @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
|
|
12900
12922
|
*/
|
|
12901
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap,
|
|
12923
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], expanded);
|
|
12902
12924
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
12903
12925
|
// setup source
|
|
12904
12926
|
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
12905
|
-
this.updateTrimmed(trimmed,
|
|
12927
|
+
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
12906
12928
|
}
|
|
12907
12929
|
/**
|
|
12908
12930
|
* Apply grouping on data set
|
|
@@ -12918,13 +12940,13 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12918
12940
|
}
|
|
12919
12941
|
const source = data.source.filter(s => !isGrouping(s));
|
|
12920
12942
|
const options = Object.assign(Object.assign({}, (this.revogrid.grouping || {})), { prevExpanded: preservedExpanded });
|
|
12921
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap,
|
|
12943
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
|
|
12922
12944
|
data.source = sourceWithGroups;
|
|
12923
12945
|
this.providers.data.setGrouping({ depth });
|
|
12924
|
-
this.updateTrimmed(trimmed,
|
|
12946
|
+
this.updateTrimmed(trimmed, oldNewIndexMap);
|
|
12925
12947
|
}
|
|
12926
12948
|
/**
|
|
12927
|
-
*
|
|
12949
|
+
* External call to apply grouping. Called by revogrid when prop changed.
|
|
12928
12950
|
*/
|
|
12929
12951
|
setGrouping(options) {
|
|
12930
12952
|
var _a, _b;
|
|
@@ -12936,12 +12958,12 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12936
12958
|
this.clearGrouping();
|
|
12937
12959
|
return;
|
|
12938
12960
|
}
|
|
12939
|
-
// props exist and source
|
|
12961
|
+
// props exist and source initd
|
|
12940
12962
|
const { source } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'));
|
|
12941
12963
|
if (source.length) {
|
|
12942
12964
|
this.doSourceUpdate(Object.assign({}, options));
|
|
12943
12965
|
}
|
|
12944
|
-
// props exist and columns
|
|
12966
|
+
// props exist and columns initd
|
|
12945
12967
|
for (let t of columnTypes) {
|
|
12946
12968
|
if (this.setColumnGrouping(this.providers.column.getColumns(t))) {
|
|
12947
12969
|
this.providers.column.refreshByType(t);
|
|
@@ -12949,7 +12971,50 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12949
12971
|
}
|
|
12950
12972
|
}
|
|
12951
12973
|
// if has any grouping subscribe to events again
|
|
12952
|
-
|
|
12974
|
+
/** if grouping present and new data source arrived */
|
|
12975
|
+
this.addEventListener('beforesourceset', ({ detail }) => {
|
|
12976
|
+
var _a, _b, _c;
|
|
12977
|
+
if (!(((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length) && ((_c = detail === null || detail === void 0 ? void 0 : detail.source) === null || _c === void 0 ? void 0 : _c.length))) {
|
|
12978
|
+
return;
|
|
12979
|
+
}
|
|
12980
|
+
// if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
|
|
12981
|
+
if (this.isSortingRunning()) {
|
|
12982
|
+
return;
|
|
12983
|
+
}
|
|
12984
|
+
this.onDataSet(detail);
|
|
12985
|
+
});
|
|
12986
|
+
this.addEventListener('beforecolumnsset', ({ detail }) => {
|
|
12987
|
+
this.setColumns(detail);
|
|
12988
|
+
});
|
|
12989
|
+
/**
|
|
12990
|
+
* filter applied need to clear grouping and apply again
|
|
12991
|
+
* based on new results can be new grouping
|
|
12992
|
+
*/
|
|
12993
|
+
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
12994
|
+
/**
|
|
12995
|
+
* sorting applied need to clear grouping and apply again
|
|
12996
|
+
* based on new results whole grouping order will changed
|
|
12997
|
+
*/
|
|
12998
|
+
this.addEventListener('aftersortingapply', () => {
|
|
12999
|
+
var _a, _b;
|
|
13000
|
+
if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
13001
|
+
return;
|
|
13002
|
+
}
|
|
13003
|
+
this.doSourceUpdate(Object.assign({}, this.options));
|
|
13004
|
+
});
|
|
13005
|
+
/**
|
|
13006
|
+
* Apply logic for focus inside of grouping
|
|
13007
|
+
* We can't focus on grouping rows, navigation only inside of groups for now
|
|
13008
|
+
*/
|
|
13009
|
+
this.addEventListener('beforecellfocus', e => this.onFocus(e));
|
|
13010
|
+
/**
|
|
13011
|
+
* Prevent rgRow drag outside the group
|
|
13012
|
+
*/
|
|
13013
|
+
this.addEventListener('roworderchanged', e => this.onDrag(e));
|
|
13014
|
+
/**
|
|
13015
|
+
* When grouping expand icon was clicked
|
|
13016
|
+
*/
|
|
13017
|
+
this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
|
|
12953
13018
|
}
|
|
12954
13019
|
// clear grouping
|
|
12955
13020
|
clearGrouping() {
|
|
@@ -12973,7 +13038,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12973
13038
|
this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
12974
13039
|
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
12975
13040
|
}
|
|
12976
|
-
updateTrimmed(trimmedGroup = {},
|
|
13041
|
+
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
12977
13042
|
// map previously trimmed data
|
|
12978
13043
|
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
|
|
12979
13044
|
for (let type in trimemedOptionsToUpgrade) {
|
|
@@ -15257,47 +15322,6 @@ class RevoGridExtra {
|
|
|
15257
15322
|
}; }
|
|
15258
15323
|
}
|
|
15259
15324
|
|
|
15260
|
-
const PADDING_DEPTH = 10;
|
|
15261
|
-
const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
|
|
15262
|
-
const props = Object.assign({ [DATA_ROW]: index });
|
|
15263
|
-
return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
|
|
15264
|
-
height: `${size}px`,
|
|
15265
|
-
transform: `translateY(${start}px)`,
|
|
15266
|
-
paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
|
|
15267
|
-
} }), cells));
|
|
15268
|
-
};
|
|
15269
|
-
|
|
15270
|
-
function expandEvent(e, model, virtualIndex) {
|
|
15271
|
-
var _a;
|
|
15272
|
-
const event = new CustomEvent('groupexpandclick', {
|
|
15273
|
-
detail: {
|
|
15274
|
-
model,
|
|
15275
|
-
virtualIndex,
|
|
15276
|
-
},
|
|
15277
|
-
cancelable: true,
|
|
15278
|
-
bubbles: true,
|
|
15279
|
-
});
|
|
15280
|
-
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
|
|
15281
|
-
}
|
|
15282
|
-
const GroupingRowRenderer = (props) => {
|
|
15283
|
-
const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;
|
|
15284
|
-
const name = model[PSEUDO_GROUP_ITEM];
|
|
15285
|
-
const expanded = model[GROUP_EXPANDED];
|
|
15286
|
-
const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
|
|
15287
|
-
if (!hasExpand) {
|
|
15288
|
-
return hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
|
|
15289
|
-
}
|
|
15290
|
-
if (groupingCustomRenderer) {
|
|
15291
|
-
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
15292
|
-
hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, { name, model, itemIndex, expanded, depth }))));
|
|
15293
|
-
}
|
|
15294
|
-
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
15295
|
-
hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) },
|
|
15296
|
-
hAsync("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
|
|
15297
|
-
hAsync("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" }))),
|
|
15298
|
-
name));
|
|
15299
|
-
};
|
|
15300
|
-
|
|
15301
15325
|
/**
|
|
15302
15326
|
* Class is responsible for highlighting rows in a table.
|
|
15303
15327
|
*/
|
|
@@ -15372,6 +15396,10 @@ function renderCell(v) {
|
|
|
15372
15396
|
// #region Regular cell
|
|
15373
15397
|
else {
|
|
15374
15398
|
if (!v.schemaModel.column) {
|
|
15399
|
+
// something is wrong with data
|
|
15400
|
+
if (Build === null || Build === void 0 ? void 0 : Build.isDev) {
|
|
15401
|
+
console.error('Investigate column problem.', v.schemaModel);
|
|
15402
|
+
}
|
|
15375
15403
|
return '';
|
|
15376
15404
|
}
|
|
15377
15405
|
// Row drag
|
|
@@ -15505,7 +15533,8 @@ class RevogrData {
|
|
|
15505
15533
|
const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);
|
|
15506
15534
|
// #region Grouping
|
|
15507
15535
|
if (isGrouping(dataItem)) {
|
|
15508
|
-
|
|
15536
|
+
const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer, hasExpand: this.columnService.hasGrouping, providers: this.providers });
|
|
15537
|
+
rowsEls.push(hAsync(GroupingRowRenderer, Object.assign({}, gmodel)));
|
|
15509
15538
|
continue;
|
|
15510
15539
|
}
|
|
15511
15540
|
// #endregion
|
package/package.json
CHANGED
|
@@ -195,7 +195,7 @@ function getCellData(val) {
|
|
|
195
195
|
}
|
|
196
196
|
return val;
|
|
197
197
|
}
|
|
198
|
-
function getCellRaw(model, column) {
|
|
198
|
+
function getCellRaw(model = {}, column) {
|
|
199
199
|
if (!column) {
|
|
200
200
|
return;
|
|
201
201
|
}
|
|
@@ -773,6 +773,7 @@ const GROUP_EXPANDED = `${GRID_INTERNALS}-expanded`;
|
|
|
773
773
|
const GROUP_COLUMN_PROP = `${GRID_INTERNALS}-prop`;
|
|
774
774
|
const GROUP_ORIGINAL_INDEX = `${GRID_INTERNALS}-original-index`;
|
|
775
775
|
const GROUP_EXPAND_BTN = `group-expand`;
|
|
776
|
+
const GROUP_EXPAND_EVENT = `groupexpandclick`;
|
|
776
777
|
const GROUPING_ROW_TYPE = 'rgRow';
|
|
777
778
|
|
|
778
779
|
function getGroupValueDefault(item, prop) {
|
|
@@ -810,13 +811,70 @@ function getSource(source, items, withoutGrouping = false) {
|
|
|
810
811
|
function getExpanded(model = {}) {
|
|
811
812
|
return model[GROUP_EXPANDED];
|
|
812
813
|
}
|
|
814
|
+
function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, expandedAll, prevExpanded, columnProps, }) {
|
|
815
|
+
const depth = parentIds.length;
|
|
816
|
+
const sourceWithGroups = [];
|
|
817
|
+
// collapse all groups in the beginning
|
|
818
|
+
let trimmed = {};
|
|
819
|
+
// index mapping
|
|
820
|
+
let oldNewIndexMap = {};
|
|
821
|
+
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
822
|
+
const levelIds = [...parentIds, groupId];
|
|
823
|
+
const mergedIds = levelIds.join(',');
|
|
824
|
+
const isGroupExpanded = isExpanded && (!!expandedAll || !!prevExpanded[mergedIds]);
|
|
825
|
+
sourceWithGroups.push({
|
|
826
|
+
[PSEUDO_GROUP_ITEM]: groupId,
|
|
827
|
+
[GROUP_DEPTH]: depth,
|
|
828
|
+
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
829
|
+
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
830
|
+
[GROUP_EXPANDED]: isGroupExpanded,
|
|
831
|
+
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
832
|
+
[columnProps[depth]]: groupId,
|
|
833
|
+
});
|
|
834
|
+
itemIndex += 1;
|
|
835
|
+
if (!isGroupExpanded && depth) {
|
|
836
|
+
trimmed[itemIndex] = true;
|
|
837
|
+
}
|
|
838
|
+
if (Array.isArray(innerGroupedValues)) {
|
|
839
|
+
innerGroupedValues.forEach(value => {
|
|
840
|
+
itemIndex += 1;
|
|
841
|
+
if (!isGroupExpanded) {
|
|
842
|
+
trimmed[itemIndex] = true;
|
|
843
|
+
}
|
|
844
|
+
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
|
|
845
|
+
});
|
|
846
|
+
sourceWithGroups.push(...innerGroupedValues);
|
|
847
|
+
}
|
|
848
|
+
else {
|
|
849
|
+
const children = flattenGroupMaps({
|
|
850
|
+
groupedValues: innerGroupedValues,
|
|
851
|
+
parentIds: levelIds,
|
|
852
|
+
isExpanded: isGroupExpanded,
|
|
853
|
+
itemIndex,
|
|
854
|
+
expandedAll,
|
|
855
|
+
prevExpanded,
|
|
856
|
+
columnProps,
|
|
857
|
+
});
|
|
858
|
+
sourceWithGroups.push(...children.source);
|
|
859
|
+
trimmed = Object.assign(Object.assign({}, children.trimmed), trimmed);
|
|
860
|
+
oldNewIndexMap = Object.assign(Object.assign({}, children.oldNewIndexMap), oldNewIndexMap);
|
|
861
|
+
itemIndex = children.itemIndex;
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
return {
|
|
865
|
+
source: sourceWithGroups,
|
|
866
|
+
oldNewIndexMap,
|
|
867
|
+
trimmed,
|
|
868
|
+
itemIndex,
|
|
869
|
+
};
|
|
870
|
+
}
|
|
813
871
|
/**
|
|
814
872
|
* Gather data for grouping
|
|
815
873
|
* @param array - flat data array
|
|
816
874
|
* @param columnProps - ids of groups
|
|
817
875
|
* @param expanded - potentially expanded items if present
|
|
818
876
|
*/
|
|
819
|
-
function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault, }) {
|
|
877
|
+
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
|
|
820
878
|
const groupedItems = new Map();
|
|
821
879
|
array.forEach((item, originalIndex) => {
|
|
822
880
|
const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
|
|
@@ -829,72 +887,31 @@ function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGrou
|
|
|
829
887
|
currentGroupLevel = currentGroupLevel.get(value);
|
|
830
888
|
});
|
|
831
889
|
if (!currentGroupLevel.has(lastLevelValue)) {
|
|
832
|
-
|
|
890
|
+
const groupItems = [];
|
|
891
|
+
currentGroupLevel.set(lastLevelValue, groupItems);
|
|
833
892
|
}
|
|
834
893
|
const lastLevelItems = currentGroupLevel.get(lastLevelValue);
|
|
835
894
|
lastLevelItems.push(Object.assign(Object.assign({}, item), { [GROUP_ORIGINAL_INDEX]: originalIndex }));
|
|
836
895
|
});
|
|
837
|
-
let itemIndex = -1;
|
|
838
896
|
const groupingDepth = columnProps.length;
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
849
|
-
const levelIds = [...parentIds, groupId];
|
|
850
|
-
const mergedIds = levelIds.join(',');
|
|
851
|
-
const isGroupExpanded = isExpanded && (!!expandedAll || !!(prevExpanded === null || prevExpanded === void 0 ? void 0 : prevExpanded[mergedIds]));
|
|
852
|
-
sourceWithGroups.push({
|
|
853
|
-
[PSEUDO_GROUP_ITEM]: groupId,
|
|
854
|
-
[GROUP_DEPTH]: depth,
|
|
855
|
-
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
856
|
-
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
857
|
-
[GROUP_EXPANDED]: isGroupExpanded,
|
|
858
|
-
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
859
|
-
[columnProps[depth]]: groupId,
|
|
860
|
-
});
|
|
861
|
-
itemIndex += 1;
|
|
862
|
-
if (!isGroupExpanded && depth) {
|
|
863
|
-
trimmed[itemIndex] = true;
|
|
864
|
-
}
|
|
865
|
-
if (Array.isArray(innerGroupedValues)) {
|
|
866
|
-
innerGroupedValues.forEach(value => {
|
|
867
|
-
itemIndex += 1;
|
|
868
|
-
if (!isGroupExpanded) {
|
|
869
|
-
trimmed[itemIndex] = true;
|
|
870
|
-
}
|
|
871
|
-
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
|
|
872
|
-
const pseudoGroupTestIds = levelIds.map((_value, index) => levelIds.slice(0, index + 1).join(','));
|
|
873
|
-
pseudoGroupTestIds.forEach(pseudoGroupTestId => {
|
|
874
|
-
if (!pseudoGroupTest[pseudoGroupTestId]) {
|
|
875
|
-
pseudoGroupTest[pseudoGroupTestId] = [];
|
|
876
|
-
}
|
|
877
|
-
pseudoGroupTest[pseudoGroupTestId].push(itemIndex);
|
|
878
|
-
});
|
|
879
|
-
});
|
|
880
|
-
sourceWithGroups.push(...innerGroupedValues);
|
|
881
|
-
}
|
|
882
|
-
else {
|
|
883
|
-
flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);
|
|
884
|
-
}
|
|
885
|
-
});
|
|
886
|
-
}
|
|
887
|
-
flattenGroupMaps(groupedItems, [], true);
|
|
897
|
+
const { source: sourceWithGroups, trimmed, oldNewIndexMap } = flattenGroupMaps({
|
|
898
|
+
groupedValues: groupedItems,
|
|
899
|
+
parentIds: [],
|
|
900
|
+
isExpanded: true,
|
|
901
|
+
itemIndex: -1,
|
|
902
|
+
expandedAll,
|
|
903
|
+
prevExpanded,
|
|
904
|
+
columnProps
|
|
905
|
+
});
|
|
888
906
|
return {
|
|
889
907
|
sourceWithGroups, // updates source mirror
|
|
890
908
|
depth: groupingDepth, // largest depth for grouping
|
|
891
909
|
trimmed, // used for expand/collapse grouping values
|
|
892
910
|
oldNewIndexMap, // used for mapping old values to new
|
|
893
|
-
childrenByGroup: pseudoGroupTest, // used to get child items in group
|
|
894
911
|
};
|
|
895
912
|
}
|
|
896
913
|
function getGroupingName(rgRow) {
|
|
897
|
-
return rgRow
|
|
914
|
+
return rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM];
|
|
898
915
|
}
|
|
899
916
|
function isGrouping(rgRow) {
|
|
900
917
|
return typeof (rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM]) !== 'undefined';
|
|
@@ -1277,6 +1294,6 @@ function doPropMerge(existing, extra) {
|
|
|
1277
1294
|
return props;
|
|
1278
1295
|
}
|
|
1279
1296
|
|
|
1280
|
-
export {
|
|
1297
|
+
export { getColumnType as A, getColumnSizes as B, isColGrouping as C, getColumns as D, gatherGroup as E, getColumnByProp as F, GROUP_DEPTH as G, reduce as H, baseEach$1 as I, EMPTY_INDEX as J, SelectionStoreConnector as K, doPropMerge as L, isRowDragService as M, ColumnService as N, getCellEditor as O, PSEUDO_GROUP_ITEM as P, SelectionStore as S, isRangeSingleCell as a, PSEUDO_GROUP_ITEM_ID as b, cropCellToMax as c, PSEUDO_GROUP_ITEM_VALUE as d, PSEUDO_GROUP_COLUMN as e, GROUP_EXPANDED as f, getRange as g, GROUP_COLUMN_PROP as h, isHiddenStore as i, GROUP_ORIGINAL_INDEX as j, GROUP_EXPAND_BTN as k, GROUP_EXPAND_EVENT as l, GROUPING_ROW_TYPE as m, nextCell as n, getSource as o, getExpanded as p, gatherGrouping as q, getGroupingName as r, isGrouping as s, isGroupingColumn as t, measureEqualDepth as u, getParsedGroup as v, isSameGroup as w, getCellData as x, getCellRaw as y, getCellDataParsed as z };
|
|
1281
1298
|
|
|
1282
1299
|
//# sourceMappingURL=column.service.js.map
|