handsontable 0.0.0-next-30065c6-20250405 → 0.0.0-next-ff10728-20250410
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.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/range.js +0 -14
- package/3rdparty/walkontable/src/cell/range.mjs +0 -14
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -4
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -4
- package/3rdparty/walkontable/src/selection/border/border.js +0 -5
- package/3rdparty/walkontable/src/selection/border/border.mjs +0 -5
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +4 -3
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +4 -3
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -8
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +10 -8
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +4 -3
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +4 -3
- package/3rdparty/walkontable/src/table.js +2 -5
- package/3rdparty/walkontable/src/table.mjs +2 -5
- package/CHANGELOG.md +0 -39
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/focusCatcher/focusDetector.js +1 -1
- package/core/focusCatcher/focusDetector.mjs +2 -2
- package/core/hooks/constants.js +0 -8
- package/core/hooks/constants.mjs +0 -8
- package/core/hooks/index.d.ts +0 -1
- package/core.d.ts +1 -0
- package/core.js +25 -32
- package/core.mjs +26 -33
- package/dataMap/dataMap.js +7 -0
- package/dataMap/dataMap.mjs +7 -0
- package/dataMap/metaManager/metaSchema.js +0 -1
- package/dataMap/metaManager/metaSchema.mjs +0 -1
- package/dist/handsontable.css +3 -3
- package/dist/handsontable.full.css +3 -3
- package/dist/handsontable.full.js +350 -437
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +17 -17
- package/dist/handsontable.js +350 -437
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +18 -18
- package/editorManager.js +7 -1
- package/editorManager.mjs +7 -1
- package/editors/autocompleteEditor/autocompleteEditor.js +4 -14
- package/editors/autocompleteEditor/autocompleteEditor.mjs +4 -14
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +2 -2
- package/helpers/browser.js +1 -1
- package/helpers/browser.mjs +1 -1
- package/helpers/dom/element.js +2 -2
- package/helpers/dom/element.mjs +1 -1
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/object.js +0 -3
- package/helpers/object.mjs +0 -3
- package/package.json +1 -1
- package/plugins/autoColumnSize/autoColumnSize.js +1 -1
- package/plugins/autoColumnSize/autoColumnSize.mjs +1 -1
- package/plugins/autoRowSize/autoRowSize.js +6 -1
- package/plugins/autoRowSize/autoRowSize.mjs +6 -1
- package/plugins/columnSorting/columnSorting.js +4 -0
- package/plugins/columnSorting/columnSorting.mjs +4 -0
- package/plugins/comments/comments.js +0 -1
- package/plugins/comments/comments.mjs +0 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +2 -2
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +2 -2
- package/plugins/contextMenu/menu/menu.js +0 -1
- package/plugins/contextMenu/menu/menu.mjs +0 -1
- package/plugins/contextMenu/menu/positioner.js +2 -10
- package/plugins/contextMenu/menu/positioner.mjs +2 -10
- package/plugins/copyPaste/copyPaste.js +15 -12
- package/plugins/copyPaste/copyPaste.mjs +16 -13
- package/plugins/copyPaste/pasteEvent.js +0 -3
- package/plugins/copyPaste/pasteEvent.mjs +0 -3
- package/plugins/filters/filters.js +24 -25
- package/plugins/filters/filters.mjs +24 -25
- package/plugins/filters/ui/multipleSelect.js +1 -7
- package/plugins/filters/ui/multipleSelect.mjs +1 -7
- package/plugins/hiddenColumns/hiddenColumns.js +1 -1
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.js +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnResize/manualColumnResize.js +6 -4
- package/plugins/manualColumnResize/manualColumnResize.mjs +6 -4
- package/plugins/manualRowResize/manualRowResize.js +6 -4
- package/plugins/manualRowResize/manualRowResize.mjs +6 -4
- package/plugins/mergeCells/mergeCells.js +29 -8
- package/plugins/mergeCells/mergeCells.mjs +29 -8
- package/plugins/mergeCells/renderer.js +0 -15
- package/plugins/mergeCells/renderer.mjs +0 -15
- package/plugins/nestedRows/data/dataManager.js +2 -2
- package/plugins/nestedRows/data/dataManager.mjs +2 -2
- package/plugins/undoRedo/actions/removeColumn.js +14 -19
- package/plugins/undoRedo/actions/removeColumn.mjs +14 -19
- package/plugins/undoRedo/actions/removeRow.js +4 -12
- package/plugins/undoRedo/actions/removeRow.mjs +4 -12
- package/selection/selection.js +1 -3
- package/selection/selection.mjs +1 -3
- package/styles/handsontable.css +15 -14
- package/styles/handsontable.min.css +3 -3
- package/styles/ht-theme-horizon.css +2 -2
- package/styles/ht-theme-horizon.min.css +2 -2
- package/styles/ht-theme-main.css +2 -2
- package/styles/ht-theme-main.min.css +2 -2
- package/tableView.js +8 -5
- package/tableView.mjs +8 -5
- package/utils/ghostTable.js +0 -3
- package/utils/ghostTable.mjs +0 -3
- package/plugins/mergeCells/utils.js +0 -31
- package/plugins/mergeCells/utils.mjs +0 -27
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { isObject } from "../../helpers/object.mjs";
|
|
2
|
-
import { isSafari } from "../../helpers/browser.mjs";
|
|
3
|
-
import { sumCellsHeights } from "./utils.mjs";
|
|
4
2
|
/**
|
|
5
3
|
* Creates a renderer object for the `MergeCells` plugin.
|
|
6
4
|
*
|
|
@@ -16,7 +14,6 @@ export function createMergeCellRenderer(plugin) {
|
|
|
16
14
|
rowIndexMapper: rowMapper,
|
|
17
15
|
columnIndexMapper: columnMapper
|
|
18
16
|
} = hot;
|
|
19
|
-
const updateNextCellsHeight = new Map();
|
|
20
17
|
|
|
21
18
|
/**
|
|
22
19
|
* Runs before the cell is rendered.
|
|
@@ -38,10 +35,6 @@ export function createMergeCellRenderer(plugin) {
|
|
|
38
35
|
if (!isObject(mergedCell)) {
|
|
39
36
|
TD.removeAttribute('rowspan');
|
|
40
37
|
TD.removeAttribute('colspan');
|
|
41
|
-
if (isSafari() && updateNextCellsHeight.has(row) && !hot.getSettings().rowHeaders) {
|
|
42
|
-
TD.style.height = `${updateNextCellsHeight.get(row)}px`;
|
|
43
|
-
updateNextCellsHeight.delete(row);
|
|
44
|
-
}
|
|
45
38
|
TD.style.display = '';
|
|
46
39
|
return;
|
|
47
40
|
}
|
|
@@ -53,14 +46,6 @@ export function createMergeCellRenderer(plugin) {
|
|
|
53
46
|
} = mergedCell;
|
|
54
47
|
const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
|
|
55
48
|
const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
|
|
56
|
-
|
|
57
|
-
// Safari bug fix - the height of the cells next to the merged cell must be defined
|
|
58
|
-
// so that their height is proportional to the height of the merged cell
|
|
59
|
-
// (this emulates default behavior in Chrome, FF etc.)
|
|
60
|
-
if (isSafari() && origColumn === 0 && !hot.getSettings().rowHeaders) {
|
|
61
|
-
const height = sumCellsHeights(hot, origRow, origRowspan);
|
|
62
|
-
updateNextCellsHeight.set(row, height / origRowspan);
|
|
63
|
-
}
|
|
64
49
|
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
|
65
50
|
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
|
66
51
|
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
|
@@ -627,7 +627,7 @@ class DataManager {
|
|
|
627
627
|
*/
|
|
628
628
|
syncRowWithRawSource(rowElement) {
|
|
629
629
|
let upmostParent = rowElement;
|
|
630
|
-
let tempParent =
|
|
630
|
+
let tempParent = null;
|
|
631
631
|
do {
|
|
632
632
|
tempParent = this.getRowParent(tempParent);
|
|
633
633
|
if (tempParent !== null) {
|
|
@@ -635,7 +635,7 @@ class DataManager {
|
|
|
635
635
|
}
|
|
636
636
|
} while (tempParent !== null);
|
|
637
637
|
this.plugin.disableCoreAPIModifiers();
|
|
638
|
-
this.hot.setSourceDataAtCell(this.
|
|
638
|
+
this.hot.setSourceDataAtCell(this.getRowIndex(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
|
|
639
639
|
this.plugin.enableCoreAPIModifiers();
|
|
640
640
|
}
|
|
641
641
|
|
|
@@ -624,7 +624,7 @@ class DataManager {
|
|
|
624
624
|
*/
|
|
625
625
|
syncRowWithRawSource(rowElement) {
|
|
626
626
|
let upmostParent = rowElement;
|
|
627
|
-
let tempParent =
|
|
627
|
+
let tempParent = null;
|
|
628
628
|
do {
|
|
629
629
|
tempParent = this.getRowParent(tempParent);
|
|
630
630
|
if (tempParent !== null) {
|
|
@@ -632,7 +632,7 @@ class DataManager {
|
|
|
632
632
|
}
|
|
633
633
|
} while (tempParent !== null);
|
|
634
634
|
this.plugin.disableCoreAPIModifiers();
|
|
635
|
-
this.hot.setSourceDataAtCell(this.
|
|
635
|
+
this.hot.setSourceDataAtCell(this.getRowIndex(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
|
|
636
636
|
this.plugin.enableCoreAPIModifiers();
|
|
637
637
|
}
|
|
638
638
|
|
|
@@ -37,7 +37,7 @@ class RemoveColumnAction extends _base.BaseAction {
|
|
|
37
37
|
*/
|
|
38
38
|
_defineProperty(this, "index", void 0);
|
|
39
39
|
/**
|
|
40
|
-
* @param {number[]} indexes The
|
|
40
|
+
* @param {number[]} indexes The visual column indexes.
|
|
41
41
|
*/
|
|
42
42
|
_defineProperty(this, "indexes", void 0);
|
|
43
43
|
/**
|
|
@@ -103,14 +103,16 @@ class RemoveColumnAction extends _base.BaseAction {
|
|
|
103
103
|
headers.push(hot.getSettings().colHeaders[hot.toPhysicalColumn(columnIndex + i)] || null);
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
|
+
const columnsMap = hot.columnIndexMapper.getIndexesSequence();
|
|
107
|
+
const rowsMap = hot.rowIndexMapper.getIndexesSequence();
|
|
106
108
|
return new RemoveColumnAction({
|
|
107
109
|
index: columnIndex,
|
|
108
110
|
indexes,
|
|
109
111
|
data: removedData,
|
|
110
112
|
amount,
|
|
111
113
|
headers,
|
|
112
|
-
columnPositions:
|
|
113
|
-
rowPositions:
|
|
114
|
+
columnPositions: columnsMap,
|
|
115
|
+
rowPositions: rowsMap,
|
|
114
116
|
fixedColumnsStart: hot.getSettings().fixedColumnsStart,
|
|
115
117
|
removedCellMetas: (0, _utils.getCellMetas)(hot, 0, hot.countRows(), columnIndex, lastColumnIndex)
|
|
116
118
|
});
|
|
@@ -137,27 +139,14 @@ class RemoveColumnAction extends _base.BaseAction {
|
|
|
137
139
|
}
|
|
138
140
|
const sortedHeaders = (0, _array.arrayMap)(this.headers, sortByIndexes);
|
|
139
141
|
const changes = [];
|
|
140
|
-
|
|
141
|
-
// The indexes sequence have to be applied twice.
|
|
142
|
-
// * First for proper index translation. The alter method accepts a visual index
|
|
143
|
-
// and we are able to retrieve the correct index indicating where to add a new row based
|
|
144
|
-
// only on the previous order state of the columns;
|
|
145
|
-
// * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
|
|
146
|
-
// the same as it was in the previous state;
|
|
147
|
-
hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
|
|
148
|
-
hot.alter('insert_col_start', hot.toVisualColumn(this.indexes[0]), this.indexes.length, 'UndoRedo.undo');
|
|
149
|
-
hot.batchExecution(() => {
|
|
150
|
-
// Restore row sequence in a case when all columns are removed. the original
|
|
151
|
-
// row sequence is lost in that case.
|
|
152
|
-
hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
|
|
153
|
-
hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
|
|
154
|
-
}, true);
|
|
142
|
+
hot.alter('insert_col_start', this.indexes[0], this.indexes.length, 'UndoRedo.undo');
|
|
155
143
|
(0, _array.arrayEach)(hot.getSourceDataArray(), (rowData, rowIndex) => {
|
|
156
144
|
(0, _array.arrayEach)(ascendingIndexes, (changedIndex, contiquesIndex) => {
|
|
157
145
|
rowData[changedIndex] = sortedData[rowIndex][contiquesIndex];
|
|
158
146
|
changes.push([rowIndex, changedIndex, rowData[changedIndex]]);
|
|
159
147
|
});
|
|
160
148
|
});
|
|
149
|
+
hot.setSourceDataAtCell(changes, undefined, undefined, 'UndoRedo.undo');
|
|
161
150
|
if (typeof this.headers !== 'undefined') {
|
|
162
151
|
(0, _array.arrayEach)(sortedHeaders, (headerData, columnIndex) => {
|
|
163
152
|
hot.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;
|
|
@@ -167,8 +156,14 @@ class RemoveColumnAction extends _base.BaseAction {
|
|
|
167
156
|
let [rowIndex, columnIndex, cellMeta] = _ref2;
|
|
168
157
|
hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
|
|
169
158
|
});
|
|
159
|
+
hot.batchExecution(() => {
|
|
160
|
+
// Restore row sequence in a case when all columns are removed. the original
|
|
161
|
+
// row sequence is lost in that case.
|
|
162
|
+
hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
|
|
163
|
+
hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
|
|
164
|
+
}, true);
|
|
170
165
|
hot.addHookOnce('afterViewRender', undoneCallback);
|
|
171
|
-
hot.
|
|
166
|
+
hot.render();
|
|
172
167
|
}
|
|
173
168
|
|
|
174
169
|
/**
|
|
@@ -34,7 +34,7 @@ export class RemoveColumnAction extends BaseAction {
|
|
|
34
34
|
*/
|
|
35
35
|
_defineProperty(this, "index", void 0);
|
|
36
36
|
/**
|
|
37
|
-
* @param {number[]} indexes The
|
|
37
|
+
* @param {number[]} indexes The visual column indexes.
|
|
38
38
|
*/
|
|
39
39
|
_defineProperty(this, "indexes", void 0);
|
|
40
40
|
/**
|
|
@@ -100,14 +100,16 @@ export class RemoveColumnAction extends BaseAction {
|
|
|
100
100
|
headers.push(hot.getSettings().colHeaders[hot.toPhysicalColumn(columnIndex + i)] || null);
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
+
const columnsMap = hot.columnIndexMapper.getIndexesSequence();
|
|
104
|
+
const rowsMap = hot.rowIndexMapper.getIndexesSequence();
|
|
103
105
|
return new RemoveColumnAction({
|
|
104
106
|
index: columnIndex,
|
|
105
107
|
indexes,
|
|
106
108
|
data: removedData,
|
|
107
109
|
amount,
|
|
108
110
|
headers,
|
|
109
|
-
columnPositions:
|
|
110
|
-
rowPositions:
|
|
111
|
+
columnPositions: columnsMap,
|
|
112
|
+
rowPositions: rowsMap,
|
|
111
113
|
fixedColumnsStart: hot.getSettings().fixedColumnsStart,
|
|
112
114
|
removedCellMetas: getCellMetas(hot, 0, hot.countRows(), columnIndex, lastColumnIndex)
|
|
113
115
|
});
|
|
@@ -134,27 +136,14 @@ export class RemoveColumnAction extends BaseAction {
|
|
|
134
136
|
}
|
|
135
137
|
const sortedHeaders = arrayMap(this.headers, sortByIndexes);
|
|
136
138
|
const changes = [];
|
|
137
|
-
|
|
138
|
-
// The indexes sequence have to be applied twice.
|
|
139
|
-
// * First for proper index translation. The alter method accepts a visual index
|
|
140
|
-
// and we are able to retrieve the correct index indicating where to add a new row based
|
|
141
|
-
// only on the previous order state of the columns;
|
|
142
|
-
// * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
|
|
143
|
-
// the same as it was in the previous state;
|
|
144
|
-
hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
|
|
145
|
-
hot.alter('insert_col_start', hot.toVisualColumn(this.indexes[0]), this.indexes.length, 'UndoRedo.undo');
|
|
146
|
-
hot.batchExecution(() => {
|
|
147
|
-
// Restore row sequence in a case when all columns are removed. the original
|
|
148
|
-
// row sequence is lost in that case.
|
|
149
|
-
hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
|
|
150
|
-
hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
|
|
151
|
-
}, true);
|
|
139
|
+
hot.alter('insert_col_start', this.indexes[0], this.indexes.length, 'UndoRedo.undo');
|
|
152
140
|
arrayEach(hot.getSourceDataArray(), (rowData, rowIndex) => {
|
|
153
141
|
arrayEach(ascendingIndexes, (changedIndex, contiquesIndex) => {
|
|
154
142
|
rowData[changedIndex] = sortedData[rowIndex][contiquesIndex];
|
|
155
143
|
changes.push([rowIndex, changedIndex, rowData[changedIndex]]);
|
|
156
144
|
});
|
|
157
145
|
});
|
|
146
|
+
hot.setSourceDataAtCell(changes, undefined, undefined, 'UndoRedo.undo');
|
|
158
147
|
if (typeof this.headers !== 'undefined') {
|
|
159
148
|
arrayEach(sortedHeaders, (headerData, columnIndex) => {
|
|
160
149
|
hot.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;
|
|
@@ -164,8 +153,14 @@ export class RemoveColumnAction extends BaseAction {
|
|
|
164
153
|
let [rowIndex, columnIndex, cellMeta] = _ref2;
|
|
165
154
|
hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
|
|
166
155
|
});
|
|
156
|
+
hot.batchExecution(() => {
|
|
157
|
+
// Restore row sequence in a case when all columns are removed. the original
|
|
158
|
+
// row sequence is lost in that case.
|
|
159
|
+
hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
|
|
160
|
+
hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
|
|
161
|
+
}, true);
|
|
167
162
|
hot.addHookOnce('afterViewRender', undoneCallback);
|
|
168
|
-
hot.
|
|
163
|
+
hot.render();
|
|
169
164
|
}
|
|
170
165
|
|
|
171
166
|
/**
|
|
@@ -29,7 +29,7 @@ class RemoveRowAction extends _base.BaseAction {
|
|
|
29
29
|
} = _ref;
|
|
30
30
|
super('remove_row');
|
|
31
31
|
/**
|
|
32
|
-
* @param {number} index The
|
|
32
|
+
* @param {number} index The visual row index.
|
|
33
33
|
*/
|
|
34
34
|
_defineProperty(this, "index", void 0);
|
|
35
35
|
/**
|
|
@@ -97,22 +97,14 @@ class RemoveRowAction extends _base.BaseAction {
|
|
|
97
97
|
changes.push([this.index + rowIndexDelta, isNaN(columnIndex) ? columnProp : columnIndex, dataRow[columnProp]]);
|
|
98
98
|
});
|
|
99
99
|
});
|
|
100
|
-
|
|
101
|
-
// The indexes sequence have to be applied twice.
|
|
102
|
-
// * First for proper index translation. The alter method accepts a visual index
|
|
103
|
-
// and we are able to retrieve the correct index indicating where to add a new row based
|
|
104
|
-
// only on the previous order state of the rows;
|
|
105
|
-
// * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
|
|
106
|
-
// the same as it was in the previous state;
|
|
107
|
-
hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
|
|
108
|
-
hot.alter('insert_row_above', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.undo');
|
|
109
|
-
hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
|
|
100
|
+
hot.alter('insert_row_above', this.index, this.data.length, 'UndoRedo.undo');
|
|
110
101
|
this.removedCellMetas.forEach(_ref2 => {
|
|
111
102
|
let [rowIndex, columnIndex, cellMeta] = _ref2;
|
|
112
103
|
hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
|
|
113
104
|
});
|
|
114
105
|
hot.addHookOnce('afterViewRender', undoneCallback);
|
|
115
106
|
hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
|
|
107
|
+
hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
|
|
116
108
|
}
|
|
117
109
|
|
|
118
110
|
/**
|
|
@@ -121,7 +113,7 @@ class RemoveRowAction extends _base.BaseAction {
|
|
|
121
113
|
*/
|
|
122
114
|
redo(hot, redoneCallback) {
|
|
123
115
|
hot.addHookOnce('afterRemoveRow', redoneCallback);
|
|
124
|
-
hot.alter('remove_row',
|
|
116
|
+
hot.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo');
|
|
125
117
|
}
|
|
126
118
|
}
|
|
127
119
|
exports.RemoveRowAction = RemoveRowAction;
|
|
@@ -26,7 +26,7 @@ export class RemoveRowAction extends BaseAction {
|
|
|
26
26
|
} = _ref;
|
|
27
27
|
super('remove_row');
|
|
28
28
|
/**
|
|
29
|
-
* @param {number} index The
|
|
29
|
+
* @param {number} index The visual row index.
|
|
30
30
|
*/
|
|
31
31
|
_defineProperty(this, "index", void 0);
|
|
32
32
|
/**
|
|
@@ -94,22 +94,14 @@ export class RemoveRowAction extends BaseAction {
|
|
|
94
94
|
changes.push([this.index + rowIndexDelta, isNaN(columnIndex) ? columnProp : columnIndex, dataRow[columnProp]]);
|
|
95
95
|
});
|
|
96
96
|
});
|
|
97
|
-
|
|
98
|
-
// The indexes sequence have to be applied twice.
|
|
99
|
-
// * First for proper index translation. The alter method accepts a visual index
|
|
100
|
-
// and we are able to retrieve the correct index indicating where to add a new row based
|
|
101
|
-
// only on the previous order state of the rows;
|
|
102
|
-
// * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
|
|
103
|
-
// the same as it was in the previous state;
|
|
104
|
-
hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
|
|
105
|
-
hot.alter('insert_row_above', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.undo');
|
|
106
|
-
hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
|
|
97
|
+
hot.alter('insert_row_above', this.index, this.data.length, 'UndoRedo.undo');
|
|
107
98
|
this.removedCellMetas.forEach(_ref2 => {
|
|
108
99
|
let [rowIndex, columnIndex, cellMeta] = _ref2;
|
|
109
100
|
hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
|
|
110
101
|
});
|
|
111
102
|
hot.addHookOnce('afterViewRender', undoneCallback);
|
|
112
103
|
hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
|
|
104
|
+
hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
|
|
113
105
|
}
|
|
114
106
|
|
|
115
107
|
/**
|
|
@@ -118,6 +110,6 @@ export class RemoveRowAction extends BaseAction {
|
|
|
118
110
|
*/
|
|
119
111
|
redo(hot, redoneCallback) {
|
|
120
112
|
hot.addHookOnce('afterRemoveRow', redoneCallback);
|
|
121
|
-
hot.alter('remove_row',
|
|
113
|
+
hot.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo');
|
|
122
114
|
}
|
|
123
115
|
}
|
package/selection/selection.js
CHANGED
|
@@ -1192,9 +1192,7 @@ class Selection {
|
|
|
1192
1192
|
col: (0, _number.clamp)(to.col, 0, countColumns - 1)
|
|
1193
1193
|
});
|
|
1194
1194
|
this.selectedRange.ranges.push(range);
|
|
1195
|
-
|
|
1196
|
-
this.highlight.getFocus().add(highlight).commit().syncWith(range);
|
|
1197
|
-
}
|
|
1195
|
+
this.highlight.getFocus().add(highlight).commit().syncWith(range);
|
|
1198
1196
|
this.applyAndCommit(range);
|
|
1199
1197
|
}
|
|
1200
1198
|
|
package/selection/selection.mjs
CHANGED
|
@@ -1186,9 +1186,7 @@ class Selection {
|
|
|
1186
1186
|
col: clamp(to.col, 0, countColumns - 1)
|
|
1187
1187
|
});
|
|
1188
1188
|
this.selectedRange.ranges.push(range);
|
|
1189
|
-
|
|
1190
|
-
this.highlight.getFocus().add(highlight).commit().syncWith(range);
|
|
1191
|
-
}
|
|
1189
|
+
this.highlight.getFocus().add(highlight).commit().syncWith(range);
|
|
1192
1190
|
this.applyAndCommit(range);
|
|
1193
1191
|
}
|
|
1194
1192
|
|
package/styles/handsontable.css
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date:
|
|
28
|
+
* Version: 0.0.0-next-ff10728-20250410
|
|
29
|
+
* Release date: 20/02/2025 (built at 10/04/2025 06:43:56)
|
|
30
30
|
*/
|
|
31
31
|
.ht-wrapper:not([class*=ht-theme]) {
|
|
32
32
|
--ht-gap-size: 4px;
|
|
@@ -85,15 +85,13 @@
|
|
|
85
85
|
.handsontable.htGhostTable table thead th {
|
|
86
86
|
border-bottom-width: 0;
|
|
87
87
|
}
|
|
88
|
-
.handsontable.htGhostTable table tbody tr
|
|
89
|
-
.handsontable.htGhostTable table tbody tr
|
|
88
|
+
.handsontable.htGhostTable table tbody tr td,
|
|
89
|
+
.handsontable.htGhostTable table tbody tr th {
|
|
90
90
|
border-top-width: 0;
|
|
91
|
-
height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);
|
|
92
91
|
}
|
|
93
|
-
.handsontable.htGhostTable table
|
|
94
|
-
.handsontable.htGhostTable table
|
|
95
|
-
|
|
96
|
-
height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 2px);
|
|
92
|
+
.handsontable.htGhostTable table tbody tr:first-of-type th,
|
|
93
|
+
.handsontable.htGhostTable table tbody tr:first-of-type td {
|
|
94
|
+
height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);
|
|
97
95
|
}
|
|
98
96
|
.handsontable.htHasScrollX .ht_master .wtHolder, .handsontable.htHasScrollY .ht_master .wtHolder {
|
|
99
97
|
background-color: var(--ht-background-color);
|
|
@@ -1787,6 +1785,9 @@
|
|
|
1787
1785
|
.handsontable.htDropdownMenu table tbody tr td .htUIButton input, .handsontable.htContextMenu table tbody tr td .htUIButton input, .handsontable.htFiltersConditionsMenu table tbody tr td .htUIButton input {
|
|
1788
1786
|
width: 100%;
|
|
1789
1787
|
}
|
|
1788
|
+
.handsontable.htContextMenuSub_Alignment, .handsontable.htDropdownMenuSub_Alignment {
|
|
1789
|
+
margin-top: calc(var(--ht-menu-vertical-padding) * -1);
|
|
1790
|
+
}
|
|
1790
1791
|
.handsontable .htUIClearAll a,
|
|
1791
1792
|
.handsontable .htUISelectAll a {
|
|
1792
1793
|
padding: var(--ht-gap-size);
|
|
@@ -1908,7 +1909,7 @@
|
|
|
1908
1909
|
outline: 1px solid var(--ht-link-hover-color);
|
|
1909
1910
|
}
|
|
1910
1911
|
.handsontable .htUIMultipleSelect .ht_master .wtHolder {
|
|
1911
|
-
overflow: auto;
|
|
1912
|
+
overflow-y: auto;
|
|
1912
1913
|
}
|
|
1913
1914
|
.handsontable .htUIMultipleSelect .ht_master .wtHolder .wtHider,
|
|
1914
1915
|
.handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore,
|
|
@@ -1961,20 +1962,20 @@
|
|
|
1961
1962
|
background-color: var(--ht-comments-textarea-focus-background-color, #ffffff);
|
|
1962
1963
|
}
|
|
1963
1964
|
|
|
1964
|
-
.handsontable .columnSorting
|
|
1965
|
+
.handsontable .columnSorting {
|
|
1965
1966
|
position: relative;
|
|
1966
1967
|
}
|
|
1967
|
-
.handsontable .columnSorting
|
|
1968
|
+
.handsontable .columnSorting.sortAction {
|
|
1968
1969
|
padding-inline-start: calc(var(--ht-icon-size, 16px) + 2px);
|
|
1969
1970
|
padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);
|
|
1970
1971
|
min-width: calc(var(--ht-icon-size, 16px) + 8px);
|
|
1971
1972
|
max-width: calc(100% - var(--ht-icon-size, 16px) * 2 - 4px);
|
|
1972
1973
|
}
|
|
1973
|
-
.handsontable .columnSorting
|
|
1974
|
+
.handsontable .columnSorting.sortAction:hover {
|
|
1974
1975
|
text-decoration: none;
|
|
1975
1976
|
cursor: pointer;
|
|
1976
1977
|
}
|
|
1977
|
-
.handsontable .columnSorting
|
|
1978
|
+
.handsontable .columnSorting.sortAction::before {
|
|
1978
1979
|
content: "";
|
|
1979
1980
|
display: block;
|
|
1980
1981
|
width: var(--ht-icon-size, 16px);
|