handsontable 0.0.0-next-e54c3d6-20231026 → 0.0.0-next-0c0e2e5-20231027

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

Potentially problematic release.


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

Files changed (65) hide show
  1. package/3rdparty/walkontable/src/cell/coords.js +2 -1
  2. package/3rdparty/walkontable/src/cell/coords.mjs +2 -1
  3. package/3rdparty/walkontable/src/renderer/columnHeaders.js +3 -0
  4. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +4 -1
  5. package/3rdparty/walkontable/src/renderer/rowHeaders.js +3 -0
  6. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +4 -1
  7. package/base.js +2 -2
  8. package/base.mjs +2 -2
  9. package/core.js +1 -1
  10. package/core.mjs +1 -1
  11. package/dist/handsontable.css +45 -63
  12. package/dist/handsontable.full.css +45 -63
  13. package/dist/handsontable.full.js +255 -25
  14. package/dist/handsontable.full.min.css +5 -5
  15. package/dist/handsontable.full.min.js +105 -105
  16. package/dist/handsontable.js +255 -25
  17. package/dist/handsontable.min.css +5 -5
  18. package/dist/handsontable.min.js +19 -19
  19. package/dist/languages/all.js +24 -2
  20. package/dist/languages/all.min.js +1 -1
  21. package/dist/languages/en-US.js +12 -1
  22. package/dist/languages/en-US.min.js +1 -1
  23. package/dist/languages/pl-PL.js +12 -1
  24. package/dist/languages/pl-PL.min.js +1 -1
  25. package/helpers/a11y.js +2 -0
  26. package/helpers/a11y.mjs +1 -0
  27. package/helpers/dom/element.js +29 -0
  28. package/helpers/dom/element.mjs +28 -0
  29. package/helpers/mixed.js +1 -1
  30. package/helpers/mixed.mjs +1 -1
  31. package/i18n/constants.js +27 -1
  32. package/i18n/constants.mjs +14 -1
  33. package/i18n/languages/en-US.js +12 -1
  34. package/i18n/languages/en-US.mjs +12 -1
  35. package/i18n/languages/pl-PL.js +12 -1
  36. package/i18n/languages/pl-PL.mjs +12 -1
  37. package/languages/all.js +24 -2
  38. package/languages/en-US.js +12 -1
  39. package/languages/en-US.mjs +12 -1
  40. package/languages/index.js +24 -2
  41. package/languages/pl-PL.js +12 -1
  42. package/languages/pl-PL.mjs +12 -1
  43. package/package.json +1 -1
  44. package/plugins/collapsibleColumns/collapsibleColumns.js +3 -2
  45. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -3
  46. package/plugins/columnSorting/columnSorting.js +29 -3
  47. package/plugins/columnSorting/columnSorting.mjs +31 -5
  48. package/plugins/contextMenu/menu/menuItemRenderer.js +12 -0
  49. package/plugins/contextMenu/menu/menuItemRenderer.mjs +14 -2
  50. package/plugins/dropdownMenu/dropdownMenu.js +2 -1
  51. package/plugins/dropdownMenu/dropdownMenu.mjs +3 -2
  52. package/plugins/filters/ui/input.js +0 -3
  53. package/plugins/filters/ui/input.mjs +0 -3
  54. package/plugins/filters/ui/select.js +6 -0
  55. package/plugins/filters/ui/select.mjs +6 -0
  56. package/plugins/hiddenColumns/hiddenColumns.js +48 -3
  57. package/plugins/hiddenColumns/hiddenColumns.mjs +47 -2
  58. package/plugins/hiddenRows/hiddenRows.js +48 -3
  59. package/plugins/hiddenRows/hiddenRows.mjs +47 -2
  60. package/plugins/multiColumnSorting/multiColumnSorting.js +21 -0
  61. package/plugins/multiColumnSorting/multiColumnSorting.mjs +22 -1
  62. package/plugins/nestedRows/nestedRows.js +2 -1
  63. package/plugins/nestedRows/nestedRows.mjs +2 -1
  64. package/plugins/nestedRows/ui/headers.js +3 -3
  65. package/plugins/nestedRows/ui/headers.mjs +4 -4
@@ -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-e54c3d6-20231026
29
- * Release date: 31/08/2023 (built at 26/10/2023 20:16:53)
28
+ * Version: 0.0.0-next-0c0e2e5-20231027
29
+ * Release date: 31/08/2023 (built at 27/10/2023 09:24:26)
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 = "26/10/2023 20:16:53";
42668
- Handsontable.version = "0.0.0-next-e54c3d6-20231026";
42667
+ Handsontable.buildDate = "27/10/2023 09:24:26";
42668
+ Handsontable.version = "0.0.0-next-0c0e2e5-20231027";
42669
42669
  Handsontable.languages = {
42670
42670
  dictionaryKeys: _registry.dictionaryKeys,
42671
42671
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -47127,7 +47127,7 @@ function Core(rootElement, userSettings) {
47127
47127
  * @function getTranslatedPhrase
47128
47128
  * @since 0.35.0
47129
47129
  * @param {string} dictionaryKey Constant which is dictionary key.
47130
- * @param {*} extraArguments Arguments which will be handled by formatters.
47130
+ * @param {*} [extraArguments] Arguments which will be handled by formatters.
47131
47131
  * @returns {string}
47132
47132
  */
47133
47133
  this.getTranslatedPhrase = function (dictionaryKey, extraArguments) {
@@ -49653,6 +49653,7 @@ module.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'strin
49653
49653
  exports.__esModule = true;
49654
49654
  exports.addClass = addClass;
49655
49655
  exports.addEvent = addEvent;
49656
+ exports.appendElement = appendElement;
49656
49657
  exports.clearTextSelection = clearTextSelection;
49657
49658
  exports.closest = closest;
49658
49659
  exports.closestDown = closestDown;
@@ -50788,6 +50789,34 @@ function runWithSelectedContendEditableElement(element, callback) {
50788
50789
  removeContentEditableFromElementAndDeselect(element, invisibleSelection);
50789
50790
  }
50790
50791
 
50792
+ /**
50793
+ * Creates a new DOM element and appends it to the parent element with the provided class name(s) and attributes.
50794
+ *
50795
+ * @param {HTMLElement} parentElement The parent element.
50796
+ * @param {object} properties The properties object.
50797
+ * @param {string} properties.tagName The type of the new element.
50798
+ * @param {string|string[]} properties.className Class name as string or array of strings.
50799
+ * @param {Array[]} properties.attributes An array containing the attributes to be added. Each element of the array
50800
+ * should be an array in a form of `[attributeName, attributeValue]`.
50801
+ * @returns {HTMLElement} The created div element.
50802
+ */
50803
+ function appendElement(parentElement, _ref) {
50804
+ let {
50805
+ tagName,
50806
+ className,
50807
+ attributes
50808
+ } = _ref;
50809
+ const element = parentElement.ownerDocument.createElement(tagName);
50810
+ if (className) {
50811
+ addClass(element, className);
50812
+ }
50813
+ if (attributes && attributes.length) {
50814
+ setAttribute(element, attributes);
50815
+ }
50816
+ parentElement.appendChild(element);
50817
+ return element;
50818
+ }
50819
+
50791
50820
  /***/ }),
50792
50821
  /* 303 */
50793
50822
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -52766,7 +52795,7 @@ const domMessages = {
52766
52795
  function _injectProductInfo(key, element) {
52767
52796
  const hasValidType = !isEmpty(key);
52768
52797
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
52769
- const hotVersion = "0.0.0-next-e54c3d6-20231026";
52798
+ const hotVersion = "0.0.0-next-0c0e2e5-20231027";
52770
52799
  let keyValidityDate;
52771
52800
  let consoleMessageState = 'invalid';
52772
52801
  let domMessageState = 'invalid';
@@ -60042,6 +60071,8 @@ const A11Y_TEXT = () => ['type', 'text'];
60042
60071
  exports.A11Y_TEXT = A11Y_TEXT;
60043
60072
  const A11Y_LABEL = val => ['aria-label', val];
60044
60073
  exports.A11Y_LABEL = A11Y_LABEL;
60074
+ const A11Y_DESCRIPTION = val => ['aria-description', val];
60075
+ exports.A11Y_DESCRIPTION = A11Y_DESCRIPTION;
60045
60076
  const A11Y_HIDDEN = () => ['aria-hidden', 'true'];
60046
60077
  exports.A11Y_HIDDEN = A11Y_HIDDEN;
60047
60078
  const A11Y_DISABLED = () => ['aria-disabled', 'true'];
@@ -69423,7 +69454,8 @@ class CellCoords {
69423
69454
  * Assigns the coordinates from another `CellCoords` instance (or compatible literal object)
69424
69455
  * to your `CellCoords` instance.
69425
69456
  *
69426
- * @param {CellCoords | { row?: number, col?: number }} coords The CellCoords instance or compatible literal object.
69457
+ * @param {CellCoords | { row: number | undefined, col: number | undefined }} coords The CellCoords
69458
+ * instance or compatible literal object.
69427
69459
  * @returns {CellCoords}
69428
69460
  */
69429
69461
  assign(coords) {
@@ -73294,6 +73326,9 @@ class RowHeadersRenderer extends _base.default {
73294
73326
  const TH = orderView.getCurrentNode();
73295
73327
  TH.className = '';
73296
73328
  TH.removeAttribute('style');
73329
+
73330
+ // Remove all accessibility-related attributes for the header to start fresh.
73331
+ (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
73297
73332
  if (this.table.isAriaEnabled()) {
73298
73333
  (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_ROWHEADER)(), (0, _a11y.A11Y_SCOPE_ROW)(), (0, _a11y.A11Y_COLINDEX)(visibleColumnIndex + 1), (0, _a11y.A11Y_TABINDEX)(-1)]);
73299
73334
  }
@@ -74011,6 +74046,9 @@ class ColumnHeadersRenderer extends _base.default {
74011
74046
  const TH = TR.childNodes[renderedColumnIndex + rowHeadersCount];
74012
74047
  TH.className = '';
74013
74048
  TH.removeAttribute('style');
74049
+
74050
+ // Remove all accessibility-related attributes for the header to start fresh.
74051
+ (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
74014
74052
  if (this.table.isAriaEnabled()) {
74015
74053
  (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)()])]);
74016
74054
  }
@@ -83258,7 +83296,18 @@ const dictionary = {
83258
83296
  [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'Value',
83259
83297
  [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'Second value',
83260
83298
  [C.CHECKBOX_CHECKED]: 'Checked',
83261
- [C.CHECKBOX_UNCHECKED]: 'Unchecked'
83299
+ [C.CHECKBOX_UNCHECKED]: 'Unchecked',
83300
+ [C.COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN]: 'Press ENTER to expand column.',
83301
+ [C.COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN]: 'Press ENTER to collapse column.',
83302
+ [C.COLUMN_HEADER_DESCRIPTION_SORT_ROWS]: 'Press ENTER to change sorting.',
83303
+ [C.COLUMN_HEADER_LABEL_MULTI_COLUMN_SORT_ORDER]: 'Multi-column sorting order:',
83304
+ [C.COLUMN_HEADER_LABEL_OPEN_MENU]: 'Press CTRL/CMD+ENTER to open menu.',
83305
+ [C.COLUMN_HEADER_LABEL_BEFORE_HIDDEN_COLUMN]: 'The next column is hidden.',
83306
+ [C.COLUMN_HEADER_LABEL_AFTER_HIDDEN_COLUMN]: 'The previous column is hidden.',
83307
+ [C.ROW_HEADER_DESCRIPTION_EXPAND_ROW]: 'Press ENTER to expand row.',
83308
+ [C.ROW_HEADER_DESCRIPTION_COLLAPSE_ROW]: 'Press ENTER to collapse row.',
83309
+ [C.ROW_HEADER_LABEL_BEFORE_HIDDEN_ROW]: 'The next row is hidden.',
83310
+ [C.ROW_HEADER_LABEL_AFTER_HIDDEN_ROW]: 'The previous row is hidden.'
83262
83311
  };
83263
83312
  var _default = dictionary;
83264
83313
  exports["default"] = _default;
@@ -83442,6 +83491,32 @@ const CHECKBOX_CHECKED = `${CHECKBOX_RENDERER_NAMESPACE}checked`;
83442
83491
  exports.CHECKBOX_CHECKED = CHECKBOX_CHECKED;
83443
83492
  const CHECKBOX_UNCHECKED = `${CHECKBOX_RENDERER_NAMESPACE}unchecked`;
83444
83493
  exports.CHECKBOX_UNCHECKED = CHECKBOX_UNCHECKED;
83494
+ const COLUMN_HEADER_NAMESPACE = 'ColumnHeader:';
83495
+ exports.COLUMN_HEADER_NAMESPACE = COLUMN_HEADER_NAMESPACE;
83496
+ const COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN = `${COLUMN_HEADER_NAMESPACE}description.expandColumn`;
83497
+ exports.COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN = COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN;
83498
+ const COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN = `${COLUMN_HEADER_NAMESPACE}description.collapseColumn`;
83499
+ exports.COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN = COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN;
83500
+ const COLUMN_HEADER_DESCRIPTION_SORT_ROWS = `${COLUMN_HEADER_NAMESPACE}description.sortRows`;
83501
+ exports.COLUMN_HEADER_DESCRIPTION_SORT_ROWS = COLUMN_HEADER_DESCRIPTION_SORT_ROWS;
83502
+ const COLUMN_HEADER_LABEL_MULTI_COLUMN_SORT_ORDER = `${COLUMN_HEADER_NAMESPACE}label.multiColumnSortOrder`;
83503
+ exports.COLUMN_HEADER_LABEL_MULTI_COLUMN_SORT_ORDER = COLUMN_HEADER_LABEL_MULTI_COLUMN_SORT_ORDER;
83504
+ const COLUMN_HEADER_LABEL_OPEN_MENU = `${COLUMN_HEADER_NAMESPACE}label.openMenu`;
83505
+ exports.COLUMN_HEADER_LABEL_OPEN_MENU = COLUMN_HEADER_LABEL_OPEN_MENU;
83506
+ const COLUMN_HEADER_LABEL_BEFORE_HIDDEN_COLUMN = `${COLUMN_HEADER_NAMESPACE}label.beforeHiddenColumn`;
83507
+ exports.COLUMN_HEADER_LABEL_BEFORE_HIDDEN_COLUMN = COLUMN_HEADER_LABEL_BEFORE_HIDDEN_COLUMN;
83508
+ const COLUMN_HEADER_LABEL_AFTER_HIDDEN_COLUMN = `${COLUMN_HEADER_NAMESPACE}label.afterHiddenColumn`;
83509
+ exports.COLUMN_HEADER_LABEL_AFTER_HIDDEN_COLUMN = COLUMN_HEADER_LABEL_AFTER_HIDDEN_COLUMN;
83510
+ const ROW_HEADER_NAMESPACE = 'RowHeader:';
83511
+ exports.ROW_HEADER_NAMESPACE = ROW_HEADER_NAMESPACE;
83512
+ const ROW_HEADER_DESCRIPTION_EXPAND_ROW = `${ROW_HEADER_NAMESPACE}description.expandRow`;
83513
+ exports.ROW_HEADER_DESCRIPTION_EXPAND_ROW = ROW_HEADER_DESCRIPTION_EXPAND_ROW;
83514
+ const ROW_HEADER_DESCRIPTION_COLLAPSE_ROW = `${ROW_HEADER_NAMESPACE}description.collapseRow`;
83515
+ exports.ROW_HEADER_DESCRIPTION_COLLAPSE_ROW = ROW_HEADER_DESCRIPTION_COLLAPSE_ROW;
83516
+ const ROW_HEADER_LABEL_BEFORE_HIDDEN_ROW = `${ROW_HEADER_NAMESPACE}label.beforeHiddenRow`;
83517
+ exports.ROW_HEADER_LABEL_BEFORE_HIDDEN_ROW = ROW_HEADER_LABEL_BEFORE_HIDDEN_ROW;
83518
+ const ROW_HEADER_LABEL_AFTER_HIDDEN_ROW = `${ROW_HEADER_NAMESPACE}label.afterHiddenRow`;
83519
+ exports.ROW_HEADER_LABEL_AFTER_HIDDEN_ROW = ROW_HEADER_LABEL_AFTER_HIDDEN_ROW;
83445
83520
 
83446
83521
  /***/ }),
83447
83522
  /* 582 */
@@ -105471,6 +105546,7 @@ var _element = __webpack_require__(302);
105471
105546
  var _eventManager = _interopRequireDefault(__webpack_require__(458));
105472
105547
  var _event = __webpack_require__(453);
105473
105548
  var _a11y = __webpack_require__(445);
105549
+ var _constants = __webpack_require__(581);
105474
105550
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
105475
105551
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
105476
105552
  const PLUGIN_KEY = 'collapsibleColumns';
@@ -105971,7 +106047,7 @@ class CollapsibleColumns extends _base.BasePlugin {
105971
106047
 
105972
106048
  // Add ARIA tags
105973
106049
  if (isAriaTagsEnabled) {
105974
- (0, _element.setAttribute)(TH, ...(0, _a11y.A11Y_EXPANDED)(false));
106050
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(false), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN))]);
105975
106051
  }
105976
106052
  } else {
105977
106053
  (0, _element.addClass)(collapsibleElement, 'expanded');
@@ -105979,7 +106055,7 @@ class CollapsibleColumns extends _base.BasePlugin {
105979
106055
 
105980
106056
  // Add ARIA tags
105981
106057
  if (isAriaTagsEnabled) {
105982
- (0, _element.setAttribute)(TH, ...(0, _a11y.A11Y_EXPANDED)(true));
106058
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(true), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN))]);
105983
106059
  }
105984
106060
  }
105985
106061
  if (isAriaTagsEnabled) {
@@ -106084,6 +106160,7 @@ var _domHelpers = __webpack_require__(778);
106084
106160
  var _rootComparator = __webpack_require__(779);
106085
106161
  var _sortService = __webpack_require__(780);
106086
106162
  var _a11y = __webpack_require__(445);
106163
+ var _constants = __webpack_require__(581);
106087
106164
  const PLUGIN_KEY = 'columnSorting';
106088
106165
  exports.PLUGIN_KEY = PLUGIN_KEY;
106089
106166
  const PLUGIN_PRIORITY = 50;
@@ -106093,6 +106170,7 @@ exports.APPEND_COLUMN_CONFIG_STRATEGY = APPEND_COLUMN_CONFIG_STRATEGY;
106093
106170
  const REPLACE_COLUMN_CONFIG_STRATEGY = 'replace';
106094
106171
  exports.REPLACE_COLUMN_CONFIG_STRATEGY = REPLACE_COLUMN_CONFIG_STRATEGY;
106095
106172
  const SHORTCUTS_GROUP = PLUGIN_KEY;
106173
+ const SORTING_INDICATOR_CLASS = 'columnSortingIndicator';
106096
106174
  (0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
106097
106175
  _pluginHooks.default.getSingleton().register('beforeColumnSort');
106098
106176
  _pluginHooks.default.getSingleton().register('afterColumnSort');
@@ -106711,12 +106789,14 @@ class ColumnSorting extends _base.BasePlugin {
106711
106789
  return;
106712
106790
  }
106713
106791
  const pluginSettingsForColumn = this.getFirstCellSettings(column)[this.pluginKey];
106792
+ const ariaTags = this.hot.getSettings().ariaTags;
106714
106793
  const showSortIndicator = pluginSettingsForColumn.indicator;
106715
106794
  const headerActionEnabled = pluginSettingsForColumn.headerAction;
106795
+ const currentSortState = this.columnStatesManager.getSortOrderOfColumn(column);
106716
106796
  this.updateHeaderClasses(headerSpanElement, this.columnStatesManager, column, showSortIndicator, headerActionEnabled);
106717
- if (this.hot.getSettings().ariaTags) {
106718
- const currentSortState = this.columnStatesManager.getSortOrderOfColumn(column);
106719
- (0, _element.setAttribute)(TH, ...(0, _a11y.A11Y_SORT)(currentSortState ? `${currentSortState}ending` : 'none'));
106797
+ this.updateSortingIndicator(column, headerSpanElement);
106798
+ if (ariaTags) {
106799
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_SORT)(currentSortState ? `${currentSortState}ending` : 'none'), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_DESCRIPTION_SORT_ROWS))]);
106720
106800
  }
106721
106801
  }
106722
106802
 
@@ -106737,6 +106817,28 @@ class ColumnSorting extends _base.BasePlugin {
106737
106817
  }
106738
106818
  }
106739
106819
 
106820
+ /**
106821
+ * Update sorting indicator.
106822
+ *
106823
+ * @private
106824
+ * @param {number} column Visual column index.
106825
+ * @param {HTMLElement} headerSpanElement Header span element.
106826
+ */
106827
+ updateSortingIndicator(column, headerSpanElement) {
106828
+ const pluginSettingsForColumn = this.getFirstCellSettings(column)[this.pluginKey];
106829
+ const ariaTags = this.hot.getSettings().ariaTags;
106830
+ const showSortIndicator = pluginSettingsForColumn.indicator;
106831
+ const isColumnSorted = this.columnStatesManager.isColumnSorted(column);
106832
+ const indicatorElement = headerSpanElement.querySelector(`.${SORTING_INDICATOR_CLASS}`);
106833
+ if (showSortIndicator && isColumnSorted && !indicatorElement) {
106834
+ (0, _element.appendElement)(headerSpanElement, {
106835
+ tagName: 'div',
106836
+ className: SORTING_INDICATOR_CLASS,
106837
+ attributes: ariaTags ? [(0, _a11y.A11Y_HIDDEN)()] : []
106838
+ });
106839
+ }
106840
+ }
106841
+
106740
106842
  /**
106741
106843
  * Overwriting base plugin's `onUpdateSettings` method. Please keep in mind that `onAfterUpdateSettings` isn't called
106742
106844
  * for `updateSettings` in specific situations.
@@ -113264,6 +113366,8 @@ exports.createMenuItemRenderer = createMenuItemRenderer;
113264
113366
  var _utils = __webpack_require__(826);
113265
113367
  var _element = __webpack_require__(302);
113266
113368
  var _a11y = __webpack_require__(445);
113369
+ const SUBMENU_INDICATOR_CLASSNAME = 'submenuIndicator';
113370
+
113267
113371
  /**
113268
113372
  * Creates the menu renderer function.
113269
113373
  *
@@ -113296,6 +113400,16 @@ function createMenuItemRenderer(mainTableHot) {
113296
113400
  const isFocusable = !(0, _utils.isItemDisabled)(item, mainTableHot) && !(0, _utils.isItemSelectionDisabled)(item) && !(0, _utils.isItemSeparator)(item);
113297
113401
  (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_MENU_ITEM)(), (0, _a11y.A11Y_LABEL)(itemValue), ...(isFocusable ? [(0, _a11y.A11Y_TABINDEX)(-1)] : []), ...((0, _utils.isItemDisabled)(item, mainTableHot) ? [(0, _a11y.A11Y_DISABLED)()] : []), ...((0, _utils.isItemSubMenu)(item) ? [(0, _a11y.A11Y_EXPANDED)(false)] : [])]);
113298
113402
  }
113403
+ if ((0, _utils.isItemSubMenu)(item)) {
113404
+ const submenuIndicatorElement = TD.querySelector('.submenuIndicator');
113405
+ if (!submenuIndicatorElement) {
113406
+ (0, _element.appendElement)(TD, {
113407
+ tagName: 'div',
113408
+ attributes: mainTableHot.getSettings().ariaTags ? [(0, _a11y.A11Y_HIDDEN)()] : [],
113409
+ className: SUBMENU_INDICATOR_CLASSNAME
113410
+ });
113411
+ }
113412
+ }
113299
113413
  TD.className = '';
113300
113414
  TD.appendChild(wrapper);
113301
113415
  if ((0, _utils.isItemSeparator)(item)) {
@@ -116828,6 +116942,7 @@ var _menu = __webpack_require__(820);
116828
116942
  var _pluginHooks = _interopRequireDefault(__webpack_require__(455));
116829
116943
  var _predefinedItems = __webpack_require__(795);
116830
116944
  __webpack_require__(857);
116945
+ var _constants = __webpack_require__(581);
116831
116946
  var _a11y = __webpack_require__(445);
116832
116947
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
116833
116948
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -117253,7 +117368,7 @@ class DropdownMenu extends _base.BasePlugin {
117253
117368
  button.type = 'button';
117254
117369
  button.tabIndex = -1;
117255
117370
  if (this.hot.getSettings().ariaTags) {
117256
- (0, _element.setAttribute)(button, [(0, _a11y.A11Y_HIDDEN)()]);
117371
+ (0, _element.setAttribute)(button, [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_LABEL_OPEN_MENU))]);
117257
117372
  (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_HASPOPUP)('menu')]);
117258
117373
  }
117259
117374
 
@@ -120553,11 +120668,8 @@ class InputUI extends _base.BaseUI {
120553
120668
  */
