handsontable 0.0.0-next-f11b1a2-20231123 → 0.0.0-next-44acfea-20231127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (55) hide show
  1. package/3rdparty/walkontable/src/overlay/_base.js +2 -2
  2. package/3rdparty/walkontable/src/overlay/_base.mjs +2 -2
  3. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  4. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +3 -3
  5. package/3rdparty/walkontable/src/renderer/rows.js +1 -1
  6. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  7. package/3rdparty/walkontable/src/selection/manager.js +8 -8
  8. package/3rdparty/walkontable/src/selection/manager.mjs +8 -8
  9. package/base.js +2 -2
  10. package/base.mjs +2 -2
  11. package/core/focusCatcher/focusDetector.js +1 -1
  12. package/core/focusCatcher/focusDetector.mjs +2 -2
  13. package/dataMap/replaceData.js +3 -1
  14. package/dataMap/replaceData.mjs +3 -1
  15. package/dist/handsontable.css +2 -2
  16. package/dist/handsontable.full.css +2 -2
  17. package/dist/handsontable.full.js +103 -73
  18. package/dist/handsontable.full.min.css +2 -2
  19. package/dist/handsontable.full.min.js +8 -8
  20. package/dist/handsontable.js +103 -73
  21. package/dist/handsontable.min.css +2 -2
  22. package/dist/handsontable.min.js +31 -31
  23. package/editors/dateEditor/dateEditor.js +0 -7
  24. package/editors/dateEditor/dateEditor.mjs +1 -8
  25. package/editors/handsontableEditor/handsontableEditor.js +0 -7
  26. package/editors/handsontableEditor/handsontableEditor.mjs +1 -8
  27. package/editors/passwordEditor/passwordEditor.js +4 -0
  28. package/editors/passwordEditor/passwordEditor.mjs +5 -1
  29. package/helpers/a11y.js +2 -0
  30. package/helpers/a11y.mjs +1 -0
  31. package/helpers/mixed.js +1 -1
  32. package/helpers/mixed.mjs +1 -1
  33. package/package.json +1 -1
  34. package/plugins/filters/filters.js +10 -1
  35. package/plugins/filters/filters.mjs +10 -1
  36. package/plugins/filters/menu/focusController.js +29 -10
  37. package/plugins/filters/menu/focusController.mjs +29 -10
  38. package/plugins/nestedRows/nestedRows.js +3 -0
  39. package/plugins/nestedRows/nestedRows.mjs +3 -0
  40. package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -3
  41. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -4
  42. package/renderers/checkboxRenderer/checkboxRenderer.js +0 -1
  43. package/renderers/checkboxRenderer/checkboxRenderer.mjs +0 -1
  44. package/renderers/dateRenderer/dateRenderer.js +0 -5
  45. package/renderers/dateRenderer/dateRenderer.mjs +0 -5
  46. package/renderers/handsontableRenderer/handsontableRenderer.js +0 -5
  47. package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -5
  48. package/renderers/selectRenderer/selectRenderer.js +0 -5
  49. package/renderers/selectRenderer/selectRenderer.mjs +0 -5
  50. package/selection/highlight/types/focus.js +2 -6
  51. package/selection/highlight/types/focus.mjs +2 -6
  52. package/selection/selection.js +0 -1
  53. package/selection/selection.mjs +0 -1
  54. package/tableView.js +31 -2
  55. package/tableView.mjs +31 -2
@@ -249,8 +249,8 @@ class Overlay {
249
249
  rootDocument,
250
250
  rootWindow
251
251
  } = this.domBindings;
252
- const clone = rootDocument.createElement('DIV');
253
- const clonedTable = rootDocument.createElement('TABLE');
252
+ const clone = rootDocument.createElement('div');
253
+ const clonedTable = rootDocument.createElement('table');
254
254
  const tableParent = wtTable.wtRootElement.parentNode;
255
255
  clone.className = `${_constants.CLONE_CLASS_NAMES.get(this.type)} handsontable`;
256
256
  clone.setAttribute('dir', this.isRtl() ? 'rtl' : 'ltr');
@@ -245,8 +245,8 @@ export class Overlay {
245
245
  rootDocument,
246
246
  rootWindow
247
247
  } = this.domBindings;
248
- const clone = rootDocument.createElement('DIV');
249
- const clonedTable = rootDocument.createElement('TABLE');
248
+ const clone = rootDocument.createElement('div');
249
+ const clonedTable = rootDocument.createElement('table');
250
250
  const tableParent = wtTable.wtRootElement.parentNode;
251
251
  clone.className = `${CLONE_CLASS_NAMES.get(this.type)} handsontable`;
252
252
  clone.setAttribute('dir', this.isRtl() ? 'rtl' : 'ltr');
@@ -71,7 +71,7 @@ class ColumnHeadersRenderer extends _base.default {
71
71
  columnHeadersCount
72
72
  } = this.table;
73
73
  if (this.table.isAriaEnabled()) {
74
- (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_PRESENTATION)()]);
74
+ (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_ROWGROUP)()]);
75
75
  }
76
76
  for (let rowHeaderIndex = 0; rowHeaderIndex < columnHeadersCount; rowHeaderIndex += 1) {
77
77
  const {
@@ -93,7 +93,7 @@ class ColumnHeadersRenderer extends _base.default {
93
93
  // Remove all accessibility-related attributes for the header to start fresh.
94
94
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
95
95
  if (this.table.isAriaEnabled()) {
96
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), ...(renderedColumnIndex < 0 ? [(0, _a11y.A11Y_PRESENTATION)()] : [(0, _a11y.A11Y_COLUMNHEADER)(), (0, _a11y.A11Y_SCOPE_COL)()])]);
96
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), (0, _a11y.A11Y_COLUMNHEADER)(), ...(renderedColumnIndex >= 0 ? [(0, _a11y.A11Y_SCOPE_COL)()] : [])]);
97
97
  }
98
98
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
99
99
  }
@@ -1,6 +1,6 @@
1
1
  import { empty, setAttribute, removeAttribute } from "./../../../../helpers/dom/element.mjs";
2
2
  import BaseRenderer from "./_base.mjs";
3
- import { A11Y_COLINDEX, A11Y_COLUMNHEADER, A11Y_PRESENTATION, A11Y_ROW, A11Y_ROWINDEX, A11Y_SCOPE_COL, A11Y_TABINDEX } from "../../../../helpers/a11y.mjs";
3
+ import { A11Y_COLINDEX, A11Y_COLUMNHEADER, A11Y_ROW, A11Y_ROWGROUP, A11Y_ROWINDEX, A11Y_SCOPE_COL, A11Y_TABINDEX } from "../../../../helpers/a11y.mjs";
4
4
  /**
5
5
  * Column headers renderer responsible for managing (inserting, tracking, rendering) TR and TH elements.
6
6
  *
@@ -67,7 +67,7 @@ export default class ColumnHeadersRenderer extends BaseRenderer {
67
67
  columnHeadersCount
68
68
  } = this.table;
69
69
  if (this.table.isAriaEnabled()) {
70
- setAttribute(this.rootNode, [A11Y_PRESENTATION()]);
70
+ setAttribute(this.rootNode, [A11Y_ROWGROUP()]);
71
71
  }
72
72
  for (let rowHeaderIndex = 0; rowHeaderIndex < columnHeadersCount; rowHeaderIndex += 1) {
73
73
  const {
@@ -89,7 +89,7 @@ export default class ColumnHeadersRenderer extends BaseRenderer {
89
89
  // Remove all accessibility-related attributes for the header to start fresh.
90
90
  removeAttribute(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
91
91
  if (this.table.isAriaEnabled()) {
92
- setAttribute(TH, [A11Y_COLINDEX(renderedColumnIndex + 1 + this.table.rowHeadersCount), A11Y_TABINDEX(-1), ...(renderedColumnIndex < 0 ? [A11Y_PRESENTATION()] : [A11Y_COLUMNHEADER(), A11Y_SCOPE_COL()])]);
92
+ setAttribute(TH, [A11Y_COLINDEX(renderedColumnIndex + 1 + this.table.rowHeadersCount), A11Y_TABINDEX(-1), A11Y_COLUMNHEADER(), ...(renderedColumnIndex >= 0 ? [A11Y_SCOPE_COL()] : [])]);
93
93
  }
94
94
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
95
95
  }
@@ -61,7 +61,7 @@ class RowsRenderer extends _base.default {
61
61
  the number of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.`);
62
62
  }
63
63
  if (this.table.isAriaEnabled()) {
64
- (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_PRESENTATION)()]);
64
+ (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_ROWGROUP)()]);
65
65
  }
66
66
  this.orderView.setSize(rowsToRender).setOffset(this.table.renderedRowToSource(0)).start();
67
67
  for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
@@ -7,7 +7,7 @@ import { toSingleLine } from "./../../../../helpers/templateLiteralTag.mjs";
7
7
  import { OrderView } from "./../utils/orderView/index.mjs";
8
8
  import BaseRenderer from "./_base.mjs";
9
9
  import { setAttribute } from "../../../../helpers/dom/element.mjs";
10
- import { A11Y_PRESENTATION, A11Y_ROW, A11Y_ROWINDEX } from "../../../../helpers/a11y.mjs";
10
+ import { A11Y_ROW, A11Y_ROWGROUP, A11Y_ROWINDEX } from "../../../../helpers/a11y.mjs";
11
11
  let performanceWarningAppeared = false;
12
12
 
13
13
  /**
@@ -57,7 +57,7 @@ export default class RowsRenderer extends BaseRenderer {
57
57
  the number of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.`);
58
58
  }
59
59
  if (this.table.isAriaEnabled()) {
60
- setAttribute(this.rootNode, [A11Y_PRESENTATION()]);
60
+ setAttribute(this.rootNode, [A11Y_ROWGROUP()]);
61
61
  }
62
62
  this.orderView.setSize(rowsToRender).setOffset(this.table.renderedRowToSource(0)).start();
63
63
  for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
@@ -190,12 +190,12 @@ class SelectionManager {
190
190
  }
191
191
  const selections = Array.from(_classPrivateFieldGet(this, _selections));
192
192
  const classNamesMap = new Map();
193
- const focusedHeaderAttributesMap = new Map();
193
+ const headerAttributesMap = new Map();
194
194
  for (let i = 0; i < selections.length; i++) {
195
195
  const selection = selections[i];
196
196
  const {
197
197
  className,
198
- focusedHeaderAttributes,
198
+ headerAttributes,
199
199
  createLayers,
200
200
  selectionType
201
201
  } = selection.settings;
@@ -222,12 +222,12 @@ class SelectionManager {
222
222
  } else {
223
223
  classNamesMap.set(element, new Map([[className, 1]]));
224
224
  }
225
- if (selectionType === 'focus' && focusedHeaderAttributes) {
226
- if (!focusedHeaderAttributesMap.has(element)) {
227
- focusedHeaderAttributesMap.set(element, []);
225
+ if (headerAttributes) {
226
+ if (!headerAttributesMap.has(element)) {
227
+ headerAttributesMap.set(element, []);
228
228
  }
229
229
  if (element.nodeName === 'TH') {
230
- focusedHeaderAttributesMap.get(element).push(...focusedHeaderAttributes);
230
+ headerAttributesMap.get(element).push(...headerAttributes);
231
231
  }
232
232
  }
233
233
  });
@@ -255,8 +255,8 @@ class SelectionManager {
255
255
  });
256
256
 
257
257
  // Set the attributes for the headers if they're focused.
258
- Array.from(focusedHeaderAttributesMap.keys()).forEach(element => {
259
- (0, _element.setAttribute)(element, [...focusedHeaderAttributesMap.get(element)]);
258
+ Array.from(headerAttributesMap.keys()).forEach(element => {
259
+ (0, _element.setAttribute)(element, [...headerAttributesMap.get(element)]);
260
260
  });
261
261
  }
262
262
  }
@@ -186,12 +186,12 @@ export class SelectionManager {
186
186
  }
187
187
  const selections = Array.from(_classPrivateFieldGet(this, _selections));
188
188
  const classNamesMap = new Map();
189
- const focusedHeaderAttributesMap = new Map();
189
+ const headerAttributesMap = new Map();
190
190
  for (let i = 0; i < selections.length; i++) {
191
191
  const selection = selections[i];
192
192
  const {
193
193
  className,
194
- focusedHeaderAttributes,
194
+ headerAttributes,
195
195
  createLayers,
196
196
  selectionType
197
197
  } = selection.settings;
@@ -218,12 +218,12 @@ export class SelectionManager {
218
218
  } else {
219
219
  classNamesMap.set(element, new Map([[className, 1]]));
220
220
  }
221
- if (selectionType === 'focus' && focusedHeaderAttributes) {
222
- if (!focusedHeaderAttributesMap.has(element)) {
223
- focusedHeaderAttributesMap.set(element, []);
221
+ if (headerAttributes) {
222
+ if (!headerAttributesMap.has(element)) {
223
+ headerAttributesMap.set(element, []);
224
224
  }
225
225
  if (element.nodeName === 'TH') {
226
- focusedHeaderAttributesMap.get(element).push(...focusedHeaderAttributes);
226
+ headerAttributesMap.get(element).push(...headerAttributes);
227
227
  }
228
228
  }
229
229
  });
@@ -251,8 +251,8 @@ export class SelectionManager {
251
251
  });
252
252
 
253
253
  // Set the attributes for the headers if they're focused.
254
- Array.from(focusedHeaderAttributesMap.keys()).forEach(element => {
255
- setAttribute(element, [...focusedHeaderAttributesMap.get(element)]);
254
+ Array.from(headerAttributesMap.keys()).forEach(element => {
255
+ setAttribute(element, [...headerAttributesMap.get(element)]);
256
256
  });
257
257
  }
258
258
  }
package/base.js CHANGED
@@ -43,8 +43,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
43
43
  Handsontable.CellCoords = _src.CellCoords;
44
44
  Handsontable.CellRange = _src.CellRange;
45
45
  Handsontable.packageName = 'handsontable';
46
- Handsontable.buildDate = "23/11/2023 14:17:16";
47
- Handsontable.version = "0.0.0-next-f11b1a2-20231123";
46
+ Handsontable.buildDate = "27/11/2023 10:22:28";
47
+ Handsontable.version = "0.0.0-next-44acfea-20231127";
48
48
  Handsontable.languages = {
49
49
  dictionaryKeys: _registry.dictionaryKeys,
50
50
  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 = "23/11/2023 14:17:22";
39
- Handsontable.version = "0.0.0-next-f11b1a2-20231123";
38
+ Handsontable.buildDate = "27/11/2023 10:22:34";
39
+ Handsontable.version = "0.0.0-next-44acfea-20231127";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -57,7 +57,7 @@ function createInputElement(hot) {
57
57
  input.type = 'text';
58
58
  input.classList.add('htFocusCatcher');
59
59
  if (hot.getSettings().ariaTags) {
60
- (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
60
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
61
61
  }
62
62
  return input;
63
63
  }
@@ -1,5 +1,5 @@
1
1
  import { setAttribute } from "../../helpers/dom/element.mjs";
2
- import { A11Y_PRESENTATION } from "../../helpers/a11y.mjs";
2
+ import { A11Y_PRESENTATION, A11Y_HIDDEN } from "../../helpers/a11y.mjs";
3
3
  /**
4
4
  * Installs a focus detector module. The module appends two input elements into the DOM side by side.
5
5
  * When the first input is focused, then it means that a user entered to the component using the TAB key
@@ -53,7 +53,7 @@ function createInputElement(hot) {
53
53
  input.type = 'text';
54
54
  input.classList.add('htFocusCatcher');
55
55
  if (hot.getSettings().ariaTags) {
56
- setAttribute(input, [A11Y_PRESENTATION()]);
56
+ setAttribute(input, [A11Y_PRESENTATION(), A11Y_HIDDEN()]);
57
57
  }
58
58
  return input;
59
59
  }
@@ -114,6 +114,8 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
114
114
  hotInstance.render();
115
115
  }
116
116
  if (hotInstance.getSettings().ariaTags) {
117
- (0, _element.setAttribute)(hotInstance.rootElement, [(0, _a11y.A11Y_ROWCOUNT)(hotInstance.countRows()), (0, _a11y.A11Y_COLCOUNT)(hotInstance.countCols())]);
117
+ (0, _element.setAttribute)(hotInstance.rootElement, [(0, _a11y.A11Y_ROWCOUNT)(-1),
118
+ // If run after initialization, add the number of row headers.
119
+ (0, _a11y.A11Y_COLCOUNT)(hotInstance.countCols() + (hotInstance.view ? hotInstance.countRowHeaders() : 0))]);
118
120
  }
119
121
  }
@@ -109,7 +109,9 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
109
109
  hotInstance.render();
110
110
  }
111
111
  if (hotInstance.getSettings().ariaTags) {
112
- setAttribute(hotInstance.rootElement, [A11Y_ROWCOUNT(hotInstance.countRows()), A11Y_COLCOUNT(hotInstance.countCols())]);
112
+ setAttribute(hotInstance.rootElement, [A11Y_ROWCOUNT(-1),
113
+ // If run after initialization, add the number of row headers.
114
+ A11Y_COLCOUNT(hotInstance.countCols() + (hotInstance.view ? hotInstance.countRowHeaders() : 0))]);
113
115
  }
114
116
  }
115
117
  export { replaceData };
@@ -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-f11b1a2-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 14:17:27)
28
+ * Version: 0.0.0-next-44acfea-20231127
29
+ * Release date: 31/08/2023 (built at 27/11/2023 10:22:39)
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-f11b1a2-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 14:17:27)
28
+ * Version: 0.0.0-next-44acfea-20231127
29
+ * Release date: 31/08/2023 (built at 27/11/2023 10:22:39)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles