@revolist/revogrid 4.23.0 → 4.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{cell-renderer-DWJ9Px9f.js → cell-renderer-Dcz022q7.js} +1 -1
- package/dist/cjs/{column.drag.plugin-CaEBDG-Q.js → column.drag.plugin-DJueWxN_.js} +2 -2
- package/dist/cjs/{column.service-f612L4ql.js → column.service-C1Qvcf5l.js} +9 -0
- package/dist/cjs/{header-cell-renderer-4yq9_WbM.js → header-cell-renderer-QrcXXSkF.js} +1 -1
- package/dist/cjs/index.cjs.js +4 -4
- package/dist/cjs/revo-grid.cjs.entry.js +92 -6
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +51 -18
- package/dist/collection/components/header/revogr-header.js +49 -16
- package/dist/collection/components/revoGrid/revo-grid.js +63 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js +9 -0
- package/dist/collection/services/selection.store.connector.js +26 -3
- package/dist/esm/{cell-renderer-8UiGd-s7.js → cell-renderer-BtN-NGCk.js} +1 -1
- package/dist/esm/{column.drag.plugin-BsfhsfmB.js → column.drag.plugin-DCZW62Uc.js} +2 -2
- package/dist/esm/{column.service-DbpulTog.js → column.service-CC_SD8W3.js} +9 -0
- package/dist/esm/{header-cell-renderer-DGI2FAD8.js → header-cell-renderer-BsvUQ8GS.js} +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/revo-grid.entry.js +92 -6
- package/dist/esm/revogr-attribution_7.entry.js +1 -1
- package/dist/esm/revogr-data_4.entry.js +51 -18
- package/dist/revo-grid/{cell-renderer-8UiGd-s7.js → cell-renderer-BtN-NGCk.js} +1 -1
- package/dist/revo-grid/{column.drag.plugin-BsfhsfmB.js → column.drag.plugin-DCZW62Uc.js} +2 -2
- package/dist/revo-grid/{column.service-DbpulTog.js → column.service-CC_SD8W3.js} +9 -0
- package/dist/revo-grid/{header-cell-renderer-DGI2FAD8.js → header-cell-renderer-BsvUQ8GS.js} +1 -1
- package/dist/revo-grid/index.esm.js +5 -5
- package/dist/revo-grid/revo-grid.entry.js +92 -6
- package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +51 -18
- package/dist/types/components/header/header-group-renderer.d.ts +1 -0
- package/dist/types/components/header/revogr-header.d.ts +2 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +12 -0
- package/dist/types/services/selection.store.connector.d.ts +6 -0
- package/dist/types/types/selection.d.ts +13 -0
- package/hydrate/index.js +146 -18
- package/hydrate/index.mjs +146 -18
- package/package.json +1 -1
- package/standalone/column.service.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-header2.js +1 -1
|
@@ -437,6 +437,9 @@ const GROUPING_ROW_TYPE = 'rgRow';
|
|
|
437
437
|
function getGroupValueDefault(item, prop) {
|
|
438
438
|
return item[prop] || null;
|
|
439
439
|
}
|
|
440
|
+
function isDataRow(item) {
|
|
441
|
+
return item != null;
|
|
442
|
+
}
|
|
440
443
|
// get source based on proxy item collection to preserve rgRow order
|
|
441
444
|
function getSource(source, items, withoutGrouping = false) {
|
|
442
445
|
let index = 0;
|
|
@@ -458,6 +461,9 @@ function getSource(source, items, withoutGrouping = false) {
|
|
|
458
461
|
result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;
|
|
459
462
|
}
|
|
460
463
|
}
|
|
464
|
+
else if (!isDataRow(model)) {
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
461
467
|
else {
|
|
462
468
|
result.source.push(model);
|
|
463
469
|
result.oldNewIndexes[i] = index;
|
|
@@ -538,6 +544,9 @@ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, exp
|
|
|
538
544
|
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
|
|
539
545
|
const groupedItems = new Map();
|
|
540
546
|
array.forEach((item, originalIndex) => {
|
|
547
|
+
if (!isDataRow(item)) {
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
541
550
|
const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
|
|
542
551
|
const lastLevelValue = groupLevelValues.pop();
|
|
543
552
|
let currentGroupLevel = groupedItems;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h } from './index-Chp_81rd.js';
|
|
5
|
-
import { Q as doPropMerge } from './column.service-
|
|
5
|
+
import { Q as doPropMerge } from './column.service-CC_SD8W3.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Dispatches a custom event to a specified target element.
|
package/dist/esm/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-
|
|
5
|
-
import { B as BasePlugin } from './column.drag.plugin-
|
|
6
|
-
export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-
|
|
7
|
-
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-
|
|
8
|
-
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-
|
|
4
|
+
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-CC_SD8W3.js';
|
|
5
|
+
import { B as BasePlugin } from './column.drag.plugin-DCZW62Uc.js';
|
|
6
|
+
export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-DCZW62Uc.js';
|
|
7
|
+
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-BsvUQ8GS.js';
|
|
8
|
+
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-BtN-NGCk.js';
|
|
9
9
|
export { a as applyMixins, f as findPositionInArray, g as getScrollbarSize, m as mergeSortedArray, p as pushSorted, r as range, s as scaleValue, t as timeout } from './index-Db3qZoW5.js';
|
|
10
10
|
export { T as TextEditor } from './text-editor-C3RUSwH5.js';
|
|
11
11
|
export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, m as isEditInput, n as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, l as isShortcutModifier, d as isTab, e as isTabKeyValue } from './edit.utils-Dnnbd0xG.js';
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h, r as registerInstance, d as createEvent, e as Host, g as getElement } from './index-Chp_81rd.js';
|
|
5
|
-
import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-
|
|
5
|
+
import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-CC_SD8W3.js';
|
|
6
6
|
import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL } from './dimension.helpers-CGKwSvw6.js';
|
|
7
7
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
8
8
|
import { g as getScrollDimension, v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-CoCAvmZs.js';
|
|
9
9
|
import { c as clampViewportCoordinate, V as ViewportStore } from './viewport.store-COAfzAyu.js';
|
|
10
|
-
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-
|
|
10
|
+
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-DCZW62Uc.js';
|
|
11
11
|
import { T as ThemeService } from './theme.service-BmnDvr6P.js';
|
|
12
12
|
import { t as timeout } from './index-Db3qZoW5.js';
|
|
13
13
|
import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
|
|
14
14
|
import './filter.button-C8XTWPU2.js';
|
|
15
|
-
import './header-cell-renderer-
|
|
15
|
+
import './header-cell-renderer-BsvUQ8GS.js';
|
|
16
16
|
|
|
17
17
|
class ColumnDataProvider {
|
|
18
18
|
get stores() {
|
|
@@ -782,13 +782,11 @@ class SelectionStoreConnector {
|
|
|
782
782
|
return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
|
|
783
783
|
}
|
|
784
784
|
registerColumn(x, type) {
|
|
785
|
+
this.updateColumnTypeMapping(x, type);
|
|
785
786
|
if (this.columnStores[x]) {
|
|
786
787
|
return this.columnStores[x];
|
|
787
788
|
}
|
|
788
789
|
this.columnStores[x] = new SelectionStore();
|
|
789
|
-
// build cross-linking type to position
|
|
790
|
-
this.storesByType[type] = x;
|
|
791
|
-
this.storesXToType[x] = type;
|
|
792
790
|
return this.columnStores[x];
|
|
793
791
|
}
|
|
794
792
|
registerRow(y, type) {
|
|
@@ -1009,6 +1007,31 @@ class SelectionStoreConnector {
|
|
|
1009
1007
|
}
|
|
1010
1008
|
return stores;
|
|
1011
1009
|
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Keep column viewport positions and types in sync across pin/unpin rerenders.
|
|
1012
|
+
* Regression case: when a selected rgCol cell was pinned left, colPinStart
|
|
1013
|
+
* could take over x=0 and render the stale rgCol focus store in the pinned area.
|
|
1014
|
+
*/
|
|
1015
|
+
updateColumnTypeMapping(x, type) {
|
|
1016
|
+
const previousType = this.storesXToType[x];
|
|
1017
|
+
const previousX = this.storesByType[type];
|
|
1018
|
+
let shouldClearFocus = false;
|
|
1019
|
+
this.storesByType[type] = x;
|
|
1020
|
+
this.storesXToType[x] = type;
|
|
1021
|
+
if (previousType && previousType !== type) {
|
|
1022
|
+
shouldClearFocus = true;
|
|
1023
|
+
if (this.storesByType[previousType] === x) {
|
|
1024
|
+
delete this.storesByType[previousType];
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
|
|
1028
|
+
delete this.storesXToType[previousX];
|
|
1029
|
+
shouldClearFocus = true;
|
|
1030
|
+
}
|
|
1031
|
+
if (shouldClearFocus) {
|
|
1032
|
+
this.clearAll();
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1012
1035
|
}
|
|
1013
1036
|
|
|
1014
1037
|
/**
|
|
@@ -1958,6 +1981,7 @@ const RevoGridComponent = class {
|
|
|
1958
1981
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
1959
1982
|
return;
|
|
1960
1983
|
}
|
|
1984
|
+
const focusToRestore = init ? undefined : this.getColumnFocusRestore();
|
|
1961
1985
|
const beforeGatherEvent = this.beforecolumnsgather.emit({
|
|
1962
1986
|
columns: [...newVal],
|
|
1963
1987
|
});
|
|
@@ -1975,6 +1999,9 @@ const RevoGridComponent = class {
|
|
|
1975
1999
|
return;
|
|
1976
2000
|
}
|
|
1977
2001
|
const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
|
|
2002
|
+
if (focusToRestore) {
|
|
2003
|
+
this.pendingColumnFocusRestore = focusToRestore;
|
|
2004
|
+
}
|
|
1978
2005
|
const order = {};
|
|
1979
2006
|
for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
|
|
1980
2007
|
order[prop] = beforeApplyEvent.detail.sort[prop].order;
|
|
@@ -1984,6 +2011,64 @@ const RevoGridComponent = class {
|
|
|
1984
2011
|
order,
|
|
1985
2012
|
});
|
|
1986
2013
|
}
|
|
2014
|
+
/**
|
|
2015
|
+
* Capture logical focus before columns are repartitioned by pin state.
|
|
2016
|
+
* Regression case: selecting a regular cell, then pinning that column left,
|
|
2017
|
+
* used to let the new pinned viewport reuse the old rgCol selection store.
|
|
2018
|
+
*/
|
|
2019
|
+
getColumnFocusRestore() {
|
|
2020
|
+
var _a, _b, _c, _d;
|
|
2021
|
+
const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
|
|
2022
|
+
const prevStoreX = (_c = (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.focusedStore) === null || _c === void 0 ? void 0 : _c.position.x;
|
|
2023
|
+
const prop = (_d = focused === null || focused === void 0 ? void 0 : focused.column) === null || _d === void 0 ? void 0 : _d.prop;
|
|
2024
|
+
if (!focused || prop === undefined || prevStoreX === undefined) {
|
|
2025
|
+
return;
|
|
2026
|
+
}
|
|
2027
|
+
return {
|
|
2028
|
+
prop,
|
|
2029
|
+
colType: focused.colType,
|
|
2030
|
+
colIndex: focused.cell.x,
|
|
2031
|
+
prevStoreX,
|
|
2032
|
+
rowType: focused.rowType,
|
|
2033
|
+
rowIndex: focused.cell.y,
|
|
2034
|
+
};
|
|
2035
|
+
}
|
|
2036
|
+
/**
|
|
2037
|
+
* Reapply focus by column prop after render, once pinning has moved the
|
|
2038
|
+
* column to its new viewport and virtual index.
|
|
2039
|
+
*/
|
|
2040
|
+
restoreColumnFocusAfterRender() {
|
|
2041
|
+
var _a, _b, _c, _d;
|
|
2042
|
+
const pending = this.pendingColumnFocusRestore;
|
|
2043
|
+
if (!pending) {
|
|
2044
|
+
return;
|
|
2045
|
+
}
|
|
2046
|
+
this.pendingColumnFocusRestore = undefined;
|
|
2047
|
+
if (!this.viewport || !this.columnProvider) {
|
|
2048
|
+
return;
|
|
2049
|
+
}
|
|
2050
|
+
const column = (_b = (_a = this.columnProvider.getColumnByProp(pending.prop)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : getColumnByProp(this.columns, pending.prop);
|
|
2051
|
+
if (!column) {
|
|
2052
|
+
return;
|
|
2053
|
+
}
|
|
2054
|
+
const colType = column.pin || 'rgCol';
|
|
2055
|
+
const columnIndex = this.columnProvider.getColumnIndexByProp(pending.prop, colType);
|
|
2056
|
+
if (columnIndex < 0) {
|
|
2057
|
+
return;
|
|
2058
|
+
}
|
|
2059
|
+
// Header-only column refreshes should not collapse an existing range.
|
|
2060
|
+
// Replay focus only when pin/unpin or repartitioning moved the logical column.
|
|
2061
|
+
if (colType === pending.colType &&
|
|
2062
|
+
columnIndex === pending.colIndex &&
|
|
2063
|
+
pending.prevStoreX === ((_d = (_c = this.selectionStoreConnector) === null || _c === void 0 ? void 0 : _c.focusedStore) === null || _d === void 0 ? void 0 : _d.position.x)) {
|
|
2064
|
+
return;
|
|
2065
|
+
}
|
|
2066
|
+
const cell = {
|
|
2067
|
+
x: columnIndex,
|
|
2068
|
+
y: pending.rowIndex,
|
|
2069
|
+
};
|
|
2070
|
+
this.viewport.setFocus(colType, pending.rowType, cell, cell);
|
|
2071
|
+
}
|
|
1987
2072
|
disableVirtualXChanged(newVal = false, prevVal = false) {
|
|
1988
2073
|
if (newVal === prevVal) {
|
|
1989
2074
|
return;
|
|
@@ -2296,6 +2381,7 @@ const RevoGridComponent = class {
|
|
|
2296
2381
|
return Promise.all(this.jobsBeforeRender);
|
|
2297
2382
|
}
|
|
2298
2383
|
componentDidRender() {
|
|
2384
|
+
this.restoreColumnFocusAfterRender();
|
|
2299
2385
|
this.aftergridrender.emit();
|
|
2300
2386
|
}
|
|
2301
2387
|
render() {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { r as registerInstance, h, e as Host, d as createEvent, g as getElement } from './index-Chp_81rd.js';
|
|
5
5
|
import { k as getItemByIndex, b as getSourceItem, j as getItemByPosition, F as FOCUS_CLASS, I as codesLetter, R as RESIZE_INTERVAL, y as MOBILE_CLASS, z as CELL_HANDLER_CLASS, S as SELECTION_BORDER_CLASS, D as DataStore, q as ROW_HEADER_TYPE, T as TMP_SELECTION_BG_CLASS } from './dimension.helpers-CGKwSvw6.js';
|
|
6
6
|
import { g as getPropertyFromEvent, v as verifyTouchTarget } from './events-BvSmBueA.js';
|
|
7
|
-
import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-
|
|
7
|
+
import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-CC_SD8W3.js';
|
|
8
8
|
import { l as isShortcutModifier, m as isEditInput, c as isClear, d as isTab, f as isEnterKeyValue, h as isCopy, g as isCut, j as isPaste, k as isAll } from './edit.utils-Dnnbd0xG.js';
|
|
9
9
|
import { t as timeout, g as getScrollbarSize } from './index-Db3qZoW5.js';
|
|
10
10
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, d as createEvent, h, e as Host, g as getElement } from './index-Chp_81rd.js';
|
|
5
|
-
import { M as ColumnService, u as isGrouping } from './column.service-
|
|
5
|
+
import { M as ColumnService, u as isGrouping } from './column.service-CC_SD8W3.js';
|
|
6
6
|
import { B as ROW_FOCUSED_CLASS, b as getSourceItem, n as DATA_ROW, m as DATA_COL, M as MIN_COL_SIZE, r as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, F as FOCUS_CLASS, k as getItemByIndex, u as HEADER_ROW_CLASS, v as HEADER_ACTUAL_ROW_CLASS } from './dimension.helpers-CGKwSvw6.js';
|
|
7
|
-
import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-
|
|
7
|
+
import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-BtN-NGCk.js';
|
|
8
8
|
import { c as FilterButton } from './filter.button-C8XTWPU2.js';
|
|
9
|
-
import { H as HeaderCellRenderer } from './header-cell-renderer-
|
|
9
|
+
import { H as HeaderCellRenderer } from './header-cell-renderer-BsvUQ8GS.js';
|
|
10
10
|
import { t as throttle, L as LocalScrollTimer, a as LocalScrollService, g as getContentSize } from './throttle-CaUDyxyU.js';
|
|
11
11
|
import { H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT } from './viewport.helpers-CoCAvmZs.js';
|
|
12
12
|
import './debounce-PCRWZliA.js';
|
|
@@ -434,22 +434,13 @@ const RevogrHeaderComponent = class {
|
|
|
434
434
|
];
|
|
435
435
|
}
|
|
436
436
|
renderGroupColumn(group, level, visibleGroupRange) {
|
|
437
|
-
|
|
438
|
-
const
|
|
439
|
-
if (groupStartIndex < 0) {
|
|
440
|
-
return;
|
|
441
|
-
}
|
|
442
|
-
const groupEndIndex = groupStartIndex + group.indexes.length - 1;
|
|
443
|
-
if (!visibleGroupRange ||
|
|
444
|
-
!isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleGroupRange)) {
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
const groupStart = getItemByIndex(this.dimensionCol.state, groupStartIndex).start;
|
|
448
|
-
const groupEnd = getItemByIndex(this.dimensionCol.state, groupEndIndex).end;
|
|
437
|
+
const groupRange = this.getGroupIndexRange(group);
|
|
438
|
+
const groupBounds = this.getGroupBounds(groupRange);
|
|
449
439
|
const props = {
|
|
440
|
+
level,
|
|
450
441
|
providers: this.providers,
|
|
451
|
-
start:
|
|
452
|
-
end:
|
|
442
|
+
start: groupBounds.start,
|
|
443
|
+
end: groupBounds.end,
|
|
453
444
|
group,
|
|
454
445
|
renderOffset: this.viewportCol.get('renderOffset') || 0,
|
|
455
446
|
active: this.resizeHandler,
|
|
@@ -457,15 +448,57 @@ const RevogrHeaderComponent = class {
|
|
|
457
448
|
additionalData: this.additionalData,
|
|
458
449
|
onResize: e => {
|
|
459
450
|
var _a;
|
|
460
|
-
return
|
|
451
|
+
return groupRange
|
|
452
|
+
? this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupRange.startIndex, groupRange.endIndex)
|
|
453
|
+
: undefined;
|
|
461
454
|
},
|
|
462
455
|
};
|
|
463
456
|
const event = this.beforeGroupHeaderRender.emit(props);
|
|
464
457
|
if (event.defaultPrevented) {
|
|
465
458
|
return;
|
|
466
459
|
}
|
|
460
|
+
const renderRange = this.getGroupIndexRange(event.detail.group);
|
|
461
|
+
if (!renderRange ||
|
|
462
|
+
!visibleGroupRange ||
|
|
463
|
+
!isGroupInVisibleRange(renderRange.startIndex, renderRange.endIndex, visibleGroupRange)) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
if (event.detail.onResize === props.onResize) {
|
|
467
|
+
event.detail.onResize = e => {
|
|
468
|
+
var _a;
|
|
469
|
+
return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, renderRange.startIndex, renderRange.endIndex);
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
const renderBounds = this.getGroupBounds(renderRange);
|
|
473
|
+
if (event.detail.start === props.start) {
|
|
474
|
+
event.detail.start = renderBounds.start;
|
|
475
|
+
}
|
|
476
|
+
if (event.detail.end === props.end) {
|
|
477
|
+
event.detail.end = renderBounds.end;
|
|
478
|
+
}
|
|
467
479
|
return h(HeaderGroupRenderer, Object.assign({ key: this.getGroupHeaderCellKey(event.detail.group, level) }, event.detail));
|
|
468
480
|
}
|
|
481
|
+
getGroupIndexRange(group) {
|
|
482
|
+
var _a;
|
|
483
|
+
const startIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
|
|
484
|
+
if (startIndex < 0) {
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
const endIndex = group.indexes[group.indexes.length - 1];
|
|
488
|
+
return {
|
|
489
|
+
startIndex,
|
|
490
|
+
endIndex,
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
getGroupBounds(range) {
|
|
494
|
+
if (!range) {
|
|
495
|
+
return { start: 0, end: 0 };
|
|
496
|
+
}
|
|
497
|
+
return {
|
|
498
|
+
start: getItemByIndex(this.dimensionCol.state, range.startIndex).start,
|
|
499
|
+
end: getItemByIndex(this.dimensionCol.state, range.endIndex).end,
|
|
500
|
+
};
|
|
501
|
+
}
|
|
469
502
|
getVisibleGroupRange() {
|
|
470
503
|
const visibleColumns = this.viewportCol.get('items');
|
|
471
504
|
if (!visibleColumns.length) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { h, f as Build } from './index-Chp_81rd.js';
|
|
5
5
|
import { n as DATA_ROW, w as DRAG_ICON_CLASS, x as DRAGGABLE_CLASS } from './dimension.helpers-CGKwSvw6.js';
|
|
6
|
-
import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-
|
|
6
|
+
import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-CC_SD8W3.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Renders sorting direction and optional additive sorting rank.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { J as reduce, g as getRange, K as baseEach, C as getColumnType, c as columnTypes, L as toInteger, u as isGrouping, t as getGroupingName, r as rowTypes, B as getCellDataParsed, A as getCellRaw, j as GROUP_COLUMN_PROP, I as getColumnByProp, h as GROUP_EXPANDED, x as getParsedGroup, y as isSameGroup, G as GROUP_DEPTH, e as PSEUDO_GROUP_ITEM_VALUE, d as PSEUDO_GROUP_ITEM_ID, o as GROUPING_ROW_TYPE, p as getSource, f as PSEUDO_GROUP_COLUMN, s as gatherGrouping, m as GROUP_EXPAND_EVENT, v as isGroupingColumn, q as getExpanded, E as isColGrouping } from './column.service-
|
|
4
|
+
import { J as reduce, g as getRange, K as baseEach, C as getColumnType, c as columnTypes, L as toInteger, u as isGrouping, t as getGroupingName, r as rowTypes, B as getCellDataParsed, A as getCellRaw, j as GROUP_COLUMN_PROP, I as getColumnByProp, h as GROUP_EXPANDED, x as getParsedGroup, y as isSameGroup, G as GROUP_DEPTH, e as PSEUDO_GROUP_ITEM_VALUE, d as PSEUDO_GROUP_ITEM_ID, o as GROUPING_ROW_TYPE, p as getSource, f as PSEUDO_GROUP_COLUMN, s as gatherGrouping, m as GROUP_EXPAND_EVENT, v as isGroupingColumn, q as getExpanded, E as isColGrouping } from './column.service-CC_SD8W3.js';
|
|
5
5
|
import { K as createStore, l as setStore, i as calculateDimensionData, L as identity, N as isArray, b as getSourceItem, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-CGKwSvw6.js';
|
|
6
6
|
import { j as calculateRowHeaderSize } from './viewport.store-COAfzAyu.js';
|
|
7
7
|
import { g as getScrollbarSize, t as timeout } from './index-Db3qZoW5.js';
|
|
8
8
|
import { h } from './index-Chp_81rd.js';
|
|
9
9
|
import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-C8XTWPU2.js';
|
|
10
10
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
11
|
-
import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-
|
|
11
|
+
import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-BsvUQ8GS.js';
|
|
12
12
|
|
|
13
13
|
function calculateRealSize({ count, originItemSize, sizes, }) {
|
|
14
14
|
const safeCount = Math.max(0, count);
|
|
@@ -437,6 +437,9 @@ const GROUPING_ROW_TYPE = 'rgRow';
|
|
|
437
437
|
function getGroupValueDefault(item, prop) {
|
|
438
438
|
return item[prop] || null;
|
|
439
439
|
}
|
|
440
|
+
function isDataRow(item) {
|
|
441
|
+
return item != null;
|
|
442
|
+
}
|
|
440
443
|
// get source based on proxy item collection to preserve rgRow order
|
|
441
444
|
function getSource(source, items, withoutGrouping = false) {
|
|
442
445
|
let index = 0;
|
|
@@ -458,6 +461,9 @@ function getSource(source, items, withoutGrouping = false) {
|
|
|
458
461
|
result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;
|
|
459
462
|
}
|
|
460
463
|
}
|
|
464
|
+
else if (!isDataRow(model)) {
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
461
467
|
else {
|
|
462
468
|
result.source.push(model);
|
|
463
469
|
result.oldNewIndexes[i] = index;
|
|
@@ -538,6 +544,9 @@ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, exp
|
|
|
538
544
|
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
|
|
539
545
|
const groupedItems = new Map();
|
|
540
546
|
array.forEach((item, originalIndex) => {
|
|
547
|
+
if (!isDataRow(item)) {
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
541
550
|
const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
|
|
542
551
|
const lastLevelValue = groupLevelValues.pop();
|
|
543
552
|
let currentGroupLevel = groupedItems;
|
package/dist/revo-grid/{header-cell-renderer-DGI2FAD8.js → header-cell-renderer-BsvUQ8GS.js}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h } from './index-Chp_81rd.js';
|
|
5
|
-
import { Q as doPropMerge } from './column.service-
|
|
5
|
+
import { Q as doPropMerge } from './column.service-CC_SD8W3.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Dispatches a custom event to a specified target element.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-
|
|
5
|
-
import { B as BasePlugin } from './column.drag.plugin-
|
|
6
|
-
export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-
|
|
7
|
-
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-
|
|
8
|
-
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-
|
|
4
|
+
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-CC_SD8W3.js';
|
|
5
|
+
import { B as BasePlugin } from './column.drag.plugin-DCZW62Uc.js';
|
|
6
|
+
export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-DCZW62Uc.js';
|
|
7
|
+
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-BsvUQ8GS.js';
|
|
8
|
+
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-BtN-NGCk.js';
|
|
9
9
|
export { a as applyMixins, f as findPositionInArray, g as getScrollbarSize, m as mergeSortedArray, p as pushSorted, r as range, s as scaleValue, t as timeout } from './index-Db3qZoW5.js';
|
|
10
10
|
export { T as TextEditor } from './text-editor-C3RUSwH5.js';
|
|
11
11
|
export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, m as isEditInput, n as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, l as isShortcutModifier, d as isTab, e as isTabKeyValue } from './edit.utils-Dnnbd0xG.js';
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
import { h, r as registerInstance, d as createEvent, e as Host, g as getElement } from './index-Chp_81rd.js';
|
|
5
|
-
import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-
|
|
5
|
+
import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-CC_SD8W3.js';
|
|
6
6
|
import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL } from './dimension.helpers-CGKwSvw6.js';
|
|
7
7
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
8
8
|
import { g as getScrollDimension, v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-CoCAvmZs.js';
|
|
9
9
|
import { c as clampViewportCoordinate, V as ViewportStore } from './viewport.store-COAfzAyu.js';
|
|
10
|
-
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-
|
|
10
|
+
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-DCZW62Uc.js';
|
|
11
11
|
import { T as ThemeService } from './theme.service-BmnDvr6P.js';
|
|
12
12
|
import { t as timeout } from './index-Db3qZoW5.js';
|
|
13
13
|
import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
|
|
14
14
|
import './filter.button-C8XTWPU2.js';
|
|
15
|
-
import './header-cell-renderer-
|
|
15
|
+
import './header-cell-renderer-BsvUQ8GS.js';
|
|
16
16
|
|
|
17
17
|
class ColumnDataProvider {
|
|
18
18
|
get stores() {
|
|
@@ -782,13 +782,11 @@ class SelectionStoreConnector {
|
|
|
782
782
|
return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
|
|
783
783
|
}
|
|
784
784
|
registerColumn(x, type) {
|
|
785
|
+
this.updateColumnTypeMapping(x, type);
|
|
785
786
|
if (this.columnStores[x]) {
|
|
786
787
|
return this.columnStores[x];
|
|
787
788
|
}
|
|
788
789
|
this.columnStores[x] = new SelectionStore();
|
|
789
|
-
// build cross-linking type to position
|
|
790
|
-
this.storesByType[type] = x;
|
|
791
|
-
this.storesXToType[x] = type;
|
|
792
790
|
return this.columnStores[x];
|
|
793
791
|
}
|
|
794
792
|
registerRow(y, type) {
|
|
@@ -1009,6 +1007,31 @@ class SelectionStoreConnector {
|
|
|
1009
1007
|
}
|
|
1010
1008
|
return stores;
|
|
1011
1009
|
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Keep column viewport positions and types in sync across pin/unpin rerenders.
|
|
1012
|
+
* Regression case: when a selected rgCol cell was pinned left, colPinStart
|
|
1013
|
+
* could take over x=0 and render the stale rgCol focus store in the pinned area.
|
|
1014
|
+
*/
|
|
1015
|
+
updateColumnTypeMapping(x, type) {
|
|
1016
|
+
const previousType = this.storesXToType[x];
|
|
1017
|
+
const previousX = this.storesByType[type];
|
|
1018
|
+
let shouldClearFocus = false;
|
|
1019
|
+
this.storesByType[type] = x;
|
|
1020
|
+
this.storesXToType[x] = type;
|
|
1021
|
+
if (previousType && previousType !== type) {
|
|
1022
|
+
shouldClearFocus = true;
|
|
1023
|
+
if (this.storesByType[previousType] === x) {
|
|
1024
|
+
delete this.storesByType[previousType];
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
|
|
1028
|
+
delete this.storesXToType[previousX];
|
|
1029
|
+
shouldClearFocus = true;
|
|
1030
|
+
}
|
|
1031
|
+
if (shouldClearFocus) {
|
|
1032
|
+
this.clearAll();
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1012
1035
|
}
|
|
1013
1036
|
|
|
1014
1037
|
/**
|
|
@@ -1958,6 +1981,7 @@ const RevoGridComponent = class {
|
|
|
1958
1981
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
1959
1982
|
return;
|
|
1960
1983
|
}
|
|
1984
|
+
const focusToRestore = init ? undefined : this.getColumnFocusRestore();
|
|
1961
1985
|
const beforeGatherEvent = this.beforecolumnsgather.emit({
|
|
1962
1986
|
columns: [...newVal],
|
|
1963
1987
|
});
|
|
@@ -1975,6 +1999,9 @@ const RevoGridComponent = class {
|
|
|
1975
1999
|
return;
|
|
1976
2000
|
}
|
|
1977
2001
|
const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
|
|
2002
|
+
if (focusToRestore) {
|
|
2003
|
+
this.pendingColumnFocusRestore = focusToRestore;
|
|
2004
|
+
}
|
|
1978
2005
|
const order = {};
|
|
1979
2006
|
for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
|
|
1980
2007
|
order[prop] = beforeApplyEvent.detail.sort[prop].order;
|
|
@@ -1984,6 +2011,64 @@ const RevoGridComponent = class {
|
|
|
1984
2011
|
order,
|
|
1985
2012
|
});
|
|
1986
2013
|
}
|
|
2014
|
+
/**
|
|
2015
|
+
* Capture logical focus before columns are repartitioned by pin state.
|
|
2016
|
+
* Regression case: selecting a regular cell, then pinning that column left,
|
|
2017
|
+
* used to let the new pinned viewport reuse the old rgCol selection store.
|
|
2018
|
+
*/
|
|
2019
|
+
getColumnFocusRestore() {
|
|
2020
|
+
var _a, _b, _c, _d;
|
|
2021
|
+
const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
|
|
2022
|
+
const prevStoreX = (_c = (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.focusedStore) === null || _c === void 0 ? void 0 : _c.position.x;
|
|
2023
|
+
const prop = (_d = focused === null || focused === void 0 ? void 0 : focused.column) === null || _d === void 0 ? void 0 : _d.prop;
|
|
2024
|
+
if (!focused || prop === undefined || prevStoreX === undefined) {
|
|
2025
|
+
return;
|
|
2026
|
+
}
|
|
2027
|
+
return {
|
|
2028
|
+
prop,
|
|
2029
|
+
colType: focused.colType,
|
|
2030
|
+
colIndex: focused.cell.x,
|
|
2031
|
+
prevStoreX,
|
|
2032
|
+
rowType: focused.rowType,
|
|
2033
|
+
rowIndex: focused.cell.y,
|
|
2034
|
+
};
|
|
2035
|
+
}
|
|
2036
|
+
/**
|
|
2037
|
+
* Reapply focus by column prop after render, once pinning has moved the
|
|
2038
|
+
* column to its new viewport and virtual index.
|
|
2039
|
+
*/
|
|
2040
|
+
restoreColumnFocusAfterRender() {
|
|
2041
|
+
var _a, _b, _c, _d;
|
|
2042
|
+
const pending = this.pendingColumnFocusRestore;
|
|
2043
|
+
if (!pending) {
|
|
2044
|
+
return;
|
|
2045
|
+
}
|
|
2046
|
+
this.pendingColumnFocusRestore = undefined;
|
|
2047
|
+
if (!this.viewport || !this.columnProvider) {
|
|
2048
|
+
return;
|
|
2049
|
+
}
|
|
2050
|
+
const column = (_b = (_a = this.columnProvider.getColumnByProp(pending.prop)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : getColumnByProp(this.columns, pending.prop);
|
|
2051
|
+
if (!column) {
|
|
2052
|
+
return;
|
|
2053
|
+
}
|
|
2054
|
+
const colType = column.pin || 'rgCol';
|
|
2055
|
+
const columnIndex = this.columnProvider.getColumnIndexByProp(pending.prop, colType);
|
|
2056
|
+
if (columnIndex < 0) {
|
|
2057
|
+
return;
|
|
2058
|
+
}
|
|
2059
|
+
// Header-only column refreshes should not collapse an existing range.
|
|
2060
|
+
// Replay focus only when pin/unpin or repartitioning moved the logical column.
|
|
2061
|
+
if (colType === pending.colType &&
|
|
2062
|
+
columnIndex === pending.colIndex &&
|
|
2063
|
+
pending.prevStoreX === ((_d = (_c = this.selectionStoreConnector) === null || _c === void 0 ? void 0 : _c.focusedStore) === null || _d === void 0 ? void 0 : _d.position.x)) {
|
|
2064
|
+
return;
|
|
2065
|
+
}
|
|
2066
|
+
const cell = {
|
|
2067
|
+
x: columnIndex,
|
|
2068
|
+
y: pending.rowIndex,
|
|
2069
|
+
};
|
|
2070
|
+
this.viewport.setFocus(colType, pending.rowType, cell, cell);
|
|
2071
|
+
}
|
|
1987
2072
|
disableVirtualXChanged(newVal = false, prevVal = false) {
|
|
1988
2073
|
if (newVal === prevVal) {
|
|
1989
2074
|
return;
|
|
@@ -2296,6 +2381,7 @@ const RevoGridComponent = class {
|
|
|
2296
2381
|
return Promise.all(this.jobsBeforeRender);
|
|
2297
2382
|
}
|
|
2298
2383
|
componentDidRender() {
|
|
2384
|
+
this.restoreColumnFocusAfterRender();
|
|
2299
2385
|
this.aftergridrender.emit();
|
|
2300
2386
|
}
|
|
2301
2387
|
render() {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { r as registerInstance, h, e as Host, d as createEvent, g as getElement } from './index-Chp_81rd.js';
|
|
5
5
|
import { k as getItemByIndex, b as getSourceItem, j as getItemByPosition, F as FOCUS_CLASS, I as codesLetter, R as RESIZE_INTERVAL, y as MOBILE_CLASS, z as CELL_HANDLER_CLASS, S as SELECTION_BORDER_CLASS, D as DataStore, q as ROW_HEADER_TYPE, T as TMP_SELECTION_BG_CLASS } from './dimension.helpers-CGKwSvw6.js';
|
|
6
6
|
import { g as getPropertyFromEvent, v as verifyTouchTarget } from './events-BvSmBueA.js';
|
|
7
|
-
import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-
|
|
7
|
+
import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-CC_SD8W3.js';
|
|
8
8
|
import { l as isShortcutModifier, m as isEditInput, c as isClear, d as isTab, f as isEnterKeyValue, h as isCopy, g as isCut, j as isPaste, k as isAll } from './edit.utils-Dnnbd0xG.js';
|
|
9
9
|
import { t as timeout, g as getScrollbarSize } from './index-Db3qZoW5.js';
|
|
10
10
|
import { d as debounce } from './debounce-PCRWZliA.js';
|