120554
120669
  build() {
120555
120670
  super.build();
120556
- const icon = this.hot.rootDocument.createElement('div');
120557
120671
  (0, _classPrivateFieldSet2.default)(this, _input, this._element.firstChild);
120558
120672
  (0, _element.addClass)(this._element, 'htUIInput');
120559
- (0, _element.addClass)(icon, 'htUIInputIcon');
120560
- this._element.appendChild(icon);
120561
120673
  this.update();
120562
120674
  }
120563
120675
 
@@ -120823,9 +120935,11 @@ var _classPrivateFieldGet2 = _interopRequireDefault(__webpack_require__(460));
120823
120935
  var _menu2 = __webpack_require__(820);
120824
120936
  var _object = __webpack_require__(448);
120825
120937
  var _array = __webpack_require__(444);
120938
+ var _element = __webpack_require__(302);
120826
120939
  var C = _interopRequireWildcard(__webpack_require__(581));
120827
120940
  var _predefinedItems = __webpack_require__(795);
120828
120941
  var _base = __webpack_require__(899);
120942
+ var _a11y = __webpack_require__(445);
120829
120943
  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); }
120830
120944
  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; }
120831
120945
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
@@ -120982,6 +121096,10 @@ class SelectUI extends _base.BaseUI {
120982
121096
  (0, _classPrivateFieldSet2.default)(this, _caption, caption);
120983
121097
  (0, _classPrivateFieldSet2.default)(this, _captionElement, caption.element);
120984
121098
  (0, _classPrivateFieldSet2.default)(this, _dropdown, dropdown);
121099
+ if (this.hot.getSettings().ariaTags) {
121100
+ (0, _element.setAttribute)(dropdown.element, [(0, _a11y.A11Y_HIDDEN)()]);
121101
+ (0, _element.setAttribute)(this._element, [(0, _a11y.A11Y_LISTBOX)()]);
121102
+ }
120985
121103
  (0, _array.arrayEach)([caption, dropdown], element => this._element.appendChild(element.element));
120986
121104
  (0, _classPrivateFieldGet2.default)(this, _menu).addLocalHook('select', command => _classPrivateMethodGet(this, _onMenuSelect, _onMenuSelect2).call(this, command));
120987
121105
  (0, _classPrivateFieldGet2.default)(this, _menu).addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuClosed, _onMenuClosed2).call(this));
@@ -125262,9 +125380,13 @@ var _pluginHooks = _interopRequireDefault(__webpack_require__(455));
125262
125380
  var _hideColumn = _interopRequireDefault(__webpack_require__(922));
125263
125381
  var _showColumn = _interopRequireDefault(__webpack_require__(923));
125264
125382
  var _translations = __webpack_require__(557);
125383
+ var _a11y = __webpack_require__(445);
125384
+ var _constants = __webpack_require__(581);
125265
125385
  __webpack_require__(924);
125386
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
125266
125387
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
125267
125388
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
125389
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
125268
125390
  _pluginHooks.default.getSingleton().register('beforeHideColumns');
125269
125391
  _pluginHooks.default.getSingleton().register('afterHideColumns');
125270
125392
  _pluginHooks.default.getSingleton().register('beforeUnhideColumns');
@@ -125272,6 +125394,9 @@ _pluginHooks.default.getSingleton().register('afterUnhideColumns');
125272
125394
  const PLUGIN_KEY = 'hiddenColumns';
125273
125395
  exports.PLUGIN_KEY = PLUGIN_KEY;
125274
125396
  const PLUGIN_PRIORITY = 310;
125397
+ exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
125398
+ const BEFORE_INDICATOR_CLASSNAME = 'beforeHiddenColumnIndicator';
125399
+ const AFTER_INDICATOR_CLASSNAME = 'afterHiddenColumnIndicator';
125275
125400
 
125276
125401
  /* eslint-disable jsdoc/require-description-complete-sentence */
125277
125402
 
@@ -125379,12 +125504,18 @@ const PLUGIN_PRIORITY = 310;
125379
125504
  * ```
125380
125505
  * :::
125381
125506
  */
125382
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
125383
125507
  var _settings = /*#__PURE__*/new WeakMap();
125384
125508
  var _hiddenColumnsMap = /*#__PURE__*/new WeakMap();
125509
+ var _clearIndicatorElements = /*#__PURE__*/new WeakSet();
125385
125510
  class HiddenColumns extends _base.BasePlugin {
125386
125511
  constructor() {
125387
125512
  super(...arguments);
125513
+ /**
125514
+ * Remove the indicator elements from the provided column header element.
125515
+ *
125516
+ * @param {HTMLElement} TH Column header element.
125517
+ */
125518
+ _classPrivateMethodInitSpec(this, _clearIndicatorElements);
125388
125519
  /**
125389
125520
  * Cached plugin settings.
125390
125521
  *
@@ -125468,8 +125599,15 @@ class HiddenColumns extends _base.BasePlugin {
125468
125599
  * Disables the plugin functionality for this Handsontable instance.
125469
125600
  */
125470
125601
  disablePlugin() {
125602
+ const clearColHeader = (columnIndex, TH) => {
125603
+ _classPrivateMethodGet(this, _clearIndicatorElements, _clearIndicatorElements2).call(this, TH);
125604
+ };
125471
125605
  this.hot.columnIndexMapper.unregisterMap(this.pluginName);
125472
125606
  (0, _classPrivateFieldSet2.default)(this, _settings, {});
125607
+ this.hot.addHook('afterGetColHeader', clearColHeader);
125608
+ this.hot.addHookOnce('afterViewRender', () => {
125609
+ this.hot.removeHook('afterGetColHeader', clearColHeader);
125610
+ });
125473
125611
  super.disablePlugin();
125474
125612
  this.resetCellsMeta();
125475
125613
  }
@@ -125611,7 +125749,6 @@ class HiddenColumns extends _base.BasePlugin {
125611
125749
  }
125612
125750
  });
125613
125751
  }
125614
-
125615
125752
  /**
125616
125753
  * Adds the additional column width for the hidden column indicators.
125617
125754
  *
@@ -125716,14 +125853,35 @@ class HiddenColumns extends _base.BasePlugin {
125716
125853
  * @param {HTMLElement} TH Header's TH element.
125717
125854
  */
125718
125855
  onAfterGetColHeader(column, TH) {
125856
+ const areAriaTagsEnabled = this.hot.getSettings().ariaTags;
125857
+ const beforeHiddenColumnIndicatorElement = TH.querySelector('.beforeHiddenColumnIndicator');
125858
+ const afterHiddenColumnIndicatorElement = TH.querySelector('.afterHiddenColumnIndicator');
125719
125859
  if (!(0, _classPrivateFieldGet2.default)(this, _settings).indicators || column < 0) {
125860
+ beforeHiddenColumnIndicatorElement === null || beforeHiddenColumnIndicatorElement === void 0 || beforeHiddenColumnIndicatorElement.remove();
125861
+ afterHiddenColumnIndicatorElement === null || afterHiddenColumnIndicatorElement === void 0 || afterHiddenColumnIndicatorElement.remove();
125720
125862
  return;
125721
125863
  }
125722
125864
  const classList = [];
125723
125865
  if (column >= 1 && this.isHidden(column - 1)) {
125866
+ if (!afterHiddenColumnIndicatorElement) {
125867
+ const attributesToAdd = areAriaTagsEnabled ? [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_LABEL_AFTER_HIDDEN_COLUMN))] : [];
125868
+ (0, _element.appendElement)(TH, {
125869
+ tagName: 'div',
125870
+ attributes: attributesToAdd,
125871
+ className: AFTER_INDICATOR_CLASSNAME
125872
+ });
125873
+ }
125724
125874
  classList.push('afterHiddenColumn');
125725
125875
  }
125726
125876
  if (column < this.hot.countCols() - 1 && this.isHidden(column + 1)) {
125877
+ if (!beforeHiddenColumnIndicatorElement) {
125878
+ const attributesToAdd = areAriaTagsEnabled ? [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_LABEL_BEFORE_HIDDEN_COLUMN))] : [];
125879
+ (0, _element.appendElement)(TH, {
125880
+ tagName: 'div',
125881
+ attributes: attributesToAdd,
125882
+ className: BEFORE_INDICATOR_CLASSNAME
125883
+ });
125884
+ }
125727
125885
  classList.push('beforeHiddenColumn');
125728
125886
  }
125729
125887
  (0, _element.addClass)(TH, classList);
@@ -125762,6 +125920,11 @@ class HiddenColumns extends _base.BasePlugin {
125762
125920
  }
125763
125921
  }
125764
125922
  exports.HiddenColumns = HiddenColumns;
125923
+ function _clearIndicatorElements2(TH) {
125924
+ Array.from(TH.querySelectorAll(`.${AFTER_INDICATOR_CLASSNAME}, .${BEFORE_INDICATOR_CLASSNAME}`)).forEach(element => {
125925
+ element.remove();
125926
+ });
125927
+ }
125765
125928
 
125766
125929
  /***/ }),
125767
125930
  /* 922 */
@@ -125974,9 +126137,13 @@ var _pluginHooks = _interopRequireDefault(__webpack_require__(455));
125974
126137
  var _hideRow = _interopRequireDefault(__webpack_require__(927));
125975
126138
  var _showRow = _interopRequireDefault(__webpack_require__(928));
125976
126139
  var _translations = __webpack_require__(557);
126140
+ var _a11y = __webpack_require__(445);
126141
+ var _constants = __webpack_require__(581);
125977
126142
  __webpack_require__(929);
126143
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
125978
126144
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
125979
126145
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
126146
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
125980
126147
  _pluginHooks.default.getSingleton().register('beforeHideRows');
125981
126148
  _pluginHooks.default.getSingleton().register('afterHideRows');
125982
126149
  _pluginHooks.default.getSingleton().register('beforeUnhideRows');
@@ -125984,6 +126151,9 @@ _pluginHooks.default.getSingleton().register('afterUnhideRows');
125984
126151
  const PLUGIN_KEY = 'hiddenRows';
125985
126152
  exports.PLUGIN_KEY = PLUGIN_KEY;
125986
126153
  const PLUGIN_PRIORITY = 320;
126154
+ exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
126155
+ const AFTER_INDICATOR_CLASSNAME = 'afterHiddenRowIndicator';
126156
+ const BEFORE_INDICATOR_CLASSNAME = 'beforeHiddenRowIndicator';
125987
126157
 
125988
126158
  /* eslint-disable jsdoc/require-description-complete-sentence */
125989
126159
 
@@ -126091,12 +126261,18 @@ const PLUGIN_PRIORITY = 320;
126091
126261
  * ```
