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
@@ -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
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -105,8 +105,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
105
105
  Handsontable.CellCoords = _src.CellCoords;
106
106
  Handsontable.CellRange = _src.CellRange;
107
107
  Handsontable.packageName = 'handsontable';
108
- Handsontable.buildDate = "23/11/2023 14:17:27";
109
- Handsontable.version = "0.0.0-next-f11b1a2-20231123";
108
+ Handsontable.buildDate = "27/11/2023 10:22:39";
109
+ Handsontable.version = "0.0.0-next-44acfea-20231127";
110
110
  Handsontable.languages = {
111
111
  dictionaryKeys: _registry.dictionaryKeys,
112
112
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -8514,7 +8514,7 @@ const domMessages = {
8514
8514
  function _injectProductInfo(key, element) {
8515
8515
  const hasValidType = !isEmpty(key);
8516
8516
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8517
- const hotVersion = "0.0.0-next-f11b1a2-20231123";
8517
+ const hotVersion = "0.0.0-next-44acfea-20231127";
8518
8518
  let keyValidityDate;
8519
8519
  let consoleMessageState = 'invalid';
8520
8520
  let domMessageState = 'invalid';
@@ -8972,6 +8972,8 @@ const A11Y_GRIDCELL = () => ['role', 'gridcell'];
8972
8972
  exports.A11Y_GRIDCELL = A11Y_GRIDCELL;
8973
8973
  const A11Y_ROWHEADER = () => ['role', 'rowheader'];
8974
8974
  exports.A11Y_ROWHEADER = A11Y_ROWHEADER;
8975
+ const A11Y_ROWGROUP = () => ['role', 'rowgroup'];
8976
+ exports.A11Y_ROWGROUP = A11Y_ROWGROUP;
8975
8977
  const A11Y_COLUMNHEADER = () => ['role', 'columnheader'];
8976
8978
  exports.A11Y_COLUMNHEADER = A11Y_COLUMNHEADER;
8977
8979
  const A11Y_ROW = () => ['role', 'row'];
@@ -15456,8 +15458,10 @@ var _src = _interopRequireDefault(__webpack_require__(147));
15456
15458
  var _mouseEventHandler = __webpack_require__(217);
15457
15459
  var _rootInstance = __webpack_require__(218);
15458
15460
  var _a11y = __webpack_require__(114);
15461
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
15459
15462
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
15460
15463
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
15464
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
15461
15465
  /**
15462
15466
  * @class TableView
15463
15467
  * @private
@@ -15469,11 +15473,25 @@ var _mouseDown = /*#__PURE__*/new WeakMap();
15469
15473
  var _table = /*#__PURE__*/new WeakMap();
15470
15474
  var _lastWidth = /*#__PURE__*/new WeakMap();
15471
15475
  var _lastHeight = /*#__PURE__*/new WeakMap();
15476
+ var _getAriaColcount = /*#__PURE__*/new WeakSet();
15477
+ var _updateAriaColcount = /*#__PURE__*/new WeakSet();
15472
15478
  class TableView {
15473
15479
  /**
15474
15480
  * @param {Hanstontable} hotInstance Instance of {@link Handsontable}.
15475
15481
  */
15476
15482
  constructor(hotInstance) {
15483
+ /**
15484
+ * Update the `aria-colcount` attribute by the provided value.
15485
+ *
15486
+ * @param {number} delta The number of columns to add or remove to the aria tag.
15487
+ */
15488
+ _classPrivateMethodInitSpec(this, _updateAriaColcount);
15489
+ /**
15490
+ * Return the value of the `aria-colcount` attribute.
15491
+ *
15492
+ * @returns {number} The value of the `aria-colcount` attribute.
15493
+ */
15494
+ _classPrivateMethodInitSpec(this, _getAriaColcount);
15477
15495
  /**
15478
15496
  * Instance of {@link Handsontable}.
15479
15497
  *
@@ -15710,7 +15728,7 @@ class TableView {
15710
15728
  }
15711
15729
  if (this.settings.ariaTags) {
15712
15730
  (0, _element.setAttribute)((0, _classPrivateFieldGet2.default)(this, _table), [(0, _a11y.A11Y_PRESENTATION)()]);
15713
- (0, _element.setAttribute)(rootElement, [(0, _a11y.A11Y_TREEGRID)(), (0, _a11y.A11Y_ROWCOUNT)(this.hot.countRows()), (0, _a11y.A11Y_COLCOUNT)(this.hot.countCols()), (0, _a11y.A11Y_MULTISELECTABLE)()]);
15731
+ (0, _element.setAttribute)(rootElement, [(0, _a11y.A11Y_TREEGRID)(), (0, _a11y.A11Y_ROWCOUNT)(-1), (0, _a11y.A11Y_COLCOUNT)(this.hot.countCols()), (0, _a11y.A11Y_MULTISELECTABLE)()]);
15714
15732
  }
15715
15733
  this.THEAD = rootDocument.createElement('THEAD');
15716
15734
  (0, _classPrivateFieldGet2.default)(this, _table).appendChild(this.THEAD);
@@ -16103,6 +16121,13 @@ class TableView {
16103
16121
  }
16104
16122
  this.hot.runHooks('afterGetRowHeaderRenderers', headerRenderers);
16105
16123
  (0, _classPrivateFieldSet2.default)(this, _rowHeadersCount, headerRenderers.length);
16124
+ if (this.hot.getSettings().ariaTags) {
16125
+ // Update the aria-colcount attribute.
16126
+ // Only needs to be done once after initialization/data update.
16127
+ if (_classPrivateMethodGet(this, _getAriaColcount, _getAriaColcount2).call(this) === this.hot.countCols()) {
16128
+ _classPrivateMethodGet(this, _updateAriaColcount, _updateAriaColcount2).call(this, (0, _classPrivateFieldGet2.default)(this, _rowHeadersCount));
16129
+ }
16130
+ }
16106
16131
  return headerRenderers;
16107
16132
  },
16108
16133
  columnHeaders: () => {
@@ -16742,7 +16767,6 @@ class TableView {
16742
16767
  getRowHeadersCount() {
16743
16768
  return (0, _classPrivateFieldGet2.default)(this, _rowHeadersCount);
16744
16769
  }
16745
-
16746
16770
  /**
16747
16771
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
16748
16772
  *
@@ -16753,6 +16777,13 @@ class TableView {
16753
16777
  this.eventManager.destroy();
16754
16778
  }
16755
16779
  }
16780
+ function _getAriaColcount2() {
16781
+ return parseInt(this.hot.rootElement.getAttribute((0, _a11y.A11Y_COLCOUNT)()[0]), 10);
16782
+ }
16783
+ function _updateAriaColcount2(delta) {
16784
+ const colCount = _classPrivateMethodGet(this, _getAriaColcount, _getAriaColcount2).call(this) + delta;
16785
+ (0, _element.setAttribute)(this.hot.rootElement, ...(0, _a11y.A11Y_COLCOUNT)(colCount));
16786
+ }
16756
16787
  var _default = TableView;
16757
16788
  exports["default"] = _default;
16758
16789
 
@@ -22406,7 +22437,7 @@ class ColumnHeadersRenderer extends _base.default {
22406
22437
  columnHeadersCount
22407
22438
  } = this.table;
22408
22439
  if (this.table.isAriaEnabled()) {
22409
- (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_PRESENTATION)()]);
22440
+ (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_ROWGROUP)()]);
22410
22441
  }
22411
22442
  for (let rowHeaderIndex = 0; rowHeaderIndex < columnHeadersCount; rowHeaderIndex += 1) {
22412
22443
  const {
@@ -22428,7 +22459,7 @@ class ColumnHeadersRenderer extends _base.default {
22428
22459
  // Remove all accessibility-related attributes for the header to start fresh.
22429
22460
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
22430
22461
  if (this.table.isAriaEnabled()) {
22431
- (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)()])]);
22462
+ (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)()] : [])]);
22432
22463
  }
22433
22464
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
22434
22465
  }
@@ -22580,7 +22611,7 @@ class RowsRenderer extends _base.default {
22580
22611
  the number of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.`);
22581
22612
  }
22582
22613
  if (this.table.isAriaEnabled()) {
22583
- (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_PRESENTATION)()]);
22614
+ (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_ROWGROUP)()]);
22584
22615
  }
22585
22616
  this.orderView.setSize(rowsToRender).setOffset(this.table.renderedRowToSource(0)).start();
22586
22617
  for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
@@ -23653,8 +23684,8 @@ class Overlay {
23653
23684
  rootDocument,
23654
23685
  rootWindow
23655
23686
  } = this.domBindings;
23656
- const clone = rootDocument.createElement('DIV');
23657
- const clonedTable = rootDocument.createElement('TABLE');
23687
+ const clone = rootDocument.createElement('div');
23688
+ const clonedTable = rootDocument.createElement('table');
23658
23689
  const tableParent = wtTable.wtRootElement.parentNode;
23659
23690
  clone.className = `${_constants.CLONE_CLASS_NAMES.get(this.type)} handsontable`;
23660
23691
  clone.setAttribute('dir', this.isRtl() ? 'rtl' : 'ltr');
@@ -25996,12 +26027,12 @@ class SelectionManager {
25996
26027
  }
25997
26028
  const selections = Array.from((0, _classPrivateFieldGet7.default)(this, _selections));
25998
26029
  const classNamesMap = new Map();
25999
- const focusedHeaderAttributesMap = new Map();
26030
+ const headerAttributesMap = new Map();
26000
26031
  for (let i = 0; i < selections.length; i++) {
26001
26032
  const selection = selections[i];
26002
26033
  const {
26003
26034
  className,
26004
- focusedHeaderAttributes,
26035
+ headerAttributes,
26005
26036
  createLayers,
26006
26037
  selectionType
26007
26038
  } = selection.settings;
@@ -26028,12 +26059,12 @@ class SelectionManager {
26028
26059
  } else {
26029
26060
  classNamesMap.set(element, new Map([[className, 1]]));
26030
26061
  }
26031
- if (selectionType === 'focus' && focusedHeaderAttributes) {
26032
- if (!focusedHeaderAttributesMap.has(element)) {
26033
- focusedHeaderAttributesMap.set(element, []);
26062
+ if (headerAttributes) {
26063
+ if (!headerAttributesMap.has(element)) {
26064
+ headerAttributesMap.set(element, []);
26034
26065
  }
26035
26066
  if (element.nodeName === 'TH') {
26036
- focusedHeaderAttributesMap.get(element).push(...focusedHeaderAttributes);
26067
+ headerAttributesMap.get(element).push(...headerAttributes);
26037
26068
  }
26038
26069
  }
26039
26070
  });
@@ -26061,8 +26092,8 @@ class SelectionManager {
26061
26092
  });
26062
26093
 
26063
26094
  // Set the attributes for the headers if they're focused.
26064
- Array.from(focusedHeaderAttributesMap.keys()).forEach(element => {
26065
- (0, _element.setAttribute)(element, [...focusedHeaderAttributesMap.get(element)]);
26095
+ Array.from(headerAttributesMap.keys()).forEach(element => {
26096
+ (0, _element.setAttribute)(element, [...headerAttributesMap.get(element)]);
26066
26097
  });
26067
26098
  }
26068
26099
  }
@@ -32052,7 +32083,6 @@ class Selection {
32052
32083
  this.tableProps = tableProps;
32053
32084
  this.highlight = new _highlight.default({
32054
32085
  headerClassName: settings.currentHeaderClassName,
32055
- headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
32056
32086
  activeHeaderClassName: settings.activeHeaderClassName,
32057
32087
  rowClassName: settings.currentRowClassName,
32058
32088
  columnClassName: settings.currentColClassName,
@@ -33651,27 +33681,23 @@ exports.__esModule = true;
33651
33681
  exports.createHighlight = createHighlight;
33652
33682
  var _src = __webpack_require__(147);
33653
33683
  var _visualSelection = _interopRequireDefault(__webpack_require__(250));
33684
+ var _a11y = __webpack_require__(114);
33654
33685
  /**
33655
33686
  * Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
33656
33687
  * can present on the table only one at the time.
33657
33688
  *
33658
33689
  * @param {object} highlightParams A configuration object to create a highlight.
33659
33690
  * @param {Function} highlightParams.cellCornerVisible Function to determine if cell's corner should be visible.
33660
- * @param {Function} highlightParams.cellAttributes Array of cell attributes.
33661
- * @param {Function} highlightParams.headerAttributes Array of header attributes.
33662
33691
  * @returns {Selection}
33663
33692
  */
33664
33693
  function createHighlight(_ref) {
33665
33694
  let {
33666
33695
  cellCornerVisible,
33667
- cellAttributes,
33668
- headerAttributes,
33669
33696
  ...restOptions
33670
33697
  } = _ref;
33671
33698
  return new _visualSelection.default({
33672
33699
  className: 'current',
33673
- cellAttributes,
33674
- focusedHeaderAttributes: headerAttributes,
33700
+ headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
33675
33701
  border: {
33676
33702
  width: 2,
33677
33703
  color: '#4b89ff',
@@ -41780,7 +41806,9 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
41780
41806
  hotInstance.render();
41781
41807
  }
41782
41808
  if (hotInstance.getSettings().ariaTags) {
41783
- (0, _element.setAttribute)(hotInstance.rootElement, [(0, _a11y.A11Y_ROWCOUNT)(hotInstance.countRows()), (0, _a11y.A11Y_COLCOUNT)(hotInstance.countCols())]);
41809
+ (0, _element.setAttribute)(hotInstance.rootElement, [(0, _a11y.A11Y_ROWCOUNT)(-1),
41810
+ // If run after initialization, add the number of row headers.
41811
+ (0, _a11y.A11Y_COLCOUNT)(hotInstance.countCols() + (hotInstance.view ? hotInstance.countRowHeaders() : 0))]);
41784
41812
  }
41785
41813
  }
41786
41814
 
@@ -43584,7 +43612,7 @@ function createInputElement(hot) {
43584
43612
  input.type = 'text';
43585
43613
  input.classList.add('htFocusCatcher');
43586
43614
  if (hot.getSettings().ariaTags) {
43587
- (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
43615
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
43588
43616
  }
43589
43617
  return input;
43590
43618
  }
@@ -46615,7 +46643,6 @@ var _element = __webpack_require__(107);
46615
46643
  var _event = __webpack_require__(126);
46616
46644
  var _object = __webpack_require__(117);
46617
46645
  var _editorManager = __webpack_require__(120);
46618
- var _a11y = __webpack_require__(114);
46619
46646
  const SHORTCUTS_GROUP = 'handsontableEditor';
46620
46647
  const EDITOR_TYPE = 'handsontable';
46621
46648
 
@@ -46652,9 +46679,6 @@ class HandsontableEditor extends _textEditor.TextEditor {
46652
46679
  }
46653
46680
  (0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length);
46654
46681
  this.refreshDimensions();
46655
- if (this.hot.getSettings().ariaTags) {
46656
- (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
46657
- }
46658
46682
  }
46659
46683
 
46660
46684
  /**
@@ -46666,9 +46690,6 @@ class HandsontableEditor extends _textEditor.TextEditor {
46666
46690
  }
46667
46691
  this.removeHooksByKey('beforeKeyDown');
46668
46692
  super.close();
46669
- if (this.TD && this.hot.getSettings().ariaTags) {
46670
- (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
46671
- }
46672
46693
  }
46673
46694
 
46674
46695
  /**
@@ -46949,7 +46970,6 @@ var _pikaday = _interopRequireDefault(__webpack_require__(356));
46949
46970
  var _textEditor = __webpack_require__(335);
46950
46971
  var _eventManager = _interopRequireDefault(__webpack_require__(131));
46951
46972
  var _element = __webpack_require__(107);
46952
- var _a11y = __webpack_require__(114);
46953
46973
  var _object = __webpack_require__(117);
46954
46974
  var _unicode = __webpack_require__(125);
46955
46975
  __webpack_require__(357);
@@ -47073,9 +47093,6 @@ class DateEditor extends _textEditor.TextEditor {
47073
47093
  const editorContext = shortcutManager.getContext('editor');
47074
47094
  super.open();
47075
47095
  this.showDatepicker(event);
47076
- if (this.hot.getSettings().ariaTags) {
47077
- (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
47078
- }
47079
47096
  editorContext.addShortcut({
47080
47097
  keys: [['Enter']],
47081
47098
  callback: keyboardEvent => {
@@ -47101,9 +47118,6 @@ class DateEditor extends _textEditor.TextEditor {
47101
47118
  this.hot._registerTimeout(() => {
47102
47119
  this.hot._refreshBorders();
47103
47120
  });
47104
- if (this.TD && this.hot.getSettings().ariaTags) {
47105
- (0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
47106
- }
47107
47121
  const shortcutManager = this.hot.getShortcutManager();
47108
47122
  const editorContext = shortcutManager.getContext('editor');
47109
47123
  editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
@@ -47363,6 +47377,7 @@ exports.PasswordEditor = _passwordEditor.PasswordEditor;
47363
47377
  exports.__esModule = true;
47364
47378
  var _textEditor = __webpack_require__(335);
47365
47379
  var _element = __webpack_require__(107);
47380
+ var _a11y = __webpack_require__(114);
47366
47381
  const EDITOR_TYPE = 'password';
47367
47382
 
47368
47383
  /**
@@ -47383,6 +47398,9 @@ class PasswordEditor extends _textEditor.TextEditor {
47383
47398
  this.textareaStyle = this.TEXTAREA.style;
47384
47399
  this.textareaStyle.width = 0;
47385
47400
  this.textareaStyle.height = 0;
47401
+ if (this.hot.getSettings().ariaTags) {
47402
+ (0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
47403
+ }
47386
47404
  (0, _element.empty)(this.TEXTAREA_PARENT);
47387
47405
  this.TEXTAREA_PARENT.appendChild(this.TEXTAREA);
47388
47406
  }
@@ -47805,9 +47823,6 @@ function autocompleteRenderer(hotInstance, TD, row, col, prop, value, cellProper
47805
47823
 
47806
47824
  TD.insertBefore(ARROW, TD.firstChild);
47807
47825
  (0, _element.addClass)(TD, 'htAutocomplete');
47808
- if (isAriaEnabled) {
47809
- TD.setAttribute(...(0, _a11y.A11Y_HASPOPUP)('listbox'));
47810
- }
47811
47826
  if (!hotInstance.acArrowListener) {
47812
47827
  const eventManager = new _eventManager.default(hotInstance);
47813
47828
 
@@ -48193,7 +48208,6 @@ function createInput(rootDocument) {
48193
48208
  const input = rootDocument.createElement('input');
48194
48209
  input.className = 'htCheckboxRendererInput';
48195
48210
  input.type = 'checkbox';
48196
- input.setAttribute('autocomplete', 'off');
48197
48211
  input.setAttribute('tabindex', '-1');
48198
48212
  return input.cloneNode(false);
48199
48213
  }
@@ -49019,8 +49033,6 @@ exports.dateRenderer = _dateRenderer.dateRenderer;
49019
49033
  exports.__esModule = true;
49020
49034
  exports.dateRenderer = dateRenderer;
49021
49035
  var _autocompleteRenderer = __webpack_require__(369);
49022
- var _a11y = __webpack_require__(114);
49023
- var _element = __webpack_require__(107);
49024
49036
  const RENDERER_TYPE = 'date';
49025
49037
 
49026
49038
  /**
@@ -49038,9 +49050,6 @@ const RENDERER_TYPE = 'date';
49038
49050
  exports.RENDERER_TYPE = RENDERER_TYPE;
49039
49051
  function dateRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
49040
49052
  _autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
49041
- if (hotInstance.getSettings().ariaTags) {
49042
- (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('dialog'), (0, _a11y.A11Y_EXPANDED)('false')]);
49043
- }
49044
49053
  }
49045
49054
  dateRenderer.RENDERER_TYPE = RENDERER_TYPE;
49046
49055
 
@@ -49132,8 +49141,6 @@ exports.handsontableRenderer = _handsontableRenderer.handsontableRenderer;
49132
49141
  exports.__esModule = true;
49133
49142
  exports.handsontableRenderer = handsontableRenderer;
49134
49143
  var _autocompleteRenderer = __webpack_require__(369);
49135
- var _a11y = __webpack_require__(114);
49136
- var _element = __webpack_require__(107);
49137
49144
  const RENDERER_TYPE = 'handsontable';
49138
49145
 
49139
49146
  /**
@@ -49151,9 +49158,6 @@ const RENDERER_TYPE = 'handsontable';
49151
49158
  exports.RENDERER_TYPE = RENDERER_TYPE;
49152
49159
  function handsontableRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
49153
49160
  _autocompleteRenderer.autocompleteRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
49154
- if (hotInstance.getSettings().ariaTags) {
49155
- (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('true'), (0, _a11y.A11Y_EXPANDED)('false')]);
49156
- }
49157
49161
  }
49158
49162
  handsontableRenderer.RENDERER_TYPE = RENDERER_TYPE;
49159
49163
 
@@ -49276,8 +49280,6 @@ exports.selectRenderer = _selectRenderer.selectRenderer;
49276
49280
  exports.__esModule = true;
49277
49281
  exports.selectRenderer = selectRenderer;
49278
49282
  var _textRenderer = __webpack_require__(342);
49279
- var _a11y = __webpack_require__(114);
49280
- var _element = __webpack_require__(107);
49281
49283
  const RENDERER_TYPE = 'select';
49282
49284
 
49283
49285
  /**
@@ -49293,9 +49295,6 @@ const RENDERER_TYPE = 'select';
49293
49295
  exports.RENDERER_TYPE = RENDERER_TYPE;
49294
49296
  function selectRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
49295
49297
  _textRenderer.textRenderer.apply(this, [hotInstance, TD, row, col, prop, value, cellProperties]);
49296
- if (hotInstance.getSettings().ariaTags) {
49297
- (0, _element.setAttribute)(TD, ...(0, _a11y.A11Y_HASPOPUP)('listbox'));
49298
- }
49299
49298
  }
49300
49299
  selectRenderer.RENDERER_TYPE = RENDERER_TYPE;
49301
49300
 
@@ -65057,7 +65056,16 @@ class Filters extends _base.BasePlugin {
65057
65056
  // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
65058
65057
  // to the menu navigation using arrow keys.
65059
65058
  {
65060
- focus: () => mainMenu.focus()
65059
+ focus: () => {
65060
+ const menuNavigator = mainMenu.getNavigator();
65061
+ const lastSelectedMenuItem = (0, _classPrivateFieldGet2.default)(this, _menuFocusNavigator).getLastMenuPage();
65062
+ mainMenu.focus();
65063
+ if (lastSelectedMenuItem > 0) {
65064
+ menuNavigator.setCurrentPage(lastSelectedMenuItem);
65065
+ } else {
65066
+ menuNavigator.toFirstItem();
65067
+ }
65068
+ }
65061
65069
  }, ...Array.from(this.components).map(_ref => {
65062
65070
  let [, component] = _ref;
65063
65071
  return component.getElements();
@@ -69726,12 +69734,17 @@ const SHORTCUTS_MENU_CONTEXT = 'filters';
69726
69734
  * @returns {Paginator}
69727
69735
  */
69728
69736
  function createMenuFocusController(mainMenu, menuItems) {
69729
- const navigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
69737
+ /**
69738
+ * @type {number} The last selected menu item (before clearing the the menu state after going
69739
+ * into the focus mode triggered by the TAB or SHIFT+TAB keys).
69740
+ */
69741
+ let lastSelectedMenuItem = -1;
69742
+ const focusNavigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
69730
69743
  const updateNavigatorPosition = element => () => {
69731
69744
  if (mainMenu.isOpened()) {
69732
69745
  mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
69733
69746
  }
69734
- navigator.setCurrentPage(menuItems.indexOf(element));
69747
+ focusNavigator.setCurrentPage(menuItems.indexOf(element));
69735
69748
  };
69736
69749
 
69737
69750
  // update navigator position (internal state) to element that was recently clicked or focused
@@ -69744,7 +69757,7 @@ function createMenuFocusController(mainMenu, menuItems) {
69744
69757
  });
69745
69758
  mainMenu.addLocalHook('afterSelectionChange', selectedItem => {
69746
69759
  if (!selectedItem.key.startsWith('filter_')) {
69747
- navigator.clear();
69760
+ focusNavigator.clear();
69748
69761
  }
69749
69762
  });
69750
69763
 
@@ -69756,7 +69769,7 @@ function createMenuFocusController(mainMenu, menuItems) {
69756
69769
  function addKeyboardShortcuts(menu) {
69757
69770
  const mainMenuShortcutsCtrl = mainMenu.getKeyboardShortcutsCtrl();
69758
69771
  const currentMenuShortcutsCtrl = menu.getKeyboardShortcutsCtrl();
69759
- navigator.clear();
69772
+ focusNavigator.clear();
69760
69773
  currentMenuShortcutsCtrl.addCustomShortcuts([{
69761
69774
  keys: [['Tab'], ['Shift', 'Tab']],
69762
69775
  forwardToContext: mainMenuShortcutsCtrl.getContext(SHORTCUTS_MENU_CONTEXT),
@@ -69773,11 +69786,15 @@ function createMenuFocusController(mainMenu, menuItems) {
69773
69786
  mainMenuShortcutsCtrl.addCustomShortcuts([{
69774
69787
  keys: [['Tab'], ['Shift', 'Tab']],
69775
69788
  callback: event => {
69776
- mainMenu.getNavigator().clear();
69789
+ const menuNavigator = mainMenu.getNavigator();
69790
+ if (menuNavigator.getCurrentPage() > -1) {
69791
+ lastSelectedMenuItem = menuNavigator.getCurrentPage();
69792
+ }
69793
+ menuNavigator.clear();
69777
69794
  if (event.shiftKey) {
69778
- navigator.toPreviousItem();
69795
+ focusNavigator.toPreviousItem();
69779
69796
  } else {
69780
- navigator.toNextItem();
69797
+ focusNavigator.toNextItem();
69781
69798
  }
69782
69799
  }
69783
69800
  }, {
@@ -69789,7 +69806,7 @@ function createMenuFocusController(mainMenu, menuItems) {
69789
69806
  keys: [['Enter'], ['Space']],
69790
69807
  preventDefault: false,
69791
69808
  callback: event => {
69792
- const element = menuItems[navigator.getCurrentPage()];
69809
+ const element = menuItems[focusNavigator.getCurrentPage()];
69793
69810
  if (element instanceof _select.SelectUI) {
69794
69811
  element.openOptions();
69795
69812
  event.preventDefault();
@@ -69815,9 +69832,19 @@ function createMenuFocusController(mainMenu, menuItems) {
69815
69832
  mainMenu.focus();
69816
69833
  mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
69817
69834
  }
69835
+
69836
+ /**
69837
+ * Retrieves the last selected menu item (before clearing the state after going into the focus mode).
69838
+ *
69839
+ * @returns {number} The last selected menu item.
69840
+ */
69841
+ function getLastMenuPage() {
69842
+ return lastSelectedMenuItem;
69843
+ }
69818
69844
  return {
69819
- ...navigator,
69820
- listen
69845
+ ...focusNavigator,
69846
+ listen,
69847
+ getLastMenuPage
69821
69848
  };
69822
69849
  }
69823
69850
 
@@ -84252,6 +84279,7 @@ class NestedRows extends _base.BasePlugin {
84252
84279
  /**
84253
84280
  * The modifyRowData hook callback.
84254
84281
  *
84282
+ * @private
84255
84283
  * @param {number} row Visual row index.
84256
84284
  * @returns {boolean}
84257
84285
  */
@@ -84265,6 +84293,7 @@ class NestedRows extends _base.BasePlugin {
84265
84293
  /**
84266
84294
  * Modify the source data length to match the length of the nested structure.
84267
84295
  *
84296
+ * @private
84268
84297
  * @returns {number}
84269
84298
  */
84270
84299
  onModifySourceLength() {
@@ -84275,6 +84304,7 @@ class NestedRows extends _base.BasePlugin {
84275
84304
  }
84276
84305
 
84277
84306
  /**
84307
+ * @private
84278
84308
  * @param {number} index The index where the data was spliced.
84279
84309
  * @param {number} amount An amount of items to remove.
84280
84310
  * @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-f11b1a2-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 14:17:44)
28
+ * Version: 0.0.0-next-44acfea-20231127
29
+ * Release date: 31/08/2023 (built at 27/11/2023 10:22:57)
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}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
31
31
  /*!
32
32
  * Handsontable ContextMenu