UNPKG

@serenity-is/sleekgrid

Version:

A modern Data Grid / Spreadsheet component

127 lines (123 loc) 4.96 kB
var Slick = Slick || {}; Slick._ = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/plugins/rowmovemanager.ts var rowmovemanager_exports = {}; __export(rowmovemanager_exports, { RowMoveManager: () => RowMoveManager }); // global-externals:_ var { EventEmitter, EventSubscriber, H } = Slick; // src/plugins/rowmovemanager.ts var _RowMoveManager = class _RowMoveManager { constructor(options) { this.handler = new EventSubscriber(); this.onBeforeMoveRows = new EventEmitter(); this.onMoveRows = new EventEmitter(); this.options = Object.assign({}, _RowMoveManager.defaults, options); } init(grid) { this.grid = grid; this.handler.subscribe(grid.onDragInit, this.handleDragInit.bind(this)).subscribe(grid.onDragStart, this.handleDragStart.bind(this)).subscribe(grid.onDrag, this.handleDrag.bind(this)).subscribe(grid.onDragEnd, this.handleDragEnd.bind(this)); } destroy() { var _a; (_a = this.handler) == null ? void 0 : _a.unsubscribeAll(); } handleDragInit(e) { e.stopImmediatePropagation(); } handleDragStart(e, dd) { let cell = this.grid.getCellFromEvent(e); if (this.options.cancelEditOnDrag && this.grid.getEditorLock().isActive()) { this.grid.getEditorLock().cancelCurrentEdit(); } if (this.grid.getEditorLock().isActive() || !/move|selectAndMove/.test(this.grid.getColumns()[cell.cell].behavior)) { return false; } this.dragging = true; e.stopImmediatePropagation(); let selectedRows = this.grid.getSelectedRows(); if (selectedRows.length == 0 || selectedRows.indexOf(cell.row) == -1) { selectedRows = [cell.row]; this.grid.setSelectedRows(selectedRows); } let rowHeight = this.grid.getOptions().rowHeight; dd.selectedRows = selectedRows; let canvas = this.grid.getCanvasNode(); dd.selectionProxy = canvas.appendChild(H("div", { "class": "slick-reorder-proxy", "style": `position: absolute; z-index: 9999; width: ${canvas.clientWidth}px; height: ${rowHeight * selectedRows.length}px` })); dd.guide = canvas.appendChild(H("div", { "class": "slick-reorder-guide", "style": `position: absolute; z-index: 99998; width: ${canvas.clientWidth}px; top: -1000` })); dd.insertBefore = -1; } handleDrag(e, dd) { if (!this.dragging) return; e.stopImmediatePropagation(); let canvas = this.grid.getCanvasNode(); let box = canvas.getBoundingClientRect(); let docElem = document.documentElement; let canvasTop = box.top + window.scrollY - docElem.clientTop; let top = e.pageY - canvasTop; dd.selectionProxy.style.top = top - 5 + "px"; let insertBefore = Math.max(0, Math.min(Math.round(top / this.grid.getOptions().rowHeight), this.grid.getDataLength())); if (insertBefore !== dd.insertBefore) { let eventData = { rows: dd.selectedRows, insertBefore }; if (this.onBeforeMoveRows.notify(eventData) === false) { dd.guide.style.top = "-1000"; dd.canMove = false; } else { dd.guide.style.top = insertBefore * this.grid.getOptions().rowHeight + "px"; dd.canMove = true; } dd.insertBefore = insertBefore; } } handleDragEnd(e, dd) { if (!this.dragging) return; this.dragging = false; e.stopImmediatePropagation(); dd.guide.remove(); dd.selectionProxy.remove(); if (dd.canMove) { let eventData = { rows: dd.selectedRows, insertBefore: dd.insertBefore }; this.onMoveRows.notify(eventData); } } }; _RowMoveManager.defaults = { cancelEditOnDrag: false }; var RowMoveManager = _RowMoveManager; return __toCommonJS(rowmovemanager_exports); })(); ["Data", "Editors", "Formatters", "Plugins"].forEach(ns => Slick._[ns] && (Slick[ns] = Object.assign(Slick[ns] || {}, Slick._[ns])) && delete Slick._[ns]); Object.assign(Slick, Slick._); delete Slick._; //# sourceMappingURL=slick.rowmovemanager.js.map