handsontable 0.0.0-next-e2a5d5f-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.

Files changed (36) hide show
  1. package/3rdparty/walkontable/src/selection/border/border.js +1 -1
  2. package/3rdparty/walkontable/src/selection/border/border.mjs +2 -2
  3. package/3rdparty/walkontable/src/selection/scanner.js +1 -1
  4. package/3rdparty/walkontable/src/selection/scanner.mjs +2 -2
  5. package/base.js +2 -2
  6. package/base.mjs +2 -2
  7. package/dist/handsontable.css +2 -2
  8. package/dist/handsontable.full.css +2 -2
  9. package/dist/handsontable.full.js +35 -17
  10. package/dist/handsontable.full.min.css +2 -2
  11. package/dist/handsontable.full.min.js +10 -10
  12. package/dist/handsontable.js +35 -17
  13. package/dist/handsontable.min.css +2 -2
  14. package/dist/handsontable.min.js +8 -8
  15. package/focusManager.js +1 -1
  16. package/focusManager.mjs +2 -2
  17. package/helpers/dom/element.d.ts +1 -0
  18. package/helpers/dom/element.js +13 -0
  19. package/helpers/dom/element.mjs +12 -0
  20. package/helpers/dom/event.js +2 -1
  21. package/helpers/dom/event.mjs +2 -1
  22. package/helpers/mixed.js +1 -1
  23. package/helpers/mixed.mjs +1 -1
  24. package/package.json +1 -1
  25. package/plugins/copyPaste/copyPaste.js +3 -3
  26. package/plugins/copyPaste/copyPaste.mjs +4 -4
  27. package/plugins/mergeCells/mergeCells.js +7 -3
  28. package/plugins/mergeCells/mergeCells.mjs +7 -3
  29. package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
  30. package/renderers/checkboxRenderer/checkboxRenderer.mjs +2 -2
  31. package/styles/handsontable.css +10 -2
  32. package/styles/handsontable.min.css +3 -3
  33. package/styles/ht-theme-horizon.css +2 -2
  34. package/styles/ht-theme-horizon.min.css +2 -2
  35. package/styles/ht-theme-main.css +2 -2
  36. 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 (!(elementToBeFocused instanceof HTMLElement)) {
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 instanceof HTMLElement)) {
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())) {
@@ -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;
@@ -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
  }
@@ -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
  }
@@ -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 (!(untilElement instanceof HTMLElement) || element !== untilElement && element.contains(untilElement)) {
74
+ if (!(0, _element.isHTMLElement)(untilElement) || element !== untilElement && element.contains(untilElement)) {
74
75
  return offset;
75
76
  }
76
77
  while (element !== untilElement) {
@@ -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 instanceof HTMLElement) || element !== untilElement && element.contains(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-e2a5d5f-20250221";
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-e2a5d5f-20250221";
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-e2a5d5f-20250221",
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 instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== 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 instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== 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 instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== 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 instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== 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 instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== 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 instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== 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 stylesHandler = this.hot.view.getStylesHandler();
1495
- const defaultHeight = this.hot.view.getDefaultRowHeight();
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 (!this.hot.rowIndexMapper.isHidden(i)) {
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 stylesHandler = this.hot.view.getStylesHandler();
1490
- const defaultHeight = this.hot.view.getDefaultRowHeight();
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 (!this.hot.rowIndexMapper.isHidden(i)) {
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 (cell instanceof HTMLElement) {
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 instanceof HTMLElement) {
307
+ if (isHTMLElement(cell)) {
308
308
  const checkboxes = cell.querySelectorAll('input[type=checkbox]');
309
309
  if (checkboxes.length > 0) {
310
310
  return true;
@@ -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-e2a5d5f-20250221
29
- * Release date: 20/02/2025 (built at 21/02/2025 11:46:23)
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
  }