handsontable 0.0.0-next-31297ac-20231204 → 0.0.0-next-d76be4f-20231206

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (46) hide show
  1. package/3rdparty/walkontable/src/calculator/index.js +11 -6
  2. package/3rdparty/walkontable/src/calculator/index.mjs +5 -3
  3. package/3rdparty/walkontable/src/calculator/renderAllColumns.js +50 -0
  4. package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +46 -0
  5. package/3rdparty/walkontable/src/calculator/renderAllRows.js +50 -0
  6. package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +46 -0
  7. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -122
  8. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +2 -124
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -1
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +2 -3
  11. package/3rdparty/walkontable/src/index.js +3 -4
  12. package/3rdparty/walkontable/src/index.mjs +1 -2
  13. package/3rdparty/walkontable/src/renderer/colGroup.js +10 -0
  14. package/3rdparty/walkontable/src/renderer/colGroup.mjs +10 -0
  15. package/3rdparty/walkontable/src/renderer/rows.js +4 -3
  16. package/3rdparty/walkontable/src/renderer/rows.mjs +4 -3
  17. package/3rdparty/walkontable/src/settings.js +2 -0
  18. package/3rdparty/walkontable/src/settings.mjs +2 -0
  19. package/3rdparty/walkontable/src/utils/column.js +27 -12
  20. package/3rdparty/walkontable/src/utils/column.mjs +27 -12
  21. package/3rdparty/walkontable/src/utils/columnStretching.js +219 -0
  22. package/3rdparty/walkontable/src/utils/columnStretching.mjs +215 -0
  23. package/3rdparty/walkontable/src/viewport.js +22 -17
  24. package/3rdparty/walkontable/src/viewport.mjs +23 -18
  25. package/base.js +2 -2
  26. package/base.mjs +2 -2
  27. package/core/focusCatcher/index.js +34 -4
  28. package/core/focusCatcher/index.mjs +34 -4
  29. package/dataMap/metaManager/metaSchema.js +28 -2
  30. package/dataMap/metaManager/metaSchema.mjs +28 -2
  31. package/dataMap/metaManager/mods/extendMetaProperties.js +12 -0
  32. package/dataMap/metaManager/mods/extendMetaProperties.mjs +12 -0
  33. package/dist/handsontable.css +2 -2
  34. package/dist/handsontable.full.css +2 -2
  35. package/dist/handsontable.full.js +1960 -1646
  36. package/dist/handsontable.full.min.css +2 -2
  37. package/dist/handsontable.full.min.js +70 -67
  38. package/dist/handsontable.js +1962 -1648
  39. package/dist/handsontable.min.css +2 -2
  40. package/dist/handsontable.min.js +27 -24
  41. package/helpers/mixed.js +1 -1
  42. package/helpers/mixed.mjs +1 -1
  43. package/package.json +1 -1
  44. package/settings.d.ts +1 -0
  45. package/tableView.js +1 -0
  46. package/tableView.mjs +1 -0
@@ -255,15 +255,15 @@ class Viewport {
255
255
  wtSettings,
256
256
  wtTable
257
257
  } = this;
258
- let height;
258
+ if (wtSettings.getSetting('renderAllRows') && calculationType === _calculator.RENDER_TYPE) {
259
+ return new _calculator.RenderAllRowsCalculator({
260
+ totalRows: wtSettings.getSetting('totalRows')
261
+ });
262
+ }
263
+ let height = this.getViewportHeight();
259
264
  let scrollbarHeight;
260
265
  let fixedRowsHeight;
261
266
  this.rowHeaderWidth = NaN;
262
- if (wtSettings.getSetting('renderAllRows') && calculationType === _calculator.RENDER_TYPE) {
263
- height = Infinity;
264
- } else {
265
- height = this.getViewportHeight();
266
- }
267
267
  let pos = this.dataAccessObject.topScrollPosition - this.dataAccessObject.topParentOffset;
268
268
  const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
269
269
  const fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
@@ -308,6 +308,11 @@ class Viewport {
308
308
  wtSettings,
309
309
  wtTable
310
310
  } = this;
311
+ if (wtSettings.getSetting('renderAllColumns') && calculationType === _calculator.RENDER_TYPE) {
312
+ return new _calculator.RenderAllColumnsCalculator({
313
+ totalColumns: wtSettings.getSetting('totalColumns')
314
+ });
315
+ }
311
316
  let width = this.getViewportWidth();
312
317
  let pos = Math.abs(this.dataAccessObject.inlineStartScrollPosition) - this.dataAccessObject.inlineStartParentOffset;
