handsontable 12.1.2 → 12.1.3

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 (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 +27 -4
  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 +40800 -57808
  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 +1 -1
  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
@@ -113,10 +113,14 @@ var _default = function _default() {
113
113
  *
114
114
  * You can set the `allowEmpty` option to one of the following:
115
115
  *
116
- * | Setting | Description |
117
- * | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
118
- * | `true` (default) | - Accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` and `''` values as `valid` |
119
- * | `false` | - Don't accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` and `''` values with as `invalid` |
116
+ * | Setting | Description |
117
+ * | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
118
+ * | `true` (default) | - Accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values as `valid` |
119
+ * | `false` | - Don't accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values with as `invalid` |
120
+ *
121
+ * ::: tip
122
+ * To use the [`allowEmpty`](#allowempty) option, you need to set the [`validator`](#validator) option (or the [`type`](#type) option).
123
+ * :::
120
124
  *
121
125
  * @memberof Options#
122
126
  * @type {boolean}
@@ -125,15 +129,15 @@ var _default = function _default() {
125
129
  *
126
130
  * @example
127
131
  * ```js
128
- * // allow empty values in every cell of the entire grid
132
+ * // allow empty values in each cell of the entire grid
129
133
  * allowEmpty: true,
130
134
  *
131
135
  * // or
132
136
  * columns: [
133
137
  * {
134
- * data: 'date',
138
+ * type: 'date',
135
139
  * dateFormat: 'DD/MM/YYYY',
136
- * // allow empty values in every cell of the 'date' column
140
+ * // allow empty values in each cell of the 'date' column
137
141
  * allowEmpty: true
138
142
  * }
139
143
  * ],
@@ -169,7 +173,7 @@ var _default = function _default() {
169
173
  * ```js
170
174
  * columns: [
171
175
  * {
172
- * // set the `type` of every cell in this column to `autocomplete`
176
+ * // set the `type` of each cell in this column to `autocomplete`
173
177
  * type: 'autocomplete',
174
178
  * // set options available in every `autocomplete` cell of this column
175
179
  * source: ['<strong>foo</strong>', '<strong>bar</strong>']
@@ -486,7 +490,7 @@ var _default = function _default() {
486
490
 
487
491
  /**
488
492
  * @description
489
- * The `cells` option lets you apply [configuration options](@/guides/getting-started/setting-options.md) to
493
+ * The `cells` option lets you apply any other [configuration options](@/guides/getting-started/setting-options.md) to
490
494
  * individual grid elements (columns, rows, cells), based on any logic you implement.
491
495
  *
492
496
  * The `cells` option overwrites all other options (including options set by [`columns`](#columns) and [`cell`](#cell)).
@@ -552,13 +556,13 @@ var _default = function _default() {
552
556
  * ```js
553
557
  * columns: [
554
558
  * {
555
- * // set the `type` of every cell in this column to `checkbox`
559
+ * // set the `type` of each cell in this column to `checkbox`
556
560
  * // when checked, the cell's value is `true`
557
561
  * // when unchecked, the cell's value is `false`
558
562
  * type: 'checkbox',
559
563
  * },
560
564
  * {
561
- * // set the `type` of every cell in this column to `checkbox`
565
+ * // set the `type` of each cell in this column to `checkbox`
562
566
  * type: 'checkbox',
563
567
  * // when checked, the cell's value is `'Yes'`
564
568
  * checkedTemplate: 'Yes',
@@ -712,7 +716,7 @@ var _default = function _default() {
712
716
 
713
717
  /**
714
718
  * @description
715
- * The `columns` option lets you apply [configuration options](@/guides/getting-started/setting-options.md) to individual columns (or ranges of columns).
719
+ * The `columns` option lets you apply any other [configuration options](@/guides/getting-started/setting-options.md) to individual columns (or ranges of columns).
716
720
  *
717
721
  * You can set the `columns` option to one of the following:
718
722
  * - An array of objects (each object represents one column)
@@ -720,13 +724,14 @@ var _default = function _default() {
720
724
  *
721
725
  * The `columns` option overwrites the [top-level grid options](@/guides/getting-started/setting-options.md#setting-grid-options).
722
726
  *
723
- * When you use the `columns` option, the [`startCols`](#startCols), [`minCols`](#minCols), and [`maxCols`](#maxCols) are ignored.
727
+ * When you use `columns`, the [`startCols`](#startCols), [`minCols`](#minCols), and [`maxCols`](#maxCols) options are ignored.
724
728
  *
725
729
  * Read more:
726
730
  * - [Configuration options: Setting column options](@/guides/getting-started/setting-options.md#setting-column-options)
727
731
  * - [`startCols`](#startCols)
728
732
  * - [`minCols`](#minCols)
729
733
  * - [`maxCols`](#maxCols)
734
+ * - [`data`](#data)
730
735
  *
731
736
  * @memberof Options#
732
737
  * @type {object[]|Function}
@@ -972,7 +977,7 @@ var _default = function _default() {
972
977
  * @example
973
978
  * ```js
974
979
  * // add a `has-comment` CSS class name
975
- * // to every cell that has a comment
980
+ * // to each cell that has a comment
976
981
  * commentedCellClassName: 'has-comment',
977
982
  * ```
978
983
  */
@@ -1102,10 +1107,10 @@ var _default = function _default() {
1102
1107
  *
1103
1108
  * You can set the `copyable` option to one of the following:
1104
1109
  *
1105
- * | Setting | Description |
1106
- * | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
1107
- * | `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 |
1108
- * | `false`<br>(default for the [`password`](@/guides/cell-types/password-cell-type.md) [cell type](#type)) | - Disable copying for this cell |
1110
+ * | Setting | Description |
1111
+ * | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
1112
+ * | `true` (default) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add the cell's value to the clipboard |
1113
+ * | `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 |
1109
1114
  *
1110
1115
  * Read more:
1111
1116
  * - [Clipboard](@/guides/cell-features/clipboard.md)
@@ -1119,17 +1124,17 @@ var _default = function _default() {
1119
1124
  *
1120
1125
  * @example
1121
1126
  * ```js
1122
- * // enable copying for every cell of the entire grid
1127
+ * // enable copying for each cell of the entire grid
1123
1128
  * copyable: true,
1124
1129
  *
1125
1130
  * // enable copying for individual columns
1126
1131
  * columns: [
1127
1132
  * {
1128
- * // enable copying for every cell of this column
1133
+ * // enable copying for each cell of this column
1129
1134
  * copyable: true
1130
1135
  * },
1131
1136
  * {
1132
- * // disable copying for every cell of this column
1137
+ * // disable copying for each cell of this column
1133
1138
  * copyable: false
1134
1139
  * }
1135
1140
  * ]
@@ -1197,15 +1202,21 @@ var _default = function _default() {
1197
1202
  copyPaste: true,
1198
1203
 
1199
1204
  /**
1200
- * 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:
1205
+ * The `correctFormat` option configures whether incorrectly-formatted times and dates are amended or not.
1206
+ *
1207
+ * When the user enters dates and times, Handsontable can automatically adjust their format
1208
+ * to match the [`dateFormat`](#dateFormat) and [`timeFormat`](@/guides/cell-types/time-cell-type.md) settings.
1201
1209
  *
1202
- * | Setting | Description |
1203
- * | ----------------- | ---------------------------------------------------------------------------------- |
1204
- * | `false` (default) | Don't correct the entered date's format (treat the entered date as invalid) |
1205
- * | `true` | Correct the entered date's format to match the [`dateFormat`](#dateFormat) setting |
1210
+ * You can set the `correctFormat` option to one of the following:
1211
+ *
1212
+ * | Setting | Description |
1213
+ * | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
1214
+ * | `false` (default) | Don't correct the format of the entered date or time (treat the entered date or time as invalid) |
1215
+ * | `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 |
1206
1216
  *
1207
1217
  * Read more:
1208
1218
  * - [Date cell type](@/guides/cell-types/date-cell-type.md)
1219
+ * - [Time cell type](@/guides/cell-types/time-cell-type.md)
1209
1220
  * - [`dateFormat`](#dateFormat)
1210
1221
  *
1211
1222
  * @memberof Options#
@@ -1217,13 +1228,22 @@ var _default = function _default() {
1217
1228
  * ```js
1218
1229
  * columns: [
1219
1230
  * {
1220
- * // set the `type` of every cell in this column to `date`
1231
+ * // set the `type` of each cell in this column to `date`
1221
1232
  * type: 'date',
1222
1233
  * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1223
1234
  * dateFormat: 'YYYY-MM-DD',
1224
1235
  * // enforce the `YYYY-MM-DD` date format
1225
1236
  * correctFormat: true
1226
1237
  * },
1238
+ *
1239
+ * {
1240
+ * // set the `type` of each cell in this column to `time`
1241
+ * type: 'time',
1242
+ * // for every `time` cell of this column, set the time format to `h:mm:ss a`
1243
+ * timeFormat: 'h:mm:ss a',
1244
+ * // enforce the `h:mm:ss a` time format
1245
+ * correctFormat: true
1246
+ * },
1227
1247
  * ],
1228
1248
  * ```
1229
1249
  */
@@ -1231,7 +1251,7 @@ var _default = function _default() {
1231
1251
 
1232
1252
  /**
1233
1253
  * The `currentColClassName` option lets you add a CSS class name
1234
- * to every cell of the currently-visible, currently-selected columns.
1254
+ * to each cell of the currently-visible, currently-selected columns.
1235
1255
  *
1236
1256
  * Read more:
1237
1257
  * - [`currentRowClassName`](#currentRowClassName)
@@ -1253,7 +1273,7 @@ var _default = function _default() {
1253
1273
  * @example
1254
1274
  * ```js
1255
1275
  * // add a `your-class-name` CSS class name
1256
- * // to every cell of the currently-visible, currently-selected columns
1276
+ * // to each cell of the currently-visible, currently-selected columns
1257
1277
  * currentColClassName: 'your-class-name',
1258
1278
  * ```
1259
1279
  */
@@ -1290,7 +1310,7 @@ var _default = function _default() {
1290
1310
 
1291
1311
  /**
1292
1312
  * The `currentRowClassName` option lets you add a CSS class name
1293
- * to every cell of the currently-visible, currently-selected rows.
1313
+ * to each cell of the currently-visible, currently-selected rows.
1294
1314
  *
1295
1315
  * Read more:
1296
1316
  * - [`currentColClassName`](#currentColClassName)
@@ -1312,7 +1332,7 @@ var _default = function _default() {
1312
1332
  * @example
1313
1333
  * ```js
1314
1334
  * // add a `your-class-name` CSS class name
1315
- * // to every cell of the currently-visible, currently-selected rows
1335
+ * // to each cell of the currently-visible, currently-selected rows
1316
1336
  * currentRowClassName: 'your-class-name',
1317
1337
  * ```
1318
1338
  */
@@ -1441,9 +1461,13 @@ var _default = function _default() {
1441
1461
  * - Either to an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
1442
1462
  * - Or to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects).
1443
1463
  *
1464
+ * If you don't set the `data` option (or set it to `null`), Handsontable renders as an empty 5x5 grid by default.
1465
+ *
1444
1466
  * Read more:
1445
1467
  * - [Binding to data](@/guides/getting-started/binding-to-data.md)
1446
1468
  * - [`dataSchema`](#dataSchema)
1469
+ * - [`startRows`](#startRows)
1470
+ * - [`startCols`](#startCols)
1447
1471
  *
1448
1472
  * @memberof Options#
1449
1473
  * @type {Array[]|object[]}
@@ -1473,15 +1497,22 @@ var _default = function _default() {
1473
1497
 
1474
1498
  /**
1475
1499
  * @description
1476
- * If the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects)
1500
+ * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects)
1477
1501
  * (or is empty), the `dataSchema` option defines the structure of new rows.
1478
1502
  *
1503
+ * Using the `dataSchema` option, you can start out with an empty grid.
1504
+ *
1505
+ * You can set the `dataSchema` option to one of the following:
1506
+ * - An object
1507
+ * - A function
1508
+ *
1479
1509
  * Read more:
1480
1510
  * - [Binding to data: Array of objects with custom data schema](@/guides/getting-started/binding-to-data.md#array-of-objects-with-custom-data-schema)
1511
+ * - [Binding to data: Function data source and schema](@/guides/getting-started/binding-to-data.md#function-data-source-and-schema)
1481
1512
  * - [`data`](#data)
1482
1513
  *
1483
1514
  * @memberof Options#
1484
- * @type {object}
1515
+ * @type {object|Function}
1485
1516
  * @default undefined
1486
1517
  * @category Core
1487
1518
  *
@@ -1524,7 +1555,7 @@ var _default = function _default() {
1524
1555
  * ```js
1525
1556
  * columns: [
1526
1557
  * {
1527
- * // set the `type` of every cell in this column to `date`
1558
+ * // set the `type` of each cell in this column to `date`
1528
1559
  * type: 'date',
1529
1560
  * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1530
1561
  * dateFormat: 'YYYY-MM-DD',
@@ -1535,16 +1566,16 @@ var _default = function _default() {
1535
1566
  dateFormat: 'DD/MM/YYYY',
1536
1567
 
1537
1568
  /**
1538
- * 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).
1569
+ * 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).
1539
1570
  *
1540
- * 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),
1571
+ * 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),
1541
1572
  * except for the following, which are always overwritten by the `date` [cell editor](@/guides/cell-functions/cell-editor.md):
1542
1573
  * - `bound`
1543
1574
  * - `container`
1544
1575
  * - `field`
1545
1576
  * - `trigger`
1546
1577
  *
1547
- * 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:
1578
+ * 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:
1548
1579
  *
1549
1580
  * | Pikaday option | Handsontable's setting |
1550
1581
  * | -------------------- | ---------------------- |
@@ -1555,7 +1586,7 @@ var _default = function _default() {
1555
1586
  * - [`editor`](#editor)
1556
1587
  * - [`dateFormat`](#dateFormat)
1557
1588
  * - [Cell editor](@/guides/cell-functions/cell-editor.md)
1558
- * - [All Pikaday options &#8594;](https://github.com/Pikaday/Pikaday/tree/1.8.0#configuration)
1589
+ * - [All Pikaday options &#8594;](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration)
1559
1590
  *
1560
1591
  * @memberof Options#
1561
1592
  * @type {object}
@@ -1583,7 +1614,7 @@ var _default = function _default() {
1583
1614
  * ```js
1584
1615
  * columns: [
1585
1616
  * {
1586
- * // set the `type` of every cell in this column to `date`
1617
+ * // set the `type` of each cell in this column to `date`
1587
1618
  * type: 'date',
1588
1619
  * // in every empty `date` cell of this column, display `2015-02-02`
1589
1620
  * defaultDate: '2015-02-02'
@@ -1764,17 +1795,17 @@ var _default = function _default() {
1764
1795
  *
1765
1796
  * @example
1766
1797
  * ```js
1767
- * // use the `numeric` editor for every cell of the entire grid
1798
+ * // use the `numeric` editor for each cell of the entire grid
1768
1799
  * editor: 'numeric',
1769
1800
  *
1770
1801
  * // apply the `editor` option to individual columns
1771
1802
  * columns: [
1772
1803
  * {
1773
- * // use the `autocomplete` editor for every cell of this column
1804
+ * // use the `autocomplete` editor for each cell of this column
1774
1805
  * editor: 'autocomplete'
1775
1806
  * },
1776
1807
  * {
1777
- * // disable editing cells through cell editors for every cell of this column
1808
+ * // disable editing cells through cell editors for each cell of this column
1778
1809
  * editor: false
1779
1810
  * }
1780
1811
  * ]
@@ -1940,7 +1971,7 @@ var _default = function _default() {
1940
1971
  * @example
1941
1972
  * ```js
1942
1973
  * columns: [{
1943
- * // set the `type` of every cell in this column to `autocomplete`
1974
+ * // set the `type` of each cell in this column to `autocomplete`
1944
1975
  * type: 'autocomplete',
1945
1976
  * // set options available in every `autocomplete` cell of this column
1946
1977
  * source: ['A', 'B', 'C'],
@@ -3145,7 +3176,7 @@ var _default = function _default() {
3145
3176
 
3146
3177
  /**
3147
3178
  * The `noWordWrapClassName` option lets you add a CSS class name
3148
- * to every cell that has the [`wordWrap`](#wordWrap) option set to `false`.
3179
+ * to each cell that has the [`wordWrap`](#wordWrap) option set to `false`.
3149
3180
  *
3150
3181
  * Read more:
3151
3182
  * - [`wordWrap`](#wordWrap)
@@ -3167,7 +3198,7 @@ var _default = function _default() {
3167
3198
  * @example
3168
3199
  * ```js
3169
3200
  * // add an `is-noWrapCell` CSS class name
3170
- * // to every cell that doesn't wrap content
3201
+ * // to each cell that doesn't wrap content
3171
3202
  * noWordWrapClassName: 'is-noWrapCell',
3172
3203
  * ```
3173
3204
  */
@@ -3175,7 +3206,8 @@ var _default = function _default() {
3175
3206
 
3176
3207
  /**
3177
3208
  * The `numericFormat` option configures the number format and the currency format
3178
- * of [`numeric`](@/guides/cell-types/numeric-cell-type.md) cells` displayed output.
3209
+ * of [`numeric`](@/guides/cell-types/numeric-cell-type.md) cells` displayed output
3210
+ * in the numeric cell renderer.
3179
3211
  *
3180
3212
  * You can set the `numericFormat` option to an object with the following properties:
3181
3213
  *
@@ -3184,10 +3216,7 @@ var _default = function _default() {
3184
3216
  * | `pattern` | All [`numbro.js` number formats](https://numbrojs.com/format.html#numbers) | Number format |
3185
3217
  * | `culture` | All [`numbro.js` currency formats](https://numbrojs.com/format.html#currency) | Currency format |
3186
3218
  *
3187
- * The `numericFormat` option as no effect on cells' input data.
3188
- * To enter numeric data into Handsontable, use:
3189
- * - Either floats (separated by a dot, or a comma)
3190
- * - Or integers
3219
+ * The `numericFormat` option as no effect on the numeric cell editor.
3191
3220
  *
3192
3221
  * In the source data, numeric data is stored as JavaScript numbers.
3193
3222
  *
@@ -3205,7 +3234,7 @@ var _default = function _default() {
3205
3234
  * ```js
3206
3235
  * columns: [
3207
3236
  * {
3208
- * // set the `type` of every cell in this column to `numeric`
3237
+ * // set the `type` of each cell in this column to `numeric`
3209
3238
  * type: 'numeric',
3210
3239
  * // set the `numericFormat` option for every `numeric` cell of this column
3211
3240
  * numericFormat: {
@@ -3366,7 +3395,7 @@ var _default = function _default() {
3366
3395
  * @example
3367
3396
  * ```js
3368
3397
  * // add a `has-placeholder` CSS class name
3369
- * // to every cell that contains `placeholder` text
3398
+ * // to each cell that contains `placeholder` text
3370
3399
  * placeholderCellClassName: 'has-placeholder',
3371
3400
  * ```
3372
3401
  */
@@ -3433,6 +3462,8 @@ var _default = function _default() {
3433
3462
  * | `false` (default) | Set as editable |
3434
3463
  * | `true` | - Set as read-only<br>- Add the [`readOnlyCellClassName`](#readOnlyCellClassName) CSS class name (by default: `htDimmed`) |
3435
3464
  *
3465
+ * `readOnly` cells can't be changed by the [`populateFromArray()`](@/api/core.md#populatefromarray) method.
3466
+ *
3436
3467
  * Read more:
3437
3468
  * - [Configuration options: Cascading configuration](@/guides/getting-started/setting-options.md#cascading-configuration)
3438
3469
  *
@@ -3542,7 +3573,7 @@ var _default = function _default() {
3542
3573
  *
3543
3574
  * @example
3544
3575
  * ```js
3545
- * // use the `numeric` renderer for every cell of the entire grid
3576
+ * // use the `numeric` renderer for each cell of the entire grid
3546
3577
  * renderer: `'numeric'`,
3547
3578
  *
3548
3579
  * // add a custom renderer function
@@ -3554,11 +3585,11 @@ var _default = function _default() {
3554
3585
  * // apply the `renderer` option to individual columns
3555
3586
  * columns: [
3556
3587
  * {
3557
- * // use the `autocomplete` renderer for every cell of this column
3588
+ * // use the `autocomplete` renderer for each cell of this column
3558
3589
  * renderer: 'autocomplete'
3559
3590
  * },
3560
3591
  * {
3561
- * // use the `myCustomRenderer` renderer for every cell of this column
3592
+ * // use the `myCustomRenderer` renderer for each cell of this column
3562
3593
  * renderer: 'myCustomRenderer'
3563
3594
  * }
3564
3595
  * ]
@@ -3785,7 +3816,7 @@ var _default = function _default() {
3785
3816
  * ```js
3786
3817
  * columns: [
3787
3818
  * {
3788
- * // set the `type` of every cell in this column to `select`
3819
+ * // set the `type` of each cell in this column to `select`
3789
3820
  * type: 'select',
3790
3821
  * // set the first option's value and label to `A`
3791
3822
  * // set the second option's value and label to `B`
@@ -3793,7 +3824,7 @@ var _default = function _default() {
3793
3824
  * selectOptions: ['A', 'B', 'C'],
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
  * selectOptions: {
3799
3830
  * // set the first option's value to `value1` and label to `Label 1`
@@ -3805,7 +3836,7 @@ var _default = function _default() {
3805
3836
  * },
3806
3837
  * },
3807
3838
  * {
3808
- * // set the `type` of every cell in this column to `select`
3839
+ * // set the `type` of each cell in this column to `select`
3809
3840
  * type: 'select',
3810
3841
  * // set `selectOption` to a function that returns available options as an object
3811
3842
  * selectOptions(visualRow, visualColumn, prop) {
@@ -3914,7 +3945,7 @@ var _default = function _default() {
3914
3945
  * @example
3915
3946
  * ```js
3916
3947
  * columns: [{
3917
- * // set the `type` of every cell in this column to `autocomplete`
3948
+ * // set the `type` of each cell in this column to `autocomplete`
3918
3949
  * type: 'autocomplete',
3919
3950
  * // set options available in every `autocomplete` cell of this column
3920
3951
  * source: ['D', 'C', 'B', 'A'],
@@ -3951,7 +3982,7 @@ var _default = function _default() {
3951
3982
  * ```js
3952
3983
  * // set `source` to an array
3953
3984
  * columns: [{
3954
- * // set the `type` of every cell in this column to `autocomplete`
3985
+ * // set the `type` of each cell in this column to `autocomplete`
3955
3986
  * type: 'autocomplete',
3956
3987
  * // set options available in every `autocomplete` cell of this column
3957
3988
  * source: ['A', 'B', 'C', 'D']
@@ -3959,7 +3990,7 @@ var _default = function _default() {
3959
3990
  *
3960
3991
  * // set `source` to a function
3961
3992
  * columns: [{
3962
- * // set the `type` of every cell in this column to `autocomplete`
3993
+ * // set the `type` of each cell in this column to `autocomplete`
3963
3994
  * type: 'autocomplete',
3964
3995
  * // for every `autocomplete` cell in this column, fetch data from an external source
3965
3996
  * source(query, callback) {
@@ -4063,7 +4094,7 @@ var _default = function _default() {
4063
4094
  * ```js
4064
4095
  * columns: [
4065
4096
  * {
4066
- * // set the `type` of every cell in this column to `autocomplete`
4097
+ * // set the `type` of each cell in this column to `autocomplete`
4067
4098
  * type: 'autocomplete',
4068
4099
  * // set options available in every `autocomplete` cell of this column
4069
4100
  * source: ['A', 'B', 'C'],
@@ -4209,13 +4240,13 @@ var _default = function _default() {
4209
4240
  * columns: [
4210
4241
  * {
4211
4242
  * type: 'autocomplete',
4212
- * // for every cell of this column
4243
+ * // for each cell of this column
4213
4244
  * // make the `autocomplete` list's width the same as the edited cell's width
4214
4245
  * trimDropdown: true,
4215
4246
  * },
4216
4247
  * {
4217
4248
  * type: 'dropdown',
4218
- * // for every cell of this column
4249
+ * // for each cell of this column
4219
4250
  * // scale the `dropdown` list's width to the list's content
4220
4251
  * trimDropdown: false,
4221
4252
  * }
@@ -4230,11 +4261,11 @@ var _default = function _default() {
4230
4261
  *
4231
4262
  * You can set the `trimRows` option to one of the following:
4232
4263
  *
4233
- * | Setting | Description |
4234
- * | -------- | --------------------------------------------------------------------------------------------- |
4235
- * | `false` | Disable the [`TrimRows`](@/api/trimRows.md) plugin |
4236
- * | `true` | Enable the [`TrimRows`](@/api/trimRows.md) plugin |
4237
- * | An array | - Enable the [`TrimRows`](@/api/trimRows.md) plugin<br>- Trim selected rows at initialization |
4264
+ * | Setting | Description |
4265
+ * | -------------------------------- | --------------------------------------------------------------------------------------------- |
4266
+ * | `false` | Disable the [`TrimRows`](@/api/trimRows.md) plugin |
4267
+ * | `true` | Enable the [`TrimRows`](@/api/trimRows.md) plugin |
4268
+ * | An array of physical row indexes | - Enable the [`TrimRows`](@/api/trimRows.md) plugin<br>- Trim selected rows at initialization |
4238
4269
  *
4239
4270
  * Read more:
4240
4271
  * - [Plugins: `TrimRows`](@/api/trimRows.md)
@@ -4251,23 +4282,24 @@ var _default = function _default() {
4251
4282
  * trimRows: true,
4252
4283
  *
4253
4284
  * // enable the `TrimRows` plugin
4254
- * // trim rows 5, 10, and 15 at Handsontable's initialization
4285
+ * // at Handsontable's initialization, trim rows 5, 10, and 15
4255
4286
  * trimRows: [5, 10, 15],
4256
4287
  * ```
4257
4288
  */
4258
4289
  trimRows: void 0,
4259
4290
 
4260
4291
  /**
4261
- * The `trimWhitespace` option configures automatic whitespace removal.
4292
+ * The `trimWhitespace` option configures automatic whitespace removal. This option
4293
+ * affects the cell renderer and the cell editor.
4262
4294
  *
4263
4295
  * You can set the `trimWhitespace` option to one of the following:
4264
4296
  *
4265
4297
  * | Setting | Description |
4266
4298
  * | ---------------- | --------------------------------------------------------------- |
4267
- * | `true` (default) | Remove whitespace at the beginning and at the end of every cell |
4299
+ * | `true` (default) | Remove whitespace at the beginning and at the end of each cell |
4268
4300
  * | `false` | Don't remove whitespace |
4269
4301
  *
4270
- * @memberof Options#tr
4302
+ * @memberof Options#
4271
4303
  * @type {boolean}
4272
4304
  * @default true
4273
4305
  * @category Core
@@ -4322,17 +4354,17 @@ var _default = function _default() {
4322
4354
  *
4323
4355
  * @example
4324
4356
  * ```js
4325
- * // use the `numeric` cell type for every cell of the entire grid
4357
+ * // set the `numeric` cell type for each cell of the entire grid
4326
4358
  * type: `'numeric'`,
4327
4359
  *
4328
4360
  * // apply the `type` option to individual columns
4329
4361
  * columns: [
4330
4362
  * {
4331
- * // use the `autocomplete` cell type for every cell of this column
4363
+ * // set the `autocomplete` cell type for each cell of this column
4332
4364
  * type: 'autocomplete'
4333
4365
  * },
4334
4366
  * {
4335
- * // use the `myCustomCellType` cell type for every cell of this column
4367
+ * // set the `myCustomCellType` cell type for each cell of this column
4336
4368
  * type: 'myCustomCellType'
4337
4369
  * }
4338
4370
  * ]
@@ -4365,13 +4397,13 @@ var _default = function _default() {
4365
4397
  * ```js
4366
4398
  * columns: [
4367
4399
  * {
4368
- * // set the `type` of every cell in this column to `checkbox`
4400
+ * // set the `type` of each cell in this column to `checkbox`
4369
4401
  * // when unchecked, the cell's value is `false`
4370
4402
  * // when checked, the cell's value is `true`
4371
4403
  * type: 'checkbox',
4372
4404
  * },
4373
4405
  * {
4374
- * // set the `type` of every cell in this column to `checkbox`
4406
+ * // set the `type` of each cell in this column to `checkbox`
4375
4407
  * // when unchecked, the cell's value is `'No'`
4376
4408
  * // when checked, the cell's value is `'Yes'`
4377
4409
  * type: 'checkbox',
@@ -4552,13 +4584,13 @@ var _default = function _default() {
4552
4584
  * {
4553
4585
  * type: 'autocomplete',
4554
4586
  * // set the `autocomplete` list's height to 15 options
4555
- * // for every cell of this column
4587
+ * // for each cell of this column
4556
4588
  * visibleRows: 15,
4557
4589
  * },
4558
4590
  * {
4559
4591
  * type: 'dropdown',
4560
4592
  * // set the `dropdown` list's height to 5 options
4561
- * // for every cell of this column
4593
+ * // for each cell of this column
4562
4594
  * visibleRows: 5,
4563
4595
  * }
4564
4596
  * ],