UNPKG

@revolist/revogrid

Version:

Virtual reactive data grid spreadsheet component - RevoGrid.

41 lines (40 loc) 1.59 kB
/*! * Built by Revolist OU ❤️ */ import { BasePlugin } from "./base.plugin"; /** * Automatically adds new rows when pasted data is larger than current rows * @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 */ export class AutoAddRowsPlugin extends BasePlugin { constructor(revogrid, providers) { super(revogrid, providers); this.addEventListener('beforepasteapply', evt => this.handleBeforePasteApply(evt)); } handleBeforePasteApply(event) { const start = this.providers.selection.focused; const isEditing = this.providers.selection.edit != null; if (!start || isEditing) { return; } const rowLength = this.providers.data.stores.rgRow.store.get('items').length; const endRow = start.y + event.detail.parsed.length; if (rowLength < endRow) { const count = endRow - rowLength; const newRows = Array.from({ length: count }, (_, i) => ({ index: rowLength + i, data: {}, })); const event = this.emit('newRows', { newRows: newRows }); if (event.defaultPrevented) { return; } const items = [ ...this.providers.data.stores.rgRow.store.get('source'), ...event.detail.newRows.map(j => j.data), ]; this.providers.data.setData(items); } } } //# sourceMappingURL=add-rows-on-paste.plugin.js.map