313
318
  this.columnHeaderHeight = NaN;
@@ -327,10 +332,6 @@ class Viewport {
327
332
  columnWidthFn: sourceCol => wtTable.getColumnWidth(sourceCol),
328
333
  overrideFn: wtSettings.getSettingPure('viewportColumnCalculatorOverride'),
329
334
  calculationType,
330
- stretchMode: wtSettings.getSetting('stretchH'),
331
- stretchingColumnWidthFn: (stretchedWidth, column) => {
332
- return wtSettings.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column);
333
- },
334
335
  inlineStartOffset: this.dataAccessObject.inlineStartParentOffset
335
336
  });
336
337
  }
@@ -345,22 +346,26 @@ class Viewport {
345
346
  */
346
347
  createRenderCalculators() {
347
348
  let fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
348
- let runFastDraw = fastDraw;
349
- if (runFastDraw) {
349
+ const {
350
+ wtSettings
351
+ } = this;
352
+ if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
350
353
  const proposedRowsVisibleCalculator = this.createRowsCalculator(_calculator.FULLY_VISIBLE_TYPE);
354
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
355
+ }
356
+ if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
351
357
  const proposedColumnsVisibleCalculator = this.createColumnsCalculator(_calculator.FULLY_VISIBLE_TYPE);
352
- if (!(this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) && this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator))) {
353
- runFastDraw = false;
354
- }
358
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
355
359
  }
356
- if (!runFastDraw) {
360
+ if (!fastDraw) {
357
361
  this.rowsRenderCalculator = this.createRowsCalculator(_calculator.RENDER_TYPE);
358
362
  this.columnsRenderCalculator = this.createColumnsCalculator(_calculator.RENDER_TYPE);
359
363
  }
364
+
360
365
  // delete temporarily to make sure that renderers always use rowsRenderCalculator, not rowsVisibleCalculator
361
366
  this.rowsVisibleCalculator = null;
362
367
  this.columnsVisibleCalculator = null;
363
- return runFastDraw;
368
+ return fastDraw;
364
369
  }
365
370
 
366
371
  /**
@@ -1,6 +1,6 @@
1
1
  import { getScrollbarWidth, getStyle, offset, outerHeight, outerWidth } from "../../../helpers/dom/element.mjs";
2
2
  import { objectEach } from "../../../helpers/object.mjs";
3
- import { RENDER_TYPE, FULLY_VISIBLE_TYPE, ViewportColumnsCalculator, ViewportRowsCalculator } from "./calculator/index.mjs";
3
+ import { RENDER_TYPE, FULLY_VISIBLE_TYPE, RenderAllColumnsCalculator, RenderAllRowsCalculator, ViewportColumnsCalculator, ViewportRowsCalculator } from "./calculator/index.mjs";
4
4
  /**
5
5
  * @class Viewport
6
6
  */
@@ -252,15 +252,15 @@ class Viewport {
252
252
  wtSettings,
253
253
  wtTable
254
254
  } = this;
255
- let height;
255
+ if (wtSettings.getSetting('renderAllRows') && calculationType === RENDER_TYPE) {
256
+ return new RenderAllRowsCalculator({
257
+ totalRows: wtSettings.getSetting('totalRows')
258
+ });
259
+ }
260
+ let height = this.getViewportHeight();
256
261
  let scrollbarHeight;
257
262
  let fixedRowsHeight;
258
263
  this.rowHeaderWidth = NaN;
259
- if (wtSettings.getSetting('renderAllRows') && calculationType === RENDER_TYPE) {
260
- height = Infinity;
261
- } else {
262
- height = this.getViewportHeight();
263
- }
264
264
  let pos = this.dataAccessObject.topScrollPosition - this.dataAccessObject.topParentOffset;
265
265
  const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
266
266
  const fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
@@ -305,6 +305,11 @@ class Viewport {
305
305
  wtSettings,
306
306
  wtTable
307
307
  } = this;
308
+ if (wtSettings.getSetting('renderAllColumns') && calculationType === RENDER_TYPE) {
309
+ return new RenderAllColumnsCalculator({
310
+ totalColumns: wtSettings.getSetting('totalColumns')
311
+ });
312
+ }
308
313
  let width = this.getViewportWidth();
309
314
  let pos = Math.abs(this.dataAccessObject.inlineStartScrollPosition) - this.dataAccessObject.inlineStartParentOffset;
310
315
  this.columnHeaderHeight = NaN;
