d2coreui 23.0.28 → 23.0.30

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.
@@ -1 +1 @@
1
- {"version":3,"file":"rangeSelector.js","sourceRoot":"","sources":["../../../../../components/grid/cell/rangeSelector.js"],"names":[],"mappings":"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","sourcesContent":["import {\r\n _areEqual,\r\n _exists,\r\n _includes, _isDomLayout,\r\n _last,\r\n _makeNull,\r\n _missing, _removeFromArray,\r\n _shallowCompare,\r\n AutoScrollService, BeanStub\r\n} from \"ag-grid-community\";\r\n\r\nexport class RangeSelector extends BeanStub {\r\n beanName = \"RangeSelector\";\r\n\r\n wireBeans(beans) {\r\n this.rowModel = beans.rowModel;\r\n this.dragService = beans.dragService;\r\n this.columnModel = beans.columnModel;\r\n this.visibleColsService = beans.visibleColsService;\r\n this.cellNavigationService = beans.cellNavigationService;\r\n this.pinnedRowModel = beans.pinnedRowModel;\r\n this.rowPositionUtils = beans.rowPositionUtils;\r\n this.cellPositionUtils = beans.cellPositionUtils;\r\n this.ctrlsService = beans.ctrlsService;\r\n this.valueService = beans.valueService;\r\n this.eventService = beans.eventService;\r\n this.mouseEventService = beans.mouseEventService;\r\n this.gridApi = beans.gridApi;\r\n this.eGridDiv = beans.eGridDiv;\r\n this.focusService = beans.focusService;\r\n this.gos = beans.gos;\r\n }\r\n\r\n postConstruct() {\r\n this.cellRanges = [];\r\n this.bodyScrollListener = this.onBodyScroll.bind(this);\r\n this.dragging = false;\r\n\r\n this.eventService.addEventListener(\"newColumnsLoaded\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnPivotModeChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnRowGroupChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnPivotChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnGroupOpened\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnMoved\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnPinned\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnVisible\", this.onColumnVisibleChange.bind(this));\r\n\r\n this.ctrlsService.whenReady(this,() => {\r\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\r\n this.autoScrollService = new AutoScrollService({\r\n scrollContainer: gridBodyCon.getBodyViewportElement(),\r\n scrollAxis: 'xy',\r\n getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,\r\n setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),\r\n getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,\r\n setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),\r\n shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),\r\n shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()\r\n });\r\n });\r\n\r\n //intitialization of drag event handling\r\n // const eContainers = guiRoot.querySelectorAll(`[ref=\"eContainer\"]`);\r\n // for (const eContainer of eContainers) {\r\n const params = {\r\n eElement: this.eGridDiv,\r\n onDragStart: this.onDragStart.bind(this),\r\n onDragStop: this.onDragStop.bind(this),\r\n onDragging: this.onDragging.bind(this)\r\n };\r\n\r\n this.dragService.addDragSource(params);\r\n this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));\r\n // }\r\n }\r\n\r\n cellPositionEquals(cellA, cellB) {\r\n const colsMatch = cellA.column === cellB.column;\r\n const floatingMatch = cellA.rowPinned === cellB.rowPinned;\r\n const indexMatch = cellA.rowIndex === cellB.rowIndex;\r\n return colsMatch && floatingMatch && indexMatch;\r\n }\r\n\r\n onColumnVisibleChange() {\r\n // first move start column in last cell range (i.e. series chart range)\r\n this.refreshLastRangeStart();\r\n\r\n // then check if the column visibility has changed in any cell range\r\n this.cellRanges.forEach(cellRange => {\r\n const beforeCols = cellRange.columns;\r\n\r\n // remove hidden cols from cell range\r\n cellRange.columns = cellRange.columns.filter(col => col.isVisible());\r\n\r\n const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);\r\n if (colsInRangeChanged) {\r\n this.dispatchChangedEvent(false, true, cellRange.id);\r\n }\r\n });\r\n }\r\n\r\n refreshLastRangeStart() {\r\n const lastRange = _last(this.cellRanges);\r\n if (!lastRange) {\r\n return;\r\n }\r\n\r\n this.refreshRangeStart(lastRange);\r\n }\r\n\r\n isContiguousRange(cellRange) {\r\n const rangeColumns = cellRange.columns;\r\n\r\n if (!rangeColumns.length) {\r\n return false;\r\n }\r\n\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n\r\n return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\r\n }\r\n\r\n getRangeStartRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\r\n cellRange.startRow : cellRange.endRow;\r\n }\r\n const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;\r\n return {rowIndex: 0, rowPinned};\r\n }\r\n\r\n getRangeEndRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\r\n cellRange.endRow : cellRange.startRow;\r\n }\r\n\r\n const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\r\n const pinnedBottom = pinnedBottomRowCount > 0;\r\n\r\n if (pinnedBottom) {\r\n return {\r\n rowIndex: pinnedBottomRowCount - 1,\r\n rowPinned: 'bottom'\r\n };\r\n }\r\n\r\n return {\r\n rowIndex: this.rowModel.getRowCount() - 1,\r\n rowPinned: null\r\n };\r\n }\r\n\r\n setRangeToCell(cell, appendRange = false) {\r\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\r\n if (!columns) {\r\n return;\r\n }\r\n this.removeAllCellRanges(true);\r\n const rowForCell = {\r\n rowIndex: cell.rowIndex,\r\n rowPinned: cell.rowPinned\r\n };\r\n\r\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\r\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\r\n // many times to the clipboard.\r\n let cellRange;\r\n for (let i = 0; i < this.cellRanges.length; i++) {\r\n const range = this.cellRanges[i];\r\n const matches =\r\n // check cols are same\r\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\r\n // check rows are same\r\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\r\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\r\n if (matches) {\r\n cellRange = range;\r\n break;\r\n }\r\n }\r\n\r\n if (cellRange) {\r\n // we need it at the end of the list, as the dragStart picks the last created\r\n // range as the start point for the drag\r\n const atEndOfList = _last(this.cellRanges) === cellRange;\r\n\r\n if (!atEndOfList) {\r\n _removeFromArray(this.cellRanges, cellRange);\r\n this.cellRanges.push(cellRange);\r\n }\r\n } else {\r\n cellRange = {\r\n startRow: rowForCell,\r\n endRow: rowForCell,\r\n columns: columns,\r\n startColumn: cell.column\r\n };\r\n this.cellRanges.push(cellRange);\r\n }\r\n\r\n this.newestRangeStartCell = cell;\r\n this.onDragStop();\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n\r\n extendLatestRangeToCell(cellPosition) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n const cellRange = _last(this.cellRanges);\r\n\r\n this.updateRangeEnd(cellRange, cellPosition);\r\n }\r\n\r\n updateRangeEnd(cellRange, cellPosition, silent) {\r\n silent = !!silent;\r\n const endColumn = cellPosition.column;\r\n const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\r\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\r\n return;\r\n }\r\n\r\n cellRange.columns = colsToAdd;\r\n cellRange.endRow = {rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned};\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n refreshRangeStart(cellRange) {\r\n const {startColumn, columns} = cellRange;\r\n\r\n const moveColInCellRange = (colToMove, moveToFront) => {\r\n const otherCols = cellRange.columns.filter(col => col !== colToMove);\r\n if (colToMove) {\r\n cellRange.startColumn = colToMove;\r\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\r\n } else {\r\n cellRange.columns = otherCols;\r\n }\r\n };\r\n\r\n const {left, right} = this.getRangeEdgeColumns(cellRange);\r\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\r\n if (shouldMoveLeftCol) {\r\n moveColInCellRange(left, true);\r\n return;\r\n }\r\n const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;\r\n if (shouldMoveRightCol) {\r\n moveColInCellRange(right, false);\r\n return;\r\n }\r\n }\r\n\r\n getRangeEdgeColumns(cellRange) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allIndices = cellRange.columns\r\n .map(c => allColumns.indexOf(c))\r\n .filter(i => i > -1)\r\n .sort((a, b) => a - b);\r\n\r\n return {\r\n left: allColumns[allIndices[0]],\r\n right: allColumns[_last(allIndices)]\r\n };\r\n }\r\n\r\n // returns true if successful, false if not successful\r\n extendLatestRangeInDirection(key) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const lastRange = _last(this.cellRanges);\r\n\r\n const startCell = this.newestRangeStartCell;\r\n\r\n const firstCol = lastRange.columns[0];\r\n const lastCol = _last(lastRange.columns);\r\n\r\n // find the cell that is at the furthest away corner from the starting cell\r\n const endCellIndex = lastRange.endRow.rowIndex;\r\n const endCellFloating = lastRange.endRow.rowPinned;\r\n const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\r\n\r\n const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};\r\n const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\r\n\r\n // if user is at end of grid, so no cell to extend to, we return false\r\n if (!newEndCell) {\r\n return;\r\n }\r\n\r\n this.setCellRange({\r\n rowStartIndex: startCell.rowIndex,\r\n rowStartPinned: startCell.rowPinned,\r\n rowEndIndex: newEndCell.rowIndex,\r\n rowEndPinned: newEndCell.rowPinned,\r\n columnStart: startCell.column,\r\n columnEnd: newEndCell.column\r\n });\r\n\r\n return newEndCell;\r\n }\r\n\r\n setCellRange(params) {\r\n this.removeAllCellRanges(true);\r\n this.addCellRange(params);\r\n }\r\n\r\n setCellRanges(cellRanges) {\r\n if (_shallowCompare(this.cellRanges, cellRanges)) {\r\n return;\r\n }\r\n this.removeAllCellRanges(true);\r\n\r\n cellRanges.forEach(newRange => {\r\n if (newRange.columns && newRange.startRow) {\r\n this.newestRangeStartCell = {\r\n rowIndex: newRange.startRow.rowIndex,\r\n rowPinned: newRange.startRow.rowPinned,\r\n column: newRange.columns[0]\r\n };\r\n }\r\n this.cellRanges.push(newRange);\r\n });\r\n\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n\r\n createCellRangeFromCellRangeParams(params) {\r\n let columns;\r\n if (params.columns) {\r\n columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);\r\n } else {\r\n const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\r\n const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\r\n if (!columnStart || !columnEnd) {\r\n return;\r\n }\r\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\r\n }\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const startRow = params.rowStartIndex != null ? {\r\n rowIndex: params.rowStartIndex,\r\n rowPinned: params.rowStartPinned\r\n } : undefined;\r\n\r\n const endRow = params.rowEndIndex != null ? {\r\n rowIndex: params.rowEndIndex,\r\n rowPinned: params.rowEndPinned\r\n } : undefined;\r\n\r\n return {\r\n startRow: startRow,\r\n endRow: endRow,\r\n columns: columns,\r\n startColumn: columns[0]\r\n };\r\n }\r\n\r\n addCellRange(params) {\r\n const newRange = this.createCellRangeFromCellRangeParams(params);\r\n if (newRange) {\r\n this.cellRanges.push(newRange);\r\n this.dispatchChangedEvent(false, true, newRange.id);\r\n }\r\n }\r\n\r\n getCellRanges() {\r\n return this.cellRanges;\r\n }\r\n\r\n isEmpty() {\r\n return this.cellRanges.length === 0;\r\n }\r\n\r\n isMoreThanOneCell() {\r\n if (this.cellRanges.length === 0) {\r\n // no ranges, so not more than one cell\r\n return false;\r\n } else if (this.cellRanges.length > 1) {\r\n // many ranges, so more than one cell\r\n return true;\r\n }\r\n\r\n // only one range, return true if range has more than one\r\n const range = this.cellRanges[0];\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n return startRow.rowPinned !== endRow.rowPinned ||\r\n startRow.rowIndex !== endRow.rowIndex ||\r\n range.columns.length !== 1;\r\n }\r\n\r\n removeAllCellRanges(silent) {\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n\r\n this.onDragStop();\r\n this.cellRanges.length = 0;\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n// as the user is dragging outside of the panel, the div starts to scroll, which in turn\r\n// means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\r\n// the selection my mimicking a new mouse event\r\n onBodyScroll() {\r\n this.onDragging(this.lastMouseEvent);\r\n }\r\n\r\n isCellInAnyRange(cell) {\r\n return this.getCellRangeCount(cell) > 0;\r\n }\r\n\r\n isCellInSpecificRange(cell, range) {\r\n const columnInRange = range.columns !== null && _includes(range.columns, cell.column);\r\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\r\n return columnInRange && rowInRange;\r\n }\r\n\r\n isLastCellOfRange(cellRange, cell) {\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\r\n const rangeFirstIndexColumn = cellRange.columns[0];\r\n const rangeLastIndexColumn = _last(cellRange.columns);\r\n const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\r\n const isLastColumn = cell.column === lastRangeColumn;\r\n return isLastColumn && isLastRow;\r\n }\r\n\r\n isBottomRightCell(cellRange, cell) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\r\n\r\n const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);\r\n\r\n return isRightColumn && isLastRow;\r\n }\r\n\r\n// returns the number of ranges this cell is in\r\n getCellRangeCount(cell) {\r\n if (this.isEmpty()) {\r\n return 0;\r\n }\r\n return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;\r\n }\r\n\r\n isRowInRange(rowIndex, floating, cellRange) {\r\n\r\n const firstRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n\r\n const thisRow = {rowIndex: rowIndex, rowPinned: floating};\r\n\r\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\r\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\r\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\r\n\r\n if (equalsFirstRow || equalsLastRow) {\r\n return true;\r\n }\r\n\r\n const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\r\n const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\r\n return afterFirstRow && beforeLastRow;\r\n }\r\n\r\n getDraggingRange() {\r\n return this.draggingRange;\r\n }\r\n\r\n onDragStart(mouseEvent) {\r\n const {shiftKey} = mouseEvent;\r\n const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\r\n if (_missing(mouseCell)) {\r\n // if drag wasn't on cell, then do nothing, including do not set dragging=true,\r\n // (which them means onDragging and onDragStop do nothing)\r\n return;\r\n }\r\n\r\n if (!shiftKey || _exists(_last(this.cellRanges).type)) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n this.dragging = true;\r\n this.draggingCell = mouseCell;\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n if (!shiftKey) {\r\n this.newestRangeStartCell = mouseCell;\r\n }\r\n\r\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\r\n // user clicks it means a range of one cell was created. we need to extend this range\r\n // rather than creating another range. otherwise we end up with two distinct ranges\r\n // from a drag operation (one from click, and one from drag).\r\n if (this.cellRanges.length > 0) {\r\n this.draggingRange = _last(this.cellRanges);\r\n } else {\r\n const mouseRowPosition = {\r\n rowIndex: mouseCell.rowIndex,\r\n rowPinned: mouseCell.rowPinned\r\n };\r\n\r\n this.draggingRange = {\r\n startRow: mouseRowPosition,\r\n endRow: mouseRowPosition,\r\n columns: [mouseCell.column],\r\n startColumn: this.newestRangeStartCell.column\r\n };\r\n this.cellRanges.push(this.draggingRange);\r\n }\r\n\r\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\r\n\r\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\r\n }\r\n\r\n onDragging(mouseEvent) {\r\n if (!this.dragging || !mouseEvent) {\r\n return;\r\n }\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\r\n\r\n const isMouseAndStartInPinned = (position) =>\r\n cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;\r\n\r\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\r\n\r\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\r\n\r\n if (\r\n !cellPosition ||\r\n !this.draggingCell ||\r\n this.cellPositionEquals(this.draggingCell, cellPosition)\r\n ) {\r\n return;\r\n }\r\n\r\n const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n this.draggingCell = cellPosition;\r\n\r\n this.draggingRange.endRow = {\r\n rowIndex: cellPosition.rowIndex,\r\n rowPinned: cellPosition.rowPinned\r\n };\r\n this.draggingRange.columns = columns;\r\n\r\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\r\n this.focusCell(cellPosition);\r\n }\r\n\r\n focusCell(cellPosition) {\r\n const cellFocused = this.focusService.isCellFocused(cellPosition);\r\n if (!cellFocused) {\r\n this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\r\n }\r\n }\r\n\r\n onDragStop() {\r\n if (!this.dragging) {\r\n return;\r\n }\r\n const {id} = this.draggingRange;\r\n this.autoScrollService.ensureCleared();\r\n\r\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\r\n this.lastMouseEvent = null;\r\n this.dragging = false;\r\n this.draggingRange = undefined;\r\n this.draggingCell = undefined;\r\n\r\n this.dispatchChangedEvent(false, true, id);\r\n }\r\n\r\n dispatchChangedEvent(started, finished, id) {\r\n this.cellRanges.map((cellRange) => {\r\n let currentRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const nodesToBeSelected = [];\r\n while (true) {\r\n const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);\r\n if (finishedAllRows || !currentRow || !cellRange.columns) {\r\n break;\r\n }\r\n const rowNode = this.rowPositionUtils.getRowNode(currentRow);\r\n if (!rowNode) {\r\n break;\r\n }\r\n if (!rowNode.isSelected()) {\r\n rowNode.setSelected(true);\r\n }\r\n nodesToBeSelected.push(rowNode.data);\r\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\r\n }\r\n this.gridApi.getSelectedNodes().forEach((node) => {\r\n if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {\r\n node.setSelected(false);\r\n }\r\n });\r\n });\r\n const eventCellSelection = {\r\n type: \"cellSelectionChanged\",\r\n started: started,\r\n finished: finished,\r\n id: id,\r\n };\r\n this.eventService.dispatchEvent(eventCellSelection);\r\n const eventRangeSelection = {\r\n type: \"rangeSelectionChanged\",\r\n started: started,\r\n finished: finished,\r\n id: id,\r\n };\r\n this.eventService.dispatchEvent(eventRangeSelection);\r\n }\r\n\r\n calculateColumnsBetween(columnFrom, columnTo) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const isSameColumn = columnFrom === columnTo;\r\n const fromIndex = allColumns.indexOf(columnFrom);\r\n\r\n if (fromIndex < 0) {\r\n console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);\r\n return undefined;\r\n }\r\n\r\n const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\r\n\r\n if (toIndex < 0) {\r\n console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);\r\n return undefined;\r\n }\r\n\r\n if (isSameColumn) {\r\n return [columnFrom];\r\n }\r\n\r\n const firstIndex = Math.min(fromIndex, toIndex);\r\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\r\n\r\n const columns = [];\r\n\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n columns.push(allColumns[i]);\r\n }\r\n\r\n return columns;\r\n }\r\n}"]}
1
+ {"version":3,"file":"rangeSelector.js","sourceRoot":"","sources":["../../../../../components/grid/cell/rangeSelector.js"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AutoScrollService,\r\n BeanStub,\r\n _areCellsEqual,\r\n _areEqual,\r\n _exists,\r\n _getAbsoluteRowIndex,\r\n _getCellCtrlForEventTarget,\r\n _getRowAbove,\r\n _getRowBelow,\r\n _getRowCtrlForEventTarget,\r\n _getRowNode,\r\n _getSuppressMultiRanges,\r\n _isDomLayout,\r\n _isRowBefore,\r\n _isSameRow,\r\n _isUsingNewCellSelectionAPI,\r\n _last,\r\n _makeNull,\r\n _missing,\r\n _warn,\r\n isRowNumberCol,\r\n _getRowSelectionMode,\r\n} from 'ag-grid-community';\r\n\r\nimport {DragListenerFeature} from './dragListenerFeature';\r\n\r\nconst SelectionMode = {\r\n NORMAL: 0,\r\n ALL_COLUMNS: 1,\r\n};\r\n\r\nexport class RangeSelector extends BeanStub {\r\n beanName = 'rangeSvc';\r\n\r\n constructor() {\r\n super();\r\n\r\n this.bodyScrollListener = this.onBodyScroll.bind(this);\r\n this.cellRanges = [];\r\n this.dragging = false;\r\n this.intersectionRange = false;\r\n }\r\n\r\n wireBeans(beans) {\r\n this.rowModel = beans.rowModel;\r\n this.dragSvc = beans.dragSvc;\r\n this.colModel = beans.colModel;\r\n this.visibleCols = beans.visibleCols;\r\n this.cellNavigation = beans.cellNavigation;\r\n this.ctrlsSvc = beans.ctrlsSvc;\r\n this.valueSvc = beans.valueSvc;\r\n this.gridApi = beans.gridApi;\r\n }\r\n\r\n postConstruct() {\r\n const onColumnsChanged = this.onColumnsChanged.bind(this);\r\n const removeAllCellRanges = () => this.removeAllCellRanges();\r\n const refreshLastRangeStart = this.refreshLastRangeStart.bind(this);\r\n this.addManagedEventListeners({\r\n newColumnsLoaded: onColumnsChanged,\r\n columnVisible: onColumnsChanged,\r\n columnValueChanged: onColumnsChanged,\r\n columnPivotModeChanged: removeAllCellRanges,\r\n columnRowGroupChanged: removeAllCellRanges,\r\n columnPivotChanged: removeAllCellRanges,\r\n columnGroupOpened: refreshLastRangeStart,\r\n columnMoved: refreshLastRangeStart,\r\n columnPinned: refreshLastRangeStart,\r\n });\r\n\r\n this.ctrlsSvc.whenReady(this, (p) => {\r\n const gridBodyCtrl = p.gridBodyCtrl;\r\n this.autoScrollService = new AutoScrollService({\r\n scrollContainer: gridBodyCtrl.eBodyViewport,\r\n scrollAxis: 'xy',\r\n getVerticalPosition: () => gridBodyCtrl.scrollFeature.getVScrollPosition().top,\r\n setVerticalPosition: (position) => gridBodyCtrl.scrollFeature.setVerticalScrollPosition(position),\r\n getHorizontalPosition: () => gridBodyCtrl.scrollFeature.getHScrollPosition().left,\r\n setHorizontalPosition: (position) => gridBodyCtrl.scrollFeature.setHorizontalScrollPosition(position),\r\n shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),\r\n shouldSkipHorizontalScroll: () => !gridBodyCtrl.scrollFeature.isHorizontalScrollShowing(),\r\n });\r\n });\r\n }\r\n\r\n // Drag And Drop Target Methods\r\n onDragStart(mouseEvent) {\r\n const gos = this.gos;\r\n if (\r\n _getRowCtrlForEventTarget(gos, mouseEvent.target)?.isSuppressMouseEvent(mouseEvent)\r\n ) {\r\n return;\r\n }\r\n\r\n const {ctrlKey, metaKey, shiftKey} = mouseEvent;\r\n\r\n // ctrlKey for windows, metaKey for Apple\r\n const isMultiKey = ctrlKey || metaKey;\r\n const allowMulti = !_getSuppressMultiRanges(gos);\r\n const isMultiSelect = allowMulti ? isMultiKey : false;\r\n const extendRange = shiftKey && !!this.cellRanges?.length;\r\n\r\n if (!isMultiSelect && (!extendRange || _exists(_last(this.cellRanges).type))) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n // The browser changes the Event target of cached events when working with the ShadowDOM\r\n // so we need to retrieve the initial DragStartTarget.\r\n const startTarget = this.dragSvc.startTarget;\r\n\r\n if (startTarget) {\r\n this.updateValuesOnMove(startTarget);\r\n }\r\n\r\n if (!this.lastCellHovered) {\r\n return;\r\n }\r\n\r\n this.dragging = true;\r\n this.lastMouseEvent = mouseEvent;\r\n this.intersectionRange = isMultiSelect && this.getCellRangeCount(this.lastCellHovered) > 1;\r\n\r\n if (!extendRange) {\r\n this.setNewestRangeStartCell(this.lastCellHovered);\r\n }\r\n\r\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\r\n // user clicks it means a range of one cell was created. we need to extend this range\r\n // rather than creating another range. otherwise we end up with two distinct ranges\r\n // from a drag operation (one from click, and one from drag).\r\n if (this.cellRanges.length > 0) {\r\n this.draggingRange = _last(this.cellRanges);\r\n } else {\r\n const mouseRowPosition = {\r\n rowIndex: this.lastCellHovered.rowIndex,\r\n rowPinned: this.lastCellHovered.rowPinned,\r\n };\r\n\r\n const columns = this.getColumnsFromModel([this.lastCellHovered.column]);\r\n\r\n if (!columns?.length) {\r\n return;\r\n }\r\n\r\n this.draggingRange = {\r\n startRow: mouseRowPosition,\r\n endRow: mouseRowPosition,\r\n columns,\r\n startColumn: this.newestRangeStartCell.column,\r\n };\r\n\r\n this.cellRanges.push(this.draggingRange);\r\n }\r\n\r\n this.ctrlsSvc\r\n .getGridBodyCtrl()\r\n .eBodyViewport.addEventListener('scroll', this.bodyScrollListener, {passive: true});\r\n\r\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\r\n }\r\n\r\n onDragging(mouseEvent) {\r\n const {dragging, lastCellHovered, newestRangeStartCell, autoScrollService, cellHasChanged} = this;\r\n if (!dragging || !mouseEvent) {\r\n return;\r\n }\r\n\r\n this.updateValuesOnMove(mouseEvent.target);\r\n\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n const isMouseAndStartInPinned = (position) =>\r\n lastCellHovered && lastCellHovered.rowPinned === position && newestRangeStartCell.rowPinned === position;\r\n\r\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\r\n\r\n autoScrollService.check(mouseEvent, skipVerticalScroll);\r\n\r\n if (!cellHasChanged || !lastCellHovered) {\r\n return;\r\n }\r\n\r\n const startColumn = newestRangeStartCell?.column;\r\n const currentColumn = lastCellHovered?.column;\r\n\r\n const columns = this.calculateColumnsBetween(startColumn, currentColumn);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const {rowIndex, rowPinned} = lastCellHovered;\r\n\r\n this.draggingRange.endRow = {\r\n rowIndex,\r\n rowPinned,\r\n };\r\n\r\n this.draggingRange.columns = columns;\r\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\r\n }\r\n\r\n onDragStop() {\r\n if (!this.dragging) {\r\n return;\r\n }\r\n\r\n const {id} = this.draggingRange;\r\n\r\n this.autoScrollService.ensureCleared();\r\n\r\n this.ctrlsSvc.getGridBodyCtrl().eBodyViewport.removeEventListener('scroll', this.bodyScrollListener);\r\n this.lastMouseEvent = null;\r\n this.dragging = false;\r\n this.draggingRange = undefined;\r\n this.lastCellHovered = undefined;\r\n\r\n if (this.intersectionRange) {\r\n this.intersectionRange = false;\r\n this.intersectLastRange();\r\n }\r\n\r\n this.dispatchChangedEvent(false, true, id);\r\n }\r\n\r\n // Called for both columns loaded & column visibility events\r\n onColumnsChanged() {\r\n // first move start column in last cell range (i.e. series chart range)\r\n this.refreshLastRangeStart();\r\n\r\n const allColumns = this.visibleCols.allCols;\r\n\r\n // check that the columns in each range still exist and are visible\r\n for (const cellRange of this.cellRanges) {\r\n const beforeCols = cellRange.columns;\r\n\r\n // remove hidden or removed cols from cell range\r\n cellRange.columns = cellRange.columns.filter(\r\n (col) => col.isVisible() && allColumns.indexOf(col) !== -1\r\n );\r\n\r\n const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);\r\n\r\n if (colsInRangeChanged) {\r\n // notify users and other parts of grid (i.e. status panel) that range has changed\r\n this.dispatchChangedEvent(false, true, cellRange.id);\r\n }\r\n }\r\n // Remove empty cell ranges\r\n const countBefore = this.cellRanges.length;\r\n this.cellRanges = this.cellRanges.filter((range) => range.columns.length > 0);\r\n if (countBefore > this.cellRanges.length) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n refreshLastRangeStart() {\r\n const lastRange = _last(this.cellRanges);\r\n\r\n if (!lastRange) {\r\n return;\r\n }\r\n\r\n this.refreshRangeStart(lastRange);\r\n }\r\n\r\n isContiguousRange(cellRange) {\r\n const rangeColumns = cellRange.columns;\r\n\r\n if (!rangeColumns.length) {\r\n return false;\r\n }\r\n\r\n const allColumns = this.visibleCols.allCols;\r\n const allPositions = rangeColumns.map((c) => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n\r\n return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\r\n }\r\n\r\n getRangeStartRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return _isRowBefore(cellRange.startRow, cellRange.endRow) ? cellRange.startRow : cellRange.endRow;\r\n }\r\n\r\n const pinnedTopRowCount = this.beans.pinnedRowModel?.getPinnedTopRowCount() ?? 0;\r\n const rowPinned = pinnedTopRowCount > 0 ? 'top' : null;\r\n\r\n return {rowIndex: 0, rowPinned};\r\n }\r\n\r\n getRangeEndRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return _isRowBefore(cellRange.startRow, cellRange.endRow) ? cellRange.endRow : cellRange.startRow;\r\n }\r\n\r\n const pinnedBottomRowCount = this.beans.pinnedRowModel?.getPinnedBottomRowCount() ?? 0;\r\n const pinnedBottom = pinnedBottomRowCount > 0;\r\n\r\n if (pinnedBottom) {\r\n return {\r\n rowIndex: pinnedBottomRowCount - 1,\r\n rowPinned: 'bottom',\r\n };\r\n }\r\n\r\n return {\r\n rowIndex: this.rowModel.getRowCount() - 1,\r\n rowPinned: null,\r\n };\r\n }\r\n\r\n getRangeRowCount(cellRange) {\r\n const beans = this.beans;\r\n const start = this.getRangeStartRow(cellRange);\r\n const end = this.getRangeEndRow(cellRange);\r\n\r\n const startIndex = _getAbsoluteRowIndex(beans, start);\r\n const endIndex = _getAbsoluteRowIndex(beans, end);\r\n\r\n return endIndex - startIndex + 1;\r\n }\r\n\r\n setRangeToCell(cell, appendRange = false) {\r\n const {gos} = this;\r\n\r\n const isRowNumbersEnabled = gos.get('rowNumbers');\r\n const allColumnsRange = isRowNumberCol(cell.column);\r\n if (isRowNumbersEnabled) {\r\n this.setSelectionMode(allColumnsRange);\r\n }\r\n\r\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const suppressMultiRangeSelections = _getSuppressMultiRanges(this.gos);\r\n\r\n // if not appending, then clear previous range selections\r\n if (suppressMultiRangeSelections || !appendRange || _missing(this.cellRanges)) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n const rowForCell = {\r\n rowIndex: cell.rowIndex,\r\n rowPinned: cell.rowPinned,\r\n };\r\n\r\n const cellRange = {\r\n startRow: rowForCell,\r\n endRow: rowForCell,\r\n columns,\r\n startColumn: cell.column,\r\n };\r\n\r\n this.cellRanges.push(cellRange);\r\n\r\n this.setNewestRangeStartCell(cell);\r\n this.onDragStop();\r\n this.dispatchChangedEvent(true, true);\r\n }\r\n\r\n getRangeLastColumn(cellRange) {\r\n const firstCol = cellRange.columns[0];\r\n const lastCol = _last(cellRange.columns);\r\n\r\n return (this.newestRangeStartCell?.column === firstCol ? lastCol : firstCol);\r\n }\r\n\r\n extendRangeRowCountBy(cellRange, targetCount) {\r\n const {beans} = this;\r\n const {startRow, endRow} = cellRange;\r\n\r\n if (!startRow || !endRow) {\r\n return;\r\n }\r\n\r\n let stepsMoved = 0;\r\n let currentRow;\r\n\r\n const isBottomUp = _isRowBefore(endRow, startRow);\r\n if (isBottomUp) {\r\n currentRow = startRow;\r\n } else {\r\n currentRow = endRow;\r\n }\r\n\r\n const stepFn = targetCount > 0 ? _getRowBelow : _getRowAbove;\r\n const stepCount = Math.abs(targetCount);\r\n\r\n while (stepsMoved < stepCount) {\r\n const nextRow = stepFn(beans, currentRow);\r\n if (!nextRow) {\r\n break;\r\n }\r\n currentRow = nextRow;\r\n stepsMoved++;\r\n }\r\n\r\n if (stepsMoved !== stepCount) {\r\n return; // Could not move the desired number of rows\r\n }\r\n\r\n const cellPosition = {\r\n ...currentRow,\r\n column: this.getRangeLastColumn(cellRange),\r\n };\r\n\r\n this.updateRangeRowBoundary({cellRange, boundary: isBottomUp ? 'start' : 'end', cellPosition});\r\n }\r\n\r\n extendRangeColumnCountBy(cellRange, delta) {\r\n const {columns, startColumn} = cellRange;\r\n\r\n if (delta === 0) {\r\n return;\r\n }\r\n\r\n const allColumns = this.getColumnsFromModel(); // ordered visible columns\r\n\r\n if (!allColumns) {\r\n return;\r\n }\r\n\r\n const lastColumn = _last(columns);\r\n const endColumn = startColumn === columns[0] ? lastColumn : columns[0];\r\n\r\n if (!lastColumn || !endColumn) {\r\n return;\r\n }\r\n\r\n let startIdx = allColumns.indexOf(startColumn);\r\n const endIdx = allColumns.indexOf(endColumn);\r\n const isRtlRange = endIdx < startIdx;\r\n\r\n if (isRtlRange) {\r\n // if we are anchoring to the left and the range is rtl\r\n // then we need to flip the start and end indices\r\n startIdx = endIdx;\r\n }\r\n\r\n const currentLength = columns.length;\r\n const targetLength = currentLength + delta;\r\n\r\n if (targetLength <= 0) {\r\n return; // can't shrink to 0 or less\r\n }\r\n\r\n const newColumns = [];\r\n\r\n for (let i = startIdx; i < startIdx + targetLength; i++) {\r\n const col = allColumns[i];\r\n if (!col) {\r\n break;\r\n }\r\n newColumns.push(col);\r\n }\r\n\r\n // Only update if length actually changed\r\n if (newColumns.length === targetLength) {\r\n if (isRtlRange) {\r\n // before we add changes to the range, the\r\n // new range start should receive focus\r\n const newColumnToFocus = _last(newColumns);\r\n cellRange.startColumn = newColumnToFocus;\r\n this.focusCellOnNewColumn(cellRange, newColumnToFocus);\r\n }\r\n cellRange.columns = newColumns;\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n extendLatestRangeToCell(cellPosition) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const cellRange = _last(this.cellRanges);\r\n\r\n this.setSelectionMode(isRowNumberCol(cellPosition.column));\r\n this.updateRangeRowBoundary({cellRange, boundary: 'end', cellPosition});\r\n }\r\n\r\n updateRangeRowBoundary(params) {\r\n const {cellRange, boundary, cellPosition, silent = false} = params;\r\n const endColumn = cellPosition.column;\r\n const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\r\n\r\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\r\n return;\r\n }\r\n\r\n if (boundary === 'start') {\r\n this.focusCellOnNewRow(cellRange, cellPosition);\r\n }\r\n\r\n cellRange.columns = colsToAdd;\r\n cellRange[boundary === 'start' ? 'startRow' : 'endRow'] = {\r\n rowIndex: cellPosition.rowIndex,\r\n rowPinned: cellPosition.rowPinned,\r\n };\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n getRangeEdgeColumns(cellRange) {\r\n const allColumns = this.visibleCols.allCols;\r\n const allIndices = cellRange.columns\r\n .map((c) => allColumns.indexOf(c))\r\n .filter((i) => i > -1)\r\n .sort((a, b) => a - b);\r\n\r\n return {\r\n left: allColumns[allIndices[0]],\r\n right: allColumns[_last(allIndices)],\r\n };\r\n }\r\n\r\n // returns true if successful, false if not successful\r\n extendLatestRangeInDirection(event) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n const ctrlKey = event.ctrlKey || event.metaKey;\r\n\r\n const lastRange = _last(this.cellRanges);\r\n const startCell = this.newestRangeStartCell;\r\n\r\n // find the cell that is at the furthest away corner from the starting cell\r\n const endCellIndex = lastRange.endRow.rowIndex;\r\n const endCellFloating = lastRange.endRow.rowPinned;\r\n const endCellColumn = this.getRangeLastColumn(lastRange);\r\n\r\n const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};\r\n const newEndCell = this.cellNavigation.getNextCellToFocus(key, endCell, ctrlKey);\r\n\r\n // if user is at end of grid, so no cell to extend to, we return false\r\n if (!newEndCell) {\r\n return;\r\n }\r\n\r\n this.setCellRange({\r\n rowStartIndex: startCell.rowIndex,\r\n rowStartPinned: startCell.rowPinned,\r\n rowEndIndex: newEndCell.rowIndex,\r\n rowEndPinned: newEndCell.rowPinned,\r\n columnStart: startCell.column,\r\n columnEnd: newEndCell.column,\r\n });\r\n\r\n return newEndCell;\r\n }\r\n\r\n setCellRange(params) {\r\n this.removeAllCellRanges(true);\r\n this.addCellRange(params);\r\n }\r\n\r\n setCellRanges(cellRanges) {\r\n if (_areEqual(this.cellRanges, cellRanges)) {\r\n return;\r\n }\r\n\r\n if (!this.verifyCellRanges(this.gos)) {\r\n return;\r\n }\r\n\r\n this.removeAllCellRanges(true);\r\n\r\n for (const cellRange of cellRanges) {\r\n if (cellRange.columns && cellRange.startRow) {\r\n const columns = this.getColumnsFromModel(cellRange.columns);\r\n if (!columns || columns.length === 0) {\r\n continue;\r\n }\r\n\r\n cellRange.columns = columns;\r\n\r\n const {startRow} = cellRange;\r\n\r\n this.setNewestRangeStartCell({\r\n rowIndex: startRow.rowIndex,\r\n rowPinned: startRow.rowPinned,\r\n column: cellRange.columns[0],\r\n });\r\n }\r\n\r\n this.cellRanges.push(cellRange);\r\n }\r\n\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n\r\n clearCellRangeCellValues(params) {\r\n const {beans, valueSvc, eventSvc} = this;\r\n const {cellEventSource = 'rangeSvc', dispatchWrapperEvents, wrapperEventSource = 'deleteKey'} = params;\r\n\r\n let {cellRanges} = params;\r\n\r\n if (dispatchWrapperEvents) {\r\n eventSvc.dispatchEvent({\r\n type: 'cellSelectionDeleteStart',\r\n source: wrapperEventSource,\r\n });\r\n eventSvc.dispatchEvent({\r\n type: 'rangeDeleteStart',\r\n source: wrapperEventSource,\r\n });\r\n }\r\n\r\n if (!cellRanges) {\r\n cellRanges = this.cellRanges;\r\n }\r\n\r\n for (const cellRange of cellRanges) {\r\n this.forEachRowInRange(cellRange, (rowPosition) => {\r\n const rowNode = _getRowNode(beans, rowPosition);\r\n if (!rowNode) {\r\n return;\r\n }\r\n for (let i = 0; i < cellRange.columns.length; i++) {\r\n const column = this.getColumnFromModel(cellRange.columns[i]);\r\n if (!column?.isCellEditable(rowNode)) {\r\n continue;\r\n }\r\n const emptyValue = valueSvc.getDeleteValue(column, rowNode);\r\n rowNode.setDataValue(column, emptyValue, cellEventSource);\r\n }\r\n });\r\n }\r\n\r\n if (dispatchWrapperEvents) {\r\n eventSvc.dispatchEvent({\r\n type: 'cellSelectionDeleteEnd',\r\n source: wrapperEventSource,\r\n });\r\n eventSvc.dispatchEvent({\r\n type: 'rangeDeleteEnd',\r\n source: wrapperEventSource,\r\n });\r\n }\r\n }\r\n\r\n createCellRangeFromCellRangeParams(params) {\r\n return this.createPartialCellRangeFromRangeParams(params, false);\r\n }\r\n\r\n // Range service can't normally support a range without columns, but charts can\r\n createPartialCellRangeFromRangeParams(\r\n params,\r\n allowEmptyColumns\r\n ) {\r\n const {\r\n columns: paramColumns,\r\n columnStart,\r\n columnEnd,\r\n rowStartIndex,\r\n rowStartPinned,\r\n rowEndIndex,\r\n rowEndPinned,\r\n } = params;\r\n const columnInfo = this.getColumnsFromParams(\r\n paramColumns,\r\n columnStart,\r\n columnEnd\r\n );\r\n\r\n if (!columnInfo || (!allowEmptyColumns && columnInfo.columns.length === 0)) {\r\n return;\r\n }\r\n\r\n const {columns, startsOnTheRight} = columnInfo;\r\n\r\n const startRow = this.createRowPosition(rowStartIndex, rowStartPinned);\r\n const endRow = this.createRowPosition(rowEndIndex, rowEndPinned);\r\n\r\n return {\r\n startRow,\r\n endRow,\r\n columns,\r\n startColumn:\r\n this.getColumnFromModel(columnStart) ?? (startsOnTheRight ? _last(columns) : columns[0]),\r\n };\r\n }\r\n\r\n addCellRange(params) {\r\n const gos = this.gos;\r\n if (!this.verifyCellRanges(gos)) {\r\n return;\r\n }\r\n\r\n // when creating a new range via API we should reset the selection mode\r\n this.setSelectionMode(false);\r\n const newRange = this.createCellRangeFromCellRangeParams(params);\r\n\r\n if (newRange) {\r\n if (newRange.startRow) {\r\n this.setNewestRangeStartCell({\r\n rowIndex: newRange.startRow.rowIndex,\r\n rowPinned: newRange.startRow.rowPinned,\r\n column: newRange.startColumn,\r\n });\r\n }\r\n\r\n this.cellRanges.push(newRange);\r\n this.dispatchChangedEvent(false, true, newRange.id);\r\n }\r\n }\r\n\r\n getCellRanges() {\r\n return this.cellRanges;\r\n }\r\n\r\n isEmpty() {\r\n return this.cellRanges.length === 0;\r\n }\r\n\r\n isMoreThanOneCell() {\r\n const len = this.cellRanges.length;\r\n\r\n if (len === 0) {\r\n return false;\r\n }\r\n if (len > 1) {\r\n return true; // Assumes a cell range must contain at least one cell\r\n }\r\n\r\n // only one range, return true if range has more than one\r\n const range = this.cellRanges[0];\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n\r\n return (\r\n startRow.rowPinned !== endRow.rowPinned ||\r\n startRow.rowIndex !== endRow.rowIndex ||\r\n range.columns.length !== 1\r\n );\r\n }\r\n\r\n areAllRangesAbleToMerge() {\r\n const rowToColumnMap = new Map();\r\n const len = this.cellRanges.length;\r\n\r\n if (len <= 1) {\r\n return true;\r\n }\r\n\r\n for (const range of this.cellRanges) {\r\n this.forEachRowInRange(range, (row) => {\r\n const rowName = `${row.rowPinned || 'normal'}_${row.rowIndex}`;\r\n const columns = rowToColumnMap.get(rowName);\r\n const currentRangeColIds = range.columns.map((col) => col.getId());\r\n if (columns) {\r\n const filteredColumns = currentRangeColIds.filter((col) => columns.indexOf(col) === -1);\r\n columns.push(...filteredColumns);\r\n } else {\r\n rowToColumnMap.set(rowName, currentRangeColIds);\r\n }\r\n });\r\n }\r\n\r\n let columnsString;\r\n\r\n for (const val of rowToColumnMap.values()) {\r\n const currentValString = val.sort().join();\r\n if (columnsString === undefined) {\r\n columnsString = currentValString;\r\n continue;\r\n }\r\n if (columnsString !== currentValString) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n removeAllCellRanges(silent) {\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n\r\n this.onDragStop();\r\n this.cellRanges.length = 0;\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n isCellInAnyRange(cell) {\r\n return this.getCellRangeCount(cell) > 0;\r\n }\r\n\r\n isCellInSpecificRange(cell, range) {\r\n const columnInRange = range.columns?.includes(cell.column);\r\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\r\n\r\n return columnInRange && rowInRange;\r\n }\r\n\r\n isBottomRightCell(cellRange, cell) {\r\n const allColumns = this.visibleCols.allCols;\r\n const allPositions = cellRange.columns.map((c) => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = _isRowBefore(startRow, endRow) ? endRow : startRow;\r\n\r\n const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);\r\n const isLastRow =\r\n cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);\r\n\r\n return isRightColumn && isLastRow;\r\n }\r\n\r\n // returns the number of ranges this cell is in\r\n getCellRangeCount(cell) {\r\n if (this.isEmpty()) {\r\n return 0;\r\n }\r\n\r\n return this.cellRanges.filter((cellRange) => this.isCellInSpecificRange(cell, cellRange)).length;\r\n }\r\n\r\n isRowInRange(rowIndex, rowPinned, cellRange) {\r\n const firstRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const thisRow = {rowIndex, rowPinned: rowPinned || null};\r\n\r\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\r\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\r\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\r\n\r\n if (equalsFirstRow || equalsLastRow) {\r\n return true;\r\n }\r\n\r\n const afterFirstRow = !_isRowBefore(thisRow, firstRow);\r\n const beforeLastRow = _isRowBefore(thisRow, lastRow);\r\n\r\n return afterFirstRow && beforeLastRow;\r\n }\r\n\r\n intersectLastRange(fromMouseClick) {\r\n // when ranges are created due to a mouse click without drag (happens in cellMouseListener)\r\n // this method will be called with `fromMouseClick=true`.\r\n if (fromMouseClick && this.dragging) {\r\n return;\r\n }\r\n if (_getSuppressMultiRanges(this.gos)) {\r\n return;\r\n }\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n const lastRange = _last(this.cellRanges);\r\n const intersectionStartRow = this.getRangeStartRow(lastRange);\r\n const intersectionEndRow = this.getRangeEndRow(lastRange);\r\n\r\n const newRanges = [];\r\n\r\n for (const range of this.cellRanges.slice(0, -1)) {\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n const cols = range.columns;\r\n const intersectCols = cols.filter((col) => lastRange.columns.indexOf(col) === -1);\r\n if (intersectCols.length === cols.length) {\r\n // No overlapping columns, retain previous range\r\n newRanges.push(range);\r\n continue;\r\n }\r\n if (_isRowBefore(intersectionEndRow, startRow) || _isRowBefore(endRow, intersectionStartRow)) {\r\n // No overlapping rows, retain previous range\r\n newRanges.push(range);\r\n continue;\r\n }\r\n const rangeCountBefore = newRanges.length;\r\n // Top\r\n if (_isRowBefore(startRow, intersectionStartRow)) {\r\n const top = {\r\n columns: [...cols],\r\n startColumn: lastRange.startColumn,\r\n startRow: {...startRow},\r\n endRow: _getRowAbove(this.beans, intersectionStartRow),\r\n };\r\n newRanges.push(top);\r\n }\r\n // Left & Right (not contiguous with columns)\r\n if (intersectCols.length > 0) {\r\n const middle = {\r\n columns: intersectCols,\r\n startColumn: intersectCols.includes(lastRange.startColumn)\r\n ? lastRange.startColumn\r\n : intersectCols[0],\r\n startRow: this.rowMax([{...intersectionStartRow}, {...startRow}]),\r\n endRow: this.rowMin([{...intersectionEndRow}, {...endRow}]),\r\n };\r\n newRanges.push(middle);\r\n }\r\n // Bottom\r\n if (_isRowBefore(intersectionEndRow, endRow)) {\r\n newRanges.push({\r\n columns: [...cols],\r\n startColumn: lastRange.startColumn,\r\n startRow: _getRowBelow(this.beans, intersectionEndRow),\r\n endRow: {...endRow},\r\n });\r\n }\r\n if (newRanges.length - rangeCountBefore === 1) {\r\n // Only one range result from the intersection.\r\n // Copy the source range's id, since essentially we just reduced it's size\r\n newRanges[newRanges.length - 1].id = range.id;\r\n }\r\n }\r\n this.cellRanges = newRanges;\r\n\r\n // when this is called because of a clickEvent and the ranges were changed\r\n // we need to force a dragEnd event to update the UI.\r\n if (fromMouseClick) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n createRangeHighlightFeature(compBean, column, headerComp) {\r\n }\r\n\r\n setSelectionMode(allColumns) {\r\n this.selectionMode = SelectionMode.ALL_COLUMNS;\r\n }\r\n\r\n refreshRangeStart(cellRange) {\r\n const {startColumn, columns} = cellRange;\r\n\r\n const moveColInCellRange = (colToMove, moveToFront) => {\r\n const otherCols = cellRange.columns.filter((col) => col !== colToMove);\r\n\r\n if (colToMove) {\r\n cellRange.startColumn = colToMove;\r\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\r\n } else {\r\n cellRange.columns = otherCols;\r\n }\r\n };\r\n\r\n const {left, right} = this.getRangeEdgeColumns(cellRange);\r\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\r\n\r\n if (shouldMoveLeftCol) {\r\n moveColInCellRange(left, true);\r\n return;\r\n }\r\n\r\n const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;\r\n\r\n if (shouldMoveRightCol) {\r\n moveColInCellRange(right, false);\r\n }\r\n }\r\n\r\n setNewestRangeStartCell(position) {\r\n this.newestRangeStartCell = position;\r\n }\r\n\r\n getColumnsFromParams(\r\n columns,\r\n columnA,\r\n columnB\r\n ) {\r\n const noColsInfo = !columns && !columnA && !columnB;\r\n let processedColumns;\r\n let startsOnTheRight = false;\r\n\r\n if (noColsInfo || columns) {\r\n processedColumns = this.getColumnsFromModel(noColsInfo ? undefined : columns);\r\n } else if (columnA && columnB) {\r\n processedColumns = this.calculateColumnsBetween(columnA, columnB);\r\n\r\n if (processedColumns?.length) {\r\n startsOnTheRight = processedColumns[0] !== this.getColumnFromModel(columnA);\r\n }\r\n }\r\n\r\n return processedColumns\r\n ? {\r\n columns: processedColumns,\r\n startsOnTheRight,\r\n }\r\n : undefined;\r\n }\r\n\r\n createRowPosition(rowIndex, rowPinned) {\r\n return rowIndex != null ? {rowIndex, rowPinned} : undefined;\r\n }\r\n\r\n verifyCellRanges(gos) {\r\n const invalid = _isUsingNewCellSelectionAPI(gos) && _getSuppressMultiRanges(gos) && this.cellRanges.length > 1;\r\n if (invalid) {\r\n _warn(93);\r\n }\r\n\r\n return !invalid;\r\n }\r\n\r\n forEachRowInRange(cellRange, callback) {\r\n const topRow = this.getRangeStartRow(cellRange);\r\n const bottomRow = this.getRangeEndRow(cellRange);\r\n let currentRow = topRow;\r\n\r\n while (currentRow) {\r\n callback(currentRow);\r\n\r\n if (_isSameRow(currentRow, bottomRow)) {\r\n break;\r\n }\r\n currentRow = _getRowBelow(this.beans, currentRow);\r\n }\r\n }\r\n\r\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\r\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\r\n // the selection my mimicking a new mouse event\r\n onBodyScroll() {\r\n if (this.dragging && this.lastMouseEvent) {\r\n this.onDragging(this.lastMouseEvent);\r\n }\r\n }\r\n\r\n isLastCellOfRange(cellRange, cell) {\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = _isRowBefore(startRow, endRow) ? endRow : startRow;\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\r\n const rangeFirstIndexColumn = cellRange.columns[0];\r\n const rangeLastIndexColumn = _last(cellRange.columns);\r\n const lastRangeColumn =\r\n cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\r\n const isLastColumn = cell.column === lastRangeColumn;\r\n\r\n return isLastColumn && isLastRow;\r\n }\r\n\r\n rowMax(rows) {\r\n let max;\r\n for (const row of rows) {\r\n if (max === undefined || _isRowBefore(max, row)) {\r\n max = row;\r\n }\r\n }\r\n return max;\r\n }\r\n\r\n rowMin(rows) {\r\n let min;\r\n for (const row of rows) {\r\n if (min === undefined || _isRowBefore(row, min)) {\r\n min = row;\r\n }\r\n }\r\n return min;\r\n }\r\n\r\n updateValuesOnMove(eventTarget) {\r\n const cellCtrl = _getCellCtrlForEventTarget(this.gos, eventTarget);\r\n const cell = cellCtrl?.cellPosition;\r\n\r\n this.cellHasChanged = false;\r\n\r\n if (!cell || (this.lastCellHovered && _areCellsEqual(cell, this.lastCellHovered))) {\r\n return;\r\n }\r\n\r\n const editing = this.beans.editSvc?.isEditing(cellCtrl, {\r\n withOpenEditor: true,\r\n });\r\n\r\n if (editing) {\r\n this.dragSvc.cancelDrag(eventTarget);\r\n return;\r\n }\r\n\r\n if (this.lastCellHovered) {\r\n this.cellHasChanged = true;\r\n }\r\n\r\n this.lastCellHovered = cell;\r\n }\r\n\r\n shouldSkipCurrentColumn(currentColumn) {\r\n return isRowNumberCol(currentColumn);\r\n }\r\n\r\n dispatchChangedEvent(started, finished, id) {\r\n this.cellRanges.map((cellRange) => {\r\n let currentRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const nodesToBeSelected = [];\r\n while (true) {\r\n const finishedAllRows = _missing(currentRow) || !currentRow || this.before(lastRow, currentRow);\r\n if (finishedAllRows || !currentRow || !cellRange.columns) {\r\n break;\r\n }\r\n const rowNode = _getRowNode(this.beans, currentRow);\r\n if (!rowNode) {\r\n break;\r\n }\r\n if (!rowNode.isSelected()) {\r\n rowNode.setSelected(true);\r\n }\r\n nodesToBeSelected.push(rowNode.data);\r\n currentRow = _getRowBelow(this.beans, currentRow);\r\n }\r\n this.gridApi.getSelectedNodes().forEach((node) => {\r\n if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {\r\n node.setSelected(false);\r\n }\r\n });\r\n });\r\n this.eventSvc.dispatchEvent({\r\n type: 'cellSelectionChanged',\r\n started,\r\n finished,\r\n id,\r\n });\r\n this.eventSvc.dispatchEvent({\r\n type: 'rangeSelectionChanged',\r\n started,\r\n finished,\r\n id,\r\n });\r\n }\r\n\r\n getColumnFromModel(col) {\r\n return typeof col === 'string' ? this.colModel.getCol(col) : col;\r\n }\r\n\r\n getColumnsFromModel(cols) {\r\n const {gos, visibleCols} = this;\r\n const isRowHeaderActive = gos.get('rowNumbers');\r\n\r\n cols = visibleCols.allCols;\r\n\r\n const columns = [];\r\n\r\n for (const col of cols) {\r\n const column = this.getColumnFromModel(col);\r\n if (!column || (isRowHeaderActive && this.shouldSkipCurrentColumn(column))) {\r\n continue;\r\n }\r\n columns.push(column);\r\n }\r\n\r\n return columns.length ? columns : undefined;\r\n }\r\n\r\n calculateColumnsBetween(columnA, columnB) {\r\n const allColumns = this.visibleCols.allCols;\r\n\r\n const fromColumn = this.getColumnFromModel(columnA);\r\n const toColumn = this.getColumnFromModel(columnB);\r\n\r\n const isSameColumn = fromColumn === toColumn;\r\n const fromIndex = allColumns.indexOf(fromColumn);\r\n\r\n if (fromIndex < 0) {\r\n _warn(178, {colId: fromColumn.getId()});\r\n return;\r\n }\r\n\r\n const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(toColumn);\r\n\r\n if (toIndex < 0) {\r\n _warn(178, {colId: toColumn.getId()});\r\n return;\r\n }\r\n\r\n if (isSameColumn) {\r\n return this.getColumnsFromModel([fromColumn]);\r\n }\r\n\r\n const firstIndex = Math.min(fromIndex, toIndex);\r\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\r\n const columns = [];\r\n\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n columns.push(allColumns[i]);\r\n }\r\n\r\n return this.getColumnsFromModel(columns);\r\n }\r\n\r\n focusCellOnNewColumn(currentRange, column) {\r\n const {focusSvc} = this.beans;\r\n const focusedCell = focusSvc.getFocusedCell();\r\n\r\n if (!focusedCell) {\r\n return;\r\n }\r\n\r\n if (this.isCellInSpecificRange(focusedCell, currentRange)) {\r\n focusSvc.setFocusedCell({\r\n ...focusedCell,\r\n column,\r\n forceBrowserFocus: true,\r\n preventScrollOnBrowserFocus: true,\r\n });\r\n }\r\n }\r\n\r\n focusCellOnNewRow(currentRange, row) {\r\n const {focusSvc} = this.beans;\r\n const focusedCell = focusSvc.getFocusedCell();\r\n\r\n if (!focusedCell) {\r\n return;\r\n }\r\n\r\n if (this.isCellInSpecificRange(focusedCell, currentRange)) {\r\n focusSvc.setFocusedCell({\r\n ...row,\r\n column: focusedCell.column,\r\n forceBrowserFocus: true,\r\n preventScrollOnBrowserFocus: true,\r\n });\r\n }\r\n }\r\n\r\n // tests if this row selection is before the other row selection\r\n before(rowA, rowB) {\r\n switch (rowA.rowPinned) {\r\n case 'top':\r\n // we we are floating top, and other isn't, then we are always before\r\n if (rowB.rowPinned !== 'top') {\r\n return true;\r\n }\r\n break;\r\n case 'bottom':\r\n // if we are floating bottom, and the other isn't, then we are never before\r\n if (rowB.rowPinned !== 'bottom') {\r\n return false;\r\n }\r\n break;\r\n default:\r\n // if we are not floating, but the other one is floating...\r\n if (_exists(rowB.rowPinned)) {\r\n return rowB.rowPinned !== 'top';\r\n }\r\n break;\r\n }\r\n return rowA.rowIndex < rowB.rowIndex;\r\n }\r\n\r\n createDragListenerFeature(eContainer) {\r\n return new DragListenerFeature(eContainer);\r\n }\r\n\r\n createCellRangeFeature(beans, ctrl) {\r\n // return new CellRangeFeature(beans, ctrl);\r\n }\r\n}"]}
@@ -77,7 +77,7 @@ export interface DataGridProps extends Omit<GridOptions, "columnDefs" | "paginat
77
77
  rowDataManualMode?: boolean;
78
78
  onLoadData(callback: OnLoadDataCallback): void;
79
79
  autofocus?: boolean;
80
- onKeyPressed?(event: KeyboardEvent): void;
80
+ onKeyPressed?(event: KeyboardEvent, editing: boolean): void;
81
81
  onEnter?: () => void;
82
82
  selectedIds?: (number | string)[];
83
83
  rowStyleRules: RowStyleRule[];
@@ -130,7 +130,6 @@ interface DataGridState {
130
130
  rowHeight: number;
131
131
  viewport: [number, number];
132
132
  contextMenuVisible: boolean;
133
- firstLoadDone: boolean;
134
133
  loading: boolean;
135
134
  columnTransferHeight: number;
136
135
  pageOrientation: PageOrientation;
@@ -144,6 +143,7 @@ export default class DataGrid extends React.Component<DataGridProps, DataGridSta
144
143
  };
145
144
  rowStyleRules: RowStyleRule[];
146
145
  };
