@revolist/revogrid 4.21.4 → 4.21.6
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-BLcxDHzP.js → cell-renderer-DW8i7ULg.js} +2 -2
- package/dist/cjs/{column.drag.plugin-DfTAC5Qc.js → column.drag.plugin-BWX5_5iT.js} +107 -28
- package/dist/cjs/{column.service-BmT2HOnj.js → column.service-DvQDqxxx.js} +1 -1
- package/dist/cjs/{dimension.helpers-BOxHtX5T.js → dimension.helpers-CaIsYC99.js} +1 -1
- package/dist/cjs/{edit.utils-DnvQVP4H.js → edit.utils-CwMzSIVF.js} +1 -1
- package/dist/cjs/{header-cell-renderer-7DgGThjq.js → header-cell-renderer-B1dJwgTO.js} +1 -1
- package/dist/cjs/index.cjs.js +12 -8
- package/dist/cjs/revo-grid.cjs.entry.js +5 -5
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +5 -5
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +3 -3
- package/dist/cjs/revogr-data_4.cjs.entry.js +5 -5
- package/dist/cjs/{text-editor-B9ibcdrl.js → text-editor-BTnGaIl3.js} +2 -2
- package/dist/cjs/{throttle-DkuCcmB0.js → throttle-CI4MsAqs.js} +1 -1
- package/dist/cjs/{viewport.store-DG-4bWqg.js → viewport.store-Dcjud-a-.js} +1 -1
- package/dist/collection/plugins/column.auto-size.plugin.js +11 -2
- package/dist/collection/plugins/filter/filter.plugin.js +2 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +21 -11
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +81 -12
- package/dist/{revo-grid/cell-renderer-BNeaYjy6.js → esm/cell-renderer-CqVunVBY.js} +2 -2
- package/dist/esm/{column.drag.plugin-C9lvlTfl.js → column.drag.plugin-6YvuxWof.js} +108 -29
- package/dist/esm/{column.service-8pPNyrKn.js → column.service-Cdz3dYqZ.js} +1 -1
- package/dist/{revo-grid/dimension.helpers-B-5OBYes.js → esm/dimension.helpers-DzxqJQqN.js} +1 -1
- package/dist/esm/{edit.utils-CQjRmx5n.js → edit.utils-CzfeG98N.js} +1 -1
- package/dist/{revo-grid/header-cell-renderer-WkTbrmr7.js → esm/header-cell-renderer-DXhxZMly.js} +1 -1
- package/dist/esm/index.js +9 -9
- package/dist/esm/revo-grid.entry.js +5 -5
- package/dist/esm/revogr-attribution_7.entry.js +5 -5
- package/dist/esm/revogr-clipboard_3.entry.js +3 -3
- package/dist/esm/revogr-data_4.entry.js +5 -5
- package/dist/{revo-grid/text-editor-DZSx2pWr.js → esm/text-editor-C1ks5eQ4.js} +2 -2
- package/dist/esm/{throttle-CYM0qC3v.js → throttle-BEjFQa2l.js} +1 -1
- package/dist/{revo-grid/viewport.store-BGWR3XfI.js → esm/viewport.store-saAZJHRo.js} +1 -1
- package/dist/{esm/cell-renderer-BNeaYjy6.js → revo-grid/cell-renderer-CqVunVBY.js} +2 -2
- package/dist/revo-grid/{column.drag.plugin-C9lvlTfl.js → column.drag.plugin-6YvuxWof.js} +108 -29
- package/dist/revo-grid/{column.service-8pPNyrKn.js → column.service-Cdz3dYqZ.js} +1 -1
- package/dist/{esm/dimension.helpers-B-5OBYes.js → revo-grid/dimension.helpers-DzxqJQqN.js} +1 -1
- package/dist/revo-grid/{edit.utils-CQjRmx5n.js → edit.utils-CzfeG98N.js} +1 -1
- package/dist/{esm/header-cell-renderer-WkTbrmr7.js → revo-grid/header-cell-renderer-DXhxZMly.js} +1 -1
- package/dist/revo-grid/index.esm.js +9 -9
- package/dist/revo-grid/revo-grid.entry.js +5 -5
- package/dist/revo-grid/revogr-attribution_7.entry.js +5 -5
- package/dist/revo-grid/revogr-clipboard_3.entry.js +3 -3
- package/dist/revo-grid/revogr-data_4.entry.js +5 -5
- package/dist/{esm/text-editor-DZSx2pWr.js → revo-grid/text-editor-C1ks5eQ4.js} +2 -2
- package/dist/revo-grid/{throttle-CYM0qC3v.js → throttle-BEjFQa2l.js} +1 -1
- package/dist/{esm/viewport.store-BGWR3XfI.js → revo-grid/viewport.store-saAZJHRo.js} +1 -1
- package/dist/types/plugins/column.auto-size.plugin.d.ts +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -0
- package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +18 -0
- package/hydrate/index.js +104 -25
- package/hydrate/index.mjs +104 -25
- package/package.json +4 -3
- package/standalone/index.js +1 -1
- package/standalone/revo-grid.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-CaIsYC99.js');
|
|
8
|
+
var column_service = require('./column.service-DvQDqxxx.js');
|
|
9
9
|
|
|
10
10
|
const SortingSign = ({ column }) => {
|
|
11
11
|
var _a;
|
|
@@ -3,13 +3,13 @@
|
|
|
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-
|
|
6
|
+
var column_service = require('./column.service-DvQDqxxx.js');
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
|
|
8
|
+
var viewport_store = require('./viewport.store-Dcjud-a-.js');
|
|
9
9
|
var index = require('./index-Dq8Xzj5l.js');
|
|
10
10
|
var filter_button = require('./filter.button-w6LWnyhi.js');
|
|
11
11
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
12
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
12
|
+
var headerCellRenderer = require('./header-cell-renderer-B1dJwgTO.js');
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Plugin which recalculates realSize on changes of sizes, originItemSize and count
|
|
@@ -444,6 +444,15 @@ function forEach(collection, iteratee) {
|
|
|
444
444
|
* Add support for automatic column resize
|
|
445
445
|
*/
|
|
446
446
|
const LETTER_BLOCK_SIZE = 7;
|
|
447
|
+
exports.ColumnAutoSizeMode = void 0;
|
|
448
|
+
(function (ColumnAutoSizeMode) {
|
|
449
|
+
// increases column width on header click according the largest text value
|
|
450
|
+
ColumnAutoSizeMode["headerClickAutosize"] = "headerClickAutoSize";
|
|
451
|
+
// increases column width on data set and text edit, decreases performance
|
|
452
|
+
ColumnAutoSizeMode["autoSizeOnTextOverlap"] = "autoSizeOnTextOverlap";
|
|
453
|
+
// increases and decreases column width based on all items sizes, worst for performance
|
|
454
|
+
ColumnAutoSizeMode["autoSizeAll"] = "autoSizeAll";
|
|
455
|
+
})(exports.ColumnAutoSizeMode || (exports.ColumnAutoSizeMode = {}));
|
|
447
456
|
class AutoSizeColumnPlugin extends BasePlugin {
|
|
448
457
|
constructor(revogrid, providers, config) {
|
|
449
458
|
super(revogrid, providers);
|
|
@@ -467,13 +476,13 @@ class AutoSizeColumnPlugin extends BasePlugin {
|
|
|
467
476
|
};
|
|
468
477
|
this.addEventListener('beforecolumnsset', beforecolumnsset);
|
|
469
478
|
switch (config === null || config === void 0 ? void 0 : config.mode) {
|
|
470
|
-
case
|
|
479
|
+
case exports.ColumnAutoSizeMode.autoSizeOnTextOverlap:
|
|
471
480
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
472
481
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
473
482
|
this.afteredit(detail);
|
|
474
483
|
});
|
|
475
484
|
break;
|
|
476
|
-
case
|
|
485
|
+
case exports.ColumnAutoSizeMode.autoSizeAll:
|
|
477
486
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
478
487
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
479
488
|
this.afterEditAll(detail);
|
|
@@ -1279,6 +1288,7 @@ class FilterPlugin extends BasePlugin {
|
|
|
1279
1288
|
if (Object.keys(this.multiFilterItems).length === 0) {
|
|
1280
1289
|
return;
|
|
1281
1290
|
}
|
|
1291
|
+
await dimension_helpers.timeout();
|
|
1282
1292
|
await this.runFiltering(this.multiFilterItems);
|
|
1283
1293
|
};
|
|
1284
1294
|
this.addEventListener('headerclick', e => this.headerclick(e));
|
|
@@ -2103,6 +2113,23 @@ function doExpand(vIndex, source, rowItemsIndexes) {
|
|
|
2103
2113
|
}
|
|
2104
2114
|
|
|
2105
2115
|
const TRIMMED_GROUPING = 'grouping';
|
|
2116
|
+
/**
|
|
2117
|
+
* Converts a trim row index through the index maps produced while regrouping.
|
|
2118
|
+
*
|
|
2119
|
+
* Group rows are synthetic, so they may not exist in the first map. When a
|
|
2120
|
+
* second map is available, fall back to the original index so trims created
|
|
2121
|
+
* against the grouped physical source can still be remapped. If neither path
|
|
2122
|
+
* resolves to a number, the caller drops the stale trim entry.
|
|
2123
|
+
*/
|
|
2124
|
+
function convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap) {
|
|
2125
|
+
const sourceIndex = Number.parseInt(initialIndex, 10);
|
|
2126
|
+
const firstConversionIndex = firstLevelMap[sourceIndex];
|
|
2127
|
+
if (!secondLevelMap) {
|
|
2128
|
+
return firstConversionIndex;
|
|
2129
|
+
}
|
|
2130
|
+
const secondConversionKey = typeof firstConversionIndex === 'number' ? firstConversionIndex : sourceIndex;
|
|
2131
|
+
return secondLevelMap[secondConversionKey];
|
|
2132
|
+
}
|
|
2106
2133
|
/**
|
|
2107
2134
|
* Prepare trimming updated indexes for grouping
|
|
2108
2135
|
* @param initiallyTrimed
|
|
@@ -2121,31 +2148,73 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
|
|
|
2121
2148
|
const items = initiallyTrimed[type];
|
|
2122
2149
|
const newItems = {};
|
|
2123
2150
|
for (let initialIndex in items) {
|
|
2151
|
+
if (!items[initialIndex]) {
|
|
2152
|
+
continue;
|
|
2153
|
+
}
|
|
2124
2154
|
/**
|
|
2125
2155
|
* if item exists we find it in collection
|
|
2126
2156
|
* we support 2 level of conversions
|
|
2127
2157
|
*/
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2158
|
+
const newConversionIndex = convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap);
|
|
2159
|
+
// Group rows do not exist in the ungrouped index map and must not leak into new trims.
|
|
2160
|
+
if (typeof newConversionIndex !== 'number') {
|
|
2161
|
+
continue;
|
|
2131
2162
|
}
|
|
2132
2163
|
/**
|
|
2133
2164
|
* if item was trimmed previously
|
|
2134
2165
|
* trimming makes sense to apply
|
|
2135
2166
|
*/
|
|
2136
|
-
|
|
2137
|
-
newItems[newConversionIndex] = true;
|
|
2138
|
-
/**
|
|
2139
|
-
* If changes present apply changes to new source
|
|
2140
|
-
*/
|
|
2141
|
-
if (newConversionIndex !== parseInt(initialIndex, 10)) {
|
|
2142
|
-
trimemedOptionsToUpgrade[type] = newItems;
|
|
2143
|
-
}
|
|
2144
|
-
}
|
|
2167
|
+
newItems[newConversionIndex] = true;
|
|
2145
2168
|
}
|
|
2169
|
+
trimemedOptionsToUpgrade[type] = newItems;
|
|
2146
2170
|
}
|
|
2147
2171
|
return trimemedOptionsToUpgrade;
|
|
2148
2172
|
}
|
|
2173
|
+
function hasVisibleGroupItems(source, trimmed, groupIndex) {
|
|
2174
|
+
var _a;
|
|
2175
|
+
const depth = (_a = source[groupIndex]) === null || _a === void 0 ? void 0 : _a[column_service.GROUP_DEPTH];
|
|
2176
|
+
if (depth == null) {
|
|
2177
|
+
return false;
|
|
2178
|
+
}
|
|
2179
|
+
// A group is visible when at least one descendant data row survives filtering.
|
|
2180
|
+
for (let i = groupIndex + 1; i < source.length; i++) {
|
|
2181
|
+
const model = source[i];
|
|
2182
|
+
if (column_service.isGrouping(model)) {
|
|
2183
|
+
if (model[column_service.GROUP_DEPTH] <= depth) {
|
|
2184
|
+
break;
|
|
2185
|
+
}
|
|
2186
|
+
continue;
|
|
2187
|
+
}
|
|
2188
|
+
if (!trimmed[i]) {
|
|
2189
|
+
return true;
|
|
2190
|
+
}
|
|
2191
|
+
}
|
|
2192
|
+
return false;
|
|
2193
|
+
}
|
|
2194
|
+
/**
|
|
2195
|
+
* Preserves data-row filter results and recalculates group-row visibility
|
|
2196
|
+
* from the filtered state of each group's descendant data rows.
|
|
2197
|
+
*
|
|
2198
|
+
* @param source - Grouped row source that contains group rows and data rows.
|
|
2199
|
+
* @param filterTrimmed - Current filter trim map keyed by physical row index.
|
|
2200
|
+
* @returns Filter trim map with empty group rows hidden and matching group rows visible.
|
|
2201
|
+
*/
|
|
2202
|
+
function filterOutEmptyGroupRows(source, filterTrimmed) {
|
|
2203
|
+
const trimmed = Object.assign({}, filterTrimmed);
|
|
2204
|
+
// Recalculate only group rows; data-row filter results are preserved as-is.
|
|
2205
|
+
source.forEach((model, index) => {
|
|
2206
|
+
if (!column_service.isGrouping(model)) {
|
|
2207
|
+
return;
|
|
2208
|
+
}
|
|
2209
|
+
if (hasVisibleGroupItems(source, trimmed, index)) {
|
|
2210
|
+
delete trimmed[index];
|
|
2211
|
+
}
|
|
2212
|
+
else {
|
|
2213
|
+
trimmed[index] = true;
|
|
2214
|
+
}
|
|
2215
|
+
});
|
|
2216
|
+
return trimmed;
|
|
2217
|
+
}
|
|
2149
2218
|
|
|
2150
2219
|
class GroupingRowPlugin extends BasePlugin {
|
|
2151
2220
|
getStore(type = column_service.GROUPING_ROW_TYPE) {
|
|
@@ -2214,16 +2283,18 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2214
2283
|
}
|
|
2215
2284
|
}
|
|
2216
2285
|
beforeTrimmedApply(trimmed, type) {
|
|
2217
|
-
/**
|
|
2286
|
+
/** Filter trim must keep group headers in sync with their visible children. */
|
|
2218
2287
|
if (type === FILTER_TRIMMED_TYPE) {
|
|
2219
2288
|
const source = this.getStore().get('source');
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
}
|
|
2224
|
-
}
|
|
2289
|
+
const updatedTrimmed = filterOutEmptyGroupRows(source, trimmed);
|
|
2290
|
+
Object.keys(trimmed).forEach(index => delete trimmed[Number.parseInt(index, 10)]);
|
|
2291
|
+
Object.assign(trimmed, updatedTrimmed);
|
|
2225
2292
|
}
|
|
2226
2293
|
}
|
|
2294
|
+
beforeFilterTrimmed(trimmed) {
|
|
2295
|
+
const source = this.getStore().get('source');
|
|
2296
|
+
return filterOutEmptyGroupRows(source, trimmed);
|
|
2297
|
+
}
|
|
2227
2298
|
isSortingRunning() {
|
|
2228
2299
|
const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
|
|
2229
2300
|
return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
|
|
@@ -2249,7 +2320,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2249
2320
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
2250
2321
|
// setup source
|
|
2251
2322
|
this.providers.data.setData(sourceWithGroups, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
2252
|
-
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
2323
|
+
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
|
|
2253
2324
|
}
|
|
2254
2325
|
/**
|
|
2255
2326
|
* Apply grouping on data set
|
|
@@ -2268,7 +2339,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2268
2339
|
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = column_service.gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
|
|
2269
2340
|
data.source = sourceWithGroups;
|
|
2270
2341
|
this.providers.data.setGrouping({ depth });
|
|
2271
|
-
this.updateTrimmed(trimmed, oldNewIndexMap);
|
|
2342
|
+
this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
|
|
2272
2343
|
}
|
|
2273
2344
|
/**
|
|
2274
2345
|
* External call to apply grouping. Called by revogrid when prop changed.
|
|
@@ -2317,6 +2388,10 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2317
2388
|
* based on new results can be new grouping
|
|
2318
2389
|
*/
|
|
2319
2390
|
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
2391
|
+
/** Filter plugin owns data-row matching; grouping decides which headers remain visible. */
|
|
2392
|
+
this.addEventListener('beforefiltertrimmed', ({ detail }) => {
|
|
2393
|
+
detail.itemsToFilter = this.beforeFilterTrimmed(detail.itemsToFilter);
|
|
2394
|
+
});
|
|
2320
2395
|
/**
|
|
2321
2396
|
* sorting applied need to clear grouping and apply again
|
|
2322
2397
|
* based on new results whole grouping order will changed
|
|
@@ -2362,12 +2437,16 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
2362
2437
|
// clear rows
|
|
2363
2438
|
const { source, oldNewIndexes } = column_service.getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
|
|
2364
2439
|
this.providers.data.setData(source, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
2365
|
-
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
2440
|
+
this.updateTrimmed(undefined, undefined, oldNewIndexes, source);
|
|
2366
2441
|
}
|
|
2367
|
-
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
2442
|
+
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap, source = this.getStore().get('source')) {
|
|
2368
2443
|
// map previously trimmed data
|
|
2369
2444
|
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
|
|
2370
2445
|
for (let type in trimemedOptionsToUpgrade) {
|
|
2446
|
+
if (type === FILTER_TRIMMED_TYPE) {
|
|
2447
|
+
/** Regrouping changes physical indexes, so filter trim needs fresh group-header state. */
|
|
2448
|
+
trimemedOptionsToUpgrade[type] = filterOutEmptyGroupRows(source, trimemedOptionsToUpgrade[type]);
|
|
2449
|
+
}
|
|
2371
2450
|
this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
|
|
2372
2451
|
}
|
|
2373
2452
|
// const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
|
|
@@ -774,7 +774,7 @@ function setCacheAdd(value) {
|
|
|
774
774
|
* @name has
|
|
775
775
|
* @memberOf SetCache
|
|
776
776
|
* @param {*} value The value to search for.
|
|
777
|
-
* @returns {
|
|
777
|
+
* @returns {boolean} Returns `true` if `value` is found, else `false`.
|
|
778
778
|
*/
|
|
779
779
|
function setCacheHas(value) {
|
|
780
780
|
return this.__data__.has(value);
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
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 dimension_helpers = require('./dimension.helpers-
|
|
11
|
-
var textEditor = require('./text-editor-
|
|
12
|
-
var edit_utils = require('./edit.utils-
|
|
6
|
+
var column_service = require('./column.service-DvQDqxxx.js');
|
|
7
|
+
var column_drag_plugin = require('./column.drag.plugin-BWX5_5iT.js');
|
|
8
|
+
var headerCellRenderer = require('./header-cell-renderer-B1dJwgTO.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-DW8i7ULg.js');
|
|
10
|
+
var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
|
|
11
|
+
var textEditor = require('./text-editor-BTnGaIl3.js');
|
|
12
|
+
var edit_utils = require('./edit.utils-CwMzSIVF.js');
|
|
13
13
|
var index = require('./index-Dq8Xzj5l.js');
|
|
14
|
-
var viewport_store = require('./viewport.store-
|
|
14
|
+
var viewport_store = require('./viewport.store-Dcjud-a-.js');
|
|
15
15
|
var filter_button = require('./filter.button-w6LWnyhi.js');
|
|
16
16
|
require('./debounce-CcpHiH2p.js');
|
|
17
17
|
|
|
@@ -201,6 +201,10 @@ exports.nextCell = column_service.nextCell;
|
|
|
201
201
|
exports.rowTypes = column_service.rowTypes;
|
|
202
202
|
exports.AutoSizeColumnPlugin = column_drag_plugin.AutoSizeColumnPlugin;
|
|
203
203
|
exports.BasePlugin = column_drag_plugin.BasePlugin;
|
|
204
|
+
Object.defineProperty(exports, "ColumnAutoSizeMode", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function () { return column_drag_plugin.ColumnAutoSizeMode; }
|
|
207
|
+
});
|
|
204
208
|
exports.ColumnMovePlugin = column_drag_plugin.ColumnMovePlugin;
|
|
205
209
|
exports.DimensionStore = column_drag_plugin.DimensionStore;
|
|
206
210
|
exports.ExportCsv = column_drag_plugin.ExportCsv;
|
|
@@ -4,16 +4,16 @@
|
|
|
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-DvQDqxxx.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
|
|
9
9
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
10
|
-
var column_drag_plugin = require('./column.drag.plugin-
|
|
11
|
-
var viewport_store = require('./viewport.store-
|
|
10
|
+
var column_drag_plugin = require('./column.drag.plugin-BWX5_5iT.js');
|
|
11
|
+
var viewport_store = require('./viewport.store-Dcjud-a-.js');
|
|
12
12
|
var theme_service = require('./theme.service-BgnxGIjK.js');
|
|
13
13
|
var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
|
|
14
14
|
var events = require('./events-DeLDyZlb.js');
|
|
15
15
|
require('./filter.button-w6LWnyhi.js');
|
|
16
|
-
require('./header-cell-renderer-
|
|
16
|
+
require('./header-cell-renderer-B1dJwgTO.js');
|
|
17
17
|
|
|
18
18
|
class ColumnDataProvider {
|
|
19
19
|
get stores() {
|
|
@@ -4,14 +4,14 @@
|
|
|
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-CaIsYC99.js');
|
|
8
8
|
var events = require('./events-DeLDyZlb.js');
|
|
9
|
-
var column_service = require('./column.service-
|
|
10
|
-
var edit_utils = require('./edit.utils-
|
|
9
|
+
var column_service = require('./column.service-DvQDqxxx.js');
|
|
10
|
+
var edit_utils = require('./edit.utils-CwMzSIVF.js');
|
|
11
11
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
12
|
-
var viewport_store = require('./viewport.store-
|
|
12
|
+
var viewport_store = require('./viewport.store-Dcjud-a-.js');
|
|
13
13
|
var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
|
|
14
|
-
var throttle = require('./throttle-
|
|
14
|
+
var throttle = require('./throttle-CI4MsAqs.js');
|
|
15
15
|
|
|
16
16
|
const Attribution = class {
|
|
17
17
|
constructor(hostRef) {
|
|
@@ -4,9 +4,9 @@
|
|
|
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-CaIsYC99.js');
|
|
8
|
+
var textEditor = require('./text-editor-BTnGaIl3.js');
|
|
9
|
+
var edit_utils = require('./edit.utils-CwMzSIVF.js');
|
|
10
10
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
11
11
|
|
|
12
12
|
const Clipboard = class {
|
|
@@ -4,12 +4,12 @@
|
|
|
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-DvQDqxxx.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-DW8i7ULg.js');
|
|
10
10
|
var filter_button = require('./filter.button-w6LWnyhi.js');
|
|
11
|
-
var headerCellRenderer = require('./header-cell-renderer-
|
|
12
|
-
var throttle = require('./throttle-
|
|
11
|
+
var headerCellRenderer = require('./header-cell-renderer-B1dJwgTO.js');
|
|
12
|
+
var throttle = require('./throttle-CI4MsAqs.js');
|
|
13
13
|
var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
|
|
14
14
|
require('./debounce-CcpHiH2p.js');
|
|
15
15
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var edit_utils = require('./edit.utils-
|
|
7
|
-
var dimension_helpers = require('./dimension.helpers-
|
|
6
|
+
var edit_utils = require('./edit.utils-CwMzSIVF.js');
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CaIsYC99.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-CaIsYC99.js');
|
|
7
7
|
|
|
8
8
|
const LETTER_BLOCK_SIZE = 10;
|
|
9
9
|
const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
|
|
@@ -11,6 +11,15 @@ import { BasePlugin } from "./base.plugin";
|
|
|
11
11
|
import { getSourceItem, columnTypes } from "../store/index";
|
|
12
12
|
import { getColumnType } from "../utils/column.utils";
|
|
13
13
|
const LETTER_BLOCK_SIZE = 7;
|
|
14
|
+
export var ColumnAutoSizeMode;
|
|
15
|
+
(function (ColumnAutoSizeMode) {
|
|
16
|
+
// increases column width on header click according the largest text value
|
|
17
|
+
ColumnAutoSizeMode["headerClickAutosize"] = "headerClickAutoSize";
|
|
18
|
+
// increases column width on data set and text edit, decreases performance
|
|
19
|
+
ColumnAutoSizeMode["autoSizeOnTextOverlap"] = "autoSizeOnTextOverlap";
|
|
20
|
+
// increases and decreases column width based on all items sizes, worst for performance
|
|
21
|
+
ColumnAutoSizeMode["autoSizeAll"] = "autoSizeAll";
|
|
22
|
+
})(ColumnAutoSizeMode || (ColumnAutoSizeMode = {}));
|
|
14
23
|
export class AutoSizeColumnPlugin extends BasePlugin {
|
|
15
24
|
constructor(revogrid, providers, config) {
|
|
16
25
|
super(revogrid, providers);
|
|
@@ -34,13 +43,13 @@ export class AutoSizeColumnPlugin extends BasePlugin {
|
|
|
34
43
|
};
|
|
35
44
|
this.addEventListener('beforecolumnsset', beforecolumnsset);
|
|
36
45
|
switch (config === null || config === void 0 ? void 0 : config.mode) {
|
|
37
|
-
case
|
|
46
|
+
case ColumnAutoSizeMode.autoSizeOnTextOverlap:
|
|
38
47
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
39
48
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
40
49
|
this.afteredit(detail);
|
|
41
50
|
});
|
|
42
51
|
break;
|
|
43
|
-
case
|
|
52
|
+
case ColumnAutoSizeMode.autoSizeAll:
|
|
44
53
|
this.addEventListener('aftersourceset', aftersourceset);
|
|
45
54
|
this.addEventListener('afteredit', ({ detail }) => {
|
|
46
55
|
this.afterEditAll(detail);
|
|
@@ -6,7 +6,7 @@ import { h } from "@stencil/core";
|
|
|
6
6
|
import { BasePlugin } from "../base.plugin";
|
|
7
7
|
import { FILTER_PROP, isFilterBtn } from "./filter.button";
|
|
8
8
|
import { filterCoreFunctionsIndexedByType, filterNames, filterTypes, } from "./filter.indexed";
|
|
9
|
-
import { getCellDataParsed } from "../../utils";
|
|
9
|
+
import { getCellDataParsed, timeout } from "../../utils";
|
|
10
10
|
export * from './filter.types';
|
|
11
11
|
export * from './filter.indexed';
|
|
12
12
|
export * from './filter.button';
|
|
@@ -80,6 +80,7 @@ export class FilterPlugin extends BasePlugin {
|
|
|
80
80
|
if (Object.keys(this.multiFilterItems).length === 0) {
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
|
+
await timeout();
|
|
83
84
|
await this.runFiltering(this.multiFilterItems);
|
|
84
85
|
};
|
|
85
86
|
this.addEventListener('headerclick', e => this.headerclick(e));
|
|
@@ -8,7 +8,7 @@ import { SortingPlugin } from "../sorting/sorting.plugin";
|
|
|
8
8
|
import { GROUP_EXPAND_EVENT, GROUPING_ROW_TYPE, PSEUDO_GROUP_COLUMN, } from "./grouping.const";
|
|
9
9
|
import { doExpand, doCollapse } from "./grouping.row.expand.service";
|
|
10
10
|
import { gatherGrouping, getExpanded, getSource, isGrouping, isGroupingColumn, } from "./grouping.service";
|
|
11
|
-
import { processDoubleConversionTrimmed, TRIMMED_GROUPING, } from "./grouping.trimmed.service";
|
|
11
|
+
import { filterOutEmptyGroupRows, processDoubleConversionTrimmed, TRIMMED_GROUPING, } from "./grouping.trimmed.service";
|
|
12
12
|
export * from './grouping.const';
|
|
13
13
|
export * from './grouping.row.expand.service';
|
|
14
14
|
export * from './grouping.row.types';
|
|
@@ -81,16 +81,18 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
beforeTrimmedApply(trimmed, type) {
|
|
84
|
-
/**
|
|
84
|
+
/** Filter trim must keep group headers in sync with their visible children. */
|
|
85
85
|
if (type === FILTER_TRIMMED_TYPE) {
|
|
86
86
|
const source = this.getStore().get('source');
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
}
|
|
87
|
+
const updatedTrimmed = filterOutEmptyGroupRows(source, trimmed);
|
|
88
|
+
Object.keys(trimmed).forEach(index => delete trimmed[Number.parseInt(index, 10)]);
|
|
89
|
+
Object.assign(trimmed, updatedTrimmed);
|
|
92
90
|
}
|
|
93
91
|
}
|
|
92
|
+
beforeFilterTrimmed(trimmed) {
|
|
93
|
+
const source = this.getStore().get('source');
|
|
94
|
+
return filterOutEmptyGroupRows(source, trimmed);
|
|
95
|
+
}
|
|
94
96
|
isSortingRunning() {
|
|
95
97
|
const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
|
|
96
98
|
return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
|
|
@@ -116,7 +118,7 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
116
118
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
117
119
|
// setup source
|
|
118
120
|
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
119
|
-
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
121
|
+
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
|
|
120
122
|
}
|
|
121
123
|
/**
|
|
122
124
|
* Apply grouping on data set
|
|
@@ -135,7 +137,7 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
135
137
|
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
|
|
136
138
|
data.source = sourceWithGroups;
|
|
137
139
|
this.providers.data.setGrouping({ depth });
|
|
138
|
-
this.updateTrimmed(trimmed, oldNewIndexMap);
|
|
140
|
+
this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
|
|
139
141
|
}
|
|
140
142
|
/**
|
|
141
143
|
* External call to apply grouping. Called by revogrid when prop changed.
|
|
@@ -184,6 +186,10 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
184
186
|
* based on new results can be new grouping
|
|
185
187
|
*/
|
|
186
188
|
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
189
|
+
/** Filter plugin owns data-row matching; grouping decides which headers remain visible. */
|
|
190
|
+
this.addEventListener('beforefiltertrimmed', ({ detail }) => {
|
|
191
|
+
detail.itemsToFilter = this.beforeFilterTrimmed(detail.itemsToFilter);
|
|
192
|
+
});
|
|
187
193
|
/**
|
|
188
194
|
* sorting applied need to clear grouping and apply again
|
|
189
195
|
* based on new results whole grouping order will changed
|
|
@@ -229,12 +235,16 @@ export class GroupingRowPlugin extends BasePlugin {
|
|
|
229
235
|
// clear rows
|
|
230
236
|
const { source, oldNewIndexes } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
|
|
231
237
|
this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
232
|
-
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
238
|
+
this.updateTrimmed(undefined, undefined, oldNewIndexes, source);
|
|
233
239
|
}
|
|
234
|
-
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
240
|
+
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap, source = this.getStore().get('source')) {
|
|
235
241
|
// map previously trimmed data
|
|
236
242
|
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
|
|
237
243
|
for (let type in trimemedOptionsToUpgrade) {
|
|
244
|
+
if (type === FILTER_TRIMMED_TYPE) {
|
|
245
|
+
/** Regrouping changes physical indexes, so filter trim needs fresh group-header state. */
|
|
246
|
+
trimemedOptionsToUpgrade[type] = filterOutEmptyGroupRows(source, trimemedOptionsToUpgrade[type]);
|
|
247
|
+
}
|
|
238
248
|
this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
|
|
239
249
|
}
|
|
240
250
|
// const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
|