@revolist/revogrid 4.24.1 → 4.24.2
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/{cell-renderer-DfUCisis.js → cell-renderer-DnOCJ9ge.js} +58 -4
- package/dist/cjs/{column.drag.plugin-Cz-T4y3M.js → column.drag.plugin-DSiFObaj.js} +17 -12
- package/dist/cjs/{column.service-BNWNiJW3.js → column.service-CD70rNL2.js} +8 -5
- package/dist/cjs/{dimension.helpers-B9HgANnM.js → dimension.helpers-CB5sNw5J.js} +2 -1
- package/dist/cjs/{edit.utils-pKeiYFLJ.js → edit.utils-DDxnq9lw.js} +1 -1
- package/dist/cjs/{header-cell-renderer-DyjOxArm.js → header-cell-renderer-JXYFwayd.js} +1 -1
- package/dist/cjs/{index-DxaSE5uZ.js → index-BF6JDcMr.js} +1 -1
- package/dist/cjs/index.cjs.js +10 -9
- package/dist/cjs/revo-grid.cjs.entry.js +12 -8
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +5 -5
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +4 -4
- package/dist/cjs/revogr-data_4.cjs.entry.js +6 -4
- package/dist/cjs/{text-editor-B4W-m-r-.js → text-editor-CvgloQdG.js} +2 -2
- package/dist/cjs/{viewport.store-BscUCiUk.js → viewport.store-Ci8H1bI9.js} +1 -1
- package/dist/collection/components/data/revogr-data.js +2 -0
- package/dist/collection/components/revoGrid/revo-grid.js +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +12 -7
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +59 -3
- package/dist/collection/plugins/groupingRow/grouping.service.js +7 -4
- package/dist/collection/services/data.provider.js +6 -2
- package/dist/collection/store/dataSource/data.store.js +2 -1
- package/dist/{revo-grid/cell-renderer-CLTRlCa5.js → esm/cell-renderer-BQjko1zB.js} +58 -5
- package/dist/esm/{column.drag.plugin-DKkf7Zqb.js → column.drag.plugin-Cf9DYdQj.js} +17 -12
- package/dist/esm/{column.service-C6hByxPy.js → column.service-BnFqXqQG.js} +8 -5
- package/dist/{revo-grid/dimension.helpers-CGKwSvw6.js → esm/dimension.helpers-CXrsUc6f.js} +2 -1
- package/dist/esm/{edit.utils-Dnnbd0xG.js → edit.utils-CXmmCnxE.js} +1 -1
- package/dist/{revo-grid/header-cell-renderer-BMmXRsd_.js → esm/header-cell-renderer-B3mYpZD3.js} +1 -1
- package/dist/{revo-grid/index-Db3qZoW5.js → esm/index-DBqlJITb.js} +1 -1
- package/dist/esm/index.js +10 -10
- package/dist/esm/revo-grid.entry.js +12 -8
- package/dist/esm/revogr-attribution_7.entry.js +5 -5
- package/dist/esm/revogr-clipboard_3.entry.js +4 -4
- package/dist/esm/revogr-data_4.entry.js +6 -4
- package/dist/{revo-grid/text-editor-C3RUSwH5.js → esm/text-editor-DQtz2Y7B.js} +2 -2
- package/dist/{revo-grid/viewport.store-_c579YyM.js → esm/viewport.store-D5jEuhLq.js} +1 -1
- package/dist/{esm/cell-renderer-CLTRlCa5.js → revo-grid/cell-renderer-BQjko1zB.js} +58 -5
- package/dist/revo-grid/{column.drag.plugin-DKkf7Zqb.js → column.drag.plugin-Cf9DYdQj.js} +17 -12
- package/dist/revo-grid/{column.service-C6hByxPy.js → column.service-BnFqXqQG.js} +8 -5
- package/dist/{esm/dimension.helpers-CGKwSvw6.js → revo-grid/dimension.helpers-CXrsUc6f.js} +2 -1
- package/dist/revo-grid/{edit.utils-Dnnbd0xG.js → edit.utils-CXmmCnxE.js} +1 -1
- package/dist/{esm/header-cell-renderer-BMmXRsd_.js → revo-grid/header-cell-renderer-B3mYpZD3.js} +1 -1
- package/dist/{esm/index-Db3qZoW5.js → revo-grid/index-DBqlJITb.js} +1 -1
- package/dist/revo-grid/index.esm.js +10 -10
- package/dist/revo-grid/revo-grid.entry.js +12 -8
- package/dist/revo-grid/revogr-attribution_7.entry.js +5 -5
- package/dist/revo-grid/revogr-clipboard_3.entry.js +4 -4
- package/dist/revo-grid/revogr-data_4.entry.js +6 -4
- package/dist/{esm/text-editor-C3RUSwH5.js → revo-grid/text-editor-DQtz2Y7B.js} +2 -2
- package/dist/{esm/viewport.store-_c579YyM.js → revo-grid/viewport.store-D5jEuhLq.js} +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -1
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +47 -1
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
- package/dist/types/services/data.provider.d.ts +5 -2
- package/dist/types/store/dataSource/data.store.d.ts +3 -1
- package/hydrate/index.js +84 -16
- package/hydrate/index.mjs +84 -16
- package/package.json +1 -1
- package/standalone/column.service.js +1 -1
- package/standalone/data.store.js +1 -1
- package/standalone/index.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-data2.js +1 -1
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
8
|
-
var column_service = require('./column.service-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
8
|
+
var column_service = require('./column.service-CD70rNL2.js');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Renders sorting direction and optional additive sorting rank.
|
|
@@ -55,8 +55,58 @@ function expandEvent(e, model, virtualIndex) {
|
|
|
55
55
|
});
|
|
56
56
|
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
|
|
57
57
|
}
|
|
58
|
+
function renderGroupCells(props, { name, expanded, depth, }) {
|
|
59
|
+
const { additionalData, columnItems, groupingCellRenderer, hasExpand, itemIndex, model, providers, size, start, end, } = props;
|
|
60
|
+
if (!groupingCellRenderer) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
const renderOffset = providers.viewport.get('renderOffset') || 0;
|
|
64
|
+
const data = providers.data.get('source');
|
|
65
|
+
const rowItem = { itemIndex, size, start, end };
|
|
66
|
+
const onExpand = (event) => expandEvent(event, model, itemIndex);
|
|
67
|
+
return columnItems.map(columnItem => {
|
|
68
|
+
const column = dimension_helpers.getSourceItem(providers.columns, columnItem.itemIndex);
|
|
69
|
+
if (!column) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const isLabelColumn = column_service.isGroupingColumn(column);
|
|
73
|
+
const templateProps = {
|
|
74
|
+
prop: column.prop,
|
|
75
|
+
model,
|
|
76
|
+
data,
|
|
77
|
+
column,
|
|
78
|
+
rowIndex: itemIndex,
|
|
79
|
+
colIndex: columnItem.itemIndex,
|
|
80
|
+
colType: providers.colType,
|
|
81
|
+
type: providers.type,
|
|
82
|
+
value: column_service.getCellRaw(model, column),
|
|
83
|
+
providers,
|
|
84
|
+
columnItem,
|
|
85
|
+
rowItem,
|
|
86
|
+
group: {
|
|
87
|
+
name,
|
|
88
|
+
depth,
|
|
89
|
+
expanded,
|
|
90
|
+
prop: model[column_service.GROUP_COLUMN_PROP],
|
|
91
|
+
isLabelColumn,
|
|
92
|
+
canExpand: hasExpand,
|
|
93
|
+
onExpand,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
return (index.h("div", { key: columnItem.itemIndex, class: {
|
|
97
|
+
[dimension_helpers.CELL_CLASS]: true,
|
|
98
|
+
groupingCell: true,
|
|
99
|
+
groupingLabelCell: isLabelColumn,
|
|
100
|
+
}, [dimension_helpers.DATA_COL]: columnItem.itemIndex,
|
|
101
|
+
[dimension_helpers.DATA_ROW]: itemIndex, style: {
|
|
102
|
+
width: `${columnItem.size}px`,
|
|
103
|
+
transform: `translateX(${columnItem.start - renderOffset}px)`,
|
|
104
|
+
height: size ? `${size}px` : undefined,
|
|
105
|
+
} }, groupingCellRenderer(index.h, templateProps, additionalData)));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
58
108
|
const GroupingRowRenderer = (props) => {
|
|
59
|
-
const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;
|
|
109
|
+
const { model, itemIndex, hasExpand, groupingCustomRenderer, groupingCellRenderer, } = props;
|
|
60
110
|
const name = model[column_service.PSEUDO_GROUP_ITEM];
|
|
61
111
|
const expanded = model[column_service.GROUP_EXPANDED];
|
|
62
112
|
const depth = parseInt(model[column_service.GROUP_DEPTH], 10) || 0;
|
|
@@ -65,6 +115,9 @@ const GroupingRowRenderer = (props) => {
|
|
|
65
115
|
depth,
|
|
66
116
|
expanded,
|
|
67
117
|
};
|
|
118
|
+
if (groupingCellRenderer) {
|
|
119
|
+
return (index.h(RowRenderer, Object.assign({ index: props.index, size: props.size, start: props.start }, groupRowAttrs), renderGroupCells(props, { name, expanded, depth })));
|
|
120
|
+
}
|
|
68
121
|
if (groupingCustomRenderer) {
|
|
69
122
|
return (index.h(RowRenderer, Object.assign({}, props, groupRowAttrs), index.h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(index.h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
|
|
70
123
|
expanded,
|
|
@@ -72,7 +125,7 @@ const GroupingRowRenderer = (props) => {
|
|
|
72
125
|
}
|
|
73
126
|
return (index.h(RowRenderer, Object.assign({}, props, groupRowAttrs), hasExpand && [
|
|
74
127
|
index.h("button", { class: { [column_service.GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
|
|
75
|
-
name,
|
|
128
|
+
String(name),
|
|
76
129
|
]));
|
|
77
130
|
};
|
|
78
131
|
const expandSvgIconVNode = (expanded = false) => {
|
|
@@ -124,3 +177,4 @@ exports.RowRenderer = RowRenderer;
|
|
|
124
177
|
exports.SortingSign = SortingSign;
|
|
125
178
|
exports.expandEvent = expandEvent;
|
|
126
179
|
exports.expandSvgIconVNode = expandSvgIconVNode;
|
|
180
|
+
exports.renderGroupCells = renderGroupCells;
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var column_service = require('./column.service-
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
8
|
-
var viewport_store = require('./viewport.store-
|
|
9
|
-
var index$1 = require('./index-
|
|
6
|
+
var column_service = require('./column.service-CD70rNL2.js');
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
8
|
+
var viewport_store = require('./viewport.store-Ci8H1bI9.js');
|
|
9
|
+
var index$1 = require('./index-BF6JDcMr.js');
|
|
10
10
|
var index = require('./index-Dq8Xzj5l.js');
|
|
11
11
|
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
12
12
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
13
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
13
|
+
var headerCellRenderer = require('./header-cell-renderer-JXYFwayd.js');
|
|
14
14
|
|
|
15
15
|
function calculateRealSize({ count, originItemSize, sizes, }) {
|
|
16
16
|
const safeCount = Math.max(0, count);
|
|
@@ -2454,7 +2454,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2454
2454
|
* Initiated when need to reapply grouping
|
|
2455
2455
|
*/
|
|
2456
2456
|
doSourceUpdate(options) {
|
|
2457
|
-
var _a;
|
|
2457
|
+
var _a, _b;
|
|
2458
2458
|
/**
|
|
2459
2459
|
* Get source without grouping
|
|
2460
2460
|
* @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping
|
|
@@ -2466,10 +2466,11 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2466
2466
|
* Group again
|
|
2467
2467
|
* @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
|
|
2468
2468
|
*/
|
|
2469
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props)
|
|
2469
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) !== null && _b !== void 0 ? _b : [], expanded);
|
|
2470
2470
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
2471
|
+
const cellRenderer = options === null || options === void 0 ? void 0 : options.groupCellTemplate;
|
|
2471
2472
|
// setup source
|
|
2472
|
-
this.providers.data.setData(sourceWithGroups, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
2473
|
+
this.providers.data.setData(sourceWithGroups, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer, cellRenderer }, true);
|
|
2473
2474
|
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
|
|
2474
2475
|
}
|
|
2475
2476
|
/**
|
|
@@ -2478,17 +2479,21 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2478
2479
|
* If source came from other plugin
|
|
2479
2480
|
*/
|
|
2480
2481
|
onDataSet(data) {
|
|
2481
|
-
var _a, _b;
|
|
2482
|
+
var _a, _b, _c;
|
|
2482
2483
|
let preservedExpanded = {};
|
|
2483
2484
|
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.preserveGroupingOnUpdate) !== false) {
|
|
2484
2485
|
let { prevExpanded } = column_service.getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
|
|
2485
2486
|
preservedExpanded = prevExpanded;
|
|
2486
2487
|
}
|
|
2487
2488
|
const source = data.source.filter(s => !column_service.isGrouping(s));
|
|
2488
|
-
const options = Object.assign(Object.assign({},
|
|
2489
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props)
|
|
2489
|
+
const options = Object.assign(Object.assign({}, this.options), { prevExpanded: preservedExpanded });
|
|
2490
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, (_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.props) !== null && _c !== void 0 ? _c : [], options);
|
|
2490
2491
|
data.source = sourceWithGroups;
|
|
2491
|
-
this.providers.data.setGrouping({
|
|
2492
|
+
this.providers.data.setGrouping({
|
|
2493
|
+
depth,
|
|
2494
|
+
customRenderer: options.groupLabelTemplate,
|
|
2495
|
+
cellRenderer: options.groupCellTemplate,
|
|
2496
|
+
});
|
|
2492
2497
|
this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
|
|
2493
2498
|
}
|
|
2494
2499
|
/**
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
6
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Converts `value` to an integer.
|
|
@@ -436,8 +436,9 @@ const GROUP_EXPAND_BTN = `group-expand`;
|
|
|
436
436
|
const GROUP_EXPAND_EVENT = `groupexpandclick`;
|
|
437
437
|
const GROUPING_ROW_TYPE = 'rgRow';
|
|
438
438
|
|
|
439
|
-
function getGroupValueDefault(item, prop) {
|
|
440
|
-
|
|
439
|
+
function getGroupValueDefault(item, prop, emptyGroupValue) {
|
|
440
|
+
var _a;
|
|
441
|
+
return (_a = item[prop]) !== null && _a !== void 0 ? _a : emptyGroupValue;
|
|
441
442
|
}
|
|
442
443
|
function isDataRow(item) {
|
|
443
444
|
return item != null;
|
|
@@ -543,13 +544,15 @@ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, exp
|
|
|
543
544
|
* @param columnProps - ids of groups
|
|
544
545
|
* @param expanded - potentially expanded items if present
|
|
545
546
|
*/
|
|
546
|
-
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue =
|
|
547
|
+
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue, emptyGroupValue = '', }) {
|
|
547
548
|
const groupedItems = new Map();
|
|
548
549
|
array.forEach((item, originalIndex) => {
|
|
549
550
|
if (!isDataRow(item)) {
|
|
550
551
|
return;
|
|
551
552
|
}
|
|
552
|
-
const groupLevelValues = columnProps.map(groupId => getGroupValue
|
|
553
|
+
const groupLevelValues = columnProps.map(groupId => getGroupValue
|
|
554
|
+
? getGroupValue(item, groupId)
|
|
555
|
+
: getGroupValueDefault(item, groupId, emptyGroupValue));
|
|
553
556
|
const lastLevelValue = groupLevelValues.pop();
|
|
554
557
|
let currentGroupLevel = groupedItems;
|
|
555
558
|
groupLevelValues.forEach(value => {
|
|
@@ -3143,7 +3143,7 @@ class DataStore {
|
|
|
3143
3143
|
return this.dataStore;
|
|
3144
3144
|
}
|
|
3145
3145
|
constructor(type, storeData) {
|
|
3146
|
-
const store = (this.dataStore = createStore(Object.assign({ items: [], proxyItems: [], source: [], groupingDepth: 0, groups: {}, type, trimmed: {}, groupingCustomRenderer: undefined }, storeData)));
|
|
3146
|
+
const store = (this.dataStore = createStore(Object.assign({ items: [], proxyItems: [], source: [], groupingDepth: 0, groups: {}, type, trimmed: {}, groupingCustomRenderer: undefined, groupingCellRenderer: undefined }, storeData)));
|
|
3147
3147
|
store.use(proxyPlugin(store));
|
|
3148
3148
|
store.use(trimmedPlugin(store));
|
|
3149
3149
|
}
|
|
@@ -3183,6 +3183,7 @@ class DataStore {
|
|
|
3183
3183
|
// if groups are not provided, we will consider that there is only one group with all items
|
|
3184
3184
|
groups: grouping.groups,
|
|
3185
3185
|
groupingCustomRenderer: grouping.customRenderer,
|
|
3186
|
+
groupingCellRenderer: grouping.cellRenderer,
|
|
3186
3187
|
});
|
|
3187
3188
|
}
|
|
3188
3189
|
}
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var column_service = require('./column.service-
|
|
7
|
-
var column_drag_plugin = require('./column.drag.plugin-
|
|
8
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
9
|
-
var cellRenderer = require('./cell-renderer-
|
|
10
|
-
var index$1 = require('./index-
|
|
11
|
-
var textEditor = require('./text-editor-
|
|
12
|
-
var edit_utils = require('./edit.utils-
|
|
6
|
+
var column_service = require('./column.service-CD70rNL2.js');
|
|
7
|
+
var column_drag_plugin = require('./column.drag.plugin-DSiFObaj.js');
|
|
8
|
+
var headerCellRenderer = require('./header-cell-renderer-JXYFwayd.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-DnOCJ9ge.js');
|
|
10
|
+
var index$1 = require('./index-BF6JDcMr.js');
|
|
11
|
+
var textEditor = require('./text-editor-CvgloQdG.js');
|
|
12
|
+
var edit_utils = require('./edit.utils-DDxnq9lw.js');
|
|
13
13
|
var index = require('./index-Dq8Xzj5l.js');
|
|
14
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
15
|
-
var viewport_store = require('./viewport.store-
|
|
14
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
15
|
+
var viewport_store = require('./viewport.store-Ci8H1bI9.js');
|
|
16
16
|
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
17
17
|
require('./debounce-CcpHiH2p.js');
|
|
18
18
|
|
|
@@ -249,6 +249,7 @@ exports.GroupingRowRenderer = cellRenderer.GroupingRowRenderer;
|
|
|
249
249
|
exports.SortingSign = cellRenderer.SortingSign;
|
|
250
250
|
exports.expandEvent = cellRenderer.expandEvent;
|
|
251
251
|
exports.expandSvgIconVNode = cellRenderer.expandSvgIconVNode;
|
|
252
|
+
exports.renderGroupCells = cellRenderer.renderGroupCells;
|
|
252
253
|
exports.applyMixins = index$1.applyMixins;
|
|
253
254
|
exports.findPositionInArray = index$1.findPositionInArray;
|
|
254
255
|
exports.getScrollbarSize = index$1.getScrollbarSize;
|
|
@@ -4,17 +4,17 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var column_service = require('./column.service-
|
|
8
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
7
|
+
var column_service = require('./column.service-CD70rNL2.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
9
9
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
10
10
|
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
11
|
-
var column_drag_plugin = require('./column.drag.plugin-
|
|
12
|
-
var viewport_store = require('./viewport.store-
|
|
11
|
+
var column_drag_plugin = require('./column.drag.plugin-DSiFObaj.js');
|
|
12
|
+
var viewport_store = require('./viewport.store-Ci8H1bI9.js');
|
|
13
13
|
var theme_service = require('./theme.service-BgnxGIjK.js');
|
|
14
|
-
var index$1 = require('./index-
|
|
14
|
+
var index$1 = require('./index-BF6JDcMr.js');
|
|
15
15
|
var events = require('./events-DeLDyZlb.js');
|
|
16
16
|
require('./filter.button-C4xpvyyE.js');
|
|
17
|
-
require('./header-cell-renderer-
|
|
17
|
+
require('./header-cell-renderer-JXYFwayd.js');
|
|
18
18
|
|
|
19
19
|
class ColumnDataProvider {
|
|
20
20
|
get stores() {
|
|
@@ -219,8 +219,12 @@ class DataProvider {
|
|
|
219
219
|
const items = this.stores[type].store.get('items');
|
|
220
220
|
this.stores[type].setData({ items: [...items] });
|
|
221
221
|
}
|
|
222
|
-
setGrouping({ depth }, type = 'rgRow') {
|
|
223
|
-
this.stores[type].setData({
|
|
222
|
+
setGrouping({ depth, customRenderer, cellRenderer, }, type = 'rgRow') {
|
|
223
|
+
this.stores[type].setData({
|
|
224
|
+
groupingDepth: depth,
|
|
225
|
+
groupingCustomRenderer: customRenderer,
|
|
226
|
+
groupingCellRenderer: cellRenderer,
|
|
227
|
+
});
|
|
224
228
|
}
|
|
225
229
|
setTrimmed(trimmed, type = 'rgRow') {
|
|
226
230
|
const store = this.stores[type];
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
8
8
|
var events = require('./events-DeLDyZlb.js');
|
|
9
|
-
var column_service = require('./column.service-
|
|
10
|
-
var edit_utils = require('./edit.utils-
|
|
11
|
-
var index$1 = require('./index-
|
|
9
|
+
var column_service = require('./column.service-CD70rNL2.js');
|
|
10
|
+
var edit_utils = require('./edit.utils-DDxnq9lw.js');
|
|
11
|
+
var index$1 = require('./index-BF6JDcMr.js');
|
|
12
12
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
13
|
-
var viewport_store = require('./viewport.store-
|
|
13
|
+
var viewport_store = require('./viewport.store-Ci8H1bI9.js');
|
|
14
14
|
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
15
15
|
var throttle = require('./throttle-fV6BUmM7.js');
|
|
16
16
|
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
8
|
-
var textEditor = require('./text-editor-
|
|
9
|
-
var edit_utils = require('./edit.utils-
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
8
|
+
var textEditor = require('./text-editor-CvgloQdG.js');
|
|
9
|
+
var edit_utils = require('./edit.utils-DDxnq9lw.js');
|
|
10
10
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
11
|
-
require('./index-
|
|
11
|
+
require('./index-BF6JDcMr.js');
|
|
12
12
|
|
|
13
13
|
const Clipboard = class {
|
|
14
14
|
constructor(hostRef) {
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
|
-
var column_service = require('./column.service-
|
|
8
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
9
|
-
var cellRenderer = require('./cell-renderer-
|
|
7
|
+
var column_service = require('./column.service-CD70rNL2.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-DnOCJ9ge.js');
|
|
10
10
|
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
11
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
11
|
+
var headerCellRenderer = require('./header-cell-renderer-JXYFwayd.js');
|
|
12
12
|
var throttle = require('./throttle-fV6BUmM7.js');
|
|
13
13
|
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
14
14
|
require('./debounce-CcpHiH2p.js');
|
|
@@ -169,6 +169,7 @@ const RevogrData = class {
|
|
|
169
169
|
const rowsEls = [];
|
|
170
170
|
const depth = this.dataStore.get('groupingDepth');
|
|
171
171
|
const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');
|
|
172
|
+
const groupingCellRenderer = this.dataStore.get('groupingCellRenderer');
|
|
172
173
|
const groupDepth = this.columnService.hasGrouping ? depth : 0;
|
|
173
174
|
const rowRenderOffset = this.viewportRow.get('renderOffset') || 0;
|
|
174
175
|
const colRenderOffset = this.viewportCol.get('renderOffset') || 0;
|
|
@@ -177,6 +178,7 @@ const RevogrData = class {
|
|
|
177
178
|
// #region Grouping
|
|
178
179
|
if (column_service.isGrouping(dataItem)) {
|
|
179
180
|
const gmodel = Object.assign(Object.assign({}, rgRow), { start: rgRow.start - rowRenderOffset, index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
|
|
181
|
+
groupingCellRenderer, additionalData: this.additionalData,
|
|
180
182
|
// Only show expand button if grouping is enabled and not in row headers
|
|
181
183
|
hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders', columnItems: cols, providers: this.providers });
|
|
182
184
|
rowsEls.push(index.h(cellRenderer.GroupingRowRenderer, Object.assign({}, gmodel)));
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var edit_utils = require('./edit.utils-
|
|
7
|
-
var index = require('./index-
|
|
6
|
+
var edit_utils = require('./edit.utils-DDxnq9lw.js');
|
|
7
|
+
var index = require('./index-BF6JDcMr.js');
|
|
8
8
|
|
|
9
9
|
class TextEditor {
|
|
10
10
|
constructor(data, saveCallback) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
6
|
+
var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
|
|
7
7
|
|
|
8
8
|
const LETTER_BLOCK_SIZE = 10;
|
|
9
9
|
const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
|
|
@@ -101,6 +101,7 @@ export class RevogrData {
|
|
|
101
101
|
const rowsEls = [];
|
|
102
102
|
const depth = this.dataStore.get('groupingDepth');
|
|
103
103
|
const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');
|
|
104
|
+
const groupingCellRenderer = this.dataStore.get('groupingCellRenderer');
|
|
104
105
|
const groupDepth = this.columnService.hasGrouping ? depth : 0;
|
|
105
106
|
const rowRenderOffset = this.viewportRow.get('renderOffset') || 0;
|
|
106
107
|
const colRenderOffset = this.viewportCol.get('renderOffset') || 0;
|
|
@@ -109,6 +110,7 @@ export class RevogrData {
|
|
|
109
110
|
// #region Grouping
|
|
110
111
|
if (isGrouping(dataItem)) {
|
|
111
112
|
const gmodel = Object.assign(Object.assign({}, rgRow), { start: rgRow.start - rowRenderOffset, index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
|
|
113
|
+
groupingCellRenderer, additionalData: this.additionalData,
|
|
112
114
|
// Only show expand button if grouping is enabled and not in row headers
|
|
113
115
|
hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders', columnItems: cols, providers: this.providers });
|
|
114
116
|
rowsEls.push(h(GroupingRowRenderer, Object.assign({}, gmodel)));
|
|
@@ -1776,7 +1776,7 @@ export class RevoGridComponent {
|
|
|
1776
1776
|
"mutable": false,
|
|
1777
1777
|
"complexType": {
|
|
1778
1778
|
"original": "GroupingOptions",
|
|
1779
|
-
"resolved": "{ props?: ColumnProp[] | undefined; preserveGroupingOnUpdate?: boolean | undefined; groupLabelTemplate?: GroupLabelTemplateFunc | undefined; } & ExpandedOptions",
|
|
1779
|
+
"resolved": "{ props?: ColumnProp[] | undefined; preserveGroupingOnUpdate?: boolean | undefined; groupLabelTemplate?: GroupLabelTemplateFunc | undefined; groupCellTemplate?: GroupCellTemplateFunc | undefined; } & ExpandedOptions",
|
|
1780
1780
|
"references": {
|
|
1781
1781
|
"GroupingOptions": {
|
|
1782
1782
|
"location": "import",
|
|
@@ -126,7 +126,7 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
126
126
|
* Initiated when need to reapply grouping
|
|
127
127
|
*/
|
|
128
128
|
doSourceUpdate(options) {
|
|
129
|
-
var _a;
|
|
129
|
+
var _a, _b;
|
|
130
130
|
/**
|
|
131
131
|
* Get source without grouping
|
|
132
132
|
* @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping
|
|
@@ -138,10 +138,11 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
138
138
|
* Group again
|
|
139
139
|
* @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
|
|
140
140
|
*/
|
|
141
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props)
|
|
141
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) !== null && _b !== void 0 ? _b : [], expanded);
|
|
142
142
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
143
|
+
const cellRenderer = options === null || options === void 0 ? void 0 : options.groupCellTemplate;
|
|
143
144
|
// setup source
|
|
144
|
-
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
145
|
+
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer, cellRenderer }, true);
|
|
145
146
|
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
|
|
146
147
|
}
|
|
147
148
|
/**
|
|
@@ -150,17 +151,21 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
150
151
|
* If source came from other plugin
|
|
151
152
|
*/
|
|
152
153
|
onDataSet(data) {
|
|
153
|
-
var _a, _b;
|
|
154
|
+
var _a, _b, _c;
|
|
154
155
|
let preservedExpanded = {};
|
|
155
156
|
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.preserveGroupingOnUpdate) !== false) {
|
|
156
157
|
let { prevExpanded } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
|
|
157
158
|
preservedExpanded = prevExpanded;
|
|
158
159
|
}
|
|
159
160
|
const source = data.source.filter(s => !isGrouping(s));
|
|
160
|
-
const options = Object.assign(Object.assign({},
|
|
161
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props)
|
|
161
|
+
const options = Object.assign(Object.assign({}, this.options), { prevExpanded: preservedExpanded });
|
|
162
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, (_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.props) !== null && _c !== void 0 ? _c : [], options);
|
|
162
163
|
data.source = sourceWithGroups;
|
|
163
|
-
this.providers.data.setGrouping({
|
|
164
|
+
this.providers.data.setGrouping({
|
|
165
|
+
depth,
|
|
166
|
+
customRenderer: options.groupLabelTemplate,
|
|
167
|
+
cellRenderer: options.groupCellTemplate,
|
|
168
|
+
});
|
|
164
169
|
this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
|
|
165
170
|
}
|
|
166
171
|
/**
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { h } from "@stencil/core";
|
|
5
5
|
import RowRenderer from "../../components/data/row-renderer";
|
|
6
|
-
import { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, PSEUDO_GROUP_ITEM, GROUP_EXPAND_EVENT, } from "./grouping.const";
|
|
6
|
+
import { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, PSEUDO_GROUP_ITEM, GROUP_EXPAND_EVENT, GROUP_COLUMN_PROP, } from "./grouping.const";
|
|
7
|
+
import { getSourceItem } from "../../store/index";
|
|
8
|
+
import { CELL_CLASS, DATA_COL, DATA_ROW, getCellRaw } from "../../utils";
|
|
9
|
+
import { isGroupingColumn } from "./grouping.service";
|
|
7
10
|
export function expandEvent(e, model, virtualIndex) {
|
|
8
11
|
var _a;
|
|
9
12
|
const event = new CustomEvent(GROUP_EXPAND_EVENT, {
|
|
@@ -16,8 +19,58 @@ export function expandEvent(e, model, virtualIndex) {
|
|
|
16
19
|
});
|
|
17
20
|
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
|
|
18
21
|
}
|
|
22
|
+
export function renderGroupCells(props, { name, expanded, depth, }) {
|
|
23
|
+
const { additionalData, columnItems, groupingCellRenderer, hasExpand, itemIndex, model, providers, size, start, end, } = props;
|
|
24
|
+
if (!groupingCellRenderer) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const renderOffset = providers.viewport.get('renderOffset') || 0;
|
|
28
|
+
const data = providers.data.get('source');
|
|
29
|
+
const rowItem = { itemIndex, size, start, end };
|
|
30
|
+
const onExpand = (event) => expandEvent(event, model, itemIndex);
|
|
31
|
+
return columnItems.map(columnItem => {
|
|
32
|
+
const column = getSourceItem(providers.columns, columnItem.itemIndex);
|
|
33
|
+
if (!column) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const isLabelColumn = isGroupingColumn(column);
|
|
37
|
+
const templateProps = {
|
|
38
|
+
prop: column.prop,
|
|
39
|
+
model,
|
|
40
|
+
data,
|
|
41
|
+
column,
|
|
42
|
+
rowIndex: itemIndex,
|
|
43
|
+
colIndex: columnItem.itemIndex,
|
|
44
|
+
colType: providers.colType,
|
|
45
|
+
type: providers.type,
|
|
46
|
+
value: getCellRaw(model, column),
|
|
47
|
+
providers,
|
|
48
|
+
columnItem,
|
|
49
|
+
rowItem,
|
|
50
|
+
group: {
|
|
51
|
+
name,
|
|
52
|
+
depth,
|
|
53
|
+
expanded,
|
|
54
|
+
prop: model[GROUP_COLUMN_PROP],
|
|
55
|
+
isLabelColumn,
|
|
56
|
+
canExpand: hasExpand,
|
|
57
|
+
onExpand,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
return (h("div", { key: columnItem.itemIndex, class: {
|
|
61
|
+
[CELL_CLASS]: true,
|
|
62
|
+
groupingCell: true,
|
|
63
|
+
groupingLabelCell: isLabelColumn,
|
|
64
|
+
}, [DATA_COL]: columnItem.itemIndex,
|
|
65
|
+
[DATA_ROW]: itemIndex, style: {
|
|
66
|
+
width: `${columnItem.size}px`,
|
|
67
|
+
transform: `translateX(${columnItem.start - renderOffset}px)`,
|
|
68
|
+
height: size ? `${size}px` : undefined,
|
|
69
|
+
} }, groupingCellRenderer(h, templateProps, additionalData)));
|
|
70
|
+
});
|
|
71
|
+
}
|
|
19
72
|
export const GroupingRowRenderer = (props) => {
|
|
20
|
-
const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;
|
|
73
|
+
const { model, itemIndex, hasExpand, groupingCustomRenderer, groupingCellRenderer, } = props;
|
|
21
74
|
const name = model[PSEUDO_GROUP_ITEM];
|
|
22
75
|
const expanded = model[GROUP_EXPANDED];
|
|
23
76
|
const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
|
|
@@ -26,6 +79,9 @@ export const GroupingRowRenderer = (props) => {
|
|
|
26
79
|
depth,
|
|
27
80
|
expanded,
|
|
28
81
|
};
|
|
82
|
+
if (groupingCellRenderer) {
|
|
83
|
+
return (h(RowRenderer, Object.assign({ index: props.index, size: props.size, start: props.start }, groupRowAttrs), renderGroupCells(props, { name, expanded, depth })));
|
|
84
|
+
}
|
|
29
85
|
if (groupingCustomRenderer) {
|
|
30
86
|
return (h(RowRenderer, Object.assign({}, props, groupRowAttrs), h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
|
|
31
87
|
expanded,
|
|
@@ -33,7 +89,7 @@ export const GroupingRowRenderer = (props) => {
|
|
|
33
89
|
}
|
|
34
90
|
return (h(RowRenderer, Object.assign({}, props, groupRowAttrs), hasExpand && [
|
|
35
91
|
h("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
|
|
36
|
-
name,
|
|
92
|
+
String(name),
|
|
37
93
|
]));
|
|
38
94
|
};
|
|
39
95
|
export const expandSvgIconVNode = (expanded = false) => {
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { GROUP_DEPTH, GROUP_EXPANDED, PSEUDO_GROUP_COLUMN, PSEUDO_GROUP_ITEM, PSEUDO_GROUP_ITEM_ID, PSEUDO_GROUP_ITEM_VALUE, GROUP_ORIGINAL_INDEX, GROUP_COLUMN_PROP, } from "./grouping.const";
|
|
5
|
-
function getGroupValueDefault(item, prop) {
|
|
6
|
-
|
|
5
|
+
function getGroupValueDefault(item, prop, emptyGroupValue) {
|
|
6
|
+
var _a;
|
|
7
|
+
return (_a = item[prop]) !== null && _a !== void 0 ? _a : emptyGroupValue;
|
|
7
8
|
}
|
|
8
9
|
function isDataRow(item) {
|
|
9
10
|
return item != null;
|
|
@@ -109,13 +110,15 @@ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, exp
|
|
|
109
110
|
* @param columnProps - ids of groups
|
|
110
111
|
* @param expanded - potentially expanded items if present
|
|
111
112
|
*/
|
|
112
|
-
export function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue =
|
|
113
|
+
export function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue, emptyGroupValue = '', }) {
|
|
113
114
|
const groupedItems = new Map();
|
|
114
115
|
array.forEach((item, originalIndex) => {
|
|
115
116
|
if (!isDataRow(item)) {
|
|
116
117
|
return;
|
|
117
118
|
}
|
|
118
|
-
const groupLevelValues = columnProps.map(groupId => getGroupValue
|
|
119
|
+
const groupLevelValues = columnProps.map(groupId => getGroupValue
|
|
120
|
+
? getGroupValue(item, groupId)
|
|
121
|
+
: getGroupValueDefault(item, groupId, emptyGroupValue));
|
|
119
122
|
const lastLevelValue = groupLevelValues.pop();
|
|
120
123
|
let currentGroupLevel = groupedItems;
|
|
121
124
|
groupLevelValues.forEach(value => {
|
|
@@ -93,8 +93,12 @@ export class DataProvider {
|
|
|
93
93
|
const items = this.stores[type].store.get('items');
|
|
94
94
|
this.stores[type].setData({ items: [...items] });
|
|
95
95
|
}
|
|
96
|
-
setGrouping({ depth }, type = 'rgRow') {
|
|
97
|
-
this.stores[type].setData({
|
|
96
|
+
setGrouping({ depth, customRenderer, cellRenderer, }, type = 'rgRow') {
|
|
97
|
+
this.stores[type].setData({
|
|
98
|
+
groupingDepth: depth,
|
|
99
|
+
groupingCustomRenderer: customRenderer,
|
|
100
|
+
groupingCellRenderer: cellRenderer,
|
|
101
|
+
});
|
|
98
102
|
}
|
|
99
103
|
setTrimmed(trimmed, type = 'rgRow') {
|
|
100
104
|
const store = this.stores[type];
|