handsontable 0.0.0-next-9b837c3-20250221 → 0.0.0-next-326182b-20250225
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/selection/border/border.js +1 -1
- package/3rdparty/walkontable/src/selection/border/border.mjs +2 -2
- package/3rdparty/walkontable/src/selection/scanner.js +1 -1
- package/3rdparty/walkontable/src/selection/scanner.mjs +2 -2
- package/3rdparty/walkontable/src/viewport.js +28 -2
- package/3rdparty/walkontable/src/viewport.mjs +28 -2
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +63 -19
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +10 -10
- package/dist/handsontable.js +63 -19
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +9 -9
- package/focusManager.js +1 -1
- package/focusManager.mjs +2 -2
- package/helpers/dom/element.d.ts +1 -0
- package/helpers/dom/element.js +13 -0
- package/helpers/dom/element.mjs +12 -0
- package/helpers/dom/event.js +2 -1
- package/helpers/dom/event.mjs +2 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
- package/plugins/copyPaste/copyPaste.js +3 -3
- package/plugins/copyPaste/copyPaste.mjs +4 -4
- package/plugins/mergeCells/mergeCells.js +7 -3
- package/plugins/mergeCells/mergeCells.mjs +7 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +2 -2
- package/styles/handsontable.css +10 -2
- 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/focusManager.js
CHANGED
|
@@ -183,7 +183,7 @@ class FocusManager {
|
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
185
|
let elementToBeFocused = _classPrivateFieldGet(_hot, this).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
|
|
186
|
-
if (!(
|
|
186
|
+
if (!(0, _element.isHTMLElement)(elementToBeFocused)) {
|
|
187
187
|
elementToBeFocused = element;
|
|
188
188
|
}
|
|
189
189
|
if (elementToBeFocused && !((_classPrivateFieldGet4 = _classPrivateFieldGet(_hot, this).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
|
package/focusManager.mjs
CHANGED
|
@@ -6,7 +6,7 @@ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
|
|
6
6
|
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
|
7
7
|
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
8
8
|
import { warn } from "./helpers/console.mjs";
|
|
9
|
-
import { isOutsideInput } from "./helpers/dom/element.mjs";
|
|
9
|
+
import { isHTMLElement, isOutsideInput } from "./helpers/dom/element.mjs";
|
|
10
10
|
import { debounce } from "./helpers/function.mjs";
|
|
11
11
|
/**
|
|
12
12
|
* Possible focus modes.
|
|
@@ -180,7 +180,7 @@ export class FocusManager {
|
|
|
180
180
|
return;
|
|
181
181
|
}
|
|
182
182
|
let elementToBeFocused = _classPrivateFieldGet(_hot, this).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
|
|
183
|
-
if (!(elementToBeFocused
|
|
183
|
+
if (!isHTMLElement(elementToBeFocused)) {
|
|
184
184
|
elementToBeFocused = element;
|
|
185
185
|
}
|
|
186
186
|
if (elementToBeFocused && !((_classPrivateFieldGet4 = _classPrivateFieldGet(_hot, this).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
|
package/helpers/dom/element.d.ts
CHANGED
|
@@ -45,4 +45,5 @@ export function isInput(element: HTMLElement): boolean;
|
|
|
45
45
|
export function isOutsideInput(element: HTMLElement): boolean;
|
|
46
46
|
export function selectElementIfAllowed(element: HTMLElement): void;
|
|
47
47
|
export function isDetached(element: HTMLElement): boolean;
|
|
48
|
+
export function isHTMLElement(element: any): boolean;
|
|
48
49
|
export const HTML_CHARACTERS: RegExp;
|
package/helpers/dom/element.js
CHANGED
|
@@ -36,6 +36,7 @@ exports.innerHeight = innerHeight;
|
|
|
36
36
|
exports.innerWidth = innerWidth;
|
|
37
37
|
exports.isChildOf = isChildOf;
|
|
38
38
|
exports.isDetached = isDetached;
|
|
39
|
+
exports.isHTMLElement = isHTMLElement;
|
|
39
40
|
exports.isInput = isInput;
|
|
40
41
|
exports.isOutsideInput = isOutsideInput;
|
|
41
42
|
exports.isThisHotChild = isThisHotChild;
|
|
@@ -1178,4 +1179,16 @@ function runWithSelectedContendEditableElement(element, callback) {
|
|
|
1178
1179
|
makeElementContentEditableAndSelectItsContent(element, invisibleSelection);
|
|
1179
1180
|
callback();
|
|
1180
1181
|
removeContentEditableFromElementAndDeselect(element, invisibleSelection);
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* Check if the element is HTMLElement.
|
|
1186
|
+
*
|
|
1187
|
+
* @param {*} element Element to check.
|
|
1188
|
+
* @returns {boolean} `true` if the element is HTMLElement.
|
|
1189
|
+
*/
|
|
1190
|
+
function isHTMLElement(element) {
|
|
1191
|
+
var _element$ownerDocumen;
|
|
1192
|
+
const OwnElement = element === null || element === void 0 || (_element$ownerDocumen = element.ownerDocument) === null || _element$ownerDocumen === void 0 ? void 0 : _element$ownerDocumen.defaultView.Element;
|
|
1193
|
+
return !!(OwnElement && OwnElement !== null && element instanceof OwnElement);
|
|
1181
1194
|
}
|
package/helpers/dom/element.mjs
CHANGED
|
@@ -1118,4 +1118,16 @@ export function runWithSelectedContendEditableElement(element, callback) {
|
|
|
1118
1118
|
makeElementContentEditableAndSelectItsContent(element, invisibleSelection);
|
|
1119
1119
|
callback();
|
|
1120
1120
|
removeContentEditableFromElementAndDeselect(element, invisibleSelection);
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
/**
|
|
1124
|
+
* Check if the element is HTMLElement.
|
|
1125
|
+
*
|
|
1126
|
+
* @param {*} element Element to check.
|
|
1127
|
+
* @returns {boolean} `true` if the element is HTMLElement.
|
|
1128
|
+
*/
|
|
1129
|
+
export function isHTMLElement(element) {
|
|
1130
|
+
var _element$ownerDocumen;
|
|
1131
|
+
const OwnElement = element === null || element === void 0 || (_element$ownerDocumen = element.ownerDocument) === null || _element$ownerDocumen === void 0 ? void 0 : _element$ownerDocumen.defaultView.Element;
|
|
1132
|
+
return !!(OwnElement && OwnElement !== null && element instanceof OwnElement);
|
|
1121
1133
|
}
|
package/helpers/dom/event.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.isRightClick = isRightClick;
|
|
|
7
7
|
exports.isTouchEvent = isTouchEvent;
|
|
8
8
|
exports.offsetRelativeTo = offsetRelativeTo;
|
|
9
9
|
exports.stopImmediatePropagation = stopImmediatePropagation;
|
|
10
|
+
var _element = require("./element");
|
|
10
11
|
/**
|
|
11
12
|
* Prevent other listeners of the same event from being called.
|
|
12
13
|
*
|
|
@@ -70,7 +71,7 @@ function offsetRelativeTo(event, untilElement) {
|
|
|
70
71
|
y: event.offsetY
|
|
71
72
|
};
|
|
72
73
|
let element = event.target;
|
|
73
|
-
if (!(
|
|
74
|
+
if (!(0, _element.isHTMLElement)(untilElement) || element !== untilElement && element.contains(untilElement)) {
|
|
74
75
|
return offset;
|
|
75
76
|
}
|
|
76
77
|
while (element !== untilElement) {
|
package/helpers/dom/event.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isHTMLElement } from "./element.mjs";
|
|
1
2
|
/**
|
|
2
3
|
* Prevent other listeners of the same event from being called.
|
|
3
4
|
*
|
|
@@ -61,7 +62,7 @@ export function offsetRelativeTo(event, untilElement) {
|
|
|
61
62
|
y: event.offsetY
|
|
62
63
|
};
|
|
63
64
|
let element = event.target;
|
|
64
|
-
if (!(untilElement
|
|
65
|
+
if (!isHTMLElement(untilElement) || element !== untilElement && element.contains(untilElement)) {
|
|
65
66
|
return offset;
|
|
66
67
|
}
|
|
67
68
|
while (element !== untilElement) {
|
package/helpers/mixed.js
CHANGED
|
@@ -134,7 +134,7 @@ const domMessages = {
|
|
|
134
134
|
function _injectProductInfo(key, element) {
|
|
135
135
|
const hasValidType = !isEmpty(key);
|
|
136
136
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
137
|
-
const hotVersion = "0.0.0-next-
|
|
137
|
+
const hotVersion = "0.0.0-next-326182b-20250225";
|
|
138
138
|
let keyValidityDate;
|
|
139
139
|
let consoleMessageState = 'invalid';
|
|
140
140
|
let domMessageState = 'invalid';
|
package/helpers/mixed.mjs
CHANGED
|
@@ -124,7 +124,7 @@ const domMessages = {
|
|
|
124
124
|
export function _injectProductInfo(key, element) {
|
|
125
125
|
const hasValidType = !isEmpty(key);
|
|
126
126
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
127
|
-
const hotVersion = "0.0.0-next-
|
|
127
|
+
const hotVersion = "0.0.0-next-326182b-20250225";
|
|
128
128
|
let keyValidityDate;
|
|
129
129
|
let consoleMessageState = 'invalid';
|
|
130
130
|
let domMessageState = 'invalid';
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "https://github.com/handsontable/handsontable/issues"
|
|
11
11
|
},
|
|
12
12
|
"author": "Handsoncode <hello@handsontable.com>",
|
|
13
|
-
"version": "0.0.0-next-
|
|
13
|
+
"version": "0.0.0-next-326182b-20250225",
|
|
14
14
|
"main": "index",
|
|
15
15
|
"module": "index.mjs",
|
|
16
16
|
"jsnext:main": "index.mjs",
|
|
@@ -567,7 +567,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
567
567
|
const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
|
|
568
568
|
const selectedCell = (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight;
|
|
569
569
|
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
570
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || event.target
|
|
570
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
571
571
|
return;
|
|
572
572
|
}
|
|
573
573
|
event.preventDefault();
|
|
@@ -602,7 +602,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
602
602
|
const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
|
|
603
603
|
const selectedCell = (_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight;
|
|
604
604
|
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
605
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || event.target
|
|
605
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
606
606
|
return;
|
|
607
607
|
}
|
|
608
608
|
event.preventDefault();
|
|
@@ -636,7 +636,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
|
636
636
|
const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
|
|
637
637
|
const selectedCell = (_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight;
|
|
638
638
|
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
639
|
-
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || event.target
|
|
639
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
640
640
|
return;
|
|
641
641
|
}
|
|
642
642
|
event.preventDefault();
|
|
@@ -17,7 +17,7 @@ import { Hooks } from "../../core/hooks/index.mjs";
|
|
|
17
17
|
import { stringify, parse } from "../../3rdparty/SheetClip/index.mjs";
|
|
18
18
|
import { arrayEach } from "../../helpers/array.mjs";
|
|
19
19
|
import { sanitize } from "../../helpers/string.mjs";
|
|
20
|
-
import { removeContentEditableFromElementAndDeselect, runWithSelectedContendEditableElement, makeElementContentEditableAndSelectItsContent } from "../../helpers/dom/element.mjs";
|
|
20
|
+
import { removeContentEditableFromElementAndDeselect, runWithSelectedContendEditableElement, makeElementContentEditableAndSelectItsContent, isHTMLElement } from "../../helpers/dom/element.mjs";
|
|
21
21
|
import { isSafari } from "../../helpers/browser.mjs";
|
|
22
22
|
import copyItem from "./contextMenuItem/copy.mjs";
|
|
23
23
|
import copyColumnHeadersOnlyItem from "./contextMenuItem/copyColumnHeadersOnly.mjs";
|
|
@@ -563,7 +563,7 @@ export class CopyPaste extends BasePlugin {
|
|
|
563
563
|
const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
|
|
564
564
|
const selectedCell = (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight;
|
|
565
565
|
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
566
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || event.target
|
|
566
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || isHTMLElement(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
567
567
|
return;
|
|
568
568
|
}
|
|
569
569
|
event.preventDefault();
|
|
@@ -598,7 +598,7 @@ export class CopyPaste extends BasePlugin {
|
|
|
598
598
|
const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
|
|
599
599
|
const selectedCell = (_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight;
|
|
600
600
|
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
601
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || event.target
|
|
601
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || isHTMLElement(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
602
602
|
return;
|
|
603
603
|
}
|
|
604
604
|
event.preventDefault();
|
|
@@ -632,7 +632,7 @@ export class CopyPaste extends BasePlugin {
|
|
|
632
632
|
const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
|
|
633
633
|
const selectedCell = (_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight;
|
|
634
634
|
const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
|
|
635
|
-
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || event.target
|
|
635
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || isHTMLElement(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
|
|
636
636
|
return;
|
|
637
637
|
}
|
|
638
638
|
event.preventDefault();
|
|
@@ -1491,12 +1491,16 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
|
1491
1491
|
* @returns {number}
|
|
1492
1492
|
*/
|
|
1493
1493
|
function _sumCellsHeights(row, rowspan) {
|
|
1494
|
-
const
|
|
1495
|
-
|
|
1494
|
+
const {
|
|
1495
|
+
view,
|
|
1496
|
+
rowIndexMapper
|
|
1497
|
+
} = this.hot;
|
|
1498
|
+
const stylesHandler = view.getStylesHandler();
|
|
1499
|
+
const defaultHeight = view.getDefaultRowHeight();
|
|
1496
1500
|
const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
|
|
1497
1501
|
let height = 0;
|
|
1498
1502
|
for (let i = row; i < row + rowspan; i++) {
|
|
1499
|
-
if (!
|
|
1503
|
+
if (!rowIndexMapper.isHidden(i)) {
|
|
1500
1504
|
var _autoRowSizePlugin$ge;
|
|
1501
1505
|
height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
|
|
1502
1506
|
if (i === 0 && !stylesHandler.isClassicTheme()) {
|
|
@@ -1486,12 +1486,16 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
|
1486
1486
|
* @returns {number}
|
|
1487
1487
|
*/
|
|
1488
1488
|
function _sumCellsHeights(row, rowspan) {
|
|
1489
|
-
const
|
|
1490
|
-
|
|
1489
|
+
const {
|
|
1490
|
+
view,
|
|
1491
|
+
rowIndexMapper
|
|
1492
|
+
} = this.hot;
|
|
1493
|
+
const stylesHandler = view.getStylesHandler();
|
|
1494
|
+
const defaultHeight = view.getDefaultRowHeight();
|
|
1491
1495
|
const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
|
|
1492
1496
|
let height = 0;
|
|
1493
1497
|
for (let i = row; i < row + rowspan; i++) {
|
|
1494
|
-
if (!
|
|
1498
|
+
if (!rowIndexMapper.isHidden(i)) {
|
|
1495
1499
|
var _autoRowSizePlugin$ge;
|
|
1496
1500
|
height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
|
|
1497
1501
|
if (i === 0 && !stylesHandler.isClassicTheme()) {
|
|
@@ -309,7 +309,7 @@ function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellProperties
|
|
|
309
309
|
continue;
|
|
310
310
|
}
|
|
311
311
|
const cell = hotInstance.getCell(visualRow, visualColumn);
|
|
312
|
-
if (
|
|
312
|
+
if ((0, _element.isHTMLElement)(cell)) {
|
|
313
313
|
const checkboxes = cell.querySelectorAll('input[type=checkbox]');
|
|
314
314
|
if (checkboxes.length > 0) {
|
|
315
315
|
return true;
|
|
@@ -4,7 +4,7 @@ import "core-js/modules/esnext.iterator.every.js";
|
|
|
4
4
|
import "core-js/modules/esnext.iterator.map.js";
|
|
5
5
|
import { baseRenderer } from "../baseRenderer/index.mjs";
|
|
6
6
|
import EventManager from "../../eventManager.mjs";
|
|
7
|
-
import { empty, addClass, setAttribute } from "../../helpers/dom/element.mjs";
|
|
7
|
+
import { empty, addClass, setAttribute, isHTMLElement } from "../../helpers/dom/element.mjs";
|
|
8
8
|
import { isEmpty, stringify } from "../../helpers/mixed.mjs";
|
|
9
9
|
import { EDITOR_EDIT_GROUP as SHORTCUTS_GROUP_EDITOR } from "../../shortcutContexts/index.mjs";
|
|
10
10
|
import { Hooks } from "../../core/hooks/index.mjs";
|
|
@@ -304,7 +304,7 @@ export function checkboxRenderer(hotInstance, TD, row, col, prop, value, cellPro
|
|
|
304
304
|
continue;
|
|
305
305
|
}
|
|
306
306
|
const cell = hotInstance.getCell(visualRow, visualColumn);
|
|
307
|
-
if (cell
|
|
307
|
+
if (isHTMLElement(cell)) {
|
|
308
308
|
const checkboxes = cell.querySelectorAll('input[type=checkbox]');
|
|
309
309
|
if (checkboxes.length > 0) {
|
|
310
310
|
return true;
|
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: 20/02/2025 (built at
|
|
28
|
+
* Version: 0.0.0-next-326182b-20250225
|
|
29
|
+
* Release date: 20/02/2025 (built at 25/02/2025 10:16:04)
|
|
30
30
|
*/
|
|
31
31
|
.ht-wrapper:not([class*=ht-theme]) {
|
|
32
32
|
--ht-gap-size: 4px;
|
|
@@ -89,6 +89,9 @@
|
|
|
89
89
|
.handsontable.htGhostTable table tbody tr th {
|
|
90
90
|
border-top-width: 0;
|
|
91
91
|
}
|
|
92
|
+
.handsontable.htGhostTable table tbody:first-of-type td {
|
|
93
|
+
height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);
|
|
94
|
+
}
|
|
92
95
|
.handsontable.htHasScrollX .ht_master .wtHolder, .handsontable.htHasScrollY .ht_master .wtHolder {
|
|
93
96
|
background-color: var(--ht-background-color);
|
|
94
97
|
border-radius: var(--ht-wrapper-border-radius, 0);
|
|
@@ -137,6 +140,9 @@
|
|
|
137
140
|
.handsontable td.invisibleSelection::selection {
|
|
138
141
|
background: transparent;
|
|
139
142
|
}
|
|
143
|
+
.handsontable tr:first-of-type td {
|
|
144
|
+
height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 2px);
|
|
145
|
+
}
|
|
140
146
|
.handsontable td:first-of-type {
|
|
141
147
|
border-inline-start-width: 1px;
|
|
142
148
|
}
|
|
@@ -910,6 +916,7 @@
|
|
|
910
916
|
background-color: var(--ht-cell-editor-background-color, #ffffff);
|
|
911
917
|
box-shadow: inset 0 0 0 var(--ht-cell-editor-border-width, 2px) var(--ht-cell-editor-border-color, #1a42e8), 0 0 var(--ht-cell-editor-shadow-blur-radius, 0) 0 var(--ht-cell-editor-shadow-color, transparent);
|
|
912
918
|
border: none;
|
|
919
|
+
border-radius: 0;
|
|
913
920
|
-webkit-appearance: none !important;
|
|
914
921
|
box-sizing: border-box;
|
|
915
922
|
/* Miscellaneous */
|
|
@@ -941,6 +948,7 @@
|
|
|
941
948
|
line-height: inherit !important;
|
|
942
949
|
box-shadow: inset 0 0 0 var(--ht-cell-editor-border-width, 2px) var(--ht-cell-editor-border-color, #1a42e8), 0 0 var(--ht-cell-editor-shadow-blur-radius, 0) 0 var(--ht-cell-editor-shadow-color, transparent);
|
|
943
950
|
border: none;
|
|
951
|
+
border-radius: 0;
|
|
944
952
|
box-sizing: border-box;
|
|
945
953
|
-webkit-appearance: none !important;
|
|
946
954
|
}
|