handsontable 0.0.0-next-f86a877-20250819 → 0.0.0-next-fce5825-20250822

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 (73) hide show
  1. package/base.js +2 -2
  2. package/base.mjs +2 -2
  3. package/core/focusCatcher/index.js +37 -20
  4. package/core/focusCatcher/index.mjs +37 -20
  5. package/core/focusCatcher/utils.js +3 -64
  6. package/core/focusCatcher/utils.mjs +1 -60
  7. package/core/hooks/constants.js +58 -0
  8. package/core/hooks/constants.mjs +58 -0
  9. package/core/hooks/index.d.ts +7 -0
  10. package/core.js +13 -4
  11. package/core.mjs +13 -4
  12. package/dataMap/metaManager/metaSchema.js +95 -0
  13. package/dataMap/metaManager/metaSchema.mjs +95 -0
  14. package/dist/handsontable.css +103 -5
  15. package/dist/handsontable.full.css +103 -5
  16. package/dist/handsontable.full.js +1600 -282
  17. package/dist/handsontable.full.min.css +3 -3
  18. package/dist/handsontable.full.min.js +65 -65
  19. package/dist/handsontable.js +1600 -282
  20. package/dist/handsontable.min.css +3 -3
  21. package/dist/handsontable.min.js +27 -27
  22. package/editors/baseEditor/baseEditor.js +1 -0
  23. package/editors/baseEditor/baseEditor.mjs +1 -0
  24. package/helpers/a11y.js +5 -1
  25. package/helpers/a11y.mjs +3 -1
  26. package/helpers/mixed.js +64 -1
  27. package/helpers/mixed.mjs +62 -1
  28. package/index.d.ts +9 -0
  29. package/package.json +6 -1
  30. package/plugins/base/base.js +75 -14
  31. package/plugins/base/base.mjs +75 -14
  32. package/plugins/contextMenu/contextMenu.js +1 -0
  33. package/plugins/contextMenu/contextMenu.mjs +1 -0
  34. package/plugins/dialog/dialog.d.ts +23 -0
  35. package/plugins/dialog/dialog.js +469 -0
  36. package/plugins/dialog/dialog.mjs +465 -0
  37. package/plugins/dialog/index.d.ts +1 -0
  38. package/plugins/dialog/index.js +7 -0
  39. package/plugins/dialog/index.mjs +1 -0
  40. package/plugins/dialog/ui.js +240 -0
  41. package/plugins/dialog/ui.mjs +235 -0
  42. package/plugins/dropdownMenu/dropdownMenu.js +1 -0
  43. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -0
  44. package/plugins/index.d.ts +3 -0
  45. package/plugins/index.js +3 -0
  46. package/plugins/index.mjs +3 -1
  47. package/plugins/pagination/focusController.js +27 -0
  48. package/plugins/pagination/focusController.mjs +23 -0
  49. package/plugins/pagination/pagination.js +165 -18
  50. package/plugins/pagination/pagination.mjs +165 -18
  51. package/plugins/pagination/ui.js +101 -62
  52. package/plugins/pagination/ui.mjs +102 -63
  53. package/selection/range.js +11 -0
  54. package/selection/range.mjs +11 -0
  55. package/selection/selection.js +63 -2
  56. package/selection/selection.mjs +63 -2
  57. package/selection/utils.js +2 -1
  58. package/selection/utils.mjs +2 -1
  59. package/settings.d.ts +2 -0
  60. package/shortcuts/context.js +4 -1
  61. package/shortcuts/context.mjs +4 -1
  62. package/shortcuts/manager.js +17 -3
  63. package/shortcuts/manager.mjs +17 -3
  64. package/styles/handsontable.css +106 -22
  65. package/styles/handsontable.min.css +3 -3
  66. package/styles/ht-theme-horizon.css +24 -6
  67. package/styles/ht-theme-horizon.min.css +3 -3
  68. package/styles/ht-theme-main.css +52 -34
  69. package/styles/ht-theme-main.min.css +3 -3
  70. package/tableView.js +7 -2
  71. package/tableView.mjs +7 -2
  72. package/{core/focusCatcher → utils}/focusDetector.js +29 -11
  73. package/{core/focusCatcher → utils}/focusDetector.mjs +29 -11
@@ -1797,6 +1797,101 @@ var _default = () => {
1797
1797
  * ```
1798
1798
  */
1799
1799
  disableVisualSelection: false,
1800
+ /**
1801
+ * @description
1802
+ * The `dialog` option configures the [`Dialog`](@/api/dialog.md) plugin.
1803
+ *
1804
+ * You can set the `dialog` option to one of the following:
1805
+ *
1806
+ * | Setting | Description |
1807
+ * | --------- | --------------------------------------------------------------------------- |
1808
+ * | `false` | Disable the [`Dialog`](@/api/dialog.md) plugin |
1809
+ * | `true` | Enable the [`Dialog`](@/api/dialog.md) plugin with default options |
1810
+ *
1811
+ * ##### dialog: Additional options
1812
+ *
1813
+ * | Option | Possible settings | Description |
1814
+ * | ------------------------ | ------------------------------------------------------------------------------------------------------ | ----------------------------------------|
1815
+ * | `content` | A string, HTMLElement or DocumentFragment (default: `''`) | The content of the dialog |
1816
+ * | `customClassName` | A string (default: `''`) | The custom class name of the dialog |
1817
+ * | `background` | One of the options: `'solid'` or `'semi-transparent'` (default: `'solid'`) | The background of the dialog |
1818
+ * | `contentBackground` | Boolean (default: `false`) | Whether to show the content background |
1819
+ * | `contentDirections` | One of the options: `'row'` or `'row-reverse'` or `'column'` or `'column-reverse'` (default: `'row'`) | The direction of the content |
1820
+ * | `animation` | Boolean (default: `true`) | Whether to show the animation |
1821
+ * | `closable` | Boolean (default: `false`) | Whether to show the close button |
1822
+ *
1823
+ * Read more:
1824
+ * - [Plugins: `Dialog`](@/api/dialog.md)
1825
+ *
1826
+ * @since 16.1.0
1827
+ * @memberof Options#
1828
+ * @type {boolean|object}
1829
+ * @default false
1830
+ * @category Dialog
1831
+ *
1832
+ * @example
1833
+ * ::: only-for javascript
1834
+ * ```js
1835
+ * // enable the Dialog plugin with default option
1836
+ * dialog: true,
1837
+ *
1838
+ * // enable the Dialog plugin with custom configuration
1839
+ * dialog: {
1840
+ * content: 'Dialog content',
1841
+ * customClassName: 'custom-dialog',
1842
+ * background: 'semi-transparent',
1843
+ * contentBackground: false,
1844
+ * contentDirections: 'column',
1845
+ * animation: false,
1846
+ * closable: true,
1847
+ * }
1848
+ * ```
1849
+ * :::
1850
+ *
1851
+ * ::: only-for react
1852
+ * ```jsx
1853
+ * // enable the Dialog plugin with default option
1854
+ * <HotTable
1855
+ * dialog={true}
1856
+ * />
1857
+ *
1858
+ * // enable the Dialog plugin with custom configuration
1859
+ * <HotTable
1860
+ * dialog={{
1861
+ * content: 'Dialog content',
1862
+ * customClassName: 'custom-dialog',
1863
+ * background: 'semi-transparent',
1864
+ * contentBackground: false,
1865
+ * contentDirections: 'column',
1866
+ * animation: false,
1867
+ * closable: true,
1868
+ * }}
1869
+ * />
1870
+ * ```
1871
+ * :::
1872
+ *
1873
+ * ::: only-for angular
1874
+ * ```ts
1875
+ * settings = {
1876
+ * dialog: {
1877
+ * content: 'Dialog content',
1878
+ * customClassName: 'custom-dialog',
1879
+ * background: 'semi-transparent',
1880
+ * contentBackground: false,
1881
+ * contentDirections: 'column',
1882
+ * animation: false,
1883
+ * closable: true,
1884
+ * }
1885
+ * };
1886
+ * ```
1887
+ *
1888
+ * ```html
1889
+ * <hot-table [settings]="settings" />
1890
+ * ```
1891
+ * :::
1892
+ *
1893
+ */
1894
+ dialog: false,
1800
1895
  /**
1801
1896
  * @description
1802
1897
  * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
@@ -1794,6 +1794,101 @@ export default () => {
1794
1794
  * ```
1795
1795
  */
1796
1796
  disableVisualSelection: false,
1797
+ /**
1798
+ * @description
1799
+ * The `dialog` option configures the [`Dialog`](@/api/dialog.md) plugin.
1800
+ *
1801
+ * You can set the `dialog` option to one of the following:
1802
+ *
1803
+ * | Setting | Description |
1804
+ * | --------- | --------------------------------------------------------------------------- |
1805
+ * | `false` | Disable the [`Dialog`](@/api/dialog.md) plugin |
1806
+ * | `true` | Enable the [`Dialog`](@/api/dialog.md) plugin with default options |
1807
+ *
1808
+ * ##### dialog: Additional options
1809
+ *
1810
+ * | Option | Possible settings | Description |
1811
+ * | ------------------------ | ------------------------------------------------------------------------------------------------------ | ----------------------------------------|
1812
+ * | `content` | A string, HTMLElement or DocumentFragment (default: `''`) | The content of the dialog |
1813
+ * | `customClassName` | A string (default: `''`) | The custom class name of the dialog |
1814
+ * | `background` | One of the options: `'solid'` or `'semi-transparent'` (default: `'solid'`) | The background of the dialog |
1815
+ * | `contentBackground` | Boolean (default: `false`) | Whether to show the content background |
1816
+ * | `contentDirections` | One of the options: `'row'` or `'row-reverse'` or `'column'` or `'column-reverse'` (default: `'row'`) | The direction of the content |
1817
+ * | `animation` | Boolean (default: `true`) | Whether to show the animation |
1818
+ * | `closable` | Boolean (default: `false`) | Whether to show the close button |
1819
+ *
1820
+ * Read more:
1821
+ * - [Plugins: `Dialog`](@/api/dialog.md)
1822
+ *
1823
+ * @since 16.1.0
1824
+ * @memberof Options#
1825
+ * @type {boolean|object}
1826
+ * @default false
1827
+ * @category Dialog
1828
+ *
1829
+ * @example
1830
+ * ::: only-for javascript
1831
+ * ```js
1832
+ * // enable the Dialog plugin with default option
1833
+ * dialog: true,
1834
+ *
1835
+ * // enable the Dialog plugin with custom configuration
1836
+ * dialog: {
1837
+ * content: 'Dialog content',
1838
+ * customClassName: 'custom-dialog',
1839
+ * background: 'semi-transparent',
1840
+ * contentBackground: false,
1841
+ * contentDirections: 'column',
1842
+ * animation: false,
1843
+ * closable: true,
1844
+ * }
1845
+ * ```
1846
+ * :::
1847
+ *
1848
+ * ::: only-for react
1849
+ * ```jsx
1850
+ * // enable the Dialog plugin with default option
1851
+ * <HotTable
1852
+ * dialog={true}
1853
+ * />
1854
+ *
1855
+ * // enable the Dialog plugin with custom configuration
1856
+ * <HotTable
1857
+ * dialog={{
1858
+ * content: 'Dialog content',
1859
+ * customClassName: 'custom-dialog',
1860
+ * background: 'semi-transparent',
1861
+ * contentBackground: false,
1862
+ * contentDirections: 'column',
1863
+ * animation: false,
1864
+ * closable: true,
1865
+ * }}
1866
+ * />
1867
+ * ```
1868
+ * :::
1869
+ *
1870
+ * ::: only-for angular
1871
+ * ```ts
1872
+ * settings = {
1873
+ * dialog: {
1874
+ * content: 'Dialog content',
1875
+ * customClassName: 'custom-dialog',
1876
+ * background: 'semi-transparent',
1877
+ * contentBackground: false,
1878
+ * contentDirections: 'column',
1879
+ * animation: false,
1880
+ * closable: true,
1881
+ * }
1882
+ * };
1883
+ * ```
1884
+ *
1885
+ * ```html
1886
+ * <hot-table [settings]="settings" />
1887
+ * ```
1888
+ * :::
1889
+ *
1890
+ */
1891
+ dialog: false,
1797
1892
  /**
1798
1893
  * @description
1799
1894
  * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
@@ -26,8 +26,8 @@
26
26
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
27
27
  * USE OR INABILITY TO USE THIS SOFTWARE.
28
28
  *
29
- * Version: 0.0.0-next-f86a877-20250819
30
- * Release date: 10/07/2025 (built at 19/08/2025 13:13:12)
29
+ * Version: 0.0.0-next-fce5825-20250822
30
+ * Release date: 10/07/2025 (built at 22/08/2025 10:30:25)
31
31
  */
32
32
  /**
33
33
  * Fix for bootstrap styles
@@ -2100,10 +2100,108 @@ thead th.hiddenHeaderText .colHeader {
2100
2100
  }
2101
2101
 
2102
2102
  .ht-root-wrapper {
2103
+ position: relative;
2104
+ display: flex;
2105
+ flex-direction: column;
2103
2106
  height: 100%;
2104
2107
  }
2105
2108
 
2106
- .ht-root-wrapper .ht-pagination-container {
2109
+ .ht-grid {
2110
+ flex: 1 1 auto;
2111
+ min-height: 0;
2112
+ }
2113
+
2114
+ .ht-dialog {
2115
+ position: absolute;
2116
+ top: 0;
2117
+ left: 0;
2118
+ display: none;
2119
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Helvetica Neue", Arial, sans-serif;
2120
+ font-size: 13px;
2121
+ width: 100%;
2122
+ height: 100%;
2123
+ z-index: 1060;
2124
+ opacity: 0;
2125
+ overflow-y: auto;
2126
+ border: 1px solid #ccc;
2127
+ box-sizing: border-box !important;
2128
+ }
2129
+
2130
+ .ht-dialog[dir=rtl] {
2131
+ left: auto;
2132
+ right: 0
2133
+ }
2134
+
2135
+ .ht-dialog:has(.htFocusCatcher:focus) {
2136
+ border: 1px solid var(--ht-accent-color);
2137
+ outline: none
2138
+ }
2139
+
2140
+ .ht-dialog * {
2141
+ box-sizing: border-box !important;
2142
+ }
2143
+
2144
+ .ht-dialog--background-solid {
2145
+ background-color: #fff;
2146
+ }
2147
+
2148
+ .ht-dialog--background-semi-transparent {
2149
+ background-color: rgba(255, 255, 255, 0.5);
2150
+ }
2151
+
2152
+ .ht-dialog--animation {
2153
+ transition: opacity 0.15s ease-in-out;
2154
+ }
2155
+
2156
+ .ht-dialog--show {
2157
+ opacity: 1;
2158
+ }
2159
+
2160
+ .ht-dialog__content-wrapper {
2161
+ display: flex;
2162
+ align-items: center;
2163
+ justify-content: center;
2164
+ width: 100%;
2165
+ min-height: 100%;
2166
+ padding: 16px;
2167
+ }
2168
+
2169
+ .ht-dialog__content-wrapper:focus {
2170
+ border: 1px solid #4b89ff;
2171
+ outline: none;
2172
+ }
2173
+
2174
+ .ht-dialog__content {
2175
+ position: relative;
2176
+ padding: 8px;
2177
+ display: flex;
2178
+ gap: 8px;
2179
+ max-width: 480px;
2180
+ color: #222;
2181
+ }
2182
+
2183
+ .ht-dialog__content--background {
2184
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
2185
+ background-color: #f7f7f9;
2186
+ }
2187
+
2188
+ .ht-dialog__content--flex-row {
2189
+ flex-direction: row;
2190
+ }
2191
+
2192
+ .ht-dialog__content--flex-row-reverse {
2193
+ flex-direction: row-reverse;
2194
+ }
2195
+
2196
+ .ht-dialog__content--flex-column {
2197
+ flex-direction: column;
2198
+ }
2199
+
2200
+ .ht-dialog__content--flex-column-reverse {
2201
+ flex-direction: column-reverse;
2202
+ }
2203
+
2204
+ .ht-root-wrapper .ht-pagination {
2107
2205
  color: #222;
2108
2206
  background: #f0f0f0;
2109
2207
  border: 1px solid #ccc;
@@ -2115,7 +2213,7 @@ thead th.hiddenHeaderText .colHeader {
2115
2213
  overflow-x: auto;
2116
2214
  }
2117
2215
 
2118
- .ht-root-wrapper .ht-pagination-container__inner {
2216
+ .ht-root-wrapper .ht-pagination__inner {
2119
2217
  display: flex;
2120
2218
  justify-content: space-between;
2121
2219
  align-items: center;
@@ -2126,7 +2224,7 @@ thead th.hiddenHeaderText .colHeader {
2126
2224
  min-width: 230px;
2127
2225
  }
2128
2226
 
2129
- .ht-root-wrapper .ht-pagination-container--bordered {
2227
+ .ht-root-wrapper .ht-pagination--bordered {
2130
2228
  border-top-color: #ccc;
2131
2229
  }
2132
2230
 
@@ -26,8 +26,8 @@
26
26
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
27
27
  * USE OR INABILITY TO USE THIS SOFTWARE.
28
28
  *
29
- * Version: 0.0.0-next-f86a877-20250819
30
- * Release date: 10/07/2025 (built at 19/08/2025 13:13:12)
29
+ * Version: 0.0.0-next-fce5825-20250822
30
+ * Release date: 10/07/2025 (built at 22/08/2025 10:30:25)
31
31
  */
32
32
  /**
33
33
  * Fix for bootstrap styles
@@ -2100,10 +2100,108 @@ thead th.hiddenHeaderText .colHeader {
2100
2100
  }
2101
2101
 
2102
2102
  .ht-root-wrapper {
2103
+ position: relative;
2104
+ display: flex;
2105
+ flex-direction: column;
2103
2106
  height: 100%;
2104
2107
  }
2105
2108
 
2106
- .ht-root-wrapper .ht-pagination-container {
2109
+ .ht-grid {
2110
+ flex: 1 1 auto;
2111
+ min-height: 0;
2112
+ }
2113
+
2114
+ .ht-dialog {
2115
+ position: absolute;
2116
+ top: 0;
2117
+ left: 0;
2118
+ display: none;
2119
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Helvetica Neue", Arial, sans-serif;
2120
+ font-size: 13px;
2121
+ width: 100%;
2122
+ height: 100%;
2123
+ z-index: 1060;
2124
+ opacity: 0;
2125
+ overflow-y: auto;
2126
+ border: 1px solid #ccc;
2127
+ box-sizing: border-box !important;
2128
+ }
2129
+
2130
+ .ht-dialog[dir=rtl] {
2131
+ left: auto;
2132
+ right: 0
2133
+ }
2134
+
2135
+ .ht-dialog:has(.htFocusCatcher:focus) {
2136
+ border: 1px solid var(--ht-accent-color);
2137
+ outline: none
2138
+ }
2139
+
2140
+ .ht-dialog * {
2141
+ box-sizing: border-box !important;
2142
+ }
2143
+
2144
+ .ht-dialog--background-solid {
2145
+ background-color: #fff;
2146
+ }
2147
+
2148
+ .ht-dialog--background-semi-transparent {
2149
+ background-color: rgba(255, 255, 255, 0.5);
2150
+ }
2151
+
2152
+ .ht-dialog--animation {
2153
+ transition: opacity 0.15s ease-in-out;
2154
+ }
2155
+
2156
+ .ht-dialog--show {
2157
+ opacity: 1;
2158
+ }
2159
+
2160
+ .ht-dialog__content-wrapper {
2161
+ display: flex;
2162
+ align-items: center;
2163
+ justify-content: center;
2164
+ width: 100%;
2165
+ min-height: 100%;
2166
+ padding: 16px;
2167
+ }
2168
+
2169
+ .ht-dialog__content-wrapper:focus {
2170
+ border: 1px solid #4b89ff;
2171
+ outline: none;
2172
+ }
2173
+
2174
+ .ht-dialog__content {
2175
+ position: relative;
2176
+ padding: 8px;
2177
+ display: flex;
2178
+ gap: 8px;
2179
+ max-width: 480px;
2180
+ color: #222;
2181
+ }
2182
+
2183
+ .ht-dialog__content--background {
2184
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
2185
+ background-color: #f7f7f9;
2186
+ }
2187
+
2188
+ .ht-dialog__content--flex-row {
2189
+ flex-direction: row;
2190
+ }
2191
+
2192
+ .ht-dialog__content--flex-row-reverse {
2193
+ flex-direction: row-reverse;
2194
+ }
2195
+
2196
+ .ht-dialog__content--flex-column {
2197
+ flex-direction: column;
2198
+ }
2199
+
2200
+ .ht-dialog__content--flex-column-reverse {
2201
+ flex-direction: column-reverse;
2202
+ }
2203
+
2204
+ .ht-root-wrapper .ht-pagination {
2107
2205
  color: #222;
2108
2206
  background: #f0f0f0;
2109
2207
  border: 1px solid #ccc;
@@ -2115,7 +2213,7 @@ thead th.hiddenHeaderText .colHeader {
2115
2213
  overflow-x: auto;
2116
2214
  }
2117
2215
 
2118
- .ht-root-wrapper .ht-pagination-container__inner {
2216
+ .ht-root-wrapper .ht-pagination__inner {
2119
2217
  display: flex;
2120
2218
  justify-content: space-between;
2121
2219
  align-items: center;
@@ -2126,7 +2224,7 @@ thead th.hiddenHeaderText .colHeader {
2126
2224
  min-width: 230px;
2127
2225
  }
2128
2226
 
2129
- .ht-root-wrapper .ht-pagination-container--bordered {
2227
+ .ht-root-wrapper .ht-pagination--bordered {
2130
2228
  border-top-color: #ccc;
2131
2229
  }
2132
2230