@@ -324,10 +329,6 @@ class Viewport {
324
329
  columnWidthFn: sourceCol => wtTable.getColumnWidth(sourceCol),
325
330
  overrideFn: wtSettings.getSettingPure('viewportColumnCalculatorOverride'),
326
331
  calculationType,
327
- stretchMode: wtSettings.getSetting('stretchH'),
328
- stretchingColumnWidthFn: (stretchedWidth, column) => {
329
- return wtSettings.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column);
330
- },
331
332
  inlineStartOffset: this.dataAccessObject.inlineStartParentOffset
332
333
  });
333
334
  }
@@ -342,22 +343,26 @@ class Viewport {
342
343
  */
343
344
  createRenderCalculators() {
344
345
  let fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
345
- let runFastDraw = fastDraw;
346
- if (runFastDraw) {
346
+ const {
347
+ wtSettings
348
+ } = this;
349
+ if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
347
350
  const proposedRowsVisibleCalculator = this.createRowsCalculator(FULLY_VISIBLE_TYPE);
351
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
352
+ }
353
+ if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
348
354
  const proposedColumnsVisibleCalculator = this.createColumnsCalculator(FULLY_VISIBLE_TYPE);
349
- if (!(this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) && this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator))) {
350
- runFastDraw = false;
351
- }
355
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
352
356
  }
353
- if (!runFastDraw) {
357
+ if (!fastDraw) {
354
358
  this.rowsRenderCalculator = this.createRowsCalculator(RENDER_TYPE);
355
359
  this.columnsRenderCalculator = this.createColumnsCalculator(RENDER_TYPE);
356
360
  }
361
+
357
362
  // delete temporarily to make sure that renderers always use rowsRenderCalculator, not rowsVisibleCalculator
358
363
  this.rowsVisibleCalculator = null;
359
364
  this.columnsVisibleCalculator = null;
360
- return runFastDraw;
365
+ return fastDraw;
361
366
  }
362
367
 
363
368
  /**
package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "04/12/2023 14:28:32";
49
- Handsontable.version = "0.0.0-next-31297ac-20231204";
48
+ Handsontable.buildDate = "06/12/2023 14:31:51";
49
+ Handsontable.version = "0.0.0-next-d76be4f-20231206";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "04/12/2023 14:28:38";
39
- Handsontable.version = "0.0.0-next-31297ac-20231204";
38
+ Handsontable.buildDate = "06/12/2023 14:31:57";
39
+ Handsontable.version = "0.0.0-next-d76be4f-20231206";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -12,14 +12,15 @@ var _focusDetector = require("./focusDetector");
12
12
  * @param {Core} hot The Handsontable instance.
13
13
  */