126092
126262
  * :::
126093
126263
  */
126094
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
126095
126264
  var _settings = /*#__PURE__*/new WeakMap();
126096
126265
  var _hiddenRowsMap = /*#__PURE__*/new WeakMap();
126266
+ var _clearIndicatorElements = /*#__PURE__*/new WeakSet();
126097
126267
  class HiddenRows extends _base.BasePlugin {
126098
126268
  constructor() {
126099
126269
  super(...arguments);
126270
+ /**
126271
+ * Remove the indicator elements from the provided row header element.
126272
+ *
126273
+ * @param {HTMLElement} TH Column header element.
126274
+ */
126275
+ _classPrivateMethodInitSpec(this, _clearIndicatorElements);
126100
126276
  /**
126101
126277
  * Cached settings from Handsontable settings.
126102
126278
  *
@@ -126180,8 +126356,15 @@ class HiddenRows extends _base.BasePlugin {
126180
126356
  * Disables the plugin functionality for this Handsontable instance.
126181
126357
  */
126182
126358
  disablePlugin() {
126359
+ const clearRowHeader = (columnIndex, TH) => {
126360
+ _classPrivateMethodGet(this, _clearIndicatorElements, _clearIndicatorElements2).call(this, TH);
126361
+ };
126183
126362
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
126184
126363
  (0, _classPrivateFieldSet2.default)(this, _settings, {});
126364
+ this.hot.addHook('afterGetRowHeader', clearRowHeader);
126365
+ this.hot.addHookOnce('afterViewRender', () => {
126366
+ this.hot.removeHook('afterGetRowHeader', clearRowHeader);
126367
+ });
126185
126368
  super.disablePlugin();
126186
126369
  this.resetCellsMeta();
126187
126370
  }
@@ -126320,7 +126503,6 @@ class HiddenRows extends _base.BasePlugin {
126320
126503
  }
126321
126504
  });
126322
126505
  }
126323
-
126324
126506
  /**
126325
126507
  * Adds the additional row height for the hidden row indicators.
126326
126508
  *
@@ -126420,14 +126602,35 @@ class HiddenRows extends _base.BasePlugin {
126420
126602
  * @param {HTMLElement} TH Header's TH element.
126421
126603
  */
126422
126604
  onAfterGetRowHeader(row, TH) {
126605
+ const areAriaTagsEnabled = this.hot.getSettings().ariaTags;
126606
+ const beforeHiddenRowIndicatorElement = TH.querySelector('.beforeHiddenRowIndicator');
126607
+ const afterHiddenRowIndicatorElement = TH.querySelector('.afterHiddenRowIndicator');
126423
126608
  if (!(0, _classPrivateFieldGet2.default)(this, _settings).indicators || row < 0) {
126609
+ beforeHiddenRowIndicatorElement === null || beforeHiddenRowIndicatorElement === void 0 || beforeHiddenRowIndicatorElement.remove();
126610
+ afterHiddenRowIndicatorElement === null || afterHiddenRowIndicatorElement === void 0 || afterHiddenRowIndicatorElement.remove();
126424
126611
  return;
126425
126612
  }
126426
126613
  const classList = [];
126427
126614
  if (row >= 1 && this.isHidden(row - 1)) {
126615
+ if (!afterHiddenRowIndicatorElement) {
126616
+ const attributesToAdd = areAriaTagsEnabled ? [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.ROW_HEADER_LABEL_AFTER_HIDDEN_ROW))] : [];
126617
+ (0, _element.appendElement)(TH, {
126618
+ tagName: 'div',
126619
+ attributes: attributesToAdd,
126620
+ className: AFTER_INDICATOR_CLASSNAME
126621
+ });
126622
+ }
126428
126623
  classList.push('afterHiddenRow');
126429
126624
  }
126430
126625
  if (row < this.hot.countRows() - 1 && this.isHidden(row + 1)) {
126626
+ if (!beforeHiddenRowIndicatorElement) {
126627
+ const attributesToAdd = areAriaTagsEnabled ? [(0, _a11y.A11Y_LABEL)(this.hot.getTranslatedPhrase(_constants.ROW_HEADER_LABEL_BEFORE_HIDDEN_ROW))] : [];
126628
+ (0, _element.appendElement)(TH, {
126629
+ tagName: 'div',
126630
+ attributes: attributesToAdd,
126631
+ className: BEFORE_INDICATOR_CLASSNAME
126632
+ });
126633
+ }
126431
126634
  classList.push('beforeHiddenRow');
126432
126635
  }
126433
126636
  (0, _element.addClass)(TH, classList);
@@ -126466,6 +126669,11 @@ class HiddenRows extends _base.BasePlugin {
126466
126669
  }
126467
126670
  }
126468
126671
  exports.HiddenRows = HiddenRows;
126672
+ function _clearIndicatorElements2(TH) {
126673
+ Array.from(TH.querySelectorAll(`.${AFTER_INDICATOR_CLASSNAME}, .${BEFORE_INDICATOR_CLASSNAME}`)).forEach(element => {
126674
+ element.remove();
126675
+ });
126676
+ }
126469
126677
 
126470
126678
  /***/ }),
126471
126679
  /* 927 */
@@ -132564,6 +132772,8 @@ var _element = __webpack_require__(302);
132564
132772
  var _rootComparator = __webpack_require__(962);
132565
132773
  var _utils2 = __webpack_require__(963);
132566
132774
  var _domHelpers = __webpack_require__(964);
132775
+ var _a11y = __webpack_require__(445);
132776
+ var _constants = __webpack_require__(581);
132567
132777
  __webpack_require__(965);
132568
132778
  const PLUGIN_KEY = 'multiColumnSorting';
132569
132779
  exports.PLUGIN_KEY = PLUGIN_KEY;
@@ -132825,6 +133035,25 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
132825
133035
  }
132826
133036
  }
132827
133037
 
133038
+ /**
133039
+ * Update sorting indicator.
133040
+ *
133041
+ * @private
133042
+ * @param {number} column Visual column index.
133043
+ * @param {HTMLElement} headerSpanElement Header span element.
133044
+ */
133045
+ updateSortingIndicator(column, headerSpanElement) {
133046
+ super.updateSortingIndicator(column, headerSpanElement);
133047
+ const indicatorElement = headerSpanElement.querySelector('.columnSortingIndicator');
133048
+ if (!indicatorElement || !this.hot.getSettings().ariaTags || !this.columnStatesManager.isColumnSorted(column) || this.columnStatesManager.getNumberOfSortedColumns() <= 1) {
133049
+ return;
133050
+ }
133051
+ const multiColumnSortingOrder = this.columnStatesManager.getIndexOfColumnInSortQueue(column) + 1;
133052
+ const a11yLabelAttribute = (0, _a11y.A11Y_LABEL)(`${this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_LABEL_MULTI_COLUMN_SORT_ORDER)} ${multiColumnSortingOrder}.`);
133053
+ (0, _element.removeAttribute)(indicatorElement, (0, _a11y.A11Y_HIDDEN)()[0]);
133054
+ (0, _element.setAttribute)(indicatorElement, ...a11yLabelAttribute);
133055
+ }
133056
+
132828
133057
  /**
132829
133058
  * Overwriting base plugin's `onUpdateSettings` method. Please keep in mind that `onAfterUpdateSettings` isn't called
132830
133059
  * for `updateSettings` in specific situations.
@@ -136584,7 +136813,8 @@ class NestedRows extends _base.BasePlugin {
136584
136813
  /**
136585
136814
  * Updates the plugin's state.
136586
136815
  *
136587
- * This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
136816
+ * This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the
136817
+ * following configuration options:
136588
136818
  * - [`nestedRows`](@/api/options.md#nestedrows)
136589
136819
  */
136590
136820
  updatePlugin() {
@@ -138172,6 +138402,7 @@ var _number = __webpack_require__(471);
138172
138402
  var _element = __webpack_require__(302);
138173
138403
  var _base = _interopRequireDefault(__webpack_require__(989));
138174
138404
  var _a11y = __webpack_require__(445);
138405
+ var _constants = __webpack_require__(581);
138175
138406
  /**
138176
138407
  * Class responsible for the UI in the Nested Rows' row headers.
138177
138408
  *
@@ -138189,7 +138420,6 @@ class HeadersUI extends _base.default {
138189
138420
  return {
138190
138421
  indicatorContainer: 'ht_nestingLevels',
138191
138422
  parent: 'ht_nestingParent',
138192
- indicator: 'ht_nestingLevel',
138193
138423
  emptyIndicator: 'ht_nestingLevel_empty',
138194
138424
  button: 'ht_nestingButton',
138195
138425
  expandButton: 'ht_nestingExpand',
@@ -138267,12 +138497,12 @@ class HeadersUI extends _base.default {
138267
138497
  if (this.collapsingUI.areChildrenCollapsed(rowIndex)) {
138268
138498
  (0, _element.addClass)(buttonsContainer, `${HeadersUI.CSS_CLASSES.button} ${HeadersUI.CSS_CLASSES.expandButton}`);
138269
138499
  if (ariaEnabled) {
138270
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(false)]);
138500
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(false), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.ROW_HEADER_DESCRIPTION_EXPAND_ROW))]);
138271
138501
  }
138272
138502
  } else {
138273
138503
  (0, _element.addClass)(buttonsContainer, `${HeadersUI.CSS_CLASSES.button} ${HeadersUI.CSS_CLASSES.collapseButton}`);
138274
138504
  if (ariaEnabled) {
138275
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(true)]);
138505
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(true), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.ROW_HEADER_DESCRIPTION_COLLAPSE_ROW))]);
138276
138506
  }
138277
138507
  }
138278
138508
  innerDiv.appendChild(buttonsContainer);