@revolist/revogrid 4.14.0 → 4.14.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/{column.drag.plugin-c61efe93.js → column.drag.plugin-911acec7.js} +52 -28
- package/dist/cjs/column.drag.plugin-911acec7.js.map +1 -0
- package/dist/cjs/index.cjs.js +3 -2
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/revo-grid.cjs.entry.js +20 -50
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +20 -11
- package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
- package/dist/collection/components/editors/revogr-edit.js +2 -2
- package/dist/collection/components/editors/revogr-edit.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.js +40 -11
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
- package/dist/collection/components/revoGrid/revo-grid.js +42 -42
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.plugin.js +52 -27
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.types.js.map +1 -1
- package/dist/collection/serve/controller.js +12 -0
- package/dist/collection/services/column.data.provider.js +0 -38
- package/dist/collection/services/column.data.provider.js.map +1 -1
- package/dist/collection/types/events.js +2 -1
- package/dist/collection/types/events.js.map +1 -1
- package/dist/esm/{column.drag.plugin-eb8f7e38.js → column.drag.plugin-a111b876.js} +53 -28
- package/dist/esm/column.drag.plugin-a111b876.js.map +1 -0
- package/dist/esm/index.js +4 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/revo-grid.entry.js +20 -50
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revogr-attribution_7.entry.js +20 -11
- package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/revo-grid/{column.drag.plugin-eb8f7e38.js → column.drag.plugin-a111b876.js} +53 -28
- package/dist/revo-grid/column.drag.plugin-a111b876.js.map +1 -0
- package/dist/revo-grid/index.esm.js +4 -3
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/revo-grid.entry.js +20 -50
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +20 -11
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/types/components/editors/revogr-edit.d.ts +1 -1
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +5 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +10 -7
- package/dist/types/components.d.ts +19 -15
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +12 -4
- package/dist/types/plugins/sorting/sorting.types.d.ts +1 -0
- package/dist/types/services/column.data.provider.d.ts +0 -7
- package/dist/types/types/events.d.ts +1 -1
- package/hydrate/index.js +158 -154
- package/hydrate/index.mjs +158 -154
- package/package.json +1 -1
- package/readme.md +6 -0
- package/standalone/index.js +2 -1
- package/standalone/index.js.map +1 -1
- package/standalone/revo-grid.js +70 -75
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-edit2.js +1 -1
- package/standalone/revogr-edit2.js.map +1 -1
- package/standalone/revogr-overlay-selection2.js +20 -11
- package/standalone/revogr-overlay-selection2.js.map +1 -1
- package/dist/cjs/column.drag.plugin-c61efe93.js.map +0 -1
- package/dist/esm/column.drag.plugin-eb8f7e38.js.map +0 -1
- package/dist/revo-grid/column.drag.plugin-eb8f7e38.js.map +0 -1
package/hydrate/index.mjs
CHANGED
|
@@ -9846,6 +9846,7 @@ class OverlaySelection {
|
|
|
9846
9846
|
this.beforeKeyDown = createEvent(this, "beforekeydown", 7);
|
|
9847
9847
|
this.beforeKeyUp = createEvent(this, "beforekeyup", 7);
|
|
9848
9848
|
this.beforeCellSave = createEvent(this, "beforecellsave", 7);
|
|
9849
|
+
this.cellEditDone = createEvent(this, "celledit", 7);
|
|
9849
9850
|
this.keyboardService = null;
|
|
9850
9851
|
this.autoFillService = null;
|
|
9851
9852
|
this.unsubscribeSelectionStore = [];
|
|
@@ -10027,7 +10028,22 @@ class OverlaySelection {
|
|
|
10027
10028
|
}
|
|
10028
10029
|
const cell = getCell(renderEvent.detail.range, renderEvent.detail.rowDimension, renderEvent.detail.colDimension);
|
|
10029
10030
|
const styles = styleByCellProps(cell);
|
|
10030
|
-
return (hAsync("revogr-edit", { style: styles, ref: el => (this.revogrEdit = el), additionalData: this.additionalData, editCell: editable, saveOnClose: this.applyChangesOnClose,
|
|
10031
|
+
return (hAsync("revogr-edit", { style: styles, ref: el => (this.revogrEdit = el), additionalData: this.additionalData, editCell: editable, saveOnClose: this.applyChangesOnClose, onCelleditinit: (e) => {
|
|
10032
|
+
this.cellEditDone.emit(e.detail);
|
|
10033
|
+
}, column: this.columnService.rowDataModel(editCell.y, editCell.x), editor: getCellEditor(this.columnService.columns[editCell.x], this.editors) }));
|
|
10034
|
+
}
|
|
10035
|
+
onEditCell(e) {
|
|
10036
|
+
if (e.defaultPrevented) {
|
|
10037
|
+
return;
|
|
10038
|
+
}
|
|
10039
|
+
const saveEv = this.beforeCellSave.emit(e.detail);
|
|
10040
|
+
if (!saveEv.defaultPrevented) {
|
|
10041
|
+
this.cellEdit(saveEv.detail);
|
|
10042
|
+
}
|
|
10043
|
+
// if not clear navigate to next cell after edit
|
|
10044
|
+
if (!saveEv.detail.preventFocus) {
|
|
10045
|
+
this.focusNext();
|
|
10046
|
+
}
|
|
10031
10047
|
}
|
|
10032
10048
|
render() {
|
|
10033
10049
|
var _a;
|
|
@@ -10057,16 +10073,9 @@ class OverlaySelection {
|
|
|
10057
10073
|
nodes.push(hAsync("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
|
|
10058
10074
|
}
|
|
10059
10075
|
}
|
|
10060
|
-
return (hAsync(Host, { key: '
|
|
10061
|
-
|
|
10062
|
-
|
|
10063
|
-
this.cellEdit(saveEv.detail);
|
|
10064
|
-
}
|
|
10065
|
-
// if not clear navigate to next cell after edit
|
|
10066
|
-
if (!saveEv.detail.preventFocus) {
|
|
10067
|
-
this.focusNext();
|
|
10068
|
-
}
|
|
10069
|
-
} }, nodes, hAsync("slot", { key: '945243e45f2cfbb78d8727c10652d6d0d530d494', name: "data" })));
|
|
10076
|
+
return (hAsync(Host, { key: '262adae9c825a0feb678090b62bd3ab57f149ac7', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
|
|
10077
|
+
// it's done to be able to throw events from different levels, not just from editor
|
|
10078
|
+
onCelledit: (e) => this.onEditCell(e) }, nodes, hAsync("slot", { key: '2196345c62e1edf7b00c854ba4f281ecb68ea5a7', name: "data" })));
|
|
10070
10079
|
}
|
|
10071
10080
|
/**
|
|
10072
10081
|
* Executes the focus operation on the specified range of cells.
|
|
@@ -10436,7 +10445,7 @@ var RevogrEditStyle0 = revogrEditStyleCss;
|
|
|
10436
10445
|
class RevoEdit {
|
|
10437
10446
|
constructor(hostRef) {
|
|
10438
10447
|
registerInstance(this, hostRef);
|
|
10439
|
-
this.cellEdit = createEvent(this, "
|
|
10448
|
+
this.cellEdit = createEvent(this, "celleditinit", 7);
|
|
10440
10449
|
this.closeEdit = createEvent(this, "closeedit", 7);
|
|
10441
10450
|
this.currentEditor = null;
|
|
10442
10451
|
this.preventSaveOnClose = false;
|
|
@@ -10585,89 +10594,11 @@ class RevoEdit {
|
|
|
10585
10594
|
}; }
|
|
10586
10595
|
}
|
|
10587
10596
|
|
|
10588
|
-
/**
|
|
10589
|
-
* A specialized version of `_.forEach` for arrays without support for
|
|
10590
|
-
* iteratee shorthands.
|
|
10591
|
-
*
|
|
10592
|
-
* @private
|
|
10593
|
-
* @param {Array} [array] The array to iterate over.
|
|
10594
|
-
* @param {Function} iteratee The function invoked per iteration.
|
|
10595
|
-
* @returns {Array} Returns `array`.
|
|
10596
|
-
*/
|
|
10597
|
-
function arrayEach(array, iteratee) {
|
|
10598
|
-
var index = -1,
|
|
10599
|
-
length = array == null ? 0 : array.length;
|
|
10600
|
-
|
|
10601
|
-
while (++index < length) {
|
|
10602
|
-
if (iteratee(array[index], index, array) === false) {
|
|
10603
|
-
break;
|
|
10604
|
-
}
|
|
10605
|
-
}
|
|
10606
|
-
return array;
|
|
10607
|
-
}
|
|
10608
|
-
|
|
10609
|
-
/**
|
|
10610
|
-
* Casts `value` to `identity` if it's not a function.
|
|
10611
|
-
*
|
|
10612
|
-
* @private
|
|
10613
|
-
* @param {*} value The value to inspect.
|
|
10614
|
-
* @returns {Function} Returns cast function.
|
|
10615
|
-
*/
|
|
10616
|
-
function castFunction(value) {
|
|
10617
|
-
return typeof value == 'function' ? value : identity;
|
|
10618
|
-
}
|
|
10619
|
-
|
|
10620
|
-
/**
|
|
10621
|
-
* Iterates over elements of `collection` and invokes `iteratee` for each element.
|
|
10622
|
-
* The iteratee is invoked with three arguments: (value, index|key, collection).
|
|
10623
|
-
* Iteratee functions may exit iteration early by explicitly returning `false`.
|
|
10624
|
-
*
|
|
10625
|
-
* **Note:** As with other "Collections" methods, objects with a "length"
|
|
10626
|
-
* property are iterated like arrays. To avoid this behavior use `_.forIn`
|
|
10627
|
-
* or `_.forOwn` for object iteration.
|
|
10628
|
-
*
|
|
10629
|
-
* @static
|
|
10630
|
-
* @memberOf _
|
|
10631
|
-
* @since 0.1.0
|
|
10632
|
-
* @alias each
|
|
10633
|
-
* @category Collection
|
|
10634
|
-
* @param {Array|Object} collection The collection to iterate over.
|
|
10635
|
-
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
|
|
10636
|
-
* @returns {Array|Object} Returns `collection`.
|
|
10637
|
-
* @see _.forEachRight
|
|
10638
|
-
* @example
|
|
10639
|
-
*
|
|
10640
|
-
* _.forEach([1, 2], function(value) {
|
|
10641
|
-
* console.log(value);
|
|
10642
|
-
* });
|
|
10643
|
-
* // => Logs `1` then `2`.
|
|
10644
|
-
*
|
|
10645
|
-
* _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
|
|
10646
|
-
* console.log(key);
|
|
10647
|
-
* });
|
|
10648
|
-
* // => Logs 'a' then 'b' (iteration order is not guaranteed).
|
|
10649
|
-
*/
|
|
10650
|
-
function forEach(collection, iteratee) {
|
|
10651
|
-
var func = isArray$1(collection) ? arrayEach : baseEach$1;
|
|
10652
|
-
return func(collection, castFunction(iteratee));
|
|
10653
|
-
}
|
|
10654
|
-
|
|
10655
10597
|
class ColumnDataProvider {
|
|
10656
|
-
get order() {
|
|
10657
|
-
const order = {};
|
|
10658
|
-
const sorting = this.sorting;
|
|
10659
|
-
if (sorting) {
|
|
10660
|
-
Object.keys(sorting).forEach(prop => {
|
|
10661
|
-
order[prop] = sorting[prop].order;
|
|
10662
|
-
});
|
|
10663
|
-
}
|
|
10664
|
-
return order;
|
|
10665
|
-
}
|
|
10666
10598
|
get stores() {
|
|
10667
10599
|
return this.dataSources;
|
|
10668
10600
|
}
|
|
10669
10601
|
constructor() {
|
|
10670
|
-
this.sorting = null;
|
|
10671
10602
|
this.collection = null;
|
|
10672
10603
|
this.dataSources = columnTypes.reduce((sources, k) => {
|
|
10673
10604
|
sources[k] = new DataStore(k);
|
|
@@ -10726,7 +10657,6 @@ class ColumnDataProvider {
|
|
|
10726
10657
|
}, {}),
|
|
10727
10658
|
});
|
|
10728
10659
|
});
|
|
10729
|
-
this.sorting = data.sort;
|
|
10730
10660
|
this.collection = data;
|
|
10731
10661
|
return data;
|
|
10732
10662
|
}
|
|
@@ -10775,31 +10705,6 @@ class ColumnDataProvider {
|
|
|
10775
10705
|
const type = getColumnType(column);
|
|
10776
10706
|
setSourceByVirtualIndex(this.dataSources[type].store, { [index]: column });
|
|
10777
10707
|
}
|
|
10778
|
-
updateColumnSorting(column, index, sorting, additive) {
|
|
10779
|
-
if (!additive) {
|
|
10780
|
-
this.clearSorting();
|
|
10781
|
-
}
|
|
10782
|
-
column.order = sorting;
|
|
10783
|
-
if (!this.sorting) {
|
|
10784
|
-
this.sorting = {};
|
|
10785
|
-
}
|
|
10786
|
-
this.sorting[column.prop] = column;
|
|
10787
|
-
this.updateColumn(column, index);
|
|
10788
|
-
return column;
|
|
10789
|
-
}
|
|
10790
|
-
clearSorting() {
|
|
10791
|
-
const types = reduce(this.sorting, (r, c) => {
|
|
10792
|
-
const k = getColumnType(c);
|
|
10793
|
-
r[k] = true;
|
|
10794
|
-
return r;
|
|
10795
|
-
}, {});
|
|
10796
|
-
forEach(types, (_, type) => {
|
|
10797
|
-
const cols = this.dataSources[type].store.get('source');
|
|
10798
|
-
forEach(cols, (c) => (c.order = undefined));
|
|
10799
|
-
this.dataSources[type].setData({ source: [...cols] });
|
|
10800
|
-
});
|
|
10801
|
-
this.sorting = {};
|
|
10802
|
-
}
|
|
10803
10708
|
}
|
|
10804
10709
|
|
|
10805
10710
|
/**
|
|
@@ -11066,6 +10971,73 @@ class ViewportProvider {
|
|
|
11066
10971
|
}
|
|
11067
10972
|
}
|
|
11068
10973
|
|
|
10974
|
+
/**
|
|
10975
|
+
* A specialized version of `_.forEach` for arrays without support for
|
|
10976
|
+
* iteratee shorthands.
|
|
10977
|
+
*
|
|
10978
|
+
* @private
|
|
10979
|
+
* @param {Array} [array] The array to iterate over.
|
|
10980
|
+
* @param {Function} iteratee The function invoked per iteration.
|
|
10981
|
+
* @returns {Array} Returns `array`.
|
|
10982
|
+
*/
|
|
10983
|
+
function arrayEach(array, iteratee) {
|
|
10984
|
+
var index = -1,
|
|
10985
|
+
length = array == null ? 0 : array.length;
|
|
10986
|
+
|
|
10987
|
+
while (++index < length) {
|
|
10988
|
+
if (iteratee(array[index], index, array) === false) {
|
|
10989
|
+
break;
|
|
10990
|
+
}
|
|
10991
|
+
}
|
|
10992
|
+
return array;
|
|
10993
|
+
}
|
|
10994
|
+
|
|
10995
|
+
/**
|
|
10996
|
+
* Casts `value` to `identity` if it's not a function.
|
|
10997
|
+
*
|
|
10998
|
+
* @private
|
|
10999
|
+
* @param {*} value The value to inspect.
|
|
11000
|
+
* @returns {Function} Returns cast function.
|
|
11001
|
+
*/
|
|
11002
|
+
function castFunction(value) {
|
|
11003
|
+
return typeof value == 'function' ? value : identity;
|
|
11004
|
+
}
|
|
11005
|
+
|
|
11006
|
+
/**
|
|
11007
|
+
* Iterates over elements of `collection` and invokes `iteratee` for each element.
|
|
11008
|
+
* The iteratee is invoked with three arguments: (value, index|key, collection).
|
|
11009
|
+
* Iteratee functions may exit iteration early by explicitly returning `false`.
|
|
11010
|
+
*
|
|
11011
|
+
* **Note:** As with other "Collections" methods, objects with a "length"
|
|
11012
|
+
* property are iterated like arrays. To avoid this behavior use `_.forIn`
|
|
11013
|
+
* or `_.forOwn` for object iteration.
|
|
11014
|
+
*
|
|
11015
|
+
* @static
|
|
11016
|
+
* @memberOf _
|
|
11017
|
+
* @since 0.1.0
|
|
11018
|
+
* @alias each
|
|
11019
|
+
* @category Collection
|
|
11020
|
+
* @param {Array|Object} collection The collection to iterate over.
|
|
11021
|
+
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
|
|
11022
|
+
* @returns {Array|Object} Returns `collection`.
|
|
11023
|
+
* @see _.forEachRight
|
|
11024
|
+
* @example
|
|
11025
|
+
*
|
|
11026
|
+
* _.forEach([1, 2], function(value) {
|
|
11027
|
+
* console.log(value);
|
|
11028
|
+
* });
|
|
11029
|
+
* // => Logs `1` then `2`.
|
|
11030
|
+
*
|
|
11031
|
+
* _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
|
|
11032
|
+
* console.log(key);
|
|
11033
|
+
* });
|
|
11034
|
+
* // => Logs 'a' then 'b' (iteration order is not guaranteed).
|
|
11035
|
+
*/
|
|
11036
|
+
function forEach(collection, iteratee) {
|
|
11037
|
+
var func = isArray$1(collection) ? arrayEach : baseEach$1;
|
|
11038
|
+
return func(collection, castFunction(iteratee));
|
|
11039
|
+
}
|
|
11040
|
+
|
|
11069
11041
|
/**
|
|
11070
11042
|
* Base layer for plugins
|
|
11071
11043
|
* Provide minimal starting core for plugins to work
|
|
@@ -12117,24 +12089,23 @@ const SortingSign = ({ column }) => {
|
|
|
12117
12089
|
/**
|
|
12118
12090
|
* Lifecycle
|
|
12119
12091
|
* 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.
|
|
12120
|
-
*
|
|
12121
|
-
* 2. Method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.
|
|
12092
|
+
* 2. @event `beforesourcesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted.
|
|
12122
12093
|
* 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.
|
|
12123
12094
|
* 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.
|
|
12124
12095
|
*
|
|
12125
12096
|
* Note: If you prevent an event, it will not proceed to the subsequent steps.
|
|
12126
12097
|
*/
|
|
12127
12098
|
class SortingPlugin extends BasePlugin {
|
|
12128
|
-
runSorting(order, comparison, ignoreViewportUpdate) {
|
|
12129
|
-
var _a;
|
|
12130
|
-
this.sort(order, comparison, undefined, ignoreViewportUpdate);
|
|
12131
|
-
(_a = this.sortingPromise) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
12132
|
-
this.sortingPromise = null;
|
|
12133
|
-
}
|
|
12134
12099
|
constructor(revogrid, providers, config) {
|
|
12135
12100
|
super(revogrid, providers);
|
|
12136
12101
|
this.revogrid = revogrid;
|
|
12102
|
+
/**
|
|
12103
|
+
* Delayed sorting promise
|
|
12104
|
+
*/
|
|
12137
12105
|
this.sortingPromise = null;
|
|
12106
|
+
/**
|
|
12107
|
+
* We need to sort only so often
|
|
12108
|
+
*/
|
|
12138
12109
|
this.postponeSort = debounce$1((order, comparison, ignoreViewportUpdate) => this.runSorting(order, comparison, ignoreViewportUpdate), 50);
|
|
12139
12110
|
const setConfig = (cfg) => {
|
|
12140
12111
|
var _a;
|
|
@@ -12145,9 +12116,15 @@ class SortingPlugin extends BasePlugin {
|
|
|
12145
12116
|
sortingFunc[col.prop] = getComparer(col, col.order);
|
|
12146
12117
|
order[col.prop] = col.order;
|
|
12147
12118
|
});
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12119
|
+
if (cfg.additive) {
|
|
12120
|
+
this.sorting = Object.assign(Object.assign({}, this.sorting), order);
|
|
12121
|
+
this.sortingFunc = Object.assign(Object.assign({}, this.sortingFunc), sortingFunc);
|
|
12122
|
+
}
|
|
12123
|
+
else {
|
|
12124
|
+
// // set sorting
|
|
12125
|
+
this.sorting = order;
|
|
12126
|
+
this.sortingFunc = sortingFunc;
|
|
12127
|
+
}
|
|
12151
12128
|
}
|
|
12152
12129
|
};
|
|
12153
12130
|
setConfig(config);
|
|
@@ -12156,6 +12133,13 @@ class SortingPlugin extends BasePlugin {
|
|
|
12156
12133
|
setConfig(detail);
|
|
12157
12134
|
this.startSorting(this.sorting, this.sortingFunc);
|
|
12158
12135
|
});
|
|
12136
|
+
this.addEventListener('beforeheaderrender', ({ detail, }) => {
|
|
12137
|
+
var _a;
|
|
12138
|
+
const { data: column } = detail;
|
|
12139
|
+
if (column.sortable) {
|
|
12140
|
+
detail.data = Object.assign(Object.assign({}, column), { order: (_a = this.sorting) === null || _a === void 0 ? void 0 : _a[column.prop] });
|
|
12141
|
+
}
|
|
12142
|
+
});
|
|
12159
12143
|
this.addEventListener('beforeanysource', ({ detail: { type }, }) => {
|
|
12160
12144
|
// if sorting was provided - sort data
|
|
12161
12145
|
if (!!this.sorting && this.sortingFunc) {
|
|
@@ -12189,9 +12173,12 @@ class SortingPlugin extends BasePlugin {
|
|
|
12189
12173
|
if (!((_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.column) === null || _b === void 0 ? void 0 : _b.sortable)) {
|
|
12190
12174
|
return;
|
|
12191
12175
|
}
|
|
12192
|
-
this.headerclick(e.detail.column,
|
|
12176
|
+
this.headerclick(e.detail.column, (_d = (_c = e.detail) === null || _c === void 0 ? void 0 : _c.originalEvent) === null || _d === void 0 ? void 0 : _d.shiftKey);
|
|
12193
12177
|
});
|
|
12194
12178
|
}
|
|
12179
|
+
/**
|
|
12180
|
+
* Entry point for sorting, waits for all delayes, registers jobs
|
|
12181
|
+
*/
|
|
12195
12182
|
startSorting(order, sortingFunc, ignoreViewportUpdate) {
|
|
12196
12183
|
if (!this.sortingPromise) {
|
|
12197
12184
|
// add job before render
|
|
@@ -12205,18 +12192,18 @@ class SortingPlugin extends BasePlugin {
|
|
|
12205
12192
|
* Apply sorting to data on header click
|
|
12206
12193
|
* If additive - add to existing sorting, multiple columns can be sorted
|
|
12207
12194
|
*/
|
|
12208
|
-
headerclick(column,
|
|
12209
|
-
var _a, _b;
|
|
12210
|
-
|
|
12195
|
+
headerclick(column, additive) {
|
|
12196
|
+
var _a, _b, _c;
|
|
12197
|
+
const columnProp = column.prop;
|
|
12198
|
+
let order = getNextOrder((_a = this.sorting) === null || _a === void 0 ? void 0 : _a[columnProp]);
|
|
12211
12199
|
const beforeEvent = this.emit('beforesorting', { column, order, additive });
|
|
12212
12200
|
if (beforeEvent.defaultPrevented) {
|
|
12213
12201
|
return;
|
|
12214
12202
|
}
|
|
12215
12203
|
order = beforeEvent.detail.order;
|
|
12216
|
-
const newCol = this.providers.column.updateColumnSorting(beforeEvent.detail.column, index, order, additive);
|
|
12217
12204
|
// apply sort data
|
|
12218
12205
|
const beforeApplyEvent = this.emit('beforesortingapply', {
|
|
12219
|
-
column:
|
|
12206
|
+
column: beforeEvent.detail.column,
|
|
12220
12207
|
order,
|
|
12221
12208
|
additive,
|
|
12222
12209
|
});
|
|
@@ -12230,28 +12217,34 @@ class SortingPlugin extends BasePlugin {
|
|
|
12230
12217
|
this.sorting = Object.assign(Object.assign({}, this.sorting), sorting);
|
|
12231
12218
|
// extend sorting function with new sorting for multiple columns sorting
|
|
12232
12219
|
this.sortingFunc = Object.assign(Object.assign({}, this.sortingFunc), sortingFunc);
|
|
12233
|
-
if (
|
|
12234
|
-
delete sorting[
|
|
12235
|
-
delete sortingFunc[
|
|
12220
|
+
if (columnProp in sorting && size$1(sorting) > 1 && order === undefined) {
|
|
12221
|
+
delete sorting[columnProp];
|
|
12222
|
+
delete sortingFunc[columnProp];
|
|
12236
12223
|
}
|
|
12237
12224
|
else {
|
|
12238
|
-
sorting[
|
|
12239
|
-
sortingFunc[
|
|
12225
|
+
sorting[columnProp] = order;
|
|
12226
|
+
sortingFunc[columnProp] = cmp;
|
|
12240
12227
|
}
|
|
12241
12228
|
}
|
|
12242
12229
|
else {
|
|
12243
12230
|
if (order) {
|
|
12244
12231
|
// reset sorting
|
|
12245
|
-
this.sorting = { [
|
|
12246
|
-
this.sortingFunc = { [
|
|
12232
|
+
this.sorting = { [columnProp]: order };
|
|
12233
|
+
this.sortingFunc = { [columnProp]: cmp };
|
|
12247
12234
|
}
|
|
12248
12235
|
else {
|
|
12249
|
-
(
|
|
12250
|
-
(
|
|
12236
|
+
(_b = this.sorting) === null || _b === void 0 ? true : delete _b[columnProp];
|
|
12237
|
+
(_c = this.sortingFunc) === null || _c === void 0 ? true : delete _c[columnProp];
|
|
12251
12238
|
}
|
|
12252
12239
|
}
|
|
12253
12240
|
this.startSorting(this.sorting, this.sortingFunc);
|
|
12254
12241
|
}
|
|
12242
|
+
runSorting(order, comparison, ignoreViewportUpdate) {
|
|
12243
|
+
var _a;
|
|
12244
|
+
this.sort(order, comparison, undefined, ignoreViewportUpdate);
|
|
12245
|
+
(_a = this.sortingPromise) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
12246
|
+
this.sortingPromise = null;
|
|
12247
|
+
}
|
|
12255
12248
|
/**
|
|
12256
12249
|
* Sort items by sorting function
|
|
12257
12250
|
* @requires proxyItems applied to row store
|
|
@@ -12297,6 +12290,10 @@ class SortingPlugin extends BasePlugin {
|
|
|
12297
12290
|
}
|
|
12298
12291
|
}
|
|
12299
12292
|
}
|
|
12293
|
+
// refresh columns to redraw column headers and show correct icon
|
|
12294
|
+
columnTypes.forEach((type) => {
|
|
12295
|
+
this.providers.column.dataSources[type].refresh();
|
|
12296
|
+
});
|
|
12300
12297
|
this.emit('aftersortingapply');
|
|
12301
12298
|
}
|
|
12302
12299
|
}
|
|
@@ -14555,25 +14552,29 @@ class RevoGridComponent {
|
|
|
14555
14552
|
}
|
|
14556
14553
|
/**
|
|
14557
14554
|
* Update column sorting
|
|
14558
|
-
* @param column -
|
|
14559
|
-
* @param index - virtual column index
|
|
14555
|
+
* @param column - column prop and cellCompare
|
|
14560
14556
|
* @param order - order to apply
|
|
14561
14557
|
* @param additive - if false will replace current order
|
|
14558
|
+
*
|
|
14559
|
+
* later passed to SortingPlugin
|
|
14562
14560
|
*/
|
|
14563
|
-
async updateColumnSorting(column,
|
|
14564
|
-
|
|
14565
|
-
|
|
14566
|
-
|
|
14567
|
-
|
|
14561
|
+
async updateColumnSorting(column, order, additive) {
|
|
14562
|
+
this.sortingconfigchanged.emit({
|
|
14563
|
+
columns: [{
|
|
14564
|
+
prop: column.prop,
|
|
14565
|
+
order,
|
|
14566
|
+
cellCompare: column.cellCompare,
|
|
14567
|
+
}],
|
|
14568
|
+
additive,
|
|
14569
|
+
});
|
|
14568
14570
|
}
|
|
14569
14571
|
/**
|
|
14570
14572
|
* Clears column sorting
|
|
14571
14573
|
*/
|
|
14572
14574
|
async clearSorting() {
|
|
14573
|
-
|
|
14574
|
-
|
|
14575
|
-
}
|
|
14576
|
-
this.columnProvider.clearSorting();
|
|
14575
|
+
this.sortingconfigchanged.emit({
|
|
14576
|
+
columns: [],
|
|
14577
|
+
});
|
|
14577
14578
|
}
|
|
14578
14579
|
/**
|
|
14579
14580
|
* Receive all columns in data source
|
|
@@ -14781,7 +14782,10 @@ class RevoGridComponent {
|
|
|
14781
14782
|
const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
|
|
14782
14783
|
this.aftercolumnsset.emit({
|
|
14783
14784
|
columns,
|
|
14784
|
-
order:
|
|
14785
|
+
order: Object.entries(beforeApplyEvent.detail.sort).reduce((acc, [prop, column]) => {
|
|
14786
|
+
acc[prop] = column.order;
|
|
14787
|
+
return acc;
|
|
14788
|
+
}, {}),
|
|
14785
14789
|
});
|
|
14786
14790
|
}
|
|
14787
14791
|
disableVirtualXChanged(newVal = false, prevVal = false) {
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -61,6 +61,7 @@ Support Millions of cells and thousands of columns easy and efficiently for fast
|
|
|
61
61
|
- Preserve existing collections.
|
|
62
62
|
- Selection.
|
|
63
63
|
- Slider.
|
|
64
|
+
- Header filtering.
|
|
64
65
|
- Custom filters to extend system filters with your own set.
|
|
65
66
|
|
|
66
67
|
- **[Export](https://rv-grid.com/guide/export.plugin)**: Export data to file.
|
|
@@ -76,6 +77,7 @@ Support Millions of cells and thousands of columns easy and efficiently for fast
|
|
|
76
77
|
|
|
77
78
|
- **Grouping**:
|
|
78
79
|
- [Column grouping](https://rv-grid.com/guide/column/grouping) (nested headers).
|
|
80
|
+
- Column grouping Drill Down: Collapse grouping columns to streamline your grid view, trimming away unnecessary columns and enhancing data organization. Perfect for focusing on the information that matters most, while keeping your workspace clean and efficient.
|
|
79
81
|
- [Row grouping](https://rv-grid.com/guide/row/grouping) (nested rows).
|
|
80
82
|
|
|
81
83
|
- **Column Types**: [More details](https://rv-grid.com/guide/column/#Column-Formats)
|
|
@@ -104,11 +106,15 @@ Support Millions of cells and thousands of columns easy and efficiently for fast
|
|
|
104
106
|
|
|
105
107
|
- **[Master Detail/Subtables/Forms](https://rv-grid.com/guide/row/master.pro)**: Expand rows to reveal child data.
|
|
106
108
|
- **[Cell/Column/Row Span/Merge](https://rv-grid.com/guide/cell/merge)**: Merge cells to form groups.
|
|
109
|
+
- **Auto Merge**: Automatically merges cells with identical values in a column.
|
|
110
|
+
- **Form editig**: Edit forms directly within the grid, featuring all necessary fields, including custom options and markdown support for a fast and enhanced data entry experience.
|
|
107
111
|
|
|
108
112
|
- **Customizations**:
|
|
109
113
|
- [Column header template](https://rv-grid.com/guide/column/header.template).
|
|
110
114
|
- [Row header template](https://rv-grid.com/guide/row/headers).
|
|
111
115
|
- [Cell properties](https://rv-grid.com/guide/cell/) (define custom properties for rendered cells).
|
|
116
|
+
- Nested grids: Build a grid inside a grid, showcasing advanced editing options and user interactions for a more dynamic data presentation.
|
|
117
|
+
- Context Menu: Build context menus for any grid element - from cells to headers. Cut, copy, paste, add rows, modify columns, and more. Fully customizable with your own actions and behaviors.
|
|
112
118
|
|
|
113
119
|
- [Cell template](https://rv-grid.com/guide/cell/renderer) (create your own cell views).
|
|
114
120
|
- [Cell editor](https://rv-grid.com/guide/cell/editor) (use predefined or apply your own custom editors and cell types).
|
package/standalone/index.js
CHANGED
|
@@ -99,7 +99,7 @@ const REVOGRID_EVENTS = new Map([
|
|
|
99
99
|
['beforecellrender', 'beforecellrender'],
|
|
100
100
|
['beforedatarender', 'beforedatarender'],
|
|
101
101
|
['dragstartcell', 'dragstartcell'],
|
|
102
|
-
['
|
|
102
|
+
['celleditinit', 'celleditinit'],
|
|
103
103
|
['closeedit', 'closeedit'],
|
|
104
104
|
['filterChange', 'filterChange'],
|
|
105
105
|
['resetChange', 'resetChange'],
|
|
@@ -144,6 +144,7 @@ const REVOGRID_EVENTS = new Map([
|
|
|
144
144
|
['beforekeydown', 'beforekeydown'],
|
|
145
145
|
['beforekeyup', 'beforekeyup'],
|
|
146
146
|
['beforecellsave', 'beforecellsave'],
|
|
147
|
+
['celledit', 'celledit'],
|
|
147
148
|
['scrollview', 'scrollview'],
|
|
148
149
|
['ref', 'ref'],
|
|
149
150
|
['scrollvirtual', 'scrollvirtual'],
|
package/standalone/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"index.js","mappings":"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","names":[],"sources":["src/global/global.ts","src/types/events.ts","src/plugins/add-rows-on-paste.plugin.ts"],"sourcesContent":["import { setMode } from '@stencil/core';\nimport { getTheme } from '../themeManager/theme.service';\n\nsetMode(elm => {\n let theme = (elm as HTMLRevoGridElement).theme || elm.getAttribute('theme');\n if (typeof theme === 'string') {\n theme = theme.trim();\n }\n\n const parsedTheme = getTheme(theme);\n if (parsedTheme !== theme) {\n elm.setAttribute('theme', parsedTheme);\n }\n return parsedTheme;\n});\n","\nexport type RevogridEvents = 'contentsizechanged'|\n 'beforeedit'|\n 'beforerangeedit'|\n 'afteredit'|\n 'beforeautofill'|\n 'beforerange'|\n 'afterfocus'|\n 'roworderchanged'|\n 'beforesorting'|\n 'beforesourcesortingapply'|\n 'beforesortingapply'|\n 'rowdragstart'|\n 'headerclick'|\n 'beforecellfocus'|\n 'beforefocuslost'|\n 'beforesourceset'|\n 'beforeanysource'|\n 'aftersourceset'|\n 'afteranysource'|\n 'beforecolumnsset'|\n 'beforecolumnapplied'|\n 'aftercolumnsset'|\n 'beforefilterapply'|\n 'beforefiltertrimmed'|\n 'beforetrimmed'|\n 'aftertrimmed'|\n 'viewportscroll'|\n 'beforeexport'|\n 'beforeeditstart'|\n 'aftercolumnresize'|\n 'beforerowdefinition'|\n 'filterconfigchanged'|\n 'sortingconfigchanged'|\n 'rowheaderschanged'|\n 'beforegridrender'|\n 'aftergridrender'|\n 'aftergridinit'|\n 'additionaldatachanged'|\n 'afterthemechanged'|\n 'created'|\n 'beforepaste'|\n 'beforepasteapply'|\n 'pasteregion'|\n 'afterpasteapply'|\n 'beforecut'|\n 'clearregion'|\n 'beforecopy'|\n 'beforecopyapply'|\n 'copyregion'|\n 'beforerowrender'|\n 'afterrender'|\n 'beforecellrender'|\n 'beforedatarender'|\n 'dragstartcell'|\n 'celledit'|\n 'closeedit'|\n 'filterChange'|\n 'resetChange'|\n 'beforefocusrender'|\n 'beforescrollintoview'|\n 'afterfocus'|\n 'beforeheaderclick'|\n 'headerresize'|\n 'beforeheaderresize'|\n 'headerdblclick'|\n 'beforeheaderrender'|\n 'beforegroupheaderrender'|\n 'afterheaderrender'|\n 'rowdragstartinit'|\n 'rowdragendinit'|\n 'rowdragmoveinit'|\n 'rowdragmousemove'|\n 'rowdropinit'|\n 'roworderchange'|\n 'beforecopyregion'|\n 'beforepasteregion'|\n 'celleditapply'|\n 'beforecellfocusinit'|\n 'beforenextvpfocus'|\n 'setedit'|\n 'beforeapplyrange'|\n 'beforesetrange'|\n 'setrange'|\n 'beforeeditrender'|\n 'selectall'|\n 'canceledit'|\n 'settemprange'|\n 'beforesettemprange'|\n 'applyfocus'|\n 'focuscell'|\n 'beforerangedataapply'|\n 'selectionchangeinit'|\n 'beforerangecopyapply'|\n 'rangeeditapply'|\n 'clipboardrangecopy'|\n 'clipboardrangepaste'|\n 'beforekeydown'|\n 'beforekeyup'|\n 'beforecellsave'|\n 'scrollview'|\n 'ref'|\n 'scrollvirtual'|\n 'scrollviewport'|\n 'resizeviewport'|\n 'scrollchange'|\n 'scrollviewportsilent'|\n 'html'\nexport const REVOGRID_EVENTS = new Map<RevogridEvents, RevogridEvents>([\n ['contentsizechanged', 'contentsizechanged'],\n ['beforeedit', 'beforeedit'],\n ['beforerangeedit', 'beforerangeedit'],\n ['afteredit', 'afteredit'],\n ['beforeautofill', 'beforeautofill'],\n ['beforerange', 'beforerange'],\n ['afterfocus', 'afterfocus'],\n ['roworderchanged', 'roworderchanged'],\n ['beforesorting', 'beforesorting'],\n ['beforesourcesortingapply', 'beforesourcesortingapply'],\n ['beforesortingapply', 'beforesortingapply'],\n ['rowdragstart', 'rowdragstart'],\n ['headerclick', 'headerclick'],\n ['beforecellfocus', 'beforecellfocus'],\n ['beforefocuslost', 'beforefocuslost'],\n ['beforesourceset', 'beforesourceset'],\n ['beforeanysource', 'beforeanysource'],\n ['aftersourceset', 'aftersourceset'],\n ['afteranysource', 'afteranysource'],\n ['beforecolumnsset', 'beforecolumnsset'],\n ['beforecolumnapplied', 'beforecolumnapplied'],\n ['aftercolumnsset', 'aftercolumnsset'],\n ['beforefilterapply', 'beforefilterapply'],\n ['beforefiltertrimmed', 'beforefiltertrimmed'],\n ['beforetrimmed', 'beforetrimmed'],\n ['aftertrimmed', 'aftertrimmed'],\n ['viewportscroll', 'viewportscroll'],\n ['beforeexport', 'beforeexport'],\n ['beforeeditstart', 'beforeeditstart'],\n ['aftercolumnresize', 'aftercolumnresize'],\n ['beforerowdefinition', 'beforerowdefinition'],\n ['filterconfigchanged', 'filterconfigchanged'],\n ['sortingconfigchanged', 'sortingconfigchanged'],\n ['rowheaderschanged', 'rowheaderschanged'],\n ['beforegridrender', 'beforegridrender'],\n ['aftergridrender', 'aftergridrender'],\n ['aftergridinit', 'aftergridinit'],\n ['additionaldatachanged', 'additionaldatachanged'],\n ['afterthemechanged', 'afterthemechanged'],\n ['created', 'created'],\n ['beforepaste', 'beforepaste'],\n ['beforepasteapply', 'beforepasteapply'],\n ['pasteregion', 'pasteregion'],\n ['afterpasteapply', 'afterpasteapply'],\n ['beforecut', 'beforecut'],\n ['clearregion', 'clearregion'],\n ['beforecopy', 'beforecopy'],\n ['beforecopyapply', 'beforecopyapply'],\n ['copyregion', 'copyregion'],\n ['beforerowrender', 'beforerowrender'],\n ['afterrender', 'afterrender'],\n ['beforecellrender', 'beforecellrender'],\n ['beforedatarender', 'beforedatarender'],\n ['dragstartcell', 'dragstartcell'],\n ['celledit', 'celledit'],\n ['closeedit', 'closeedit'],\n ['filterChange', 'filterChange'],\n ['resetChange', 'resetChange'],\n ['beforefocusrender', 'beforefocusrender'],\n ['beforescrollintoview', 'beforescrollintoview'],\n ['afterfocus', 'afterfocus'],\n ['beforeheaderclick', 'beforeheaderclick'],\n ['headerresize', 'headerresize'],\n ['beforeheaderresize', 'beforeheaderresize'],\n ['headerdblclick', 'headerdblclick'],\n ['beforeheaderrender', 'beforeheaderrender'],\n ['beforegroupheaderrender', 'beforegroupheaderrender'],\n ['afterheaderrender', 'afterheaderrender'],\n ['rowdragstartinit', 'rowdragstartinit'],\n ['rowdragendinit', 'rowdragendinit'],\n ['rowdragmoveinit', 'rowdragmoveinit'],\n ['rowdragmousemove', 'rowdragmousemove'],\n ['rowdropinit', 'rowdropinit'],\n ['roworderchange', 'roworderchange'],\n ['beforecopyregion', 'beforecopyregion'],\n ['beforepasteregion', 'beforepasteregion'],\n ['celleditapply', 'celleditapply'],\n ['beforecellfocusinit', 'beforecellfocusinit'],\n ['beforenextvpfocus', 'beforenextvpfocus'],\n ['setedit', 'setedit'],\n ['beforeapplyrange', 'beforeapplyrange'],\n ['beforesetrange', 'beforesetrange'],\n ['setrange', 'setrange'],\n ['beforeeditrender', 'beforeeditrender'],\n ['selectall', 'selectall'],\n ['canceledit', 'canceledit'],\n ['settemprange', 'settemprange'],\n ['beforesettemprange', 'beforesettemprange'],\n ['applyfocus', 'applyfocus'],\n ['focuscell', 'focuscell'],\n ['beforerangedataapply', 'beforerangedataapply'],\n ['selectionchangeinit', 'selectionchangeinit'],\n ['beforerangecopyapply', 'beforerangecopyapply'],\n ['rangeeditapply', 'rangeeditapply'],\n ['clipboardrangecopy', 'clipboardrangecopy'],\n ['clipboardrangepaste', 'clipboardrangepaste'],\n ['beforekeydown', 'beforekeydown'],\n ['beforekeyup', 'beforekeyup'],\n ['beforecellsave', 'beforecellsave'],\n ['scrollview', 'scrollview'],\n ['ref', 'ref'],\n ['scrollvirtual', 'scrollvirtual'],\n ['scrollviewport', 'scrollviewport'],\n ['resizeviewport', 'resizeviewport'],\n ['scrollchange', 'scrollchange'],\n ['scrollviewportsilent', 'scrollviewportsilent'],\n ['html', 'html']\n]);","import type { PluginProviders } from '../types/plugin.types';\nimport { BasePlugin } from './base.plugin';\n\n/**\n * Automatically adds new rows when pasted data is larger than current rows\n * @event newRows - is triggered when new rows are added. Data of new rows can be filled with default values. If the event is prevented, no rows will be added\n */\nexport class AutoAddRowsPlugin extends BasePlugin {\n constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders) {\n super(revogrid, providers);\n this.addEventListener('beforepasteapply', evt =>\n this.handleBeforePasteApply(evt),\n );\n }\n\n handleBeforePasteApply(\n event: CustomEvent<{\n raw: string;\n parsed: string[][];\n event: ClipboardEvent;\n }>,\n ) {\n const start = this.providers.selection.focused;\n const isEditing = this.providers.selection.edit != null;\n\n if (!start || isEditing) {\n return;\n }\n\n const rowLength =\n this.providers.data.stores.rgRow.store.get('items').length;\n\n const endRow = start.y + event.detail.parsed.length;\n\n if (rowLength < endRow) {\n const count = endRow - rowLength;\n const newRows = Array.from({ length: count }, (_, i) => ({\n index: rowLength + i,\n data: {},\n }));\n\n const event = this.emit('newRows', { newRows: newRows });\n\n if (event.defaultPrevented) {\n return;\n }\n\n const items = [\n ...this.providers.data.stores.rgRow.store.get('source'),\n ...event.detail.newRows.map(j => j.data),\n ];\n\n this.providers.data.setData(items);\n }\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"index.js","mappings":"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","names":[],"sources":["src/global/global.ts","src/types/events.ts","src/plugins/add-rows-on-paste.plugin.ts"],"sourcesContent":["import { setMode } from '@stencil/core';\nimport { getTheme } from '../themeManager/theme.service';\n\nsetMode(elm => {\n let theme = (elm as HTMLRevoGridElement).theme || elm.getAttribute('theme');\n if (typeof theme === 'string') {\n theme = theme.trim();\n }\n\n const parsedTheme = getTheme(theme);\n if (parsedTheme !== theme) {\n elm.setAttribute('theme', parsedTheme);\n }\n return parsedTheme;\n});\n","\nexport type RevogridEvents = 'contentsizechanged'|\n 'beforeedit'|\n 'beforerangeedit'|\n 'afteredit'|\n 'beforeautofill'|\n 'beforerange'|\n 'afterfocus'|\n 'roworderchanged'|\n 'beforesorting'|\n 'beforesourcesortingapply'|\n 'beforesortingapply'|\n 'rowdragstart'|\n 'headerclick'|\n 'beforecellfocus'|\n 'beforefocuslost'|\n 'beforesourceset'|\n 'beforeanysource'|\n 'aftersourceset'|\n 'afteranysource'|\n 'beforecolumnsset'|\n 'beforecolumnapplied'|\n 'aftercolumnsset'|\n 'beforefilterapply'|\n 'beforefiltertrimmed'|\n 'beforetrimmed'|\n 'aftertrimmed'|\n 'viewportscroll'|\n 'beforeexport'|\n 'beforeeditstart'|\n 'aftercolumnresize'|\n 'beforerowdefinition'|\n 'filterconfigchanged'|\n 'sortingconfigchanged'|\n 'rowheaderschanged'|\n 'beforegridrender'|\n 'aftergridrender'|\n 'aftergridinit'|\n 'additionaldatachanged'|\n 'afterthemechanged'|\n 'created'|\n 'beforepaste'|\n 'beforepasteapply'|\n 'pasteregion'|\n 'afterpasteapply'|\n 'beforecut'|\n 'clearregion'|\n 'beforecopy'|\n 'beforecopyapply'|\n 'copyregion'|\n 'beforerowrender'|\n 'afterrender'|\n 'beforecellrender'|\n 'beforedatarender'|\n 'dragstartcell'|\n 'celleditinit'|\n 'closeedit'|\n 'filterChange'|\n 'resetChange'|\n 'beforefocusrender'|\n 'beforescrollintoview'|\n 'afterfocus'|\n 'beforeheaderclick'|\n 'headerresize'|\n 'beforeheaderresize'|\n 'headerdblclick'|\n 'beforeheaderrender'|\n 'beforegroupheaderrender'|\n 'afterheaderrender'|\n 'rowdragstartinit'|\n 'rowdragendinit'|\n 'rowdragmoveinit'|\n 'rowdragmousemove'|\n 'rowdropinit'|\n 'roworderchange'|\n 'beforecopyregion'|\n 'beforepasteregion'|\n 'celleditapply'|\n 'beforecellfocusinit'|\n 'beforenextvpfocus'|\n 'setedit'|\n 'beforeapplyrange'|\n 'beforesetrange'|\n 'setrange'|\n 'beforeeditrender'|\n 'selectall'|\n 'canceledit'|\n 'settemprange'|\n 'beforesettemprange'|\n 'applyfocus'|\n 'focuscell'|\n 'beforerangedataapply'|\n 'selectionchangeinit'|\n 'beforerangecopyapply'|\n 'rangeeditapply'|\n 'clipboardrangecopy'|\n 'clipboardrangepaste'|\n 'beforekeydown'|\n 'beforekeyup'|\n 'beforecellsave'|\n 'celledit'|\n 'scrollview'|\n 'ref'|\n 'scrollvirtual'|\n 'scrollviewport'|\n 'resizeviewport'|\n 'scrollchange'|\n 'scrollviewportsilent'|\n 'html'\nexport const REVOGRID_EVENTS = new Map<RevogridEvents, RevogridEvents>([\n ['contentsizechanged', 'contentsizechanged'],\n ['beforeedit', 'beforeedit'],\n ['beforerangeedit', 'beforerangeedit'],\n ['afteredit', 'afteredit'],\n ['beforeautofill', 'beforeautofill'],\n ['beforerange', 'beforerange'],\n ['afterfocus', 'afterfocus'],\n ['roworderchanged', 'roworderchanged'],\n ['beforesorting', 'beforesorting'],\n ['beforesourcesortingapply', 'beforesourcesortingapply'],\n ['beforesortingapply', 'beforesortingapply'],\n ['rowdragstart', 'rowdragstart'],\n ['headerclick', 'headerclick'],\n ['beforecellfocus', 'beforecellfocus'],\n ['beforefocuslost', 'beforefocuslost'],\n ['beforesourceset', 'beforesourceset'],\n ['beforeanysource', 'beforeanysource'],\n ['aftersourceset', 'aftersourceset'],\n ['afteranysource', 'afteranysource'],\n ['beforecolumnsset', 'beforecolumnsset'],\n ['beforecolumnapplied', 'beforecolumnapplied'],\n ['aftercolumnsset', 'aftercolumnsset'],\n ['beforefilterapply', 'beforefilterapply'],\n ['beforefiltertrimmed', 'beforefiltertrimmed'],\n ['beforetrimmed', 'beforetrimmed'],\n ['aftertrimmed', 'aftertrimmed'],\n ['viewportscroll', 'viewportscroll'],\n ['beforeexport', 'beforeexport'],\n ['beforeeditstart', 'beforeeditstart'],\n ['aftercolumnresize', 'aftercolumnresize'],\n ['beforerowdefinition', 'beforerowdefinition'],\n ['filterconfigchanged', 'filterconfigchanged'],\n ['sortingconfigchanged', 'sortingconfigchanged'],\n ['rowheaderschanged', 'rowheaderschanged'],\n ['beforegridrender', 'beforegridrender'],\n ['aftergridrender', 'aftergridrender'],\n ['aftergridinit', 'aftergridinit'],\n ['additionaldatachanged', 'additionaldatachanged'],\n ['afterthemechanged', 'afterthemechanged'],\n ['created', 'created'],\n ['beforepaste', 'beforepaste'],\n ['beforepasteapply', 'beforepasteapply'],\n ['pasteregion', 'pasteregion'],\n ['afterpasteapply', 'afterpasteapply'],\n ['beforecut', 'beforecut'],\n ['clearregion', 'clearregion'],\n ['beforecopy', 'beforecopy'],\n ['beforecopyapply', 'beforecopyapply'],\n ['copyregion', 'copyregion'],\n ['beforerowrender', 'beforerowrender'],\n ['afterrender', 'afterrender'],\n ['beforecellrender', 'beforecellrender'],\n ['beforedatarender', 'beforedatarender'],\n ['dragstartcell', 'dragstartcell'],\n ['celleditinit', 'celleditinit'],\n ['closeedit', 'closeedit'],\n ['filterChange', 'filterChange'],\n ['resetChange', 'resetChange'],\n ['beforefocusrender', 'beforefocusrender'],\n ['beforescrollintoview', 'beforescrollintoview'],\n ['afterfocus', 'afterfocus'],\n ['beforeheaderclick', 'beforeheaderclick'],\n ['headerresize', 'headerresize'],\n ['beforeheaderresize', 'beforeheaderresize'],\n ['headerdblclick', 'headerdblclick'],\n ['beforeheaderrender', 'beforeheaderrender'],\n ['beforegroupheaderrender', 'beforegroupheaderrender'],\n ['afterheaderrender', 'afterheaderrender'],\n ['rowdragstartinit', 'rowdragstartinit'],\n ['rowdragendinit', 'rowdragendinit'],\n ['rowdragmoveinit', 'rowdragmoveinit'],\n ['rowdragmousemove', 'rowdragmousemove'],\n ['rowdropinit', 'rowdropinit'],\n ['roworderchange', 'roworderchange'],\n ['beforecopyregion', 'beforecopyregion'],\n ['beforepasteregion', 'beforepasteregion'],\n ['celleditapply', 'celleditapply'],\n ['beforecellfocusinit', 'beforecellfocusinit'],\n ['beforenextvpfocus', 'beforenextvpfocus'],\n ['setedit', 'setedit'],\n ['beforeapplyrange', 'beforeapplyrange'],\n ['beforesetrange', 'beforesetrange'],\n ['setrange', 'setrange'],\n ['beforeeditrender', 'beforeeditrender'],\n ['selectall', 'selectall'],\n ['canceledit', 'canceledit'],\n ['settemprange', 'settemprange'],\n ['beforesettemprange', 'beforesettemprange'],\n ['applyfocus', 'applyfocus'],\n ['focuscell', 'focuscell'],\n ['beforerangedataapply', 'beforerangedataapply'],\n ['selectionchangeinit', 'selectionchangeinit'],\n ['beforerangecopyapply', 'beforerangecopyapply'],\n ['rangeeditapply', 'rangeeditapply'],\n ['clipboardrangecopy', 'clipboardrangecopy'],\n ['clipboardrangepaste', 'clipboardrangepaste'],\n ['beforekeydown', 'beforekeydown'],\n ['beforekeyup', 'beforekeyup'],\n ['beforecellsave', 'beforecellsave'],\n ['celledit', 'celledit'],\n ['scrollview', 'scrollview'],\n ['ref', 'ref'],\n ['scrollvirtual', 'scrollvirtual'],\n ['scrollviewport', 'scrollviewport'],\n ['resizeviewport', 'resizeviewport'],\n ['scrollchange', 'scrollchange'],\n ['scrollviewportsilent', 'scrollviewportsilent'],\n ['html', 'html']\n]);","import type { PluginProviders } from '../types/plugin.types';\nimport { BasePlugin } from './base.plugin';\n\n/**\n * Automatically adds new rows when pasted data is larger than current rows\n * @event newRows - is triggered when new rows are added. Data of new rows can be filled with default values. If the event is prevented, no rows will be added\n */\nexport class AutoAddRowsPlugin extends BasePlugin {\n constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders) {\n super(revogrid, providers);\n this.addEventListener('beforepasteapply', evt =>\n this.handleBeforePasteApply(evt),\n );\n }\n\n handleBeforePasteApply(\n event: CustomEvent<{\n raw: string;\n parsed: string[][];\n event: ClipboardEvent;\n }>,\n ) {\n const start = this.providers.selection.focused;\n const isEditing = this.providers.selection.edit != null;\n\n if (!start || isEditing) {\n return;\n }\n\n const rowLength =\n this.providers.data.stores.rgRow.store.get('items').length;\n\n const endRow = start.y + event.detail.parsed.length;\n\n if (rowLength < endRow) {\n const count = endRow - rowLength;\n const newRows = Array.from({ length: count }, (_, i) => ({\n index: rowLength + i,\n data: {},\n }));\n\n const event = this.emit('newRows', { newRows: newRows });\n\n if (event.defaultPrevented) {\n return;\n }\n\n const items = [\n ...this.providers.data.stores.rgRow.store.get('source'),\n ...event.detail.newRows.map(j => j.data),\n ];\n\n this.providers.data.setData(items);\n }\n }\n}\n"],"version":3}
|