14
14
  function installFocusCatcher(hot) {
15
+ const clampCoordsIfNeeded = normalizeCoordsIfNeeded(hot);
15
16
  let recentlyAddedFocusCoords;
16
17
  const {
17
18
  activate,
18
19
  deactivate
19
20
  } = (0, _focusDetector.installFocusDetector)(hot, {
20
21
  onFocusFromTop() {
21
- var _recentlyAddedFocusCo;
22
- const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
22
+ var _clampCoordsIfNeeded;
23
+ const mostTopStartCoords = (_clampCoordsIfNeeded = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded !== void 0 ? _clampCoordsIfNeeded : getMostTopStartPosition(hot);
23
24
  if (mostTopStartCoords) {
24
25
  hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
25
26
  hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
@@ -27,8 +28,8 @@ function installFocusCatcher(hot) {
27
28
  hot.listen();
28
29
  },
29
30
  onFocusFromBottom() {
30
- var _recentlyAddedFocusCo2;
31
- const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
31
+ var _clampCoordsIfNeeded2;
32
+ const mostBottomEndCoords = (_clampCoordsIfNeeded2 = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded2 !== void 0 ? _clampCoordsIfNeeded2 : getMostBottomEndPosition(hot);
32
33
  if (mostBottomEndCoords) {
33
34
  hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
34
35
  hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
@@ -165,4 +166,33 @@ function getMostBottomEndPosition(hot) {
165
166
  endColumn = -1;
166
167
  }
167
168
  return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
169
+ }
170
+
171
+ /**
172
+ * Normalizes the coordinates (clamps to nearest visible cell position within dataset range).
173
+ *
174
+ * @param {Core} hot The Handsontable instance.
175
+ * @returns {function(Coords | undefined): Coords | null}
176
+ */
177
+ function normalizeCoordsIfNeeded(hot) {
178
+ return coords => {
179
+ if (!coords) {
180
+ return null;
181
+ }
182
+ const mostTopStartCoords = getMostTopStartPosition(hot);
183
+ const mostBottomEndCoords = getMostBottomEndPosition(hot);
184
+ if (coords.col < mostTopStartCoords.col) {
185
+ coords.col = mostTopStartCoords.col;
186
+ }
187
+ if (coords.col > mostBottomEndCoords.col) {
188
+ coords.col = mostBottomEndCoords.col;
189
+ }
190
+ if (coords.row < mostTopStartCoords.row) {
191
+ coords.row = mostTopStartCoords.row;
192
+ }
193
+ if (coords.row > mostBottomEndCoords.row) {
194
+ coords.row = mostBottomEndCoords.row;
195
+ }
196
+ return coords;
197
+ };
168
198
  }
@@ -8,14 +8,15 @@ import { installFocusDetector } from "./focusDetector.mjs";
8
8
  * @param {Core} hot The Handsontable instance.
9
9
  */
10
10
  export function installFocusCatcher(hot) {
11
+ const clampCoordsIfNeeded = normalizeCoordsIfNeeded(hot);
11
12
  let recentlyAddedFocusCoords;
12
13
  const {
13
14
  activate,
14
15
  deactivate
15
16
  } = installFocusDetector(hot, {
16
17
  onFocusFromTop() {
17
- var _recentlyAddedFocusCo;
18
- const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
18
+ var _clampCoordsIfNeeded;
19
+ const mostTopStartCoords = (_clampCoordsIfNeeded = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded !== void 0 ? _clampCoordsIfNeeded : getMostTopStartPosition(hot);
19
20
  if (mostTopStartCoords) {
20
21
  hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
21
22
  hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
@@ -23,8 +24,8 @@ export function installFocusCatcher(hot) {
23
24
  hot.listen();
24
25
  },
25
26
  onFocusFromBottom() {
26
- var _recentlyAddedFocusCo2;
27
- const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
27
+ var _clampCoordsIfNeeded2;
28
+ const mostBottomEndCoords = (_clampCoordsIfNeeded2 = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded2 !== void 0 ? _clampCoordsIfNeeded2 : getMostBottomEndPosition(hot);
28
29
  if (mostBottomEndCoords) {
29
30
  hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
30
31
  hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
@@ -161,4 +162,33 @@ function getMostBottomEndPosition(hot) {
161
162
  endColumn = -1;
162
163
  }
163
164
  return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
165
+ }
166
+
167
+ /**
168
+ * Normalizes the coordinates (clamps to nearest visible cell position within dataset range).
169
+ *
170
+ * @param {Core} hot The Handsontable instance.
171
+ * @returns {function(Coords | undefined): Coords | null}
172
+ */
173
+ function normalizeCoordsIfNeeded(hot) {
174
+ return coords => {
175
+ if (!coords) {
176
+ return null;
177
+ }
178
+ const mostTopStartCoords = getMostTopStartPosition(hot);
179
+ const mostBottomEndCoords = getMostBottomEndPosition(hot);
180
+ if (coords.col < mostTopStartCoords.col) {
181
+ coords.col = mostTopStartCoords.col;
182
+ }
183
+ if (coords.col > mostBottomEndCoords.col) {
184
+ coords.col = mostBottomEndCoords.col;
185
+ }
186
+ if (coords.row < mostTopStartCoords.row) {
187
+ coords.row = mostTopStartCoords.row;
188
+ }
189
+ if (coords.row > mostBottomEndCoords.row) {
190
+ coords.row = mostBottomEndCoords.row;
191
+ }
192
+ return coords;
193
+ };
164
194
  }
@@ -3573,7 +3573,7 @@ var _default = () => {
3573
3573
  *
3574
3574
  * @memberof Options#
3575
3575
  * @type {boolean}
3576
- * @default undefined
3576
+ * @default false
3577
3577
  * @category Core
3578
3578
  *
3579
3579
  * @example
@@ -3582,7 +3582,33 @@ var _default = () => {
3582
3582
  * renderAllRows: true,
3583
3583
  * ```
3584
3584
  */
3585
- renderAllRows: undefined,
3585
+ renderAllRows: false,
3586
+ /**
3587
+ * The `renderAllColumns` option configures Handsontable's [column virtualization](@/guides/columns/column-virtualization.md).
3588
+ *
3589
+ * You can set the `renderAllColumns` option to one of the following:
3590
+ *
3591
+ * | Setting | Description |
3592
+ * | ----------------- | -------------------------------------------------------------------------------------------------- |
3593
+ * | `false` (default) | Enable [column virtualization](@/guides/columns/column-virtualization.md) |
3594
+ * | `true` | Disable [column virtualization](@/guides/columns/column-virtualization.md)<br>(render all columns of the grid) |
3595
+ *
3596
+ * Read more:
3597
+ * - [Row virtualization](@/guides/columns/column-virtualization.md)
3598
+ *
3599
+ * @since 14.1.0
3600
+ * @memberof Options#
3601
+ * @type {boolean}
3602
+ * @default false
3603
+ * @category Core
3604
+ *
3605
+ * @example
3606
+ * ```js
3607
+ * // disable column virtualization
3608
+ * renderAllColumns: true,
3609
+ * ```
3610
+ */
3611
+ renderAllColumns: false,
3586
3612
  /**
3587
3613
  * @description
3588
3614
  * The `renderer` option sets a [cell renderer](@/guides/cell-functions/cell-renderer.md) for a cell.
@@ -3570,7 +3570,7 @@ export default (() => {
3570
3570
  *
3571
3571
  * @memberof Options#
3572
3572
  * @type {boolean}
3573
- * @default undefined
3573
+ * @default false
3574
3574
  * @category Core
3575
3575
  *
3576
3576
  * @example
@@ -3579,7 +3579,33 @@ export default (() => {
3579
3579
  * renderAllRows: true,
3580
3580
  * ```
3581
3581
  */
3582
- renderAllRows: undefined,
3582
+ renderAllRows: false,
3583
+ /**
3584
+ * The `renderAllColumns` option configures Handsontable's [column virtualization](@/guides/columns/column-virtualization.md).
3585
+ *
3586
+ * You can set the `renderAllColumns` option to one of the following:
3587
+ *
3588
+ * | Setting | Description |
3589
+ * | ----------------- | -------------------------------------------------------------------------------------------------- |
3590
+ * | `false` (default) | Enable [column virtualization](@/guides/columns/column-virtualization.md) |
3591
+ * | `true` | Disable [column virtualization](@/guides/columns/column-virtualization.md)<br>(render all columns of the grid) |
3592
+ *
3593
+ * Read more:
3594
+ * - [Row virtualization](@/guides/columns/column-virtualization.md)
3595
+ *
3596
+ * @since 14.1.0
3597
+ * @memberof Options#
3598
+ * @type {boolean}
3599
+ * @default false
3600
+ * @category Core
3601
+ *
3602
+ * @example
3603
+ * ```js
3604
+ * // disable column virtualization
3605
+ * renderAllColumns: true,
3606
+ * ```
3607
+ */
3608
+ renderAllColumns: false,
3583
3609
  /**
3584
3610
  * @description
3585
3611
  * The `renderer` option sets a [cell renderer](@/guides/cell-functions/cell-renderer.md) for a cell.
@@ -44,6 +44,18 @@ class ExtendMetaPropertiesMod {
44
44
  throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
45
45
  }
46
46
  }
47
+ }], ['renderAllColumns', {
48
+ onChange(propName, value, isInitialChange) {
49
+ if (!isInitialChange) {
50
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
51
+ }
52
+ }
53
+ }], ['renderAllRows', {
54
+ onChange(propName, value, isInitialChange) {
55
+ if (!isInitialChange) {
56
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
57
+ }
58
+ }
47
59
  }]]));
48
60
  this.metaManager = metaManager;
49
61
  this.extendMetaProps();
@@ -41,6 +41,18 @@ export class ExtendMetaPropertiesMod {
41
41
  throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42
42
  }
43
43
  }
44
+ }], ['renderAllColumns', {
45
+ onChange(propName, value, isInitialChange) {
46
+ if (!isInitialChange) {
47
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
48
+ }
49
+ }
50
+ }], ['renderAllRows', {
51
+ onChange(propName, value, isInitialChange) {
52
+ if (!isInitialChange) {
53
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
54
+ }
55
+ }
44
56
  }]]));
45
57
  this.metaManager = metaManager;
46
58
  this.extendMetaProps();
@@ -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: 0.0.0-next-31297ac-20231204
29
- * Release date: 30/11/2023 (built at 04/12/2023 14:28:42)
28
+ * Version: 0.0.0-next-d76be4f-20231206
29
+ * Release date: 30/11/2023 (built at 06/12/2023 14:32:01)
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: 0.0.0-next-31297ac-20231204
29
- * Release date: 30/11/2023 (built at 04/12/2023 14:28:42)
28
+ * Version: 0.0.0-next-d76be4f-20231206
29
+ * Release date: 30/11/2023 (built at 06/12/2023 14:32:01)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles