handsontable 12.1.1 → 12.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. package/3rdparty/walkontable/src/border.js +43 -28
  2. package/3rdparty/walkontable/src/border.mjs +43 -28
  3. package/3rdparty/walkontable/src/table.js +13 -10
  4. package/3rdparty/walkontable/src/table.mjs +13 -10
  5. package/CHANGELOG.md +31 -0
  6. package/base.js +2 -2
  7. package/base.mjs +2 -2
  8. package/core.d.ts +1 -3
  9. package/core.js +9 -1
  10. package/core.mjs +9 -1
  11. package/dataMap/dataMap.js +35 -16
  12. package/dataMap/dataMap.mjs +30 -13
  13. package/dataMap/metaManager/lazyFactoryMap.js +24 -5
  14. package/dataMap/metaManager/lazyFactoryMap.mjs +19 -4
  15. package/dataMap/metaManager/metaSchema.js +112 -80
  16. package/dataMap/metaManager/metaSchema.mjs +112 -80
  17. package/dist/handsontable.css +2 -2
  18. package/dist/handsontable.full.css +2 -2
  19. package/dist/handsontable.full.js +35200 -52208
  20. package/dist/handsontable.full.min.css +2 -2
  21. package/dist/handsontable.full.min.js +527 -284
  22. package/dist/handsontable.js +3046 -3279
  23. package/dist/handsontable.min.css +2 -2
  24. package/dist/handsontable.min.js +3 -3
  25. package/editorManager.js +69 -35
  26. package/editorManager.mjs +69 -35
  27. package/editors/baseEditor/baseEditor.js +1 -1
  28. package/editors/baseEditor/baseEditor.mjs +1 -1
  29. package/editors/dateEditor/dateEditor.js +17 -2
  30. package/editors/dateEditor/dateEditor.mjs +16 -0
  31. package/editors/textEditor/caretPositioner.js +0 -4
  32. package/editors/textEditor/caretPositioner.mjs +0 -2
  33. package/helpers/dom/element.js +2 -4
  34. package/helpers/dom/element.mjs +1 -2
  35. package/helpers/mixed.js +2 -4
  36. package/helpers/mixed.mjs +2 -3
  37. package/helpers/object.js +0 -4
  38. package/helpers/object.mjs +0 -2
  39. package/helpers/unicode.js +0 -4
  40. package/helpers/unicode.mjs +0 -2
  41. package/package.json +2 -2
  42. package/pluginHooks.d.ts +0 -1
  43. package/pluginHooks.js +17 -14
  44. package/pluginHooks.mjs +17 -14
  45. package/plugins/base/base.js +2 -4
  46. package/plugins/base/base.mjs +1 -2
  47. package/plugins/columnSorting/sortService/engine.js +2 -6
  48. package/plugins/columnSorting/sortService/engine.mjs +2 -2
  49. package/plugins/columnSummary/columnSummary.js +17 -11
  50. package/plugins/columnSummary/columnSummary.mjs +15 -9
  51. package/plugins/columnSummary/utils.js +14 -0
  52. package/plugins/columnSummary/utils.mjs +9 -0
  53. package/plugins/contextMenu/commandExecutor.js +0 -4
  54. package/plugins/contextMenu/commandExecutor.mjs +0 -2
  55. package/plugins/contextMenu/contextMenu.js +5 -1
  56. package/plugins/contextMenu/contextMenu.mjs +5 -1
  57. package/plugins/contextMenu/menu.js +4 -0
  58. package/plugins/contextMenu/menu.mjs +4 -0
  59. package/plugins/copyPaste/copyPaste.js +2 -0
  60. package/plugins/copyPaste/copyPaste.mjs +2 -0
  61. package/plugins/dropdownMenu/dropdownMenu.js +4 -0
  62. package/plugins/dropdownMenu/dropdownMenu.mjs +4 -0
  63. package/plugins/filters/component/condition.js +11 -29
  64. package/plugins/filters/component/condition.mjs +6 -21
  65. package/plugins/filters/component/value.js +12 -5
  66. package/plugins/filters/component/value.mjs +12 -5
  67. package/plugins/filters/filters.d.ts +1 -1
  68. package/plugins/filters/filters.js +62 -82
  69. package/plugins/filters/filters.mjs +63 -83
  70. package/plugins/hiddenColumns/hiddenColumns.js +0 -4
  71. package/plugins/hiddenColumns/hiddenColumns.mjs +0 -2
  72. package/plugins/hiddenRows/hiddenRows.js +0 -4
  73. package/plugins/hiddenRows/hiddenRows.mjs +0 -2
  74. package/plugins/multiColumnSorting/domHelpers.js +2 -4
  75. package/plugins/multiColumnSorting/domHelpers.mjs +1 -2
  76. package/plugins/nestedRows/nestedRows.js +1 -1
  77. package/plugins/nestedRows/nestedRows.mjs +1 -1
  78. package/plugins/search/search.js +0 -2
  79. package/plugins/search/search.mjs +0 -1
  80. package/plugins/trimRows/trimRows.js +3 -3
  81. package/plugins/trimRows/trimRows.mjs +3 -3
  82. package/renderers/numericRenderer/numericRenderer.js +0 -2
  83. package/renderers/numericRenderer/numericRenderer.mjs +0 -1
  84. package/renderers/textRenderer/textRenderer.js +1 -1
  85. package/renderers/textRenderer/textRenderer.mjs +1 -1
  86. package/shortcuts/recorder.js +14 -10
  87. package/shortcuts/recorder.mjs +13 -10
  88. package/shortcuts/utils.js +0 -4
  89. package/shortcuts/utils.mjs +0 -2
  90. package/translations/indexMapper.js +2 -2
  91. package/translations/indexMapper.mjs +2 -2
  92. package/utils/sortingAlgorithms/mergeSort.js +0 -120
  93. package/utils/sortingAlgorithms/mergeSort.mjs +0 -110
@@ -101,10 +101,14 @@ export default (function () {
101
101
  *
102
102
  * You can set the `allowEmpty` option to one of the following:
103
103
  *
104
- * | Setting | Description |
105
- * | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
106
- * | `true` (default) | - Accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` and `''` values as `valid` |
107
- * | `false` | - Don't accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` and `''` values with as `invalid` |
104
+ * | Setting | Description |
105
+ * | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
106
+ * | `true` (default) | - Accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values as `valid` |
107
+ * | `false` | - Don't accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values with as `invalid` |
108
+ *
109
+ * ::: tip
110
+ * To use the [`allowEmpty`](#allowempty) option, you need to set the [`validator`](#validator) option (or the [`type`](#type) option).
111
+ * :::
108
112
  *
109
113
  * @memberof Options#
110
114
  * @type {boolean}
@@ -113,15 +117,15 @@ export default (function () {
113
117
  *
114
118
  * @example
115
119
  * ```js
116
- * // allow empty values in every cell of the entire grid
120
+ * // allow empty values in each cell of the entire grid
117
121
  * allowEmpty: true,
118
122
  *
119
123
  * // or
120
124
  * columns: [
121
125
  * {
122
- * data: 'date',
126
+ * type: 'date',
123
127
  * dateFormat: 'DD/MM/YYYY',
124
- * // allow empty values in every cell of the 'date' column
128
+ * // allow empty values in each cell of the 'date' column
125
129
  * allowEmpty: true
126
130
  * }
127
131
  * ],
@@ -157,7 +161,7 @@ export default (function () {
157
161
  * ```js
158
162
  * columns: [
159
163
  * {
160
- * // set the `type` of every cell in this column to `autocomplete`
164
+ * // set the `type` of each cell in this column to `autocomplete`
161
165
  * type: 'autocomplete',
162
166
  * // set options available in every `autocomplete` cell of this column
163
167
  * source: ['<strong>foo</strong>', '<strong>bar</strong>']
@@ -474,7 +478,7 @@ export default (function () {
474
478
 
475
479
  /**
476
480
  * @description
477
- * The `cells` option lets you apply [configuration options](@/guides/getting-started/setting-options.md) to
481
+ * The `cells` option lets you apply any other [configuration options](@/guides/getting-started/setting-options.md) to
478
482
  * individual grid elements (columns, rows, cells), based on any logic you implement.
479
483
  *
480
484
  * The `cells` option overwrites all other options (including options set by [`columns`](#columns) and [`cell`](#cell)).
@@ -540,13 +544,13 @@ export default (function () {
540
544
  * ```js
541
545
  * columns: [
542
546
  * {
543
- * // set the `type` of every cell in this column to `checkbox`
547
+ * // set the `type` of each cell in this column to `checkbox`
544
548
  * // when checked, the cell's value is `true`
545
549
  * // when unchecked, the cell's value is `false`
546
550
  * type: 'checkbox',
547
551
  * },
548
552
  * {
549
- * // set the `type` of every cell in this column to `checkbox`
553
+ * // set the `type` of each cell in this column to `checkbox`
550
554
  * type: 'checkbox',
551
555
  * // when checked, the cell's value is `'Yes'`
552
556
  * checkedTemplate: 'Yes',
@@ -700,7 +704,7 @@ export default (function () {
700
704
 
701
705
  /**
702
706
  * @description
703
- * The `columns` option lets you apply [configuration options](@/guides/getting-started/setting-options.md) to individual columns (or ranges of columns).
707
+ * The `columns` option lets you apply any other [configuration options](@/guides/getting-started/setting-options.md) to individual columns (or ranges of columns).
704
708
  *
705
709
  * You can set the `columns` option to one of the following:
706
710
  * - An array of objects (each object represents one column)
@@ -708,13 +712,14 @@ export default (function () {
708
712
  *
709
713
  * The `columns` option overwrites the [top-level grid options](@/guides/getting-started/setting-options.md#setting-grid-options).
710
714
  *
711
- * When you use the `columns` option, the [`startCols`](#startCols), [`minCols`](#minCols), and [`maxCols`](#maxCols) are ignored.
715
+ * When you use `columns`, the [`startCols`](#startCols), [`minCols`](#minCols), and [`maxCols`](#maxCols) options are ignored.
712
716
  *
713
717
  * Read more:
714
718
  * - [Configuration options: Setting column options](@/guides/getting-started/setting-options.md#setting-column-options)
715
719
  * - [`startCols`](#startCols)
716
720
  * - [`minCols`](#minCols)
717
721
  * - [`maxCols`](#maxCols)
722
+ * - [`data`](#data)
718
723
  *
719
724
  * @memberof Options#
720
725
  * @type {object[]|Function}
@@ -960,7 +965,7 @@ export default (function () {
960
965
  * @example
961
966
  * ```js
962
967
  * // add a `has-comment` CSS class name
963
- * // to every cell that has a comment
968
+ * // to each cell that has a comment
964
969
  * commentedCellClassName: 'has-comment',
965
970
  * ```
966
971
  */
@@ -1090,10 +1095,10 @@ export default (function () {
1090
1095
  *
1091
1096
  * You can set the `copyable` option to one of the following:
1092
1097
  *
1093
- * | Setting | Description |
1094
- * | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
1095
- * | `true` (default) | - Enable copying for this cell<br>- On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add the cell's value to the clipboard |
1096
- * | `false`<br>(default for the [`password`](@/guides/cell-types/password-cell-type.md) [cell type](#type)) | - Disable copying for this cell |
1098
+ * | Setting | Description |
1099
+ * | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
1100
+ * | `true` (default) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add the cell's value to the clipboard |
1101
+ * | `false`<br>(default for the [`password`](@/guides/cell-types/password-cell-type.md) [cell type](#type)) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add an empty string (`""`) to the clipboard |
1097
1102
  *
1098
1103
  * Read more:
1099
1104
  * - [Clipboard](@/guides/cell-features/clipboard.md)
@@ -1107,17 +1112,17 @@ export default (function () {
1107
1112
  *
1108
1113
  * @example
1109
1114
  * ```js
1110
- * // enable copying for every cell of the entire grid
1115
+ * // enable copying for each cell of the entire grid
1111
1116
  * copyable: true,
1112
1117
  *
1113
1118
  * // enable copying for individual columns
1114
1119
  * columns: [
1115
1120
  * {
1116
- * // enable copying for every cell of this column
1121
+ * // enable copying for each cell of this column
1117
1122
  * copyable: true
1118
1123
  * },
1119
1124
  * {
1120
- * // disable copying for every cell of this column
1125
+ * // disable copying for each cell of this column
1121
1126
  * copyable: false
1122
1127
  * }
1123
1128
  * ]
@@ -1185,15 +1190,21 @@ export default (function () {
1185
1190
  copyPaste: true,
1186
1191
 
1187
1192
  /**
1188
- * The `correctFormat` option configures what happens when the format of a date entered into a [`date`](@/guides/cell-types/date-cell-type.md) cell doesn't match the format specified by the [`dateFormat`](#dateFormat) option:
1193
+ * The `correctFormat` option configures whether incorrectly-formatted times and dates are amended or not.
1194
+ *
1195
+ * When the user enters dates and times, Handsontable can automatically adjust their format
1196
+ * to match the [`dateFormat`](#dateFormat) and [`timeFormat`](@/guides/cell-types/time-cell-type.md) settings.
1189
1197
  *
1190
- * | Setting | Description |
1191
- * | ----------------- | ---------------------------------------------------------------------------------- |
1192
- * | `false` (default) | Don't correct the entered date's format (treat the entered date as invalid) |
1193
- * | `true` | Correct the entered date's format to match the [`dateFormat`](#dateFormat) setting |
1198
+ * You can set the `correctFormat` option to one of the following:
1199
+ *
1200
+ * | Setting | Description |
1201
+ * | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
1202
+ * | `false` (default) | Don't correct the format of the entered date or time (treat the entered date or time as invalid) |
1203
+ * | `true` | Correct the format of the entered date or time to match the [`dateFormat`](#dateFormat) or [`timeFormat`](@/guides/cell-types/time-cell-type.md) settings |
1194
1204
  *
1195
1205
  * Read more:
1196
1206
  * - [Date cell type](@/guides/cell-types/date-cell-type.md)
1207
+ * - [Time cell type](@/guides/cell-types/time-cell-type.md)
1197
1208
  * - [`dateFormat`](#dateFormat)
1198
1209
  *
1199
1210
  * @memberof Options#
@@ -1205,13 +1216,22 @@ export default (function () {
1205
1216
  * ```js
1206
1217
  * columns: [
1207
1218
  * {
1208
- * // set the `type` of every cell in this column to `date`
1219
+ * // set the `type` of each cell in this column to `date`
1209
1220
  * type: 'date',
1210
1221
  * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1211
1222
  * dateFormat: 'YYYY-MM-DD',
1212
1223
  * // enforce the `YYYY-MM-DD` date format
1213
1224
  * correctFormat: true
1214
1225
  * },
1226
+ *
1227
+ * {
1228
+ * // set the `type` of each cell in this column to `time`
1229
+ * type: 'time',
1230
+ * // for every `time` cell of this column, set the time format to `h:mm:ss a`
1231
+ * timeFormat: 'h:mm:ss a',
1232
+ * // enforce the `h:mm:ss a` time format
1233
+ * correctFormat: true
1234
+ * },
1215
1235
  * ],
1216
1236
  * ```
1217
1237
  */
@@ -1219,7 +1239,7 @@ export default (function () {
1219
1239
 
1220
1240
  /**
1221
1241
  * The `currentColClassName` option lets you add a CSS class name
1222
- * to every cell of the currently-visible, currently-selected columns.
1242
+ * to each cell of the currently-visible, currently-selected columns.
1223
1243
  *
1224
1244
  * Read more:
1225
1245
  * - [`currentRowClassName`](#currentRowClassName)
@@ -1241,7 +1261,7 @@ export default (function () {
1241
1261
  * @example
1242
1262
  * ```js
1243
1263
  * // add a `your-class-name` CSS class name
1244
- * // to every cell of the currently-visible, currently-selected columns
1264
+ * // to each cell of the currently-visible, currently-selected columns
1245
1265
  * currentColClassName: 'your-class-name',
1246
1266
  * ```
1247
1267
  */
@@ -1278,7 +1298,7 @@ export default (function () {
1278
1298
 
1279
1299
  /**
1280
1300
  * The `currentRowClassName` option lets you add a CSS class name
1281
- * to every cell of the currently-visible, currently-selected rows.
1301
+ * to each cell of the currently-visible, currently-selected rows.
1282
1302
  *
1283
1303
  * Read more:
1284
1304
  * - [`currentColClassName`](#currentColClassName)
@@ -1300,7 +1320,7 @@ export default (function () {
1300
1320
  * @example
1301
1321
  * ```js
1302
1322
  * // add a `your-class-name` CSS class name
1303
- * // to every cell of the currently-visible, currently-selected rows
1323
+ * // to each cell of the currently-visible, currently-selected rows
1304
1324
  * currentRowClassName: 'your-class-name',
1305
1325
  * ```
1306
1326
  */
@@ -1429,9 +1449,13 @@ export default (function () {
1429
1449
  * - Either to an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
1430
1450
  * - Or to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects).
1431
1451
  *
1452
+ * If you don't set the `data` option (or set it to `null`), Handsontable renders as an empty 5x5 grid by default.
1453
+ *
1432
1454
  * Read more:
1433
1455
  * - [Binding to data](@/guides/getting-started/binding-to-data.md)
1434
1456
  * - [`dataSchema`](#dataSchema)
1457
+ * - [`startRows`](#startRows)
1458
+ * - [`startCols`](#startCols)
1435
1459
  *
1436
1460
  * @memberof Options#
1437
1461
  * @type {Array[]|object[]}
@@ -1461,15 +1485,22 @@ export default (function () {
1461
1485
 
1462
1486
  /**
1463
1487
  * @description
1464
- * If the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects)
1488
+ * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects)
1465
1489
  * (or is empty), the `dataSchema` option defines the structure of new rows.
1466
1490
  *
1491
+ * Using the `dataSchema` option, you can start out with an empty grid.
1492
+ *
1493
+ * You can set the `dataSchema` option to one of the following:
1494
+ * - An object
1495
+ * - A function
1496
+ *
1467
1497
  * Read more:
1468
1498
  * - [Binding to data: Array of objects with custom data schema](@/guides/getting-started/binding-to-data.md#array-of-objects-with-custom-data-schema)
1499
+ * - [Binding to data: Function data source and schema](@/guides/getting-started/binding-to-data.md#function-data-source-and-schema)
1469
1500
  * - [`data`](#data)
1470
1501
  *
1471
1502
  * @memberof Options#
1472
- * @type {object}
1503
+ * @type {object|Function}
1473
1504
  * @default undefined
1474
1505
  * @category Core
1475
1506
  *
@@ -1512,7 +1543,7 @@ export default (function () {
1512
1543
  * ```js
1513
1544
  * columns: [
1514
1545
  * {
1515
- * // set the `type` of every cell in this column to `date`
1546
+ * // set the `type` of each cell in this column to `date`
1516
1547
  * type: 'date',
1517
1548
  * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1518
1549
  * dateFormat: 'YYYY-MM-DD',
@@ -1523,16 +1554,16 @@ export default (function () {
1523
1554
  dateFormat: 'DD/MM/YYYY',
1524
1555
 
1525
1556
  /**
1526
- * The `datePickerConfig` option configures the `date` [cell editor](@/guides/cell-functions/cell-editor.md)'s date picker, which uses an external dependency: [Pikaday](https://github.com/Pikaday/Pikaday/tree/1.8.0).
1557
+ * The `datePickerConfig` option configures the `date` [cell editor](@/guides/cell-functions/cell-editor.md)'s date picker, which uses an external dependency: [Pikaday](https://github.com/Pikaday/Pikaday/tree/1.8.2).
1527
1558
  *
1528
- * You can set the `datePickerConfig` option to an object with any of the available [Pikaday options](https://github.com/Pikaday/Pikaday/tree/1.8.0#configuration),
1559
+ * You can set the `datePickerConfig` option to an object with any of the available [Pikaday options](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration),
1529
1560
  * except for the following, which are always overwritten by the `date` [cell editor](@/guides/cell-functions/cell-editor.md):
1530
1561
  * - `bound`
1531
1562
  * - `container`
1532
1563
  * - `field`
1533
1564
  * - `trigger`
1534
1565
  *
1535
- * If the `datePickerConfig` option is not defined, the `date` [cell editor](@/guides/cell-functions/cell-editor.md) overwrites the following [Pikaday options](https://github.com/Pikaday/Pikaday/tree/1.8.0#configuration) as well:
1566
+ * If the `datePickerConfig` option is not defined, the `date` [cell editor](@/guides/cell-functions/cell-editor.md) overwrites the following [Pikaday options](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration) as well:
1536
1567
  *
1537
1568
  * | Pikaday option | Handsontable's setting |
1538
1569
  * | -------------------- | ---------------------- |
@@ -1543,7 +1574,7 @@ export default (function () {
1543
1574
  * - [`editor`](#editor)
1544
1575
  * - [`dateFormat`](#dateFormat)
1545
1576
  * - [Cell editor](@/guides/cell-functions/cell-editor.md)
1546
- * - [All Pikaday options &#8594;](https://github.com/Pikaday/Pikaday/tree/1.8.0#configuration)
1577
+ * - [All Pikaday options &#8594;](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration)
1547
1578
  *
1548
1579
  * @memberof Options#
1549
1580
  * @type {object}
@@ -1571,7 +1602,7 @@ export default (function () {
1571
1602
  * ```js
1572
1603
  * columns: [
1573
1604
  * {
1574
- * // set the `type` of every cell in this column to `date`
1605
+ * // set the `type` of each cell in this column to `date`
1575
1606
  * type: 'date',
1576
1607
  * // in every empty `date` cell of this column, display `2015-02-02`
1577
1608
  * defaultDate: '2015-02-02'
@@ -1752,17 +1783,17 @@ export default (function () {
1752
1783
  *
1753
1784
  * @example
1754
1785
  * ```js
1755
- * // use the `numeric` editor for every cell of the entire grid
1786
+ * // use the `numeric` editor for each cell of the entire grid
1756
1787
  * editor: 'numeric',
1757
1788
  *
1758
1789
  * // apply the `editor` option to individual columns
1759
1790
  * columns: [
1760
1791
  * {
1761
- * // use the `autocomplete` editor for every cell of this column
1792
+ * // use the `autocomplete` editor for each cell of this column
1762
1793
  * editor: 'autocomplete'
1763
1794
  * },
1764
1795
  * {
1765
- * // disable editing cells through cell editors for every cell of this column
1796
+ * // disable editing cells through cell editors for each cell of this column
1766
1797
  * editor: false
1767
1798
  * }
1768
1799
  * ]
@@ -1928,7 +1959,7 @@ export default (function () {
1928
1959
  * @example
1929
1960
  * ```js
1930
1961
  * columns: [{
1931
- * // set the `type` of every cell in this column to `autocomplete`
1962
+ * // set the `type` of each cell in this column to `autocomplete`
1932
1963
  * type: 'autocomplete',
1933
1964
  * // set options available in every `autocomplete` cell of this column
1934
1965
  * source: ['A', 'B', 'C'],
@@ -3133,7 +3164,7 @@ export default (function () {
3133
3164
 
3134
3165
  /**
3135
3166
  * The `noWordWrapClassName` option lets you add a CSS class name
3136
- * to every cell that has the [`wordWrap`](#wordWrap) option set to `false`.
3167
+ * to each cell that has the [`wordWrap`](#wordWrap) option set to `false`.
3137
3168
  *
3138
3169
  * Read more:
3139
3170
  * - [`wordWrap`](#wordWrap)
@@ -3155,7 +3186,7 @@ export default (function () {
3155
3186
  * @example
3156
3187
  * ```js
3157
3188
  * // add an `is-noWrapCell` CSS class name
3158
- * // to every cell that doesn't wrap content
3189
+ * // to each cell that doesn't wrap content
3159
3190
  * noWordWrapClassName: 'is-noWrapCell',
3160
3191
  * ```
3161
3192
  */
@@ -3163,7 +3194,8 @@ export default (function () {
3163
3194
 
3164
3195
  /**
3165
3196
  * The `numericFormat` option configures the number format and the currency format
3166
- * of [`numeric`](@/guides/cell-types/numeric-cell-type.md) cells` displayed output.
3197
+ * of [`numeric`](@/guides/cell-types/numeric-cell-type.md) cells` displayed output
3198
+ * in the numeric cell renderer.
3167
3199
  *
3168
3200
  * You can set the `numericFormat` option to an object with the following properties:
3169
3201
  *
@@ -3172,10 +3204,7 @@ export default (function () {
3172
3204
  * | `pattern` | All [`numbro.js` number formats](https://numbrojs.com/format.html#numbers) | Number format |
3173
3205
  * | `culture` | All [`numbro.js` currency formats](https://numbrojs.com/format.html#currency) | Currency format |
3174
3206
  *
3175
- * The `numericFormat` option as no effect on cells' input data.
3176
- * To enter numeric data into Handsontable, use:
3177
- * - Either floats (separated by a dot, or a comma)
3178
- * - Or integers
3207
+ * The `numericFormat` option as no effect on the numeric cell editor.
3179
3208
  *
3180
3209
  * In the source data, numeric data is stored as JavaScript numbers.
3181
3210
  *
@@ -3193,7 +3222,7 @@ export default (function () {
3193
3222
  * ```js
3194
3223
  * columns: [
3195
3224
  * {
3196
- * // set the `type` of every cell in this column to `numeric`
3225
+ * // set the `type` of each cell in this column to `numeric`
3197
3226
  * type: 'numeric',
3198
3227
  * // set the `numericFormat` option for every `numeric` cell of this column
3199
3228
  * numericFormat: {
@@ -3354,7 +3383,7 @@ export default (function () {
3354
3383
  * @example
3355
3384
  * ```js
3356
3385
  * // add a `has-placeholder` CSS class name
3357
- * // to every cell that contains `placeholder` text
3386
+ * // to each cell that contains `placeholder` text
3358
3387
  * placeholderCellClassName: 'has-placeholder',
3359
3388
  * ```
3360
3389
  */
@@ -3421,6 +3450,8 @@ export default (function () {
3421
3450
  * | `false` (default) | Set as editable |
3422
3451
  * | `true` | - Set as read-only<br>- Add the [`readOnlyCellClassName`](#readOnlyCellClassName) CSS class name (by default: `htDimmed`) |
3423
3452
  *
3453
+ * `readOnly` cells can't be changed by the [`populateFromArray()`](@/api/core.md#populatefromarray) method.
3454
+ *
3424
3455
  * Read more:
3425
3456
  * - [Configuration options: Cascading configuration](@/guides/getting-started/setting-options.md#cascading-configuration)
3426
3457
  *
@@ -3530,7 +3561,7 @@ export default (function () {
3530
3561
  *
3531
3562
  * @example
3532
3563
  * ```js
3533
- * // use the `numeric` renderer for every cell of the entire grid
3564
+ * // use the `numeric` renderer for each cell of the entire grid
3534
3565
  * renderer: `'numeric'`,
3535
3566
  *
3536
3567
  * // add a custom renderer function
@@ -3542,11 +3573,11 @@ export default (function () {
3542
3573
  * // apply the `renderer` option to individual columns
3543
3574
  * columns: [
3544
3575
  * {
3545
- * // use the `autocomplete` renderer for every cell of this column
3576
+ * // use the `autocomplete` renderer for each cell of this column
3546
3577
  * renderer: 'autocomplete'
3547
3578
  * },
3548
3579
  * {
3549
- * // use the `myCustomRenderer` renderer for every cell of this column
3580
+ * // use the `myCustomRenderer` renderer for each cell of this column
3550
3581
  * renderer: 'myCustomRenderer'
3551
3582
  * }
3552
3583
  * ]
@@ -3773,7 +3804,7 @@ export default (function () {
3773
3804
  * ```js
3774
3805
  * columns: [
3775
3806
  * {
3776
- * // set the `type` of every cell in this column to `select`
3807
+ * // set the `type` of each cell in this column to `select`
3777
3808
  * type: 'select',
3778
3809
  * // set the first option's value and label to `A`
3779
3810
  * // set the second option's value and label to `B`
@@ -3781,7 +3812,7 @@ export default (function () {
3781
3812
  * selectOptions: ['A', 'B', 'C'],
3782
3813
  * },
3783
3814
  * {
3784
- * // set the `type` of every cell in this column to `select`
3815
+ * // set the `type` of each cell in this column to `select`
3785
3816
  * type: 'select',
3786
3817
  * selectOptions: {
3787
3818
  * // set the first option's value to `value1` and label to `Label 1`
@@ -3793,7 +3824,7 @@ export default (function () {
3793
3824
  * },
3794
3825
  * },
3795
3826
  * {
3796
- * // set the `type` of every cell in this column to `select`
3827
+ * // set the `type` of each cell in this column to `select`
3797
3828
  * type: 'select',
3798
3829
  * // set `selectOption` to a function that returns available options as an object
3799
3830
  * selectOptions(visualRow, visualColumn, prop) {
@@ -3902,7 +3933,7 @@ export default (function () {
3902
3933
  * @example
3903
3934
  * ```js
3904
3935
  * columns: [{
3905
- * // set the `type` of every cell in this column to `autocomplete`
3936
+ * // set the `type` of each cell in this column to `autocomplete`
3906
3937
  * type: 'autocomplete',
3907
3938
  * // set options available in every `autocomplete` cell of this column
3908
3939
  * source: ['D', 'C', 'B', 'A'],
@@ -3939,7 +3970,7 @@ export default (function () {
3939
3970
  * ```js
3940
3971
  * // set `source` to an array
3941
3972
  * columns: [{
3942
- * // set the `type` of every cell in this column to `autocomplete`
3973
+ * // set the `type` of each cell in this column to `autocomplete`
3943
3974
  * type: 'autocomplete',
3944
3975
  * // set options available in every `autocomplete` cell of this column
3945
3976
  * source: ['A', 'B', 'C', 'D']
@@ -3947,7 +3978,7 @@ export default (function () {
3947
3978
  *
3948
3979
  * // set `source` to a function
3949
3980
  * columns: [{
3950
- * // set the `type` of every cell in this column to `autocomplete`
3981
+ * // set the `type` of each cell in this column to `autocomplete`
3951
3982
  * type: 'autocomplete',
3952
3983
  * // for every `autocomplete` cell in this column, fetch data from an external source
3953
3984
  * source(query, callback) {
@@ -4051,7 +4082,7 @@ export default (function () {
4051
4082
  * ```js
4052
4083
  * columns: [
4053
4084
  * {
4054
- * // set the `type` of every cell in this column to `autocomplete`
4085
+ * // set the `type` of each cell in this column to `autocomplete`
4055
4086
  * type: 'autocomplete',
4056
4087
  * // set options available in every `autocomplete` cell of this column
4057
4088
  * source: ['A', 'B', 'C'],
@@ -4197,13 +4228,13 @@ export default (function () {
4197
4228
  * columns: [
4198
4229
  * {
4199
4230
  * type: 'autocomplete',
4200
- * // for every cell of this column
4231
+ * // for each cell of this column
4201
4232
  * // make the `autocomplete` list's width the same as the edited cell's width
4202
4233
  * trimDropdown: true,
4203
4234
  * },
4204
4235
  * {
4205
4236
  * type: 'dropdown',
4206
- * // for every cell of this column
4237
+ * // for each cell of this column
4207
4238
  * // scale the `dropdown` list's width to the list's content
4208
4239
  * trimDropdown: false,
4209
4240
  * }
@@ -4218,11 +4249,11 @@ export default (function () {
4218
4249
  *
4219
4250
  * You can set the `trimRows` option to one of the following:
4220
4251
  *
4221
- * | Setting | Description |
4222
- * | -------- | --------------------------------------------------------------------------------------------- |
4223
- * | `false` | Disable the [`TrimRows`](@/api/trimRows.md) plugin |
4224
- * | `true` | Enable the [`TrimRows`](@/api/trimRows.md) plugin |
4225
- * | An array | - Enable the [`TrimRows`](@/api/trimRows.md) plugin<br>- Trim selected rows at initialization |
4252
+ * | Setting | Description |
4253
+ * | -------------------------------- | --------------------------------------------------------------------------------------------- |
4254
+ * | `false` | Disable the [`TrimRows`](@/api/trimRows.md) plugin |
4255
+ * | `true` | Enable the [`TrimRows`](@/api/trimRows.md) plugin |
4256
+ * | An array of physical row indexes | - Enable the [`TrimRows`](@/api/trimRows.md) plugin<br>- Trim selected rows at initialization |
4226
4257
  *
4227
4258
  * Read more:
4228
4259
  * - [Plugins: `TrimRows`](@/api/trimRows.md)
@@ -4239,23 +4270,24 @@ export default (function () {
4239
4270
  * trimRows: true,
4240
4271
  *
4241
4272
  * // enable the `TrimRows` plugin
4242
- * // trim rows 5, 10, and 15 at Handsontable's initialization
4273
+ * // at Handsontable's initialization, trim rows 5, 10, and 15
4243
4274
  * trimRows: [5, 10, 15],
4244
4275
  * ```
4245
4276
  */
4246
4277
  trimRows: void 0,
4247
4278
 
4248
4279
  /**
4249
- * The `trimWhitespace` option configures automatic whitespace removal.
4280
+ * The `trimWhitespace` option configures automatic whitespace removal. This option
4281
+ * affects the cell renderer and the cell editor.
4250
4282
  *
4251
4283
  * You can set the `trimWhitespace` option to one of the following:
4252
4284
  *
4253
4285
  * | Setting | Description |
4254
4286
  * | ---------------- | --------------------------------------------------------------- |
4255
- * | `true` (default) | Remove whitespace at the beginning and at the end of every cell |
4287
+ * | `true` (default) | Remove whitespace at the beginning and at the end of each cell |
4256
4288
  * | `false` | Don't remove whitespace |
4257
4289
  *
4258
- * @memberof Options#tr
4290
+ * @memberof Options#
4259
4291
  * @type {boolean}
4260
4292
  * @default true
4261
4293
  * @category Core
@@ -4310,17 +4342,17 @@ export default (function () {
4310
4342
  *
4311
4343
  * @example
4312
4344
  * ```js
4313
- * // use the `numeric` cell type for every cell of the entire grid
4345
+ * // set the `numeric` cell type for each cell of the entire grid
4314
4346
  * type: `'numeric'`,
4315
4347
  *
4316
4348
  * // apply the `type` option to individual columns
4317
4349
  * columns: [
4318
4350
  * {
4319
- * // use the `autocomplete` cell type for every cell of this column
4351
+ * // set the `autocomplete` cell type for each cell of this column
4320
4352
  * type: 'autocomplete'
4321
4353
  * },
4322
4354
  * {
4323
- * // use the `myCustomCellType` cell type for every cell of this column
4355
+ * // set the `myCustomCellType` cell type for each cell of this column
4324
4356
  * type: 'myCustomCellType'
4325
4357
  * }
4326
4358
  * ]
@@ -4353,13 +4385,13 @@ export default (function () {
4353
4385
  * ```js
4354
4386
  * columns: [
4355
4387
  * {
4356
- * // set the `type` of every cell in this column to `checkbox`
4388
+ * // set the `type` of each cell in this column to `checkbox`
4357
4389
  * // when unchecked, the cell's value is `false`
4358
4390
  * // when checked, the cell's value is `true`
4359
4391
  * type: 'checkbox',
4360
4392
  * },
4361
4393
  * {
4362
- * // set the `type` of every cell in this column to `checkbox`
4394
+ * // set the `type` of each cell in this column to `checkbox`
4363
4395
  * // when unchecked, the cell's value is `'No'`
4364
4396
  * // when checked, the cell's value is `'Yes'`
4365
4397
  * type: 'checkbox',
@@ -4540,13 +4572,13 @@ export default (function () {
4540
4572
  * {
4541
4573
  * type: 'autocomplete',
4542
4574
  * // set the `autocomplete` list's height to 15 options
4543
- * // for every cell of this column
4575
+ * // for each cell of this column
4544
4576
  * visibleRows: 15,
4545
4577
  * },
4546
4578
  * {
4547
4579
  * type: 'dropdown',
4548
4580
  * // set the `dropdown` list's height to 5 options
4549
- * // for every cell of this column
4581
+ * // for each cell of this column
4550
4582
  * visibleRows: 5,
4551
4583
  * }
4552
4584
  * ],
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 12.1.1
29
- * Release date: 05/07/2022 (built at 05/07/2022 15:06:46)
28
+ * Version: 12.1.3
29
+ * Release date: 22/09/2022 (built at 22/09/2022 09:54:40)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 12.1.1
29
- * Release date: 05/07/2022 (built at 05/07/2022 15:06:46)
28
+ * Version: 12.1.3
29
+ * Release date: 22/09/2022 (built at 22/09/2022 09:54:40)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles