@revolist/revogrid 4.21.11 → 4.22.1
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-uZmDBXz7.js → cell-renderer-BQdEGQXP.js} +2 -2
- package/dist/cjs/{column.drag.plugin-CM_5mKV3.js → column.drag.plugin-RDjQhKCH.js} +22 -15
- package/dist/cjs/{column.service-DvQDqxxx.js → column.service-DXYMehqK.js} +1 -1
- package/dist/cjs/{dimension.helpers-CaIsYC99.js → dimension.helpers-CiiNnlLa.js} +0 -1
- package/dist/cjs/{edit.utils-CwMzSIVF.js → edit.utils-CecCfA4E.js} +22 -1
- package/dist/cjs/{header-cell-renderer-B1dJwgTO.js → header-cell-renderer-DGyBrK8I.js} +1 -1
- package/dist/cjs/index.cjs.js +17 -8
- package/dist/cjs/revo-grid.cjs.entry.js +5 -5
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +6 -6
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +4 -4
- package/dist/cjs/revogr-data_4.cjs.entry.js +111 -166
- package/dist/cjs/{text-editor-BTnGaIl3.js → text-editor-DnLZW1a-.js} +2 -2
- package/dist/cjs/{throttle-CI4MsAqs.js → throttle-CfgQFkfR.js} +1 -1
- package/dist/cjs/{viewport.store-Dcjud-a-.js → viewport.store-q6YdR9mg.js} +1 -1
- package/dist/collection/components/clipboard/revogr-clipboard.js +1 -1
- package/dist/collection/components/header/header-group-renderer.js +1 -0
- package/dist/collection/components/header/header-renderer.js +5 -4
- package/dist/collection/components/header/revogr-header.js +100 -40
- package/dist/collection/components/overlay/keyboard.service.js +2 -2
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +14 -11
- package/dist/collection/types/events.js +4 -0
- package/dist/collection/utils/key.utils.js +20 -0
- package/dist/{revo-grid/cell-renderer-K_BKH7Kx.js → esm/cell-renderer-CALsEsnh.js} +2 -2
- package/dist/esm/{column.drag.plugin-DEqZ2qXJ.js → column.drag.plugin-Dy5ztusn.js} +19 -16
- package/dist/esm/{column.service-Cdz3dYqZ.js → column.service-CCvAi5l4.js} +1 -1
- package/dist/{revo-grid/dimension.helpers-DzxqJQqN.js → esm/dimension.helpers-DmIvjIa7.js} +1 -1
- package/dist/esm/{edit.utils-CzfeG98N.js → edit.utils-DYN6XZh8.js} +22 -2
- package/dist/{revo-grid/header-cell-renderer-DXhxZMly.js → esm/header-cell-renderer-DU8wKAbg.js} +1 -1
- package/dist/esm/index.js +13 -9
- package/dist/esm/revo-grid.entry.js +5 -5
- package/dist/esm/revogr-attribution_7.entry.js +6 -6
- package/dist/esm/revogr-clipboard_3.entry.js +4 -4
- package/dist/esm/revogr-data_4.entry.js +111 -166
- package/dist/{revo-grid/text-editor-C1ks5eQ4.js → esm/text-editor-DpCnd6Fq.js} +2 -2
- package/dist/esm/{throttle-BEjFQa2l.js → throttle-ERvyruXb.js} +1 -1
- package/dist/{revo-grid/viewport.store-saAZJHRo.js → esm/viewport.store-CFjDW-3l.js} +1 -1
- package/dist/{esm/cell-renderer-K_BKH7Kx.js → revo-grid/cell-renderer-CALsEsnh.js} +2 -2
- package/dist/revo-grid/{column.drag.plugin-DEqZ2qXJ.js → column.drag.plugin-Dy5ztusn.js} +19 -16
- package/dist/revo-grid/{column.service-Cdz3dYqZ.js → column.service-CCvAi5l4.js} +1 -1
- package/dist/{esm/dimension.helpers-DzxqJQqN.js → revo-grid/dimension.helpers-DmIvjIa7.js} +1 -1
- package/dist/revo-grid/{edit.utils-CzfeG98N.js → edit.utils-DYN6XZh8.js} +22 -2
- package/dist/{esm/header-cell-renderer-DXhxZMly.js → revo-grid/header-cell-renderer-DU8wKAbg.js} +1 -1
- package/dist/revo-grid/index.esm.js +13 -9
- package/dist/revo-grid/revo-grid.entry.js +5 -5
- package/dist/revo-grid/revogr-attribution_7.entry.js +6 -6
- package/dist/revo-grid/revogr-clipboard_3.entry.js +4 -4
- package/dist/revo-grid/revogr-data_4.entry.js +111 -166
- package/dist/{esm/text-editor-C1ks5eQ4.js → revo-grid/text-editor-DpCnd6Fq.js} +2 -2
- package/dist/revo-grid/{throttle-BEjFQa2l.js → throttle-ERvyruXb.js} +1 -1
- package/dist/{esm/viewport.store-saAZJHRo.js → revo-grid/viewport.store-CFjDW-3l.js} +1 -1
- package/dist/types/components/header/revogr-header.d.ts +6 -0
- package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +29 -3
- package/dist/types/types/events.d.ts +1 -1
- package/dist/types/utils/key.utils.d.ts +8 -0
- package/hydrate/index.js +142 -174
- package/hydrate/index.mjs +142 -174
- 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-clipboard2.js +1 -1
- package/standalone/revogr-edit.js +1 -1
- package/standalone/revogr-edit2.js +1 -1
- package/standalone/revogr-header2.js +1 -1
- package/standalone/revogr-overlay-selection2.js +1 -1
|
@@ -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-DXYMehqK.js');
|
|
8
|
+
var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
|
|
9
|
+
var cellRenderer = require('./cell-renderer-BQdEGQXP.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-DGyBrK8I.js');
|
|
12
|
+
var throttle = require('./throttle-CfgQFkfR.js');
|
|
13
13
|
var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
|
|
14
14
|
require('./debounce-CcpHiH2p.js');
|
|
15
15
|
|
|
@@ -261,126 +261,8 @@ const RevogrData = class {
|
|
|
261
261
|
};
|
|
262
262
|
RevogrData.style = revogrDataStyleCss();
|
|
263
263
|
|
|
264
|
-
var defineProperty = (function() {
|
|
265
|
-
try {
|
|
266
|
-
var func = dimension_helpers.getNative(Object, 'defineProperty');
|
|
267
|
-
func({}, '', {});
|
|
268
|
-
return func;
|
|
269
|
-
} catch (e) {}
|
|
270
|
-
}());
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* The base implementation of `assignValue` and `assignMergeValue` without
|
|
274
|
-
* value checks.
|
|
275
|
-
*
|
|
276
|
-
* @private
|
|
277
|
-
* @param {Object} object The object to modify.
|
|
278
|
-
* @param {string} key The key of the property to assign.
|
|
279
|
-
* @param {*} value The value to assign.
|
|
280
|
-
*/
|
|
281
|
-
function baseAssignValue(object, key, value) {
|
|
282
|
-
if (key == '__proto__' && defineProperty) {
|
|
283
|
-
defineProperty(object, key, {
|
|
284
|
-
'configurable': true,
|
|
285
|
-
'enumerable': true,
|
|
286
|
-
'value': value,
|
|
287
|
-
'writable': true
|
|
288
|
-
});
|
|
289
|
-
} else {
|
|
290
|
-
object[key] = value;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* A specialized version of `baseAggregator` for arrays.
|
|
296
|
-
*
|
|
297
|
-
* @private
|
|
298
|
-
* @param {Array} [array] The array to iterate over.
|
|
299
|
-
* @param {Function} setter The function to set `accumulator` values.
|
|
300
|
-
* @param {Function} iteratee The iteratee to transform keys.
|
|
301
|
-
* @param {Object} accumulator The initial aggregated object.
|
|
302
|
-
* @returns {Function} Returns `accumulator`.
|
|
303
|
-
*/
|
|
304
|
-
function arrayAggregator(array, setter, iteratee, accumulator) {
|
|
305
|
-
var index = -1,
|
|
306
|
-
length = array == null ? 0 : array.length;
|
|
307
|
-
|
|
308
|
-
while (++index < length) {
|
|
309
|
-
var value = array[index];
|
|
310
|
-
setter(accumulator, value, iteratee(value), array);
|
|
311
|
-
}
|
|
312
|
-
return accumulator;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
/**
|
|
316
|
-
* Aggregates elements of `collection` on `accumulator` with keys transformed
|
|
317
|
-
* by `iteratee` and values set by `setter`.
|
|
318
|
-
*
|
|
319
|
-
* @private
|
|
320
|
-
* @param {Array|Object} collection The collection to iterate over.
|
|
321
|
-
* @param {Function} setter The function to set `accumulator` values.
|
|
322
|
-
* @param {Function} iteratee The iteratee to transform keys.
|
|
323
|
-
* @param {Object} accumulator The initial aggregated object.
|
|
324
|
-
* @returns {Function} Returns `accumulator`.
|
|
325
|
-
*/
|
|
326
|
-
function baseAggregator(collection, setter, iteratee, accumulator) {
|
|
327
|
-
column_service.baseEach(collection, function(value, key, collection) {
|
|
328
|
-
setter(accumulator, value, iteratee(value), collection);
|
|
329
|
-
});
|
|
330
|
-
return accumulator;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
/**
|
|
334
|
-
* Creates a function like `_.groupBy`.
|
|
335
|
-
*
|
|
336
|
-
* @private
|
|
337
|
-
* @param {Function} setter The function to set accumulator values.
|
|
338
|
-
* @param {Function} [initializer] The accumulator object initializer.
|
|
339
|
-
* @returns {Function} Returns the new aggregator function.
|
|
340
|
-
*/
|
|
341
|
-
function createAggregator(setter, initializer) {
|
|
342
|
-
return function(collection, iteratee) {
|
|
343
|
-
var func = dimension_helpers.isArray(collection) ? arrayAggregator : baseAggregator,
|
|
344
|
-
accumulator = {};
|
|
345
|
-
|
|
346
|
-
return func(collection, setter, dimension_helpers.baseIteratee(iteratee), accumulator);
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* Creates an object composed of keys generated from the results of running
|
|
352
|
-
* each element of `collection` thru `iteratee`. The corresponding value of
|
|
353
|
-
* each key is the last element responsible for generating the key. The
|
|
354
|
-
* iteratee is invoked with one argument: (value).
|
|
355
|
-
*
|
|
356
|
-
* @static
|
|
357
|
-
* @memberOf _
|
|
358
|
-
* @since 4.0.0
|
|
359
|
-
* @category Collection
|
|
360
|
-
* @param {Array|Object} collection The collection to iterate over.
|
|
361
|
-
* @param {Function} [iteratee=_.identity] The iteratee to transform keys.
|
|
362
|
-
* @returns {Object} Returns the composed aggregate object.
|
|
363
|
-
* @example
|
|
364
|
-
*
|
|
365
|
-
* var array = [
|
|
366
|
-
* { 'dir': 'left', 'code': 97 },
|
|
367
|
-
* { 'dir': 'right', 'code': 100 }
|
|
368
|
-
* ];
|
|
369
|
-
*
|
|
370
|
-
* _.keyBy(array, function(o) {
|
|
371
|
-
* return String.fromCharCode(o.code);
|
|
372
|
-
* });
|
|
373
|
-
* // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
|
|
374
|
-
*
|
|
375
|
-
* _.keyBy(array, 'dir');
|
|
376
|
-
* // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
|
|
377
|
-
*/
|
|
378
|
-
var keyBy = createAggregator(function(result, value, key) {
|
|
379
|
-
baseAssignValue(result, key, value);
|
|
380
|
-
});
|
|
381
|
-
|
|
382
264
|
const HeaderRenderer = (p) => {
|
|
383
|
-
var _a, _b, _c, _d, _e;
|
|
265
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
384
266
|
const cellClass = {
|
|
385
267
|
[dimension_helpers.HEADER_CLASS]: true,
|
|
386
268
|
[dimension_helpers.HEADER_SORTABLE_CLASS]: !!((_a = p.data) === null || _a === void 0 ? void 0 : _a.sortable),
|
|
@@ -389,10 +271,11 @@ const HeaderRenderer = (p) => {
|
|
|
389
271
|
cellClass[p.data.order] = true;
|
|
390
272
|
}
|
|
391
273
|
const dataProps = {
|
|
274
|
+
key: String((_d = (_c = p.data) === null || _c === void 0 ? void 0 : _c.prop) !== null && _d !== void 0 ? _d : p.column.itemIndex),
|
|
392
275
|
[dimension_helpers.DATA_COL]: p.column.itemIndex,
|
|
393
276
|
canResize: p.canResize,
|
|
394
|
-
minWidth: ((
|
|
395
|
-
maxWidth: (
|
|
277
|
+
minWidth: ((_e = p.data) === null || _e === void 0 ? void 0 : _e.minSize) || dimension_helpers.MIN_COL_SIZE,
|
|
278
|
+
maxWidth: (_f = p.data) === null || _f === void 0 ? void 0 : _f.maxSize,
|
|
396
279
|
active: p.active || ['r'],
|
|
397
280
|
class: cellClass,
|
|
398
281
|
style: {
|
|
@@ -428,11 +311,12 @@ const HeaderRenderer = (p) => {
|
|
|
428
311
|
}
|
|
429
312
|
}
|
|
430
313
|
}
|
|
431
|
-
return (index.h(headerCellRenderer.HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData }, index.h(cellRenderer.SortingSign, { column: p.data }), p.canFilter && ((
|
|
314
|
+
return (index.h(headerCellRenderer.HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData }, index.h(cellRenderer.SortingSign, { column: p.data }), p.canFilter && ((_g = p.data) === null || _g === void 0 ? void 0 : _g.filter) !== false ? (index.h(filter_button.FilterButton, { column: p.data })) : ('')));
|
|
432
315
|
};
|
|
433
316
|
|
|
434
317
|
const HeaderGroupRenderer = (p) => {
|
|
435
318
|
const groupProps = {
|
|
319
|
+
key: `${p.group.name}-${p.group.indexes.join('-')}`,
|
|
436
320
|
canResize: p.canResize,
|
|
437
321
|
minWidth: p.group.indexes.length * dimension_helpers.MIN_COL_SIZE,
|
|
438
322
|
maxWidth: 0,
|
|
@@ -482,13 +366,10 @@ const RevogrHeaderComponent = class {
|
|
|
482
366
|
}
|
|
483
367
|
onResizeGroup(changedX, startIndex, endIndex) {
|
|
484
368
|
const sizes = {};
|
|
485
|
-
const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');
|
|
486
369
|
const change = changedX / (endIndex - startIndex + 1);
|
|
487
370
|
for (let i = startIndex; i <= endIndex; i++) {
|
|
488
|
-
const item =
|
|
489
|
-
|
|
490
|
-
sizes[i] = item.size + change;
|
|
491
|
-
}
|
|
371
|
+
const item = dimension_helpers.getItemByIndex(this.dimensionCol.state, i);
|
|
372
|
+
sizes[i] = item.end - item.start + change;
|
|
492
373
|
}
|
|
493
374
|
this.headerresize.emit(sizes);
|
|
494
375
|
}
|
|
@@ -502,12 +383,12 @@ const RevogrHeaderComponent = class {
|
|
|
502
383
|
const { cells } = this.renderHeaderColumns(cols, range);
|
|
503
384
|
const groupRow = this.renderGroupingColumns();
|
|
504
385
|
return [
|
|
505
|
-
index.h("div", { key: '
|
|
506
|
-
index.h("div", { key: '
|
|
386
|
+
index.h("div", { key: '3cc466db6bc4df0cd61c47a22c3a0473318e5dd8', class: "group-rgRow" }, groupRow),
|
|
387
|
+
index.h("div", { key: '9742a3fa4d4b75073aef5544806f42386ebffdea', class: `${dimension_helpers.HEADER_ROW_CLASS} ${dimension_helpers.HEADER_ACTUAL_ROW_CLASS}` }, cells),
|
|
507
388
|
];
|
|
508
389
|
}
|
|
509
390
|
renderHeaderColumns(cols, range) {
|
|
510
|
-
const
|
|
391
|
+
const columnsToRender = [];
|
|
511
392
|
for (let rgCol of cols) {
|
|
512
393
|
const colData = this.colData[rgCol.itemIndex];
|
|
513
394
|
const props = {
|
|
@@ -524,45 +405,105 @@ const RevogrHeaderComponent = class {
|
|
|
524
405
|
};
|
|
525
406
|
const event = this.beforeHeaderRender.emit(props);
|
|
526
407
|
if (!event.defaultPrevented) {
|
|
527
|
-
|
|
408
|
+
columnsToRender.push(event.detail);
|
|
528
409
|
}
|
|
529
410
|
}
|
|
411
|
+
const duplicateProps = this.getDuplicateHeaderProps(columnsToRender);
|
|
412
|
+
const cells = columnsToRender.map(detail => index.h(HeaderRenderer, Object.assign({ key: this.getHeaderCellKey(detail.data, this.type, duplicateProps) }, detail)));
|
|
530
413
|
return { cells };
|
|
531
414
|
}
|
|
532
415
|
renderGroupingColumns() {
|
|
416
|
+
const visibleGroupRange = this.getVisibleGroupRange();
|
|
417
|
+
return Array.from({ length: this.groupingDepth }, (_, level) => this.renderGroupRow(level, visibleGroupRange)).flat();
|
|
418
|
+
}
|
|
419
|
+
renderGroupRow(level, visibleGroupRange) {
|
|
420
|
+
const groupCells = (this.groups[level] || [])
|
|
421
|
+
.map(group => this.renderGroupColumn(group, level, visibleGroupRange))
|
|
422
|
+
.filter((cell) => !!cell);
|
|
423
|
+
return [
|
|
424
|
+
...groupCells,
|
|
425
|
+
index.h('div', {
|
|
426
|
+
key: `group-row-${level}`,
|
|
427
|
+
class: {
|
|
428
|
+
[dimension_helpers.HEADER_ROW_CLASS]: true,
|
|
429
|
+
group: true,
|
|
430
|
+
},
|
|
431
|
+
}),
|
|
432
|
+
];
|
|
433
|
+
}
|
|
434
|
+
renderGroupColumn(group, level, visibleGroupRange) {
|
|
533
435
|
var _a;
|
|
534
|
-
const
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
436
|
+
const groupStartIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
|
|
437
|
+
if (groupStartIndex < 0) {
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
const groupEndIndex = groupStartIndex + group.indexes.length - 1;
|
|
441
|
+
if (!visibleGroupRange ||
|
|
442
|
+
!isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleGroupRange)) {
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
const groupStart = dimension_helpers.getItemByIndex(this.dimensionCol.state, groupStartIndex).start;
|
|
446
|
+
const groupEnd = dimension_helpers.getItemByIndex(this.dimensionCol.state, groupEndIndex).end;
|
|
447
|
+
const props = {
|
|
448
|
+
providers: this.providers,
|
|
449
|
+
start: groupStart,
|
|
450
|
+
end: groupEnd,
|
|
451
|
+
group,
|
|
452
|
+
active: this.resizeHandler,
|
|
453
|
+
canResize: this.canResize,
|
|
454
|
+
additionalData: this.additionalData,
|
|
455
|
+
onResize: e => {
|
|
456
|
+
var _a;
|
|
457
|
+
return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupStartIndex, groupEndIndex);
|
|
458
|
+
},
|
|
459
|
+
};
|
|
460
|
+
const event = this.beforeGroupHeaderRender.emit(props);
|
|
461
|
+
if (event.defaultPrevented) {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
return index.h(HeaderGroupRenderer, Object.assign({ key: this.getGroupHeaderCellKey(event.detail.group, level) }, event.detail));
|
|
465
|
+
}
|
|
466
|
+
getVisibleGroupRange() {
|
|
467
|
+
const visibleColumns = this.viewportCol.get('items');
|
|
468
|
+
if (!visibleColumns.length) {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
return visibleColumns.reduce((range, column) => ({
|
|
472
|
+
start: Math.min(range.start, column.itemIndex),
|
|
473
|
+
end: Math.max(range.end, column.itemIndex),
|
|
474
|
+
}), {
|
|
475
|
+
start: visibleColumns[0].itemIndex,
|
|
476
|
+
end: visibleColumns[0].itemIndex,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
getHeaderCellKey(column, type, duplicateProps) {
|
|
480
|
+
if ((column === null || column === void 0 ? void 0 : column.prop) === undefined) {
|
|
481
|
+
return `${type}-${String(column === null || column === void 0 ? void 0 : column.index)}`;
|
|
482
|
+
}
|
|
483
|
+
const propKey = String(column.prop);
|
|
484
|
+
if (duplicateProps.has(propKey)) {
|
|
485
|
+
return `${type}-${propKey}-${String(column.index)}`;
|
|
486
|
+
}
|
|
487
|
+
return `${type}-${propKey}`;
|
|
488
|
+
}
|
|
489
|
+
getDuplicateHeaderProps(columns) {
|
|
490
|
+
const seenProps = new Set();
|
|
491
|
+
const duplicateProps = new Set();
|
|
492
|
+
columns.forEach(({ data }) => {
|
|
493
|
+
if ((data === null || data === void 0 ? void 0 : data.prop) !== undefined) {
|
|
494
|
+
const propKey = String(data.prop);
|
|
495
|
+
if (seenProps.has(propKey)) {
|
|
496
|
+
duplicateProps.add(propKey);
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
seenProps.add(propKey);
|
|
561
500
|
}
|
|
562
501
|
}
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
502
|
+
});
|
|
503
|
+
return duplicateProps;
|
|
504
|
+
}
|
|
505
|
+
getGroupHeaderCellKey(group, level) {
|
|
506
|
+
return `group-${level}-${group.name}-${group.indexes.join('-')}`;
|
|
566
507
|
}
|
|
567
508
|
get providers() {
|
|
568
509
|
return {
|
|
@@ -576,6 +517,10 @@ const RevogrHeaderComponent = class {
|
|
|
576
517
|
}
|
|
577
518
|
get element() { return index.getElement(this); }
|
|
578
519
|
};
|
|
520
|
+
function isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleRange) {
|
|
521
|
+
return (groupStartIndex <= visibleRange.end &&
|
|
522
|
+
groupEndIndex >= visibleRange.start);
|
|
523
|
+
}
|
|
579
524
|
RevogrHeaderComponent.style = revogrHeaderStyleCss();
|
|
580
525
|
|
|
581
526
|
class GridResizeService {
|
|
@@ -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-CecCfA4E.js');
|
|
7
|
+
var dimension_helpers = require('./dimension.helpers-CiiNnlLa.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-CiiNnlLa.js');
|
|
7
7
|
|
|
8
8
|
const LETTER_BLOCK_SIZE = 10;
|
|
9
9
|
const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
|
|
@@ -66,8 +66,8 @@ export class Clipboard {
|
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
const data = this.getData(beforeCopy.detail.event);
|
|
69
|
-
this.copyRegion.emit(data || undefined);
|
|
70
69
|
e.preventDefault();
|
|
70
|
+
this.copyRegion.emit(data || undefined);
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
73
|
* Listen to copy event and emit copy region event
|
|
@@ -6,6 +6,7 @@ import { HEADER_CLASS, MIN_COL_SIZE } from "../../utils/consts";
|
|
|
6
6
|
import { HeaderCellRenderer } from "./header-cell-renderer";
|
|
7
7
|
const HeaderGroupRenderer = (p) => {
|
|
8
8
|
const groupProps = {
|
|
9
|
+
key: `${p.group.name}-${p.group.indexes.join('-')}`,
|
|
9
10
|
canResize: p.canResize,
|
|
10
11
|
minWidth: p.group.indexes.length * MIN_COL_SIZE,
|
|
11
12
|
maxWidth: 0,
|
|
@@ -7,7 +7,7 @@ import { SortingSign } from "../../plugins/sorting/sorting.sign";
|
|
|
7
7
|
import { DATA_COL, FOCUS_CLASS, HEADER_CLASS, HEADER_SORTABLE_CLASS, MIN_COL_SIZE, } from "../../utils/consts";
|
|
8
8
|
import { HeaderCellRenderer } from "./header-cell-renderer";
|
|
9
9
|
const HeaderRenderer = (p) => {
|
|
10
|
-
var _a, _b, _c, _d, _e;
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
11
11
|
const cellClass = {
|
|
12
12
|
[HEADER_CLASS]: true,
|
|
13
13
|
[HEADER_SORTABLE_CLASS]: !!((_a = p.data) === null || _a === void 0 ? void 0 : _a.sortable),
|
|
@@ -16,10 +16,11 @@ const HeaderRenderer = (p) => {
|
|
|
16
16
|
cellClass[p.data.order] = true;
|
|
17
17
|
}
|
|
18
18
|
const dataProps = {
|
|
19
|
+
key: String((_d = (_c = p.data) === null || _c === void 0 ? void 0 : _c.prop) !== null && _d !== void 0 ? _d : p.column.itemIndex),
|
|
19
20
|
[DATA_COL]: p.column.itemIndex,
|
|
20
21
|
canResize: p.canResize,
|
|
21
|
-
minWidth: ((
|
|
22
|
-
maxWidth: (
|
|
22
|
+
minWidth: ((_e = p.data) === null || _e === void 0 ? void 0 : _e.minSize) || MIN_COL_SIZE,
|
|
23
|
+
maxWidth: (_f = p.data) === null || _f === void 0 ? void 0 : _f.maxSize,
|
|
23
24
|
active: p.active || ['r'],
|
|
24
25
|
class: cellClass,
|
|
25
26
|
style: {
|
|
@@ -55,6 +56,6 @@ const HeaderRenderer = (p) => {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
|
-
return (h(HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData }, h(SortingSign, { column: p.data }), p.canFilter && ((
|
|
59
|
+
return (h(HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData }, h(SortingSign, { column: p.data }), p.canFilter && ((_g = p.data) === null || _g === void 0 ? void 0 : _g.filter) !== false ? (h(FilterButton, { column: p.data })) : ('')));
|
|
59
60
|
};
|
|
60
61
|
export default HeaderRenderer;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h, } from "@stencil/core";
|
|
5
|
-
import keyBy from "lodash/keyBy";
|
|
6
5
|
import { getItemByIndex } from "../../store/index";
|
|
7
6
|
import { HEADER_ACTUAL_ROW_CLASS, HEADER_ROW_CLASS } from "../../utils/consts";
|
|
8
7
|
import HeaderRenderer from "./header-renderer";
|
|
@@ -30,13 +29,10 @@ export class RevogrHeaderComponent {
|
|
|
30
29
|
}
|
|
31
30
|
onResizeGroup(changedX, startIndex, endIndex) {
|
|
32
31
|
const sizes = {};
|
|
33
|
-
const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');
|
|
34
32
|
const change = changedX / (endIndex - startIndex + 1);
|
|
35
33
|
for (let i = startIndex; i <= endIndex; i++) {
|
|
36
|
-
const item =
|
|
37
|
-
|
|
38
|
-
sizes[i] = item.size + change;
|
|
39
|
-
}
|
|
34
|
+
const item = getItemByIndex(this.dimensionCol.state, i);
|
|
35
|
+
sizes[i] = item.end - item.start + change;
|
|
40
36
|
}
|
|
41
37
|
this.headerresize.emit(sizes);
|
|
42
38
|
}
|
|
@@ -50,12 +46,12 @@ export class RevogrHeaderComponent {
|
|
|
50
46
|
const { cells } = this.renderHeaderColumns(cols, range);
|
|
51
47
|
const groupRow = this.renderGroupingColumns();
|
|
52
48
|
return [
|
|
53
|
-
h("div", { key: '
|
|
54
|
-
h("div", { key: '
|
|
49
|
+
h("div", { key: '3cc466db6bc4df0cd61c47a22c3a0473318e5dd8', class: "group-rgRow" }, groupRow),
|
|
50
|
+
h("div", { key: '9742a3fa4d4b75073aef5544806f42386ebffdea', class: `${HEADER_ROW_CLASS} ${HEADER_ACTUAL_ROW_CLASS}` }, cells),
|
|
55
51
|
];
|
|
56
52
|
}
|
|
57
53
|
renderHeaderColumns(cols, range) {
|
|
58
|
-
const
|
|
54
|
+
const columnsToRender = [];
|
|
59
55
|
for (let rgCol of cols) {
|
|
60
56
|
const colData = this.colData[rgCol.itemIndex];
|
|
61
57
|
const props = {
|
|
@@ -72,45 +68,105 @@ export class RevogrHeaderComponent {
|
|
|
72
68
|
};
|
|
73
69
|
const event = this.beforeHeaderRender.emit(props);
|
|
74
70
|
if (!event.defaultPrevented) {
|
|
75
|
-
|
|
71
|
+
columnsToRender.push(event.detail);
|
|
76
72
|
}
|
|
77
73
|
}
|
|
74
|
+
const duplicateProps = this.getDuplicateHeaderProps(columnsToRender);
|
|
75
|
+
const cells = columnsToRender.map(detail => h(HeaderRenderer, Object.assign({ key: this.getHeaderCellKey(detail.data, this.type, duplicateProps) }, detail)));
|
|
78
76
|
return { cells };
|
|
79
77
|
}
|
|
80
78
|
renderGroupingColumns() {
|
|
79
|
+
const visibleGroupRange = this.getVisibleGroupRange();
|
|
80
|
+
return Array.from({ length: this.groupingDepth }, (_, level) => this.renderGroupRow(level, visibleGroupRange)).flat();
|
|
81
|
+
}
|
|
82
|
+
renderGroupRow(level, visibleGroupRange) {
|
|
83
|
+
const groupCells = (this.groups[level] || [])
|
|
84
|
+
.map(group => this.renderGroupColumn(group, level, visibleGroupRange))
|
|
85
|
+
.filter((cell) => !!cell);
|
|
86
|
+
return [
|
|
87
|
+
...groupCells,
|
|
88
|
+
h('div', {
|
|
89
|
+
key: `group-row-${level}`,
|
|
90
|
+
class: {
|
|
91
|
+
[HEADER_ROW_CLASS]: true,
|
|
92
|
+
group: true,
|
|
93
|
+
},
|
|
94
|
+
}),
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
renderGroupColumn(group, level, visibleGroupRange) {
|
|
81
98
|
var _a;
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
99
|
+
const groupStartIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
|
|
100
|
+
if (groupStartIndex < 0) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const groupEndIndex = groupStartIndex + group.indexes.length - 1;
|
|
104
|
+
if (!visibleGroupRange ||
|
|
105
|
+
!isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleGroupRange)) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const groupStart = getItemByIndex(this.dimensionCol.state, groupStartIndex).start;
|
|
109
|
+
const groupEnd = getItemByIndex(this.dimensionCol.state, groupEndIndex).end;
|
|
110
|
+
const props = {
|
|
111
|
+
providers: this.providers,
|
|
112
|
+
start: groupStart,
|
|
113
|
+
end: groupEnd,
|
|
114
|
+
group,
|
|
115
|
+
active: this.resizeHandler,
|
|
116
|
+
canResize: this.canResize,
|
|
117
|
+
additionalData: this.additionalData,
|
|
118
|
+
onResize: e => {
|
|
119
|
+
var _a;
|
|
120
|
+
return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupStartIndex, groupEndIndex);
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
const event = this.beforeGroupHeaderRender.emit(props);
|
|
124
|
+
if (event.defaultPrevented) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
return h(GroupHeaderRenderer, Object.assign({ key: this.getGroupHeaderCellKey(event.detail.group, level) }, event.detail));
|
|
128
|
+
}
|
|
129
|
+
getVisibleGroupRange() {
|
|
130
|
+
const visibleColumns = this.viewportCol.get('items');
|
|
131
|
+
if (!visibleColumns.length) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
return visibleColumns.reduce((range, column) => ({
|
|
135
|
+
start: Math.min(range.start, column.itemIndex),
|
|
136
|
+
end: Math.max(range.end, column.itemIndex),
|
|
137
|
+
}), {
|
|
138
|
+
start: visibleColumns[0].itemIndex,
|
|
139
|
+
end: visibleColumns[0].itemIndex,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
getHeaderCellKey(column, type, duplicateProps) {
|
|
143
|
+
if ((column === null || column === void 0 ? void 0 : column.prop) === undefined) {
|
|
144
|
+
return `${type}-${String(column === null || column === void 0 ? void 0 : column.index)}`;
|
|
145
|
+
}
|
|
146
|
+
const propKey = String(column.prop);
|
|
147
|
+
if (duplicateProps.has(propKey)) {
|
|
148
|
+
return `${type}-${propKey}-${String(column.index)}`;
|
|
149
|
+
}
|
|
150
|
+
return `${type}-${propKey}`;
|
|
151
|
+
}
|
|
152
|
+
getDuplicateHeaderProps(columns) {
|
|
153
|
+
const seenProps = new Set();
|
|
154
|
+
const duplicateProps = new Set();
|
|
155
|
+
columns.forEach(({ data }) => {
|
|
156
|
+
if ((data === null || data === void 0 ? void 0 : data.prop) !== undefined) {
|
|
157
|
+
const propKey = String(data.prop);
|
|
158
|
+
if (seenProps.has(propKey)) {
|
|
159
|
+
duplicateProps.add(propKey);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
seenProps.add(propKey);
|
|
109
163
|
}
|
|
110
164
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
165
|
+
});
|
|
166
|
+
return duplicateProps;
|
|
167
|
+
}
|
|
168
|
+
getGroupHeaderCellKey(group, level) {
|
|
169
|
+
return `group-${level}-${group.name}-${group.indexes.join('-')}`;
|
|
114
170
|
}
|
|
115
171
|
get providers() {
|
|
116
172
|
return {
|
|
@@ -581,3 +637,7 @@ export class RevogrHeaderComponent {
|
|
|
581
637
|
}
|
|
582
638
|
static get elementRef() { return "element"; }
|
|
583
639
|
}
|
|
640
|
+
function isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleRange) {
|
|
641
|
+
return (groupStartIndex <= visibleRange.end &&
|
|
642
|
+
groupEndIndex >= visibleRange.start);
|
|
643
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { getRange } from "../../store/index";
|
|
5
|
-
import { codesLetter, isAll, isClear, isCopy, isCut, isEnterKeyValue, isPaste, isTab, timeout, RESIZE_INTERVAL, } from "../../utils";
|
|
5
|
+
import { codesLetter, isAll, isClear, isCopy, isCut, isEnterKeyValue, isPaste, isShortcutModifier, isTab, timeout, RESIZE_INTERVAL, } from "../../utils";
|
|
6
6
|
import { getCoordinate, isAfterLast, isBeforeFirst, } from "./selection.utils";
|
|
7
7
|
const DIRECTION_CODES = [
|
|
8
8
|
codesLetter.TAB,
|
|
@@ -69,7 +69,7 @@ export class KeyboardService {
|
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
// pressed letter key
|
|
72
|
-
if (e.key.length === 1) {
|
|
72
|
+
if (!isShortcutModifier(e) && e.key.length === 1) {
|
|
73
73
|
this.sv.change(e.key);
|
|
74
74
|
return;
|
|
75
75
|
}
|