146
+ firstLoadDone: boolean;
147
147
  wildcardQuickFilter: WildcardQuickFilterEngine;
148
148
  columnTypes: {
149
149
  [key: string]: ColDef;
@@ -29,9 +29,9 @@ import NoRecordsOverlay from "d2coreui/components/grid/panel/noRecordsOverlay";
29
29
  import at from "lodash/at";
30
30
  import ColumnTransfer from "d2coreui/components/grid/config/columnTransfer";
31
31
  import cloneDeep from "lodash/cloneDeep";
32
- import escape from "lodash/escape";
33
32
  import { RangeSelector } from "d2coreui/components/grid/cell/rangeSelector";
34
- import { _defineModule, CellCtrl, ModuleRegistry } from "ag-grid-community";
33
+ import { CellControl } from "d2coreui/components/grid/cell/cellControl";
34
+ import { AllCommunityModule, ModuleRegistry, provideGlobalGridOptions } from "ag-grid-community";
35
35
  import { LocaleHolder } from "d2core/i18n/localeHolder";
36
36
  import tableDefaultRowStyleRules from "d2coreui/components/grid/cell/tableDefaultRowStyleRules";
37
37
  import { ModalDialog } from "d2coreui/components/modal/modalDialog";
@@ -75,22 +75,19 @@ const gridFrameworkComponents = {
75
75
  loadingOverlay: LoadingOverlay,
76
76
  noRecordsOverlay: NoRecordsOverlay
77
77
  };
78
- const DataGridModule = _defineModule({
79
- version: "32.2.0",
78
+ const DataGridModule = {
79
+ version: "34.3.1",
80
80
  moduleName: `dataGridModule`,
81
- beans: [RangeSelector, BeanAccessor],
81
+ beans: [RangeSelector, CellControl, BeanAccessor],
82
82
  dependantModules: [],
83
- });
84
- ModuleRegistry.__register(DataGridModule, false, undefined);
85
- CellCtrl.prototype.onPopupEditorClosed = function () {
86
- if (!this.isEditing()) {
87
- return;
88
- }
89
- this.stopEditingAndFocus(true);
90
83
  };
84
+ ModuleRegistry.registerModules([AllCommunityModule, DataGridModule]);
91
85
  function getRowId(item) {
92
86
  return item.data.id + "";
93
87
  }
88
+ provideGlobalGridOptions({
89
+ theme: "legacy"
90
+ });
94
91
  const rowStyleRuleCompiledExpressions = {};
95
92
  export const EXPORT_SEPARATOR = "\n";
96
93
  var NavigationEventEnum;
@@ -101,6 +98,7 @@ var NavigationEventEnum;
101
98
  class DataGrid extends React.Component {
102
99
  constructor(props) {
103
100
  super(props);
101
+ this.firstLoadDone = false;
104
102
  this.lastPaginationEvent = null;
105
103
  this.wrappingDiv = null;
106
104
  this.state = {
@@ -115,7 +113,6 @@ class DataGrid extends React.Component {
115
113
  rowHeight: calculateRowHeight(GRID_DEFAULT_FONT_SIZE, GRID_DEFAULT_ROW_HEIGHT_DELTA),
116
114
  viewport: [0, 0],
117
115
  contextMenuVisible: false,
118
- firstLoadDone: false,
119
116
  loading: false,
120
117
  columnTransferHeight: 500,
121
118
  pageOrientation: "PORTRAIT",
@@ -356,7 +353,9 @@ class DataGrid extends React.Component {
356
353
  cellRenderer: (params) => {
357
354
  const value = DataGrid.getCellValue(params);
358
355
  if (value !== undefined) {
359
- return React.createElement("span", { style: { whiteSpace: "pre" }, title: escape(value) }, typeof value === "string" ? escape(value.replace(/[\r\n]+/g, ' ')) : value);
356
+ return React.createElement("span", { style: { whiteSpace: "pre" }, title: value },
357
+ " ",
358
+ typeof value === "string" ? value.replace(/[\r\n]+/g, ' ') : value);
360
359
  }
361
360
  else {
362
361
  return "";
@@ -603,9 +602,9 @@ class DataGrid extends React.Component {
603
602
  if (this.props.paging.onPaginationChanged) {
604
603
  this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);
605
604
  }
606
- if (!this.state.firstLoadDone) {
605
+ if (!this.firstLoadDone) {
607
606
  this.loadData();
608
- this.setState({ firstLoadDone: true });
607
+ this.firstLoadDone = true;
609
608
  }
610
609
  }
611
610
  this.setState({ pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage });
@@ -650,7 +649,7 @@ class DataGrid extends React.Component {
650
649
  else if (pageSize === 0) {
651
650
  this.gridApi.updateGridOptions({ pagination: true, paginationAutoPageSize: true });
652
651
  const rowHeight = (_c = (_b = (_a = gridApiWithPrivateAccess.beans.gos).getRowHeightAsNumber) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : 1;
653
- const bodyHeight = gridApiWithPrivateAccess.beans.ctrlsService.params.center.viewportSizeFeature.getBodyHeight();
652
+ const bodyHeight = gridApiWithPrivateAccess.beans.ctrlsSvc.params.center.viewportSizeFeature.getBodyHeight();
654
653
  let availablePageSize = 1000;
655
654
  if (bodyHeight > 0) {
656
655
  availablePageSize = Math.floor(bodyHeight / rowHeight);
@@ -710,7 +709,7 @@ class DataGrid extends React.Component {
710
709
  this.gridApi.refreshHeader();
711
710
  this.gridApi.redrawRows();
712
711
  if (this.props.rowModelType === "infinite" && this.props.datasource) {
713
- this.gridApi.getModel().rowHeight = rowHeight;
712
+ this.gridApi.setGridOption('rowHeight', rowHeight);
714
713
  this.gridApi.updateGridOptions({ datasource: this.props.datasource });
715
714
  }
716
715
  }
@@ -846,7 +845,7 @@ class DataGrid extends React.Component {
846
845
  var previousCell = params.previousCellPosition;
847
846
  switch ((_a = params.event) === null || _a === void 0 ? void 0 : _a.code) {
848
847
  case Key.ArrowDown:
849
- if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {
848
+ if ((previousCell.rowIndex + 1) >= this.gridApi.getDisplayedRowCount()) {
850
849
  if (pageIndex < (totalPages - 1)) {
851
850
  this.onGoToPage(pageIndex + 1);
852
851
  return {
@@ -869,7 +868,7 @@ class DataGrid extends React.Component {
869
868
  if (pageIndex > 0) {
870
869
  this.onGoToPage(pageIndex - 1);
871
870
  return {
872
- rowIndex: this.gridApi.getModel().getRowCount() - 1,
871
+ rowIndex: this.gridApi.getDisplayedRowCount() - 1,
873
872
  column: previousCell.column,
874
873
  rowPinned: previousCell.rowPinned
875
874
  };
@@ -906,7 +905,7 @@ class DataGrid extends React.Component {
906
905
  if (params.event.code === Key.ArrowDown) {
907
906
  indexToJump = focusedCell.rowIndex + 1;
908
907
  columnToJump = focusedCell.column;
909
- if (indexToJump >= this.gridApi.getModel().getRowCount()) {
908
+ if (indexToJump >= this.gridApi.getDisplayedRowCount()) {
910
909
  if (pageIndex < (totalPages - 1)) {
911
910
  this.onGoToPage(pageIndex + 1);
912
911
  indexToJump = 0;
@@ -934,7 +933,7 @@ class DataGrid extends React.Component {
934
933
  if (indexToJump < 0) {
935
934
  if (pageIndex > 0) {
936
935
  this.onGoToPage(pageIndex - 1);
937
- indexToJump = this.gridApi.getModel().getRowCount() - 1;
936
+ indexToJump = this.gridApi.getDisplayedRowCount() - 1;
938
937
  }
939
938
  else {
940
939
  indexToJump = focusedCell.rowIndex;
@@ -1107,7 +1106,7 @@ class DataGrid extends React.Component {
1107
1106
  (_j = (_h = this.props).onEnter) === null || _j === void 0 ? void 0 : _j.call(_h);
1108
1107
  break;
1109
1108
  }
1110
- (_l = (_k = this.props).onKeyPressed) === null || _l === void 0 ? void 0 : _l.call(_k, params.event);
1109
+ (_l = (_k = this.props).onKeyPressed) === null || _l === void 0 ? void 0 : _l.call(_k, params.event, params.editing);
1111
1110
  return false;
1112
1111
  }
1113
1112
  getValue(column, row, doNotReplaceNewline) {
@@ -1140,7 +1139,6 @@ class DataGrid extends React.Component {
1140
1139
  if (!this.gridApi) {
1141
1140
  return [];
1142
1141
  }
1143
- const model = this.gridApi.getModel();
1144
1142
  const tableContent = [];
1145
1143
  const columns = this.gridApi.getAllDisplayedColumns().map((column) => {
1146
1144
  const columnTypes = column.getColDef().type;
@@ -1157,7 +1155,7 @@ class DataGrid extends React.Component {
1157
1155
  tableContent.push(columns.map((column) => { var _a; return (_a = column.displayName) !== null && _a !== void 0 ? _a : ""; }));
1158
1156
  let rowCount;
1159
1157
  let tableNodes = [];
1160
- if (model.getType() === "clientSide") {
1158
+ if (this.gridApi.getGridOption('rowModelType') === "clientSide") {
1161
1159
  if (props.onlySelectedNodes) {
1162
1160
  rowCount = 0;
1163
1161
  this.gridApi.forEachNodeAfterFilterAndSort((node) => {
@@ -1168,7 +1166,7 @@ class DataGrid extends React.Component {
1168
1166
  });
1169
1167
  }
1170
1168
  else {
1171
- rowCount = model.getRowCount();
1169
+ rowCount = this.gridApi.getDisplayedRowCount();
1172
1170
  this.gridApi.forEachNodeAfterFilterAndSort((node) => {
1173
1171
  tableNodes.push(node);
1174
1172
  });
@@ -1184,7 +1182,7 @@ class DataGrid extends React.Component {
1184
1182
  tableNodes.sort((a, b) => { var _a, _b; return ((_a = a.rowIndex) !== null && _a !== void 0 ? _a : 0) > ((_b = b.rowIndex) !== null && _b !== void 0 ? _b : 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1; });
1185
1183
  }
1186
1184
  else {
1187
- const virtualRowCount = model.getRowCount();
1185
+ const virtualRowCount = this.gridApi.getDisplayedRowCount();
1188
1186
  rowCount = virtualRowCount ? virtualRowCount : 0;
1189
1187
  }
1190
1188
  }
@@ -1193,7 +1191,7 @@ class DataGrid extends React.Component {
1193
1191
  if (percentStep < 100) {
1194
1192
  percentStep = 100;
1195
1193
  }
1196
- if (model.getType() === "clientSide" || props.onlySelectedNodes) {
1194
+ if (this.gridApi.getGridOption('rowModelType') === "clientSide" || props.onlySelectedNodes) {
1197
1195
  for (let index = 0; index < tableNodes.length; index++) {
1198
1196
  const record = [];
1199
1197
  columns.forEach((column) => {
@@ -1214,7 +1212,7 @@ class DataGrid extends React.Component {
1214
1212
  do {
1215
1213
  record = [];
1216
1214
  do {
1217
- row = model.getRow(index);
1215
+ row = this.gridApi.getDisplayedRowAtIndex(index);
1218
1216
  if (!row || !row.data) {
1219
1217
  await TimeUtils.sleep(100);
1220
1218
  }
@@ -1572,8 +1570,8 @@ class DataGrid extends React.Component {
1572
1570
  return adaptedColumnDefs;
1573
1571
  }
1574
1572
  render() {
1575
- var _a, _b, _c, _d, _e, _f;
1576
- const _g = this.props, { onGridReady, columnDefs, disableColumnDefsPreprocessing, onColumnsChanged, paging, onPaginationChanged, onViewportChanged, selectedIds, search, toolbar, filter, onFilterChanged, onFilterModified, onCellFocused, onSortChanged, components, tableConfigVisible, onTableConfigVisible, noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated, rowStyleRules, onChangeRowStyleRules, defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear, suppressLoadingOverlay, defaultColDef, headerHeight, rowData, rowDataManualMode, gridRef, quickFilterParser, quickFilterMatcher } = _g, passedProperties = __rest(_g, ["onGridReady", "columnDefs", "disableColumnDefsPreprocessing", "onColumnsChanged", "paging", "onPaginationChanged", "onViewportChanged", "selectedIds", "search", "toolbar", "filter", "onFilterChanged", "onFilterModified", "onCellFocused", "onSortChanged", "components", "tableConfigVisible", "onTableConfigVisible", "noRecordsOverlayRenderer", "loadingOverlayRenderer", "onRowDataUpdated", "rowStyleRules", "onChangeRowStyleRules", "defaultShowMilliseconds", "onShowMilliseconds", "defaultHideYear", "onShowYear", "suppressLoadingOverlay", "defaultColDef", "headerHeight", "rowData", "rowDataManualMode", "gridRef", "quickFilterParser", "quickFilterMatcher"]);
1573
+ var _a, _b, _c, _d;
1574
+ const _e = this.props, { onGridReady, columnDefs, disableColumnDefsPreprocessing, onColumnsChanged, paging, onPaginationChanged, onViewportChanged, selectedIds, search, toolbar, filter, onFilterChanged, onFilterModified, onCellFocused, onSortChanged, components, tableConfigVisible, onTableConfigVisible, noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated, rowStyleRules, onChangeRowStyleRules, defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear, suppressLoadingOverlay, defaultColDef, headerHeight, rowData, rowDataManualMode, gridRef, quickFilterParser, quickFilterMatcher, rowSelection, contextMenu, settingsMenu, exportMenu, panelStyle, tablePanelStyle, onColumnDefsAdapted, tableOverlayRenderer, onKeyPressed } = _e, passedProperties = __rest(_e, ["onGridReady", "columnDefs", "disableColumnDefsPreprocessing", "onColumnsChanged", "paging", "onPaginationChanged", "onViewportChanged", "selectedIds", "search", "toolbar", "filter", "onFilterChanged", "onFilterModified", "onCellFocused", "onSortChanged", "components", "tableConfigVisible", "onTableConfigVisible", "noRecordsOverlayRenderer", "loadingOverlayRenderer", "onRowDataUpdated", "rowStyleRules", "onChangeRowStyleRules", "defaultShowMilliseconds", "onShowMilliseconds", "defaultHideYear", "onShowYear", "suppressLoadingOverlay", "defaultColDef", "headerHeight", "rowData", "rowDataManualMode", "gridRef", "quickFilterParser", "quickFilterMatcher", "rowSelection", "contextMenu", "settingsMenu", "exportMenu", "panelStyle", "tablePanelStyle", "onColumnDefsAdapted", "tableOverlayRenderer", "onKeyPressed"]);
1577
1575
  let key;
1578
1576
  let paginationPageSize = undefined;
1579
1577
  if (paging.pageSize > 0) {
@@ -1594,25 +1592,25 @@ class DataGrid extends React.Component {
1594
1592
  const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);
1595
1593
  const customComponents = this.getCustomComponents(components);
1596
1594
  const debugMode = process.env.NODE_ENV === 'development';
1597
- const panelStyle = {
1595
+ const bodyStyle = {
1598
1596
  display: "flex",
1599
1597
  flexFlow: "column",
1600
1598
  height: "100%",
1601
1599
  width: "100%",
1602
1600
  paddingBottom: 8,
1603
1601
  };
1604
- if (this.props.panelStyle) {
1605
- Object.assign(panelStyle, this.props.panelStyle);
1602
+ if (panelStyle) {
1603
+ Object.assign(bodyStyle, panelStyle);
1606
1604
  }
1607
- const tablePanelStyle = { flex: "1 1 auto", marginTop: 16, overflow: "auto" };
1608
- if (this.props.tablePanelStyle) {
1609
- Object.assign(tablePanelStyle, this.props.tablePanelStyle);
1605
+ const tPanelStyle = { flex: "1 1 auto", marginTop: 16, overflow: "auto" };
1606
+ if (tablePanelStyle) {
1607
+ Object.assign(tPanelStyle, tablePanelStyle);
1610
1608
  }
1611
1609
  const headerFilterRowHeight = calculateRowHeight(this.state.fontSize, GRID_DEFAULT_ROW_HEIGHT_DELTA + 2);
1612
1610
  return (React.createElement(React.Fragment, null,
1613
- React.createElement(Card, { size: "small", bordered: false, style: { height: "100%" }, styles: { body: panelStyle } },
1611
+ React.createElement(Card, { size: "small", bordered: false, style: { height: "100%" }, styles: { body: bodyStyle } },
1614
1612
  React.createElement("div", { style: { display: "flex" } }, this.renderNavigationPanel()),
1615
- React.createElement("div", { style: tablePanelStyle },
1613
+ React.createElement("div", { style: tPanelStyle },
1616
1614
  React.createElement(Dropdown, { trigger: ["contextMenu"], getPopupContainer: () => {
1617
1615
  var _a, _b;
1618
1616
  const parentNode = ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
@@ -1637,13 +1635,13 @@ class DataGrid extends React.Component {
1637
1635
  React.createElement("div", { className: "ag-theme-balham", style: { width: "100%", height: "100%" }, ref: (wrapingDiv) => {
1638
1636
  this.wrappingDiv = wrapingDiv;
1639
1637
  } },
1640
- React.createElement(AgGridReact, Object.assign({ key: key, debug: debugMode, ref: gridRef, paginationPageSize: paginationPageSize, maxConcurrentDatasourceRequests: this.props.rowModelType === "infinite" ? 1 : undefined, onGridReady: this.onGridReady, onPaginationChanged: this.onPaginationChanged, onFilterModified: this.onFilterModified, onFilterChanged: this.onFilterChanged, onSortChanged: this.onSortChanged, defaultColDef: this.getDefaultColDefinition(defaultColDef), columnDefs: adaptedColumnDefs, rowData: !rowDataManualMode ? rowData : undefined }, passedProperties, { onCellFocused: this.onCellFocused, suppressPaginationPanel: true, getRowId: getRowId, maintainColumnOrder: true, components: customComponents, columnTypes: this.columnTypes, onColumnVisible: this.onColumnsChanged, onColumnPinned: this.onColumnsChanged, onColumnResized: this.onColumnsChanged, onColumnMoved: this.onColumnsChanged, onCellMouseDown: this.onCellMouseDown, navigateToNextCell: this.navigateToNextCell, onViewportChanged: this.onViewportChanged, onCellContextMenu: this.onCellContextMenu, loadingOverlayComponent: 'loadingOverlay', noRowsOverlayComponent: 'noRecordsOverlay', onRowDataUpdated: this.onRowDataUpdated, context: this.table_context, rowHeight: this.state.rowHeight, getRowStyle: this._getRowStyle, getRowHeight: this._getRowHeight, headerHeight: headerHeight !== undefined ? headerHeight : headerFilterRowHeight, floatingFiltersHeight: headerFilterRowHeight, suppressLoadingOverlay: this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay, quickFilterParser: this.wildcardQuickFilter.quickFilterParser, quickFilterMatcher: this.wildcardQuickFilter.quickFilterMatcher })),
1638
+ React.createElement(AgGridReact, Object.assign({ key: key, debug: debugMode, ref: gridRef, paginationPageSize: paginationPageSize, maxConcurrentDatasourceRequests: this.props.rowModelType === "infinite" ? 1 : undefined, onGridReady: this.onGridReady, onPaginationChanged: this.onPaginationChanged, onFilterModified: this.onFilterModified, onFilterChanged: this.onFilterChanged, onSortChanged: this.onSortChanged, defaultColDef: this.getDefaultColDefinition(defaultColDef), columnDefs: adaptedColumnDefs, rowData: !rowDataManualMode ? rowData : undefined }, passedProperties, { onCellFocused: this.onCellFocused, cellSelection: rowSelection === "multiple" || (rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.mode) === "multiRow", rowSelection: rowSelection, suppressPaginationPanel: true, getRowId: getRowId, maintainColumnOrder: true, components: customComponents, columnTypes: this.columnTypes, onColumnVisible: this.onColumnsChanged, onColumnPinned: this.onColumnsChanged, onColumnResized: this.onColumnsChanged, onColumnMoved: this.onColumnsChanged, onCellMouseDown: this.onCellMouseDown, navigateToNextCell: this.navigateToNextCell, onViewportChanged: this.onViewportChanged, onCellContextMenu: this.onCellContextMenu, loadingOverlayComponent: 'loadingOverlay', noRowsOverlayComponent: 'noRecordsOverlay', onRowDataUpdated: this.onRowDataUpdated, context: this.table_context, rowHeight: this.state.rowHeight, getRowStyle: this._getRowStyle, getRowHeight: this._getRowHeight, headerHeight: headerHeight !== undefined ? headerHeight : headerFilterRowHeight, floatingFiltersHeight: headerFilterRowHeight, suppressLoadingOverlay: this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay, quickFilterParser: this.wildcardQuickFilter.quickFilterParser, quickFilterMatcher: this.wildcardQuickFilter.quickFilterMatcher })),
1641
1639
  this.state.loading && this.props.loadingOverlayRenderer &&
1642
1640
  React.createElement("div", { className: "ag-overlay", "aria-hidden": "true", ref: "overlayWrapper" },
1643
1641
  React.createElement("div", { className: "ag-overlay-panel" },
1644
1642
  React.createElement("div", { className: "ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper" },
1645
- React.createElement("div", { className: "ag-react-container" }, (_d = (_c = this.props).loadingOverlayRenderer) === null || _d === void 0 ? void 0 : _d.call(_c))))))), (_f = (_e = this.props).tableOverlayRenderer) === null || _f === void 0 ? void 0 :
1646
- _f.call(_e))),
1643
+ React.createElement("div", { className: "ag-react-container" }, (_d = (_c = this.props).loadingOverlayRenderer) === null || _d === void 0 ? void 0 : _d.call(_c))))))), tableOverlayRenderer === null || tableOverlayRenderer === void 0 ? void 0 :
1644
+ tableOverlayRenderer())),
1647
1645
  !!this.gridApi && !!this.gridApi && this.state.pageSize !== null &&
1648
1646
  React.createElement(DataGridEditor, { dataGrid: this, gridApi: this.gridApi, columnDefinitions: columnDefs, columnModel: this.state.columnModel, visible: !!this.props.tableConfigVisible, onTableConfigVisible: this.showTableConfiguration, paginationPageSize: paging.pageSize, paginationDefaultPageSize: paging.defaultPageSize, currentPageSize: this.state.pageSize, showMilliseconds: !!this.props.showMilliseconds, defaultShowMilliseconds: !!this.props.defaultShowMilliseconds, showYear: !this.props.hideYear, defaultShowYear: !this.props.defaultHideYear, rowStyleRules: this.props.rowStyleRules, defaultRowStyleRules: this.props.defaultRowStyleRules, onChangeRowStyleRules: onChangeRowStyleRules }),
1649
1647
  !!this.gridApi && React.createElement(ModalDialog, { mode: "OK_CANCEL", open: this.state.columnsConfigVisible, initialWidth: 700, initialHeight: this.state.columnTransferHeight, title: React.createElement("span", null,