handsontable 0.0.0-next-a77544c-20231123 → 0.0.0-next-a417c2b-20231124

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.

@@ -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
  }
@@ -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
  }
@@ -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 13:45:37";
47
- Handsontable.version = "0.0.0-next-a77544c-20231123";
46
+ Handsontable.buildDate = "24/11/2023 11:00:10";
47
+ Handsontable.version = "0.0.0-next-a417c2b-20231124";
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 13:45:44";
39
- Handsontable.version = "0.0.0-next-a77544c-20231123";
38
+ Handsontable.buildDate = "24/11/2023 11:00:16";
39
+ Handsontable.version = "0.0.0-next-a417c2b-20231124";
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
  }
@@ -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-a77544c-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 13:45:49)
28
+ * Version: 0.0.0-next-a417c2b-20231124
29
+ * Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
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-a77544c-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 13:45:49)
28
+ * Version: 0.0.0-next-a417c2b-20231124
29
+ * Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
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-a77544c-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 13:45:49)
28
+ * Version: 0.0.0-next-a417c2b-20231124
29
+ * Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42664,8 +42664,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
42664
42664
  Handsontable.CellCoords = _src.CellCoords;
42665
42665
  Handsontable.CellRange = _src.CellRange;
42666
42666
  Handsontable.packageName = 'handsontable';
42667
- Handsontable.buildDate = "23/11/2023 13:45:49";
42668
- Handsontable.version = "0.0.0-next-a77544c-20231123";
42667
+ Handsontable.buildDate = "24/11/2023 11:00:21";
42668
+ Handsontable.version = "0.0.0-next-a417c2b-20231124";
42669
42669
  Handsontable.languages = {
42670
42670
  dictionaryKeys: _registry.dictionaryKeys,
42671
42671
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -52786,7 +52786,7 @@ const domMessages = {
52786
52786
  function _injectProductInfo(key, element) {
52787
52787
  const hasValidType = !isEmpty(key);
52788
52788
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
52789
- const hotVersion = "0.0.0-next-a77544c-20231123";
52789
+ const hotVersion = "0.0.0-next-a417c2b-20231124";
52790
52790
  let keyValidityDate;
52791
52791
  let consoleMessageState = 'invalid';
52792
52792
  let domMessageState = 'invalid';
@@ -67661,8 +67661,10 @@ class TableView {
67661
67661
  const span = rootDocument.createElement('span');
67662
67662
  div.className = 'relative';
67663
67663
  span.className = 'colHeader';
67664
- (0, _element.setAttribute)(div, ...(0, _a11y.A11Y_PRESENTATION)());
67665
- (0, _element.setAttribute)(span, ...(0, _a11y.A11Y_PRESENTATION)());
67664
+ if (this.settings.ariaTags) {
67665
+ (0, _element.setAttribute)(div, ...(0, _a11y.A11Y_PRESENTATION)());
67666
+ (0, _element.setAttribute)(span, ...(0, _a11y.A11Y_PRESENTATION)());
67667
+ }
67666
67668
  this.updateCellHeader(span, visualColumnIndex, label, headerLevel);
67667
67669
  div.appendChild(span);
67668
67670
  TH.appendChild(div);
@@ -73492,7 +73494,7 @@ class ColumnHeadersRenderer extends _base.default {
73492
73494
  // Remove all accessibility-related attributes for the header to start fresh.
73493
73495
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
73494
73496
  if (this.table.isAriaEnabled()) {
73495
- (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)()])]);
73497
+ (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)()] : [])]);
73496
73498
  }
73497
73499
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
73498
73500
  }
@@ -77060,12 +77062,12 @@ class SelectionManager {
77060
77062
  }
77061
77063
  const selections = Array.from((0, _classPrivateFieldGet7.default)(this, _selections));
77062
77064
  const classNamesMap = new Map();
77063
- const focusedHeaderAttributesMap = new Map();
77065
+ const headerAttributesMap = new Map();
77064
77066
  for (let i = 0; i < selections.length; i++) {
77065
77067
  const selection = selections[i];
77066
77068
  const {
77067
77069
  className,
77068
- focusedHeaderAttributes,
77070
+ headerAttributes,
77069
77071
  createLayers,
77070
77072
  selectionType
77071
77073
  } = selection.settings;
@@ -77092,12 +77094,12 @@ class SelectionManager {
77092
77094
  } else {
77093
77095
  classNamesMap.set(element, new Map([[className, 1]]));
77094
77096
  }
77095
- if (selectionType === 'focus' && focusedHeaderAttributes) {
77096
- if (!focusedHeaderAttributesMap.has(element)) {
77097
- focusedHeaderAttributesMap.set(element, []);
77097
+ if (headerAttributes) {
77098
+ if (!headerAttributesMap.has(element)) {
77099
+ headerAttributesMap.set(element, []);
77098
77100
  }
77099
77101
  if (element.nodeName === 'TH') {
77100
- focusedHeaderAttributesMap.get(element).push(...focusedHeaderAttributes);
77102
+ headerAttributesMap.get(element).push(...headerAttributes);
77101
77103
  }
77102
77104
  }
77103
77105
  });
@@ -77125,8 +77127,8 @@ class SelectionManager {
77125
77127
  });
77126
77128
 
77127
77129
  // Set the attributes for the headers if they're focused.
77128
- Array.from(focusedHeaderAttributesMap.keys()).forEach(element => {
77129
- (0, _element.setAttribute)(element, [...focusedHeaderAttributesMap.get(element)]);
77130
+ Array.from(headerAttributesMap.keys()).forEach(element => {
77131
+ (0, _element.setAttribute)(element, [...headerAttributesMap.get(element)]);
77130
77132
  });
77131
77133
  }
77132
77134
  }
@@ -83116,7 +83118,6 @@ class Selection {
83116
83118
  this.tableProps = tableProps;
83117
83119
  this.highlight = new _highlight.default({
83118
83120
  headerClassName: settings.currentHeaderClassName,
83119
- headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
83120
83121
  activeHeaderClassName: settings.activeHeaderClassName,
83121
83122
  rowClassName: settings.currentRowClassName,
83122
83123
  columnClassName: settings.currentColClassName,
@@ -84715,27 +84716,23 @@ exports.__esModule = true;
84715
84716
  exports.createHighlight = createHighlight;
84716
84717
  var _src = __webpack_require__(478);
84717
84718
  var _visualSelection = _interopRequireDefault(__webpack_require__(581));
84719
+ var _a11y = __webpack_require__(445);
84718
84720
  /**
84719
84721
  * Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
84720
84722
  * can present on the table only one at the time.
84721
84723
  *
84722
84724
  * @param {object} highlightParams A configuration object to create a highlight.
84723
84725
  * @param {Function} highlightParams.cellCornerVisible Function to determine if cell's corner should be visible.
84724
- * @param {Function} highlightParams.cellAttributes Array of cell attributes.
84725
- * @param {Function} highlightParams.headerAttributes Array of header attributes.
84726
84726
  * @returns {Selection}
84727
84727
  */
84728
84728
  function createHighlight(_ref) {
84729
84729
  let {
84730
84730
  cellCornerVisible,
84731
- cellAttributes,
84732
- headerAttributes,
84733
84731
  ...restOptions
84734
84732
  } = _ref;
84735
84733
  return new _visualSelection.default({
84736
84734
  className: 'current',
84737
- cellAttributes,
84738
- focusedHeaderAttributes: headerAttributes,
84735
+ headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
84739
84736
  border: {
84740
84737
  width: 2,
84741
84738
  color: '#4b89ff',
@@ -94648,7 +94645,7 @@ function createInputElement(hot) {
94648
94645
  input.type = 'text';
94649
94646
  input.classList.add('htFocusCatcher');
94650
94647
  if (hot.getSettings().ariaTags) {
94651
- (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
94648
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
94652
94649
  }
94653
94650
  return input;
94654
94651
  }
@@ -117414,7 +117411,16 @@ class Filters extends _base.BasePlugin {
117414
117411
  // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
117415
117412
  // to the menu navigation using arrow keys.
117416
117413
  {
117417
- focus: () => mainMenu.focus()
117414
+ focus: () => {
117415
+ const menuNavigator = mainMenu.getNavigator();
117416
+ const lastSelectedMenuItem = (0, _classPrivateFieldGet2.default)(this, _menuFocusNavigator).getLastMenuPage();
117417
+ mainMenu.focus();
117418
+ if (lastSelectedMenuItem > 0) {
117419
+ menuNavigator.setCurrentPage(lastSelectedMenuItem);
117420
+ } else {
117421
+ menuNavigator.toFirstItem();
117422
+ }
117423
+ }
117418
117424
  }, ...Array.from(this.components).map(_ref => {
117419
117425
  let [, component] = _ref;
117420
117426
  return component.getElements();
@@ -120014,9 +120020,11 @@ var _classPrivateFieldGet2 = _interopRequireDefault(__webpack_require__(464));
120014
120020
  var _menu2 = __webpack_require__(814);
120015
120021
  var _object = __webpack_require__(448);
120016
120022
  var _array = __webpack_require__(444);
120023
+ var _element = __webpack_require__(302);
120017
120024
  var C = _interopRequireWildcard(__webpack_require__(576));
120018
120025
  var _predefinedItems = __webpack_require__(789);
120019
120026
  var _base = __webpack_require__(891);
120027
+ var _a11y = __webpack_require__(445);
120020
120028
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
120021
120029
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
120022
120030
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
@@ -120173,6 +120181,10 @@ class SelectUI extends _base.BaseUI {
120173
120181
  (0, _classPrivateFieldSet2.default)(this, _caption, caption);
120174
120182
  (0, _classPrivateFieldSet2.default)(this, _captionElement, caption.element);
120175
120183
  (0, _classPrivateFieldSet2.default)(this, _dropdown, dropdown);
120184
+ if (this.hot.getSettings().ariaTags) {
120185
+ (0, _element.setAttribute)(dropdown.element, [(0, _a11y.A11Y_HIDDEN)()]);
120186
+ (0, _element.setAttribute)(this._element, [(0, _a11y.A11Y_LISTBOX)()]);
120187
+ }
120176
120188
  (0, _array.arrayEach)([caption, dropdown], element => this._element.appendChild(element.element));
120177
120189
  (0, _classPrivateFieldGet2.default)(this, _menu).addLocalHook('select', command => _classPrivateMethodGet(this, _onMenuSelect, _onMenuSelect2).call(this, command));
120178
120190
  (0, _classPrivateFieldGet2.default)(this, _menu).addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuClosed, _onMenuClosed2).call(this));
@@ -122077,12 +122089,17 @@ const SHORTCUTS_MENU_CONTEXT = 'filters';
122077
122089
  * @returns {Paginator}
122078
122090
  */
122079
122091
  function createMenuFocusController(mainMenu, menuItems) {
122080
- const navigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
122092
+ /**
122093
+ * @type {number} The last selected menu item (before clearing the the menu state after going
122094
+ * into the focus mode triggered by the TAB or SHIFT+TAB keys).
122095
+ */
122096
+ let lastSelectedMenuItem = -1;
122097
+ const focusNavigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
122081
122098
  const updateNavigatorPosition = element => () => {
122082
122099
  if (mainMenu.isOpened()) {
122083
122100
  mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
122084
122101
  }
122085
- navigator.setCurrentPage(menuItems.indexOf(element));
122102
+ focusNavigator.setCurrentPage(menuItems.indexOf(element));
122086
122103
  };
122087
122104
 
122088
122105
  // update navigator position (internal state) to element that was recently clicked or focused
@@ -122095,7 +122112,7 @@ function createMenuFocusController(mainMenu, menuItems) {
122095
122112
  });
122096
122113
  mainMenu.addLocalHook('afterSelectionChange', selectedItem => {
122097
122114
  if (!selectedItem.key.startsWith('filter_')) {
122098
- navigator.clear();
122115
+ focusNavigator.clear();
122099
122116
  }
122100
122117
  });
122101
122118
 
@@ -122107,7 +122124,7 @@ function createMenuFocusController(mainMenu, menuItems) {
122107
122124
  function addKeyboardShortcuts(menu) {
122108
122125
  const mainMenuShortcutsCtrl = mainMenu.getKeyboardShortcutsCtrl();
122109
122126
  const currentMenuShortcutsCtrl = menu.getKeyboardShortcutsCtrl();
122110
- navigator.clear();
122127
+ focusNavigator.clear();
122111
122128
  currentMenuShortcutsCtrl.addCustomShortcuts([{
122112
122129
  keys: [['Tab'], ['Shift', 'Tab']],
122113
122130
  forwardToContext: mainMenuShortcutsCtrl.getContext(SHORTCUTS_MENU_CONTEXT),
@@ -122124,11 +122141,15 @@ function createMenuFocusController(mainMenu, menuItems) {
122124
122141
  mainMenuShortcutsCtrl.addCustomShortcuts([{
122125
122142
  keys: [['Tab'], ['Shift', 'Tab']],
122126
122143
  callback: event => {
122127
- mainMenu.getNavigator().clear();
122144
+ const menuNavigator = mainMenu.getNavigator();
122145
+ if (menuNavigator.getCurrentPage() > -1) {
122146
+ lastSelectedMenuItem = menuNavigator.getCurrentPage();
122147
+ }
122148
+ menuNavigator.clear();
122128
122149
  if (event.shiftKey) {
122129
- navigator.toPreviousItem();
122150
+ focusNavigator.toPreviousItem();
122130
122151
  } else {
122131
- navigator.toNextItem();
122152
+ focusNavigator.toNextItem();
122132
122153
  }
122133
122154
  }
122134
122155
  }, {
@@ -122140,7 +122161,7 @@ function createMenuFocusController(mainMenu, menuItems) {
122140
122161
  keys: [['Enter'], ['Space']],
122141
122162
  preventDefault: false,
122142
122163
  callback: event => {
122143
- const element = menuItems[navigator.getCurrentPage()];
122164
+ const element = menuItems[focusNavigator.getCurrentPage()];
122144
122165
  if (element instanceof _select.SelectUI) {
122145
122166
  element.openOptions();
122146
122167
  event.preventDefault();
@@ -122166,9 +122187,19 @@ function createMenuFocusController(mainMenu, menuItems) {
122166
122187
  mainMenu.focus();
122167
122188
  mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
122168
122189
  }
122190
+
122191
+ /**
122192
+ * Retrieves the last selected menu item (before clearing the state after going into the focus mode).
122193
+ *
122194
+ * @returns {number} The last selected menu item.
122195
+ */
122196
+ function getLastMenuPage() {
122197
+ return lastSelectedMenuItem;
122198
+ }
122169
122199
  return {
122170
- ...navigator,
122171
- listen
122200
+ ...focusNavigator,
122201
+ listen,
122202
+ getLastMenuPage
122172
122203
  };
122173
122204
  }
122174
122205
 
@@ -136603,6 +136634,7 @@ class NestedRows extends _base.BasePlugin {
136603
136634
  /**
136604
136635
  * The modifyRowData hook callback.
136605
136636
  *
136637
+ * @private
136606
136638
  * @param {number} row Visual row index.
136607
136639
  * @returns {boolean}
136608
136640
  */
@@ -136616,6 +136648,7 @@ class NestedRows extends _base.BasePlugin {
136616
136648
  /**
136617
136649
  * Modify the source data length to match the length of the nested structure.
136618
136650
  *
136651
+ * @private
136619
136652
  * @returns {number}
136620
136653
  */
136621
136654
  onModifySourceLength() {
@@ -136626,6 +136659,7 @@ class NestedRows extends _base.BasePlugin {
136626
136659
  }
136627
136660
 
136628
136661
  /**
136662
+ * @private
136629
136663
  * @param {number} index The index where the data was spliced.
136630
136664
  * @param {number} amount An amount of items to remove.
136631
136665
  * @param {object} element An element to add.
@@ -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-a77544c-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 13:46:07)
28
+ * Version: 0.0.0-next-a417c2b-20231124
29
+ * Release date: 31/08/2023 (built at 24/11/2023 11:00:38)
30
30
  */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable th:nth-child(2){border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;bottom:-100%\9;content:"";left:0;position:absolute;right:0;top:0}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.htSelectEditor:focus{outline:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}
31
31
  /*!
32
32
  * Pikaday