handsontable 15.3.0 → 16.0.0-next-f486b48-20250702

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.
Files changed (277) hide show
  1. package/3rdparty/walkontable/src/core/_base.js +0 -3
  2. package/3rdparty/walkontable/src/core/_base.mjs +0 -3
  3. package/3rdparty/walkontable/src/core/clone.js +0 -1
  4. package/3rdparty/walkontable/src/core/clone.mjs +0 -1
  5. package/3rdparty/walkontable/src/core/core.js +0 -2
  6. package/3rdparty/walkontable/src/core/core.mjs +0 -2
  7. package/3rdparty/walkontable/src/facade/core.js +0 -3
  8. package/3rdparty/walkontable/src/facade/core.mjs +0 -3
  9. package/3rdparty/walkontable/src/index.js +1 -2
  10. package/3rdparty/walkontable/src/overlay/_base.js +1 -3
  11. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -3
  12. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  13. package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
  14. package/3rdparty/walkontable/src/overlay/top.js +1 -1
  15. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  16. package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
  17. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  18. package/3rdparty/walkontable/src/selection/border/border.js +17 -11
  19. package/3rdparty/walkontable/src/selection/border/border.mjs +17 -11
  20. package/3rdparty/walkontable/src/selection/border/utils.js +1 -1
  21. package/3rdparty/walkontable/src/selection/border/utils.mjs +1 -1
  22. package/3rdparty/walkontable/src/settings.js +3 -1
  23. package/3rdparty/walkontable/src/settings.mjs +3 -1
  24. package/3rdparty/walkontable/src/table.js +9 -6
  25. package/3rdparty/walkontable/src/table.mjs +9 -6
  26. package/3rdparty/walkontable/src/types.js +0 -1
  27. package/3rdparty/walkontable/src/types.mjs +0 -1
  28. package/3rdparty/walkontable/src/utils/column.js +1 -1
  29. package/3rdparty/walkontable/src/utils/column.mjs +1 -1
  30. package/3rdparty/walkontable/src/viewport.js +1 -1
  31. package/3rdparty/walkontable/src/viewport.mjs +1 -1
  32. package/CHANGELOG.md +53 -31
  33. package/README.md +10 -4
  34. package/base.js +2 -2
  35. package/base.mjs +2 -2
  36. package/cellTypes/registry.js +2 -3
  37. package/cellTypes/registry.mjs +1 -1
  38. package/core/coordsMapper/rangeToRenderableMapper.js +124 -0
  39. package/core/coordsMapper/rangeToRenderableMapper.mjs +120 -0
  40. package/core/focusCatcher/focusDetector.js +2 -2
  41. package/core/focusCatcher/focusDetector.mjs +2 -2
  42. package/core/hooks/constants.js +259 -1
  43. package/core/hooks/constants.mjs +259 -1
  44. package/core.d.ts +2 -0
  45. package/core.js +202 -58
  46. package/core.mjs +202 -58
  47. package/dataMap/dataMap.js +16 -30
  48. package/dataMap/dataMap.mjs +16 -30
  49. package/dataMap/metaManager/metaSchema.js +58 -0
  50. package/dataMap/metaManager/metaSchema.mjs +58 -0
  51. package/dist/handsontable.css +30 -4
  52. package/dist/handsontable.full.css +30 -4
  53. package/dist/handsontable.full.js +6073 -4352
  54. package/dist/handsontable.full.min.css +3 -3
  55. package/dist/handsontable.full.min.js +206 -206
  56. package/dist/handsontable.js +5751 -4037
  57. package/dist/handsontable.min.css +3 -3
  58. package/dist/handsontable.min.js +41 -41
  59. package/dist/languages/all.min.js +1 -1
  60. package/dist/languages/ar-AR.min.js +1 -1
  61. package/dist/languages/cs-CZ.min.js +1 -1
  62. package/dist/languages/de-CH.min.js +1 -1
  63. package/dist/languages/de-DE.min.js +1 -1
  64. package/dist/languages/en-US.min.js +1 -1
  65. package/dist/languages/es-MX.min.js +1 -1
  66. package/dist/languages/fa-IR.min.js +1 -1
  67. package/dist/languages/fr-FR.min.js +1 -1
  68. package/dist/languages/hr-HR.min.js +1 -1
  69. package/dist/languages/it-IT.min.js +1 -1
  70. package/dist/languages/ja-JP.min.js +1 -1
  71. package/dist/languages/ko-KR.min.js +1 -1
  72. package/dist/languages/lv-LV.min.js +1 -1
  73. package/dist/languages/nb-NO.min.js +1 -1
  74. package/dist/languages/nl-NL.min.js +1 -1
  75. package/dist/languages/pl-PL.min.js +1 -1
  76. package/dist/languages/pt-BR.min.js +1 -1
  77. package/dist/languages/ru-RU.min.js +1 -1
  78. package/dist/languages/sr-SP.min.js +1 -1
  79. package/dist/languages/zh-CN.min.js +1 -1
  80. package/dist/languages/zh-TW.min.js +1 -1
  81. package/editorManager.js +5 -1
  82. package/editorManager.mjs +5 -1
  83. package/editors/autocompleteEditor/autocompleteEditor.d.ts +0 -12
  84. package/editors/autocompleteEditor/autocompleteEditor.js +42 -69
  85. package/editors/autocompleteEditor/autocompleteEditor.mjs +43 -70
  86. package/editors/baseEditor/baseEditor.js +1 -1
  87. package/editors/baseEditor/baseEditor.mjs +1 -1
  88. package/editors/dateEditor/dateEditor.js +2 -8
  89. package/editors/dateEditor/dateEditor.mjs +3 -9
  90. package/editors/handsontableEditor/handsontableEditor.d.ts +8 -0
  91. package/editors/handsontableEditor/handsontableEditor.js +173 -17
  92. package/editors/handsontableEditor/handsontableEditor.mjs +173 -17
  93. package/editors/passwordEditor/passwordEditor.js +2 -0
  94. package/editors/passwordEditor/passwordEditor.mjs +2 -0
  95. package/editors/registry.js +2 -3
  96. package/editors/registry.mjs +1 -1
  97. package/editors/textEditor/textEditor.js +2 -0
  98. package/editors/textEditor/textEditor.mjs +2 -0
  99. package/helpers/a11y.js +2 -0
  100. package/helpers/a11y.mjs +1 -0
  101. package/helpers/dom/element.d.ts +1 -0
  102. package/helpers/dom/element.js +26 -1
  103. package/helpers/dom/element.mjs +25 -1
  104. package/helpers/mixed.js +4 -4
  105. package/helpers/mixed.mjs +4 -4
  106. package/i18n/languages/ar-AR.js +1 -2
  107. package/i18n/languages/cs-CZ.js +1 -2
  108. package/i18n/languages/de-CH.js +1 -2
  109. package/i18n/languages/de-DE.js +1 -2
  110. package/i18n/languages/en-US.js +1 -2
  111. package/i18n/languages/es-MX.js +1 -2
  112. package/i18n/languages/fa-IR.js +1 -2
  113. package/i18n/languages/fr-FR.js +1 -2
  114. package/i18n/languages/hr-HR.js +1 -2
  115. package/i18n/languages/it-IT.js +1 -2
  116. package/i18n/languages/ja-JP.js +1 -2
  117. package/i18n/languages/ko-KR.js +1 -2
  118. package/i18n/languages/lv-LV.js +1 -2
  119. package/i18n/languages/nb-NO.js +1 -2
  120. package/i18n/languages/nl-NL.js +1 -2
  121. package/i18n/languages/pl-PL.js +1 -2
  122. package/i18n/languages/pt-BR.js +1 -2
  123. package/i18n/languages/ru-RU.js +1 -2
  124. package/i18n/languages/sr-SP.js +1 -2
  125. package/i18n/languages/zh-CN.js +1 -2
  126. package/i18n/languages/zh-TW.js +1 -2
  127. package/i18n/phraseFormatters/index.js +2 -2
  128. package/i18n/phraseFormatters/index.mjs +1 -1
  129. package/i18n/registry.js +3 -4
  130. package/i18n/registry.mjs +1 -1
  131. package/index.js +1 -2
  132. package/package.json +10 -4
  133. package/plugins/autoColumnSize/autoColumnSize.js +47 -0
  134. package/plugins/autoColumnSize/autoColumnSize.mjs +47 -0
  135. package/plugins/autoRowSize/autoRowSize.js +45 -0
  136. package/plugins/autoRowSize/autoRowSize.mjs +45 -0
  137. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +13 -0
  138. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +13 -0
  139. package/plugins/collapsibleColumns/collapsibleColumns.js +31 -0
  140. package/plugins/collapsibleColumns/collapsibleColumns.mjs +31 -0
  141. package/plugins/columnSorting/sortService/registry.js +3 -4
  142. package/plugins/columnSorting/sortService/registry.mjs +1 -1
  143. package/plugins/columnSummary/columnSummary.js +33 -0
  144. package/plugins/columnSummary/columnSummary.mjs +33 -0
  145. package/plugins/comments/commentEditor.js +8 -2
  146. package/plugins/comments/commentEditor.mjs +8 -2
  147. package/plugins/comments/comments.js +59 -15
  148. package/plugins/comments/comments.mjs +60 -16
  149. package/plugins/comments/contextMenuItem/addEditComment.js +1 -2
  150. package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -2
  151. package/plugins/comments/contextMenuItem/removeComment.js +1 -2
  152. package/plugins/contextMenu/contextMenu.js +1 -1
  153. package/plugins/contextMenu/contextMenu.mjs +1 -1
  154. package/plugins/contextMenu/menu/menu.js +12 -6
  155. package/plugins/contextMenu/menu/menu.mjs +13 -7
  156. package/plugins/contextMenu/predefinedItems/alignment.js +1 -2
  157. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -2
  158. package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -2
  159. package/plugins/contextMenu/predefinedItems/columnRight.js +1 -2
  160. package/plugins/contextMenu/predefinedItems/index.js +1 -2
  161. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -2
  162. package/plugins/contextMenu/predefinedItems/redo.js +1 -2
  163. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -2
  164. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -2
  165. package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -2
  166. package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -2
  167. package/plugins/contextMenu/predefinedItems/undo.js +1 -2
  168. package/plugins/copyPaste/contextMenuItem/cut.js +1 -2
  169. package/plugins/customBorders/contextMenuItem/bottom.js +1 -2
  170. package/plugins/customBorders/contextMenuItem/left.js +1 -2
  171. package/plugins/customBorders/contextMenuItem/noBorders.js +1 -2
  172. package/plugins/customBorders/contextMenuItem/right.js +1 -2
  173. package/plugins/customBorders/contextMenuItem/top.js +1 -2
  174. package/plugins/customBorders/customBorders.js +1 -2
  175. package/plugins/dropdownMenu/dropdownMenu.js +16 -1
  176. package/plugins/dropdownMenu/dropdownMenu.mjs +16 -1
  177. package/plugins/exportFile/exportFile.js +59 -2
  178. package/plugins/exportFile/exportFile.mjs +58 -0
  179. package/plugins/filters/component/actionBar.js +1 -2
  180. package/plugins/filters/component/condition.js +1 -2
  181. package/plugins/filters/component/value.js +1 -2
  182. package/plugins/filters/condition/beginsWith.js +1 -2
  183. package/plugins/filters/condition/between.js +1 -2
  184. package/plugins/filters/condition/contains.js +1 -2
  185. package/plugins/filters/condition/date/after.js +1 -2
  186. package/plugins/filters/condition/date/before.js +1 -2
  187. package/plugins/filters/condition/date/today.js +1 -2
  188. package/plugins/filters/condition/date/tomorrow.js +1 -2
  189. package/plugins/filters/condition/date/yesterday.js +1 -2
  190. package/plugins/filters/condition/empty.js +1 -2
  191. package/plugins/filters/condition/endsWith.js +1 -2
  192. package/plugins/filters/condition/equal.js +1 -2
  193. package/plugins/filters/condition/greaterThan.js +1 -2
  194. package/plugins/filters/condition/greaterThanOrEqual.js +1 -2
  195. package/plugins/filters/condition/lessThan.js +1 -2
  196. package/plugins/filters/condition/lessThanOrEqual.js +1 -2
  197. package/plugins/filters/condition/none.js +1 -2
  198. package/plugins/filters/condition/notBetween.js +1 -2
  199. package/plugins/filters/condition/notContains.js +1 -2
  200. package/plugins/filters/condition/notEmpty.js +1 -2
  201. package/plugins/filters/condition/notEqual.js +1 -2
  202. package/plugins/filters/filters.js +76 -3
  203. package/plugins/filters/filters.mjs +75 -1
  204. package/plugins/filters/logicalOperations/conjunction.js +1 -2
  205. package/plugins/filters/logicalOperations/disjunction.js +1 -2
  206. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -2
  207. package/plugins/filters/ui/_base.js +1 -2
  208. package/plugins/filters/ui/multipleSelect.js +1 -7
  209. package/plugins/filters/ui/multipleSelect.mjs +0 -5
  210. package/plugins/filters/ui/select.js +1 -2
  211. package/plugins/formulas/engine/register.js +3 -4
  212. package/plugins/formulas/engine/register.mjs +1 -1
  213. package/plugins/formulas/formulas.js +40 -41
  214. package/plugins/formulas/formulas.mjs +39 -40
  215. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -2
  216. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -2
  217. package/plugins/hiddenColumns/hiddenColumns.js +64 -0
  218. package/plugins/hiddenColumns/hiddenColumns.mjs +64 -0
  219. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -2
  220. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -2
  221. package/plugins/hiddenRows/hiddenRows.js +64 -0
  222. package/plugins/hiddenRows/hiddenRows.mjs +64 -0
  223. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -2
  224. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -2
  225. package/plugins/manualRowMove/manualRowMove.js +1 -1
  226. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  227. package/plugins/manualRowResize/manualRowResize.js +1 -1
  228. package/plugins/manualRowResize/manualRowResize.mjs +1 -1
  229. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -2
  230. package/plugins/mergeCells/mergeCells.js +56 -38
  231. package/plugins/mergeCells/mergeCells.mjs +56 -38
  232. package/plugins/mergeCells/utils.js +3 -4
  233. package/plugins/mergeCells/utils.mjs +3 -4
  234. package/plugins/nestedHeaders/nestedHeaders.js +37 -12
  235. package/plugins/nestedHeaders/nestedHeaders.mjs +37 -12
  236. package/plugins/nestedRows/nestedRows.js +12 -12
  237. package/plugins/nestedRows/nestedRows.mjs +12 -12
  238. package/plugins/nestedRows/ui/contextMenu.js +1 -2
  239. package/plugins/nestedRows/ui/headers.js +2 -3
  240. package/plugins/nestedRows/ui/headers.mjs +2 -3
  241. package/plugins/persistentState/persistentState.js +1 -1
  242. package/plugins/persistentState/persistentState.mjs +1 -1
  243. package/plugins/stretchColumns/calculator.js +3 -2
  244. package/plugins/stretchColumns/calculator.mjs +3 -2
  245. package/plugins/stretchColumns/stretchColumns.js +13 -0
  246. package/plugins/stretchColumns/stretchColumns.mjs +13 -0
  247. package/plugins/trimRows/trimRows.js +61 -0
  248. package/plugins/trimRows/trimRows.mjs +61 -0
  249. package/renderers/baseRenderer/baseRenderer.js +4 -0
  250. package/renderers/baseRenderer/baseRenderer.mjs +4 -0
  251. package/renderers/registry.js +2 -3
  252. package/renderers/registry.mjs +1 -1
  253. package/selection/mouseEventHandler.js +48 -13
  254. package/selection/mouseEventHandler.mjs +47 -13
  255. package/selection/range.js +73 -6
  256. package/selection/range.mjs +73 -6
  257. package/selection/selection.js +46 -32
  258. package/selection/selection.mjs +45 -30
  259. package/settings.d.ts +1 -0
  260. package/styles/handsontable.css +131 -55
  261. package/styles/handsontable.min.css +3 -3
  262. package/styles/ht-theme-horizon.css +296 -181
  263. package/styles/ht-theme-horizon.min.css +3 -3
  264. package/styles/ht-theme-main.css +314 -205
  265. package/styles/ht-theme-main.min.css +3 -3
  266. package/tableView.js +9 -20
  267. package/tableView.mjs +9 -20
  268. package/translations/indexMapper.js +9 -5
  269. package/translations/indexMapper.mjs +9 -5
  270. package/utils/paginator.js +13 -0
  271. package/utils/paginator.mjs +13 -0
  272. package/utils/staticRegister.js +24 -2
  273. package/utils/staticRegister.mjs +23 -2
  274. package/{3rdparty/walkontable/src/utils → utils}/stylesHandler.js +16 -30
  275. package/{3rdparty/walkontable/src/utils → utils}/stylesHandler.mjs +16 -30
  276. package/validators/registry.js +2 -3
  277. package/validators/registry.mjs +1 -1
@@ -25,16 +25,18 @@
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: 15.3.0
29
- * Release date: 29/04/2025 (built at 24/04/2025 10:59:02)
28
+ * Version: 16.0.0-next-f486b48-20250702
29
+ * Release date: 09/07/2025 (built at 02/07/2025 09:18:50)
30
30
  */
31
- .ht-wrapper:not([class*=ht-theme]) {
31
+ .ht-root-wrapper:not([class*=ht-theme]),
32
+ .ht-portal:not([class*=ht-theme]) {
32
33
  --ht-gap-size: 4px;
33
34
  --ht-checkbox-size: 16px;
34
35
  --ht-cell-horizontal-padding: 8px;
35
36
  --ht-cell-vertical-padding: 4px;
36
37
  --ht-font-size: 14px;
37
38
  --ht-line-height: 20px;
39
+ --ht-letter-spacing: 0;
38
40
  --ht-border-color: #222222;
39
41
  --ht-foreground-color: #222222;
40
42
  --ht-background-color: #ffffff;
@@ -52,22 +54,46 @@
52
54
  --ht-cell-selection-border-color: #1a42e8;
53
55
  }
54
56
 
57
+ .ht-root-wrapper .htFocusCatcher {
58
+ position: absolute;
59
+ width: 0;
60
+ height: 0;
61
+ margin: 0;
62
+ padding: 0;
63
+ border: 0;
64
+ opacity: 0;
65
+ z-index: -1;
66
+ }
67
+
55
68
  .handsontable {
56
69
  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Helvetica Neue, Arial, sans-serif;
57
70
  position: relative;
58
71
  font-size: var(--ht-font-size);
59
72
  line-height: var(--ht-line-height);
60
73
  font-weight: var(--ht-font-weight);
61
- letter-spacing: 0;
74
+ letter-spacing: var(--ht-letter-spacing);
62
75
  color: var(--ht-foreground-color);
63
76
  /* Miscellaneous */
64
77
  touch-action: manipulation;
65
78
  scrollbar-width: thin;
66
79
  scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);
67
80
  }
68
- .handsontable::-webkit-scrollbar-track {
81
+ .handsontable .wtHolder::-webkit-scrollbar {
82
+ width: 9px;
83
+ height: 9px;
84
+ }
85
+ .handsontable .wtHolder::-webkit-scrollbar-track {
86
+ background: var(--ht-scrollbar-track-color);
87
+ border-radius: var(--ht-scrollbar-border-radius);
88
+ }
89
+ .handsontable .wtHolder::-webkit-scrollbar-thumb {
90
+ background-color: var(--ht-scrollbar-thumb-color);
69
91
  border-radius: var(--ht-scrollbar-border-radius);
70
92
  }
93
+ .handsontable .wtHolder::-webkit-scrollbar-corner {
94
+ background: var(--ht-scrollbar-track-color);
95
+ border-end-end-radius: var(--ht-scrollbar-border-radius);
96
+ }
71
97
  .handsontable.ht-wrapper {
72
98
  border-radius: var(--ht-wrapper-border-radius, 0);
73
99
  }
@@ -304,15 +330,10 @@
304
330
  top: -99000px;
305
331
  visibility: hidden;
306
332
  }
307
- .handsontable .htFocusCatcher {
308
- position: absolute;
309
- width: 0;
310
- height: 0;
311
- margin: 0;
312
- padding: 0;
313
- border: 0;
314
- opacity: 0;
315
- z-index: -1;
333
+ .handsontable .htTextEllipsis {
334
+ text-overflow: ellipsis;
335
+ overflow: hidden;
336
+ white-space: nowrap;
316
337
  }
317
338
  .handsontable table,
318
339
  .handsontable tbody,
@@ -417,6 +438,11 @@
417
438
  left: -1px;
418
439
  }
419
440
 
441
+ .htScrollbarSafariTest::-webkit-scrollbar {
442
+ width: 9px;
443
+ height: 9px;
444
+ }
445
+
420
446
  .handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore tbody tr:first-child td:first-child {
421
447
  border-start-start-radius: var(--ht-wrapper-border-radius);
422
448
  }
@@ -703,6 +729,12 @@
703
729
  position: absolute;
704
730
  font-size: 0;
705
731
  }
732
+ .handsontable .wtBorder:nth-child(1), .handsontable .wtBorder:nth-child(3) {
733
+ z-index: 2;
734
+ }
735
+ .handsontable .wtBorder:nth-child(2), .handsontable .wtBorder:nth-child(4) {
736
+ z-index: 1;
737
+ }
706
738
  .handsontable .wtBorder.hidden {
707
739
  display: none !important;
708
740
  }
@@ -779,6 +811,7 @@
779
811
  vertical-align: middle;
780
812
  cursor: pointer;
781
813
  margin-top: -2px;
814
+ outline: none;
782
815
  }
783
816
  .handsontable .htCheckboxRendererInput:first-child {
784
817
  margin-inline-end: var(--ht-gap-size);
@@ -824,7 +857,6 @@
824
857
  .handsontable .htCheckboxRendererInput:checked:focus::before {
825
858
  border-color: var(--ht-checkbox-checked-focus-border-color);
826
859
  background-color: var(--ht-checkbox-checked-focus-background-color);
827
- outline: 1px solid var(--ht-checkbox-checked-focus-ring-color);
828
860
  }
829
861
  .handsontable .htCheckboxRendererInput:checked:focus::after {
830
862
  color: var(--ht-checkbox-checked-focus-icon-color);
@@ -848,7 +880,25 @@
848
880
  color: var(--ht-checkbox-disabled-icon-color);
849
881
  }
850
882
  .handsontable .htCheckboxRendererInput:indeterminate::before {
851
- background-color: red;
883
+ border-color: var(--ht-checkbox-indeterminate-border-color);
884
+ background-color: var(--ht-checkbox-indeterminate-background-color);
885
+ }
886
+ .handsontable .htCheckboxRendererInput:indeterminate::after {
887
+ color: var(--ht-checkbox-indeterminate-icon-color);
888
+ }
889
+ .handsontable .htCheckboxRendererInput:indeterminate:disabled::before {
890
+ border-color: var(--ht-checkbox-indeterminate-disabled-border-color);
891
+ background-color: var(--ht-checkbox-indeterminate-disabled-background-color);
892
+ }
893
+ .handsontable .htCheckboxRendererInput:indeterminate:disabled::after {
894
+ color: var(--ht-checkbox-indeterminate-disabled-icon-color);
895
+ }
896
+ .handsontable .htCheckboxRendererInput:indeterminate:focus::before {
897
+ border-color: var(--ht-checkbox-indeterminate-focus-border-color);
898
+ background-color: var(--ht-checkbox-indeterminate-focus-background-color);
899
+ }
900
+ .handsontable .htCheckboxRendererInput:indeterminate:focus::after {
901
+ color: var(--ht-checkbox-indeterminate-focus-icon-color);
852
902
  }
853
903
  .handsontable .htCheckboxRendererInput.noValue {
854
904
  opacity: 0.5;
@@ -870,7 +920,8 @@
870
920
  color: var(--ht-placeholder-color);
871
921
  }
872
922
  .handsontable .htDimmed {
873
- color: var(--ht-read-only-color);
923
+ color: var(--ht-read-only-color) !important;
924
+ background-color: var(--ht-cell-read-only-background-color) !important;
874
925
  }
875
926
  .handsontable .htLeft {
876
927
  text-align: left;
@@ -901,7 +952,7 @@
901
952
  white-space: nowrap;
902
953
  }
903
954
  .handsontable .htSearchResult {
904
- background: var(--ht-cell-success-background-color) !important;
955
+ background-color: var(--ht-cell-success-background-color) !important;
905
956
  }
906
957
 
907
958
  .handsontableInputHolder {
@@ -978,6 +1029,7 @@
978
1029
  }
979
1030
  .handsontable.listbox .wtHolder {
980
1031
  overflow: auto;
1032
+ border-radius: 0 !important;
981
1033
  }
982
1034
  .handsontable.listbox .wtHider, .handsontable.listbox .htCore {
983
1035
  border-radius: 0 !important;
@@ -998,11 +1050,6 @@
998
1050
  text-overflow: ellipsis;
999
1051
  border-radius: 0 !important;
1000
1052
  }
1001
- .handsontable.listbox table td.htDimmed {
1002
- cursor: default;
1003
- font-style: inherit;
1004
- color: inherit;
1005
- }
1006
1053
  .handsontable.listbox table .wtBorder {
1007
1054
  visibility: hidden;
1008
1055
  }
@@ -1010,14 +1057,29 @@
1010
1057
  font-weight: bold;
1011
1058
  color: inherit;
1012
1059
  }
1013
- .handsontable.listbox table tr:hover td {
1014
- background: var(--ht-menu-item-hover-color, #e5e5e9);
1060
+ .handsontable.listbox table tr td:hover td {
1061
+ background: var(--ht-menu-item-hover-color, #e5e5e9) !important;
1015
1062
  cursor: pointer;
1063
+ box-shadow: none !important;
1064
+ }
1065
+ .handsontable.listbox table td {
1066
+ transition: var(--ht-table-transition) background ease-in-out;
1016
1067
  }
1017
- .handsontable.listbox table tr td:hover, .handsontable.listbox table tr td.current {
1018
- background: var(--ht-menu-item-hover-color, #e5e5e9);
1068
+ .handsontable.listbox table td:hover {
1069
+ background-color: var(--ht-menu-item-hover-color, #e5e5e9) !important;
1019
1070
  cursor: pointer;
1020
1071
  }
1072
+ .handsontable.listbox table td.current:not([aria-expanded=true]) {
1073
+ box-shadow: inset 0 0 0 1px var(--ht-accent-color);
1074
+ }
1075
+ .handsontable.listbox table td.htDimmed {
1076
+ cursor: default;
1077
+ font-style: inherit;
1078
+ color: inherit !important;
1079
+ }
1080
+ .handsontable.listbox table td.htDimmed:not(.handsontable.listbox table td:hover) {
1081
+ background-color: inherit !important;
1082
+ }
1021
1083
  .handsontable.listbox table thead th {
1022
1084
  height: auto !important;
1023
1085
  text-align: left;
@@ -1183,6 +1245,7 @@
1183
1245
  text-overflow: ellipsis;
1184
1246
  white-space: nowrap;
1185
1247
  overflow: hidden;
1248
+ transition: var(--ht-table-transition) all ease-in-out;
1186
1249
  }
1187
1250
  .handsontable .htUISelectCaption::after {
1188
1251
  content: "";
@@ -1345,62 +1408,70 @@
1345
1408
  }
1346
1409
  .handsontable .htUIRadio > input[type=radio] {
1347
1410
  position: relative;
1348
- width: var(--ht-checkbox-size);
1349
- height: var(--ht-checkbox-size);
1411
+ width: var(--ht-radio-size);
1412
+ height: var(--ht-radio-size);
1350
1413
  margin: 0;
1351
1414
  appearance: none;
1352
1415
  cursor: pointer;
1416
+ border-radius: calc(0.5 * var(--ht-radio-size));
1417
+ outline: none;
1353
1418
  }
1354
1419
  .handsontable .htUIRadio > input[type=radio]::before {
1355
1420
  content: "";
1356
1421
  display: block;
1357
1422
  position: absolute;
1358
1423
  inset: 0;
1359
- border-radius: calc(0.5 * var(--ht-checkbox-size));
1360
- border: 1px solid var(--ht-checkbox-border-color);
1361
- background-color: var(--ht-checkbox-background-color);
1424
+ border-radius: calc(0.5 * var(--ht-radio-size));
1425
+ border: 1px solid var(--ht-radio-border-color);
1426
+ background-color: var(--ht-radio-background-color);
1362
1427
  }
1363
1428
  .handsontable .htUIRadio > input[type=radio]::after {
1364
1429
  content: "";
1365
1430
  display: block;
1366
1431
  position: absolute;
1367
- color: var(--ht-checkbox-background-color);
1432
+ color: var(--ht-radio-icon-color);
1368
1433
  }
1369
1434
  .handsontable .htUIRadio > input[type=radio]:checked::before {
1370
- border-color: var(--ht-checkbox-checked-border-color);
1435
+ border-color: var(--ht-radio-checked-border-color);
1436
+ background-color: var(--ht-radio-checked-background-color);
1371
1437
  }
1372
1438
  .handsontable .htUIRadio > input[type=radio]:checked::after {
1373
- color: var(--ht-checkbox-checked-background-color);
1439
+ color: var(--ht-radio-checked-icon-color);
1374
1440
  }
1375
1441
  .handsontable .htUIRadio > input[type=radio]:checked:disabled {
1376
1442
  cursor: initial;
1377
1443
  }
1378
1444
  .handsontable .htUIRadio > input[type=radio]:checked:disabled::before {
1379
- border-color: var(--ht-checkbox-checked-disabled-border-color);
1445
+ border-color: var(--ht-radio-checked-disabled-border-color);
1446
+ background-color: var(--ht-radio-checked-disabled-background-color);
1380
1447
  }
1381
1448
  .handsontable .htUIRadio > input[type=radio]:checked:disabled::after {
1382
- color: var(--ht-checkbox-checked-disabled-background-color);
1449
+ color: var(--ht-radio-checked-disabled-icon-color);
1383
1450
  }
1384
1451
  .handsontable .htUIRadio > input[type=radio]:checked:focus::before {
1385
- border-color: var(--ht-checkbox-checked-focus-background-color);
1452
+ border-color: var(--ht-radio-checked-focus-border-color);
1453
+ background-color: var(--ht-radio-checked-focus-background-color);
1386
1454
  }
1387
1455
  .handsontable .htUIRadio > input[type=radio]:checked:focus::after {
1388
- color: var(--ht-checkbox-checked-focus-background-color);
1456
+ color: var(--ht-radio-checked-focus-icon-color);
1389
1457
  }
1390
1458
  .handsontable .htUIRadio > input[type=radio]:disabled {
1391
1459
  cursor: initial;
1392
1460
  }
1393
1461
  .handsontable .htUIRadio > input[type=radio]:disabled::before {
1394
- border-color: var(--ht-checkbox-disabled-border-color);
1462
+ border-color: var(--ht-radio-disabled-border-color);
1463
+ background-color: var(--ht-radio-disabled-background-color);
1395
1464
  }
1396
1465
  .handsontable .htUIRadio > input[type=radio]:disabled::after {
1397
- color: var(--ht-checkbox-disabled-background-color);
1466
+ color: var(--ht-radio-disabled-icon-color);
1398
1467
  }
1399
1468
  .handsontable .htUIRadio > input[type=radio]:focus::before {
1400
- border-color: var(--ht-checkbox-focus-background-color);
1469
+ border-color: var(--ht-radio-focus-border-color);
1470
+ background-color: var(--ht-radio-focus-background-color);
1471
+ outline: 1px solid var(--ht-radio-focus-ring-color);
1401
1472
  }
1402
1473
  .handsontable .htUIRadio > input[type=radio]:focus::after {
1403
- color: var(--ht-checkbox-focus-background-color);
1474
+ color: var(--ht-radio-focus-icon-color);
1404
1475
  }
1405
1476
  .handsontable .htUIRadio label {
1406
1477
  vertical-align: middle;
@@ -1564,7 +1635,7 @@
1564
1635
  left: -2px;
1565
1636
  }
1566
1637
  .handsontable th.ht__active_highlight.beforeHiddenColumn::before, .handsontable th.ht__active_highlight.beforeHiddenColumn::after, .handsontable th.ht__active_highlight.afterHiddenColumn::before, .handsontable th.ht__active_highlight.afterHiddenColumn::after {
1567
- color: var(--ht-icon-active-button-icon-color);
1638
+ color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));
1568
1639
  }
1569
1640
 
1570
1641
  [dir=rtl].handsontable th.beforeHiddenColumn::after {
@@ -1600,7 +1671,7 @@
1600
1671
  top: -2px;
1601
1672
  }
1602
1673
  .handsontable th.ht__active_highlight.beforeHiddenRow::before, .handsontable th.ht__active_highlight.beforeHiddenRow::after, .handsontable th.ht__active_highlight.afterHiddenRow::before, .handsontable th.ht__active_highlight.afterHiddenRow::after {
1603
- color: var(--ht-icon-active-button-icon-color);
1674
+ color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));
1604
1675
  }
1605
1676
 
1606
1677
  .handsontable .changeType {
@@ -1638,18 +1709,18 @@
1638
1709
  color: var(--ht-icon-button-hover-icon-color);
1639
1710
  }
1640
1711
  .handsontable .ht__active_highlight .changeType {
1641
- box-shadow: 0 0 0 1px var(--ht-icon-active-button-border-color);
1642
- background-color: var(--ht-icon-active-button-background-color);
1712
+ box-shadow: 0 0 0 1px var(--ht-icon-button-active-border-color, var(--ht-icon-active-button-border-color));
1713
+ background-color: var(--ht-icon-button-active-background-color, var(--ht-icon-active-button-background-color));
1643
1714
  }
1644
1715
  .handsontable .ht__active_highlight .changeType::before {
1645
- color: var(--ht-icon-active-button-icon-color);
1716
+ color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));
1646
1717
  }
1647
1718
  .handsontable .ht__active_highlight .changeType:hover {
1648
- box-shadow: 0 0 0 1px var(--ht-icon-active-button-hover-border-color);
1649
- background-color: var(--ht-icon-active-button-hover-background-color);
1719
+ box-shadow: 0 0 0 1px var(--ht-icon-button-active-hover-border-color, var(--ht-icon-active-button-hover-border-color));
1720
+ background-color: var(--ht-icon-button-active-hover-background-color, var(--ht-icon-active-button-hover-background-color));
1650
1721
  }
1651
1722
  .handsontable .ht__active_highlight .changeType:hover::before {
1652
- color: var(--ht-icon-active-button-hover-icon-color);
1723
+ color: var(--ht-icon-button-active-hover-icon-color, var(--ht-icon-active-button-hover-icon-color));
1653
1724
  }
1654
1725
  .handsontable th.htFiltersActive {
1655
1726
  background-color: var(--ht-header-filter-background-color);
@@ -1710,7 +1781,7 @@
1710
1781
  text-overflow: ellipsis;
1711
1782
  background: var(--ht-background-color, #ffffff);
1712
1783
  cursor: pointer;
1713
- transition: background calc(0.5 * var(--ht-table-transition)) ease-in-out;
1784
+ transition: var(--ht-table-transition) background ease-in-out;
1714
1785
  }
1715
1786
  .handsontable.htDropdownMenu table tbody tr td:first-child, .handsontable.htContextMenu table tbody tr td:first-child, .handsontable.htFiltersConditionsMenu table tbody tr td:first-child {
1716
1787
  border-top-width: 0;
@@ -1720,12 +1791,16 @@
1720
1791
  }
1721
1792
  .handsontable.htDropdownMenu table tbody tr td.htDimmed, .handsontable.htContextMenu table tbody tr td.htDimmed, .handsontable.htFiltersConditionsMenu table tbody tr td.htDimmed {
1722
1793
  font-style: normal;
1723
- color: var(--ht-foreground-color);
1794
+ color: inherit !important;
1795
+ background-color: inherit !important;
1724
1796
  }
1725
- .handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current, .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current, .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current {
1726
- background: var(--ht-menu-item-hover-color, #e5e5e9);
1797
+ .handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover {
1798
+ background: var(--ht-menu-item-hover-color, #e5e5e9) !important;
1727
1799
  cursor: pointer;
1728
1800
  }
1801
+ .handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]), .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]), .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]) {
1802
+ box-shadow: inset 0 0 0 1px var(--ht-accent-color);
1803
+ }
1729
1804
  .handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper, .handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper, .handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper {
1730
1805
  margin-inline-end: calc(2 * var(--ht-gap-size, 4px) + var(--ht-icon-size));
1731
1806
  }
@@ -1796,6 +1871,7 @@
1796
1871
  .handsontable .htUIMultipleSelect .ht_master .wtHolder {
1797
1872
  overflow-y: scroll !important;
1798
1873
  background: transparent;
1874
+ border-radius: 0 !important;
1799
1875
  }
1800
1876
  .handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore {
1801
1877
  box-shadow: none;