handsontable 0.0.0-next-2c41c5b-20250814 → 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.
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/autocompleteType/autocompleteType.js +1 -4
- package/cellTypes/autocompleteType/autocompleteType.mjs +1 -4
- package/cellTypes/checkboxType/checkboxType.js +1 -3
- package/cellTypes/checkboxType/checkboxType.mjs +1 -3
- package/cellTypes/dropdownType/dropdownType.js +1 -4
- package/cellTypes/dropdownType/dropdownType.mjs +1 -4
- package/cellTypes/numericType/numericType.js +1 -3
- package/cellTypes/numericType/numericType.mjs +1 -3
- package/core/focusCatcher/index.js +37 -20
- package/core/focusCatcher/index.mjs +37 -20
- package/core/focusCatcher/utils.js +3 -64
- package/core/focusCatcher/utils.mjs +1 -60
- package/core/hooks/constants.js +58 -0
- package/core/hooks/constants.mjs +58 -0
- package/core/hooks/index.d.ts +7 -0
- package/core.d.ts +0 -1
- package/core.js +59 -55
- package/core.mjs +61 -57
- package/dataMap/dataMap.js +3 -13
- package/dataMap/dataMap.mjs +4 -14
- package/dataMap/dataSource.js +0 -16
- package/dataMap/dataSource.mjs +0 -16
- package/dataMap/metaManager/lazyFactoryMap.js +3 -4
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -2
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -3
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -3
- package/dataMap/metaManager/metaSchema.js +97 -68
- package/dataMap/metaManager/metaSchema.mjs +97 -68
- package/dataMap/metaManager/utils.js +11 -0
- package/dataMap/metaManager/utils.mjs +10 -0
- package/dist/handsontable.css +103 -5
- package/dist/handsontable.full.css +103 -5
- package/dist/handsontable.full.js +2770 -1954
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +67 -67
- package/dist/handsontable.js +2772 -1956
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +27 -27
- package/editors/autocompleteEditor/autocompleteEditor.js +8 -33
- package/editors/autocompleteEditor/autocompleteEditor.mjs +9 -34
- package/editors/baseEditor/baseEditor.js +2 -2
- package/editors/baseEditor/baseEditor.mjs +2 -2
- package/helpers/a11y.js +5 -1
- package/helpers/a11y.mjs +3 -1
- package/helpers/mixed.js +64 -1
- package/helpers/mixed.mjs +62 -1
- package/helpers/number.js +0 -28
- package/helpers/number.mjs +0 -26
- package/helpers/string.js +0 -19
- package/helpers/string.mjs +0 -18
- package/index.d.ts +9 -0
- package/package.json +6 -1
- package/plugins/autofill/autofill.js +3 -50
- package/plugins/autofill/autofill.mjs +3 -50
- package/plugins/base/base.js +75 -14
- package/plugins/base/base.mjs +75 -14
- package/plugins/contextMenu/contextMenu.js +1 -0
- package/plugins/contextMenu/contextMenu.mjs +1 -0
- package/plugins/copyPaste/copyPaste.js +28 -61
- package/plugins/copyPaste/copyPaste.mjs +29 -62
- package/plugins/dialog/dialog.d.ts +23 -0
- package/plugins/dialog/dialog.js +469 -0
- package/plugins/dialog/dialog.mjs +465 -0
- package/plugins/dialog/index.d.ts +1 -0
- package/plugins/dialog/index.js +7 -0
- package/plugins/dialog/index.mjs +1 -0
- package/plugins/dialog/ui.js +240 -0
- package/plugins/dialog/ui.mjs +235 -0
- package/plugins/dropdownMenu/dropdownMenu.js +1 -0
- package/plugins/dropdownMenu/dropdownMenu.mjs +1 -0
- package/plugins/index.d.ts +3 -0
- package/plugins/index.js +3 -0
- package/plugins/index.mjs +3 -1
- package/plugins/pagination/focusController.js +27 -0
- package/plugins/pagination/focusController.mjs +23 -0
- package/plugins/pagination/pagination.js +165 -18
- package/plugins/pagination/pagination.mjs +165 -18
- package/plugins/pagination/ui.js +101 -62
- package/plugins/pagination/ui.mjs +102 -63
- package/selection/range.js +11 -0
- package/selection/range.mjs +11 -0
- package/selection/selection.js +63 -2
- package/selection/selection.mjs +63 -2
- package/selection/utils.js +2 -1
- package/selection/utils.mjs +2 -1
- package/settings.d.ts +3 -3
- package/shortcuts/context.js +4 -1
- package/shortcuts/context.mjs +4 -1
- package/shortcuts/manager.js +17 -3
- package/shortcuts/manager.mjs +17 -3
- package/styles/handsontable.css +106 -22
- package/styles/handsontable.min.css +3 -3
- package/styles/ht-theme-horizon.css +24 -6
- package/styles/ht-theme-horizon.min.css +3 -3
- package/styles/ht-theme-main.css +52 -34
- package/styles/ht-theme-main.min.css +3 -3
- package/tableView.js +7 -2
- package/tableView.mjs +7 -2
- package/{core/focusCatcher → utils}/focusDetector.js +29 -11
- package/{core/focusCatcher → utils}/focusDetector.mjs +29 -11
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
- package/validators/autocompleteValidator/autocompleteValidator.mjs +1 -2
- package/cellTypes/autocompleteType/accessors/index.js +0 -7
- package/cellTypes/autocompleteType/accessors/index.mjs +0 -2
- package/cellTypes/autocompleteType/accessors/valueGetter.js +0 -14
- package/cellTypes/autocompleteType/accessors/valueGetter.mjs +0 -10
- package/cellTypes/autocompleteType/accessors/valueSetter.js +0 -25
- package/cellTypes/autocompleteType/accessors/valueSetter.mjs +0 -21
- package/cellTypes/checkboxType/accessors/index.js +0 -5
- package/cellTypes/checkboxType/accessors/index.mjs +0 -1
- package/cellTypes/checkboxType/accessors/valueSetter.js +0 -26
- package/cellTypes/checkboxType/accessors/valueSetter.mjs +0 -22
- package/cellTypes/dropdownType/accessors/index.js +0 -7
- package/cellTypes/dropdownType/accessors/index.mjs +0 -2
- package/cellTypes/dropdownType/accessors/valueGetter.js +0 -14
- package/cellTypes/dropdownType/accessors/valueGetter.mjs +0 -10
- package/cellTypes/dropdownType/accessors/valueSetter.js +0 -17
- package/cellTypes/dropdownType/accessors/valueSetter.mjs +0 -13
- package/cellTypes/numericType/accessors/index.js +0 -5
- package/cellTypes/numericType/accessors/index.mjs +0 -1
- package/cellTypes/numericType/accessors/valueSetter.js +0 -19
- package/cellTypes/numericType/accessors/valueSetter.mjs +0 -15
- package/utils/valueAccessors.js +0 -45
- package/utils/valueAccessors.mjs +0 -40
|
@@ -13,7 +13,6 @@ require("core-js/modules/es.set.union.v2.js");
|
|
|
13
13
|
require("core-js/modules/esnext.iterator.constructor.js");
|
|
14
14
|
require("core-js/modules/esnext.iterator.filter.js");
|
|
15
15
|
var _utils = require("./utils");
|
|
16
|
-
var _number = require("../../helpers/number");
|
|
17
16
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
18
17
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
19
18
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
@@ -180,7 +179,7 @@ class LazyFactoryMap {
|
|
|
180
179
|
* @returns {*}
|
|
181
180
|
*/
|
|
182
181
|
obtain(key) {
|
|
183
|
-
(0, _utils.assert)(() => (0,
|
|
182
|
+
(0, _utils.assert)(() => (0, _utils.isUnsignedNumber)(key), 'Expecting an unsigned number.');
|
|
184
183
|
const dataIndex = this._getStorageIndexByKey(key);
|
|
185
184
|
let result;
|
|
186
185
|
if (dataIndex >= 0) {
|
|
@@ -214,7 +213,7 @@ class LazyFactoryMap {
|
|
|
214
213
|
*/
|
|
215
214
|
insert(key) {
|
|
216
215
|
let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
217
|
-
(0, _utils.assert)(() => (0,
|
|
216
|
+
(0, _utils.assert)(() => (0, _utils.isUnsignedNumber)(key) || (0, _utils.isNullish)(key), 'Expecting an unsigned number or null/undefined argument.');
|
|
218
217
|
const newIndexes = [];
|
|
219
218
|
const dataLength = this.data.length;
|
|
220
219
|
for (let i = 0; i < amount; i++) {
|
|
@@ -233,7 +232,7 @@ class LazyFactoryMap {
|
|
|
233
232
|
*/
|
|
234
233
|
remove(key) {
|
|
235
234
|
let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
236
|
-
(0, _utils.assert)(() => (0,
|
|
235
|
+
(0, _utils.assert)(() => (0, _utils.isUnsignedNumber)(key) || (0, _utils.isNullish)(key), 'Expecting an unsigned number or null/undefined argument.');
|
|
237
236
|
const removed = this.index.splice((0, _utils.isNullish)(key) ? this.index.length - amount : key, amount);
|
|
238
237
|
for (let i = 0; i < removed.length; i++) {
|
|
239
238
|
const removedIndex = removed[i];
|
|
@@ -12,8 +12,7 @@ import "core-js/modules/esnext.iterator.filter.js";
|
|
|
12
12
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
14
14
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
|
-
import { assert, isNullish } from "./utils.mjs";
|
|
16
|
-
import { isUnsignedNumber } from "../../helpers/number.mjs";
|
|
15
|
+
import { assert, isUnsignedNumber, isNullish } from "./utils.mjs";
|
|
17
16
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
|
18
17
|
/**
|
|
19
18
|
* @class LazyFactoryMap
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
|
5
5
|
require("core-js/modules/es.array.push.js");
|
|
6
|
+
var _object = require("../../../helpers/object");
|
|
6
7
|
var _utils = require("../utils");
|
|
7
8
|
var _lazyFactoryMap = _interopRequireDefault(require("../lazyFactoryMap"));
|
|
8
|
-
var _object = require("../../../helpers/object");
|
|
9
9
|
var _mixed = require("../../../helpers/mixed");
|
|
10
|
-
var _number = require("../../../helpers/number");
|
|
11
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
11
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
12
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
@@ -190,7 +189,7 @@ class CellMeta {
|
|
|
190
189
|
* @returns {object[]}
|
|
191
190
|
*/
|
|
192
191
|
getMetasAtRow(physicalRow) {
|
|
193
|
-
(0, _utils.assert)(() => (0,
|
|
192
|
+
(0, _utils.assert)(() => (0, _utils.isUnsignedNumber)(physicalRow), 'Expecting an unsigned number.');
|
|
194
193
|
const rowsMeta = new Map(this.metas);
|
|
195
194
|
return rowsMeta.has(physicalRow) ? Array.from(rowsMeta.get(physicalRow).values()) : [];
|
|
196
195
|
}
|
|
@@ -3,11 +3,10 @@ import "core-js/modules/es.array.push.js";
|
|
|
3
3
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
-
import { extendByMetaType, assert } from "../utils.mjs";
|
|
7
|
-
import LazyFactoryMap from "../lazyFactoryMap.mjs";
|
|
8
6
|
import { extend } from "../../../helpers/object.mjs";
|
|
7
|
+
import { extendByMetaType, assert, isUnsignedNumber } from "../utils.mjs";
|
|
8
|
+
import LazyFactoryMap from "../lazyFactoryMap.mjs";
|
|
9
9
|
import { isDefined } from "../../../helpers/mixed.mjs";
|
|
10
|
-
import { isUnsignedNumber } from "../../../helpers/number.mjs";
|
|
11
10
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
|
12
11
|
/**
|
|
13
12
|
* @class CellMeta
|
|
@@ -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.
|
|
@@ -4242,13 +4337,9 @@ var _default = () => {
|
|
|
4242
4337
|
*
|
|
4243
4338
|
* You can set the `source` option to one of the following:
|
|
4244
4339
|
*
|
|
4245
|
-
* - An array
|
|
4246
|
-
* - An array of objects with `key` and `value` properties
|
|
4340
|
+
* - An array
|
|
4247
4341
|
* - A function
|
|
4248
4342
|
*
|
|
4249
|
-
* Note: When defining the `source` option as an array of objects with `key` and `value` properties, the data format for that cell
|
|
4250
|
-
* needs to be an object with `key` and `value` properties as well.
|
|
4251
|
-
*
|
|
4252
4343
|
* Read more:
|
|
4253
4344
|
* - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
|
|
4254
4345
|
* - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md)
|
|
@@ -4264,7 +4355,7 @@ var _default = () => {
|
|
|
4264
4355
|
*
|
|
4265
4356
|
* @example
|
|
4266
4357
|
* ```js
|
|
4267
|
-
* // set `source` to an array
|
|
4358
|
+
* // set `source` to an array
|
|
4268
4359
|
* columns: [{
|
|
4269
4360
|
* // set the `type` of each cell in this column to `autocomplete`
|
|
4270
4361
|
* type: 'autocomplete',
|
|
@@ -4272,20 +4363,6 @@ var _default = () => {
|
|
|
4272
4363
|
* source: ['A', 'B', 'C', 'D']
|
|
4273
4364
|
* }],
|
|
4274
4365
|
*
|
|
4275
|
-
* // set `source` to an array of objects with `key` and `value` properties
|
|
4276
|
-
* columns: [{
|
|
4277
|
-
* // set the `type` of each cell in this column to `autocomplete`
|
|
4278
|
-
* type: 'autocomplete',
|
|
4279
|
-
* // set options available in every `autocomplete` cell of this column
|
|
4280
|
-
* source: [{
|
|
4281
|
-
* key: 'A',
|
|
4282
|
-
* value: 'Label A'
|
|
4283
|
-
* }, {
|
|
4284
|
-
* key: 'B',
|
|
4285
|
-
* value: 'Label B'
|
|
4286
|
-
* }]
|
|
4287
|
-
* }],
|
|
4288
|
-
*
|
|
4289
4366
|
* // set `source` to a function
|
|
4290
4367
|
* columns: [{
|
|
4291
4368
|
* // set the `type` of each cell in this column to `autocomplete`
|
|
@@ -4839,54 +4916,6 @@ var _default = () => {
|
|
|
4839
4916
|
* ```
|
|
4840
4917
|
*/
|
|
4841
4918
|
validator: undefined,
|
|
4842
|
-
/**
|
|
4843
|
-
* @description
|
|
4844
|
-
* The `valueGetter` option configures a function that defines what value will be used when displaying the cell content.
|
|
4845
|
-
* It can be used to modify the value of a cell before it is displayed (for example, for object-based data).
|
|
4846
|
-
*
|
|
4847
|
-
* @example
|
|
4848
|
-
* ```js
|
|
4849
|
-
* // use the `label` property of the value object with a fallback to the value itself
|
|
4850
|
-
* valueGetter: (value, row, column, cellMeta) => {
|
|
4851
|
-
* return value?.label ?? value;
|
|
4852
|
-
* }
|
|
4853
|
-
* ```
|
|
4854
|
-
*
|
|
4855
|
-
* @memberof Options#
|
|
4856
|
-
* @type {function(any, number, number): any}
|
|
4857
|
-
* @param {*} value The value to be displayed in the cell.
|
|
4858
|
-
* @param {number} row The visual row index of the cell.
|
|
4859
|
-
* @param {number} column The visual column index of the cell.
|
|
4860
|
-
* @param {object} cellMeta The cell meta object.
|
|
4861
|
-
* @since 16.1.0
|
|
4862
|
-
* @default undefined
|
|
4863
|
-
* @category Core
|
|
4864
|
-
*/
|
|
4865
|
-
valueGetter: undefined,
|
|
4866
|
-
/**
|
|
4867
|
-
* @description
|
|
4868
|
-
* The `valueSetter` option configures a function that defines what value will be used when setting the cell content.
|
|
4869
|
-
* It can be used to modify the value of a cell before it is saved (for example, for object-based data).
|
|
4870
|
-
*
|
|
4871
|
-
* @example
|
|
4872
|
-
* ```js
|
|
4873
|
-
* // Modify the value of a cell before it is saved
|
|
4874
|
-
* valueSetter: (value, row, column, cellMeta) => {
|
|
4875
|
-
* return { id: value?.id ?? value, value: `${value?.value ?? value} at ${row}, ${column}` }
|
|
4876
|
-
* },
|
|
4877
|
-
* ```
|
|
4878
|
-
*
|
|
4879
|
-
* @memberof Options#
|
|
4880
|
-
* @type {function(any, number, number): any}
|
|
4881
|
-
* @param {*} value The value to be set to a cell.
|
|
4882
|
-
* @param {number} row The visual row index of the cell.
|
|
4883
|
-
* @param {number} column The visual column index of the cell.
|
|
4884
|
-
* @param {object} cellMeta The cell meta object.
|
|
4885
|
-
* @since 16.1.0
|
|
4886
|
-
* @default undefined
|
|
4887
|
-
* @category Core
|
|
4888
|
-
*/
|
|
4889
|
-
valueSetter: undefined,
|
|
4890
4919
|
/**
|
|
4891
4920
|
* @description
|
|
4892
4921
|
* The `viewportColumnRenderingOffset` option configures the number of columns
|
|
@@ -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.
|
|
@@ -4239,13 +4334,9 @@ export default () => {
|
|
|
4239
4334
|
*
|
|
4240
4335
|
* You can set the `source` option to one of the following:
|
|
4241
4336
|
*
|
|
4242
|
-
* - An array
|
|
4243
|
-
* - An array of objects with `key` and `value` properties
|
|
4337
|
+
* - An array
|
|
4244
4338
|
* - A function
|
|
4245
4339
|
*
|
|
4246
|
-
* Note: When defining the `source` option as an array of objects with `key` and `value` properties, the data format for that cell
|
|
4247
|
-
* needs to be an object with `key` and `value` properties as well.
|
|
4248
|
-
*
|
|
4249
4340
|
* Read more:
|
|
4250
4341
|
* - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
|
|
4251
4342
|
* - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md)
|
|
@@ -4261,7 +4352,7 @@ export default () => {
|
|
|
4261
4352
|
*
|
|
4262
4353
|
* @example
|
|
4263
4354
|
* ```js
|
|
4264
|
-
* // set `source` to an array
|
|
4355
|
+
* // set `source` to an array
|
|
4265
4356
|
* columns: [{
|
|
4266
4357
|
* // set the `type` of each cell in this column to `autocomplete`
|
|
4267
4358
|
* type: 'autocomplete',
|
|
@@ -4269,20 +4360,6 @@ export default () => {
|
|
|
4269
4360
|
* source: ['A', 'B', 'C', 'D']
|
|
4270
4361
|
* }],
|
|
4271
4362
|
*
|
|
4272
|
-
* // set `source` to an array of objects with `key` and `value` properties
|
|
4273
|
-
* columns: [{
|
|
4274
|
-
* // set the `type` of each cell in this column to `autocomplete`
|
|
4275
|
-
* type: 'autocomplete',
|
|
4276
|
-
* // set options available in every `autocomplete` cell of this column
|
|
4277
|
-
* source: [{
|
|
4278
|
-
* key: 'A',
|
|
4279
|
-
* value: 'Label A'
|
|
4280
|
-
* }, {
|
|
4281
|
-
* key: 'B',
|
|
4282
|
-
* value: 'Label B'
|
|
4283
|
-
* }]
|
|
4284
|
-
* }],
|
|
4285
|
-
*
|
|
4286
4363
|
* // set `source` to a function
|
|
4287
4364
|
* columns: [{
|
|
4288
4365
|
* // set the `type` of each cell in this column to `autocomplete`
|
|
@@ -4836,54 +4913,6 @@ export default () => {
|
|
|
4836
4913
|
* ```
|
|
4837
4914
|
*/
|
|
4838
4915
|
validator: undefined,
|
|
4839
|
-
/**
|
|
4840
|
-
* @description
|
|
4841
|
-
* The `valueGetter` option configures a function that defines what value will be used when displaying the cell content.
|
|
4842
|
-
* It can be used to modify the value of a cell before it is displayed (for example, for object-based data).
|
|
4843
|
-
*
|
|
4844
|
-
* @example
|
|
4845
|
-
* ```js
|
|
4846
|
-
* // use the `label` property of the value object with a fallback to the value itself
|
|
4847
|
-
* valueGetter: (value, row, column, cellMeta) => {
|
|
4848
|
-
* return value?.label ?? value;
|
|
4849
|
-
* }
|
|
4850
|
-
* ```
|
|
4851
|
-
*
|
|
4852
|
-
* @memberof Options#
|
|
4853
|
-
* @type {function(any, number, number): any}
|
|
4854
|
-
* @param {*} value The value to be displayed in the cell.
|
|
4855
|
-
* @param {number} row The visual row index of the cell.
|
|
4856
|
-
* @param {number} column The visual column index of the cell.
|
|
4857
|
-
* @param {object} cellMeta The cell meta object.
|
|
4858
|
-
* @since 16.1.0
|
|
4859
|
-
* @default undefined
|
|
4860
|
-
* @category Core
|
|
4861
|
-
*/
|
|
4862
|
-
valueGetter: undefined,
|
|
4863
|
-
/**
|
|
4864
|
-
* @description
|
|
4865
|
-
* The `valueSetter` option configures a function that defines what value will be used when setting the cell content.
|
|
4866
|
-
* It can be used to modify the value of a cell before it is saved (for example, for object-based data).
|
|
4867
|
-
*
|
|
4868
|
-
* @example
|
|
4869
|
-
* ```js
|
|
4870
|
-
* // Modify the value of a cell before it is saved
|
|
4871
|
-
* valueSetter: (value, row, column, cellMeta) => {
|
|
4872
|
-
* return { id: value?.id ?? value, value: `${value?.value ?? value} at ${row}, ${column}` }
|
|
4873
|
-
* },
|
|
4874
|
-
* ```
|
|
4875
|
-
*
|
|
4876
|
-
* @memberof Options#
|
|
4877
|
-
* @type {function(any, number, number): any}
|
|
4878
|
-
* @param {*} value The value to be set to a cell.
|
|
4879
|
-
* @param {number} row The visual row index of the cell.
|
|
4880
|
-
* @param {number} column The visual column index of the cell.
|
|
4881
|
-
* @param {object} cellMeta The cell meta object.
|
|
4882
|
-
* @since 16.1.0
|
|
4883
|
-
* @default undefined
|
|
4884
|
-
* @category Core
|
|
4885
|
-
*/
|
|
4886
|
-
valueSetter: undefined,
|
|
4887
4916
|
/**
|
|
4888
4917
|
* @description
|
|
4889
4918
|
* The `viewportColumnRenderingOffset` option configures the number of columns
|
|
@@ -5,6 +5,7 @@ exports.assert = assert;
|
|
|
5
5
|
exports.columnFactory = columnFactory;
|
|
6
6
|
exports.extendByMetaType = extendByMetaType;
|
|
7
7
|
exports.isNullish = isNullish;
|
|
8
|
+
exports.isUnsignedNumber = isUnsignedNumber;
|
|
8
9
|
require("core-js/modules/es.error.cause.js");
|
|
9
10
|
require("core-js/modules/es.set.difference.v2.js");
|
|
10
11
|
require("core-js/modules/es.set.intersection.v2.js");
|
|
@@ -94,6 +95,16 @@ function columnFactory(TableMeta) {
|
|
|
94
95
|
return ColumnMeta;
|
|
95
96
|
}
|
|
96
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Helper which checks if the provided argument is an unsigned number.
|
|
100
|
+
*
|
|
101
|
+
* @param {*} value Value to check.
|
|
102
|
+
* @returns {boolean}
|
|
103
|
+
*/
|
|
104
|
+
function isUnsignedNumber(value) {
|
|
105
|
+
return Number.isInteger(value) && value >= 0;
|
|
106
|
+
}
|
|
107
|
+
|
|
97
108
|
/**
|
|
98
109
|
* Function which makes assertion by custom condition. Function throws an error when assertion doesn't meet the spec.
|
|
99
110
|
*
|
|
@@ -87,6 +87,16 @@ export function columnFactory(TableMeta) {
|
|
|
87
87
|
return ColumnMeta;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Helper which checks if the provided argument is an unsigned number.
|
|
92
|
+
*
|
|
93
|
+
* @param {*} value Value to check.
|
|
94
|
+
* @returns {boolean}
|
|
95
|
+
*/
|
|
96
|
+
export function isUnsignedNumber(value) {
|
|
97
|
+
return Number.isInteger(value) && value >= 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
90
100
|
/**
|
|
91
101
|
* Function which makes assertion by custom condition. Function throws an error when assertion doesn't meet the spec.
|
|
92
102
|
*
|
package/dist/handsontable.css
CHANGED
|
@@ -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-
|
|
30
|
-
* Release date: 10/07/2025 (built at
|
|
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-
|
|
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-
|
|
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
|
|
2227
|
+
.ht-root-wrapper .ht-pagination--bordered {
|
|
2130
2228
|
border-top-color: #ccc;
|
|
2131
2229
|
}
|
|
2132
2230
|
|