handsontable 14.0.0-next-23212d5-20231127 → 14.0.0-next-477622d-20231128

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: 14.0.0-next-23212d5-20231127
29
- * Release date: 22/11/2023 (built at 27/11/2023 08:13:56)
28
+ * Version: 14.0.0-next-477622d-20231128
29
+ * Release date: 29/11/2023 (built at 28/11/2023 12:48:17)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -43033,8 +43033,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
43033
43033
  Handsontable.CellCoords = _src.CellCoords;
43034
43034
  Handsontable.CellRange = _src.CellRange;
43035
43035
  Handsontable.packageName = 'handsontable';
43036
- Handsontable.buildDate = "27/11/2023 08:13:56";
43037
- Handsontable.version = "14.0.0-next-23212d5-20231127";
43036
+ Handsontable.buildDate = "28/11/2023 12:48:17";
43037
+ Handsontable.version = "14.0.0-next-477622d-20231128";
43038
43038
  Handsontable.languages = {
43039
43039
  dictionaryKeys: _registry.dictionaryKeys,
43040
43040
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -53154,7 +53154,7 @@ const domMessages = {
53154
53154
  function _injectProductInfo(key, element) {
53155
53155
  const hasValidType = !isEmpty(key);
53156
53156
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
53157
- const hotVersion = "14.0.0-next-23212d5-20231127";
53157
+ const hotVersion = "14.0.0-next-477622d-20231128";
53158
53158
  let keyValidityDate;
53159
53159
  let consoleMessageState = 'invalid';
53160
53160
  let domMessageState = 'invalid';
@@ -53162,7 +53162,7 @@ function _injectProductInfo(key, element) {
53162
53162
  const schemaValidity = _checkKeySchema(key);
53163
53163
  if (hasValidType || isNonCommercial || schemaValidity) {
53164
53164
  if (schemaValidity) {
53165
- const releaseDate = (0, _moment.default)("22/11/2023", 'DD/MM/YYYY');
53165
+ const releaseDate = (0, _moment.default)("29/11/2023", 'DD/MM/YYYY');
53166
53166
  const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
53167
53167
  const keyValidityDays = _extractTime(key);
53168
53168
  keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
@@ -60406,6 +60406,8 @@ const A11Y_GRIDCELL = () => ['role', 'gridcell'];
60406
60406
  exports.A11Y_GRIDCELL = A11Y_GRIDCELL;
60407
60407
  const A11Y_ROWHEADER = () => ['role', 'rowheader'];
60408
60408
  exports.A11Y_ROWHEADER = A11Y_ROWHEADER;
60409
+ const A11Y_ROWGROUP = () => ['role', 'rowgroup'];
60410
+ exports.A11Y_ROWGROUP = A11Y_ROWGROUP;
60409
60411
  const A11Y_COLUMNHEADER = () => ['role', 'columnheader'];
60410
60412
  exports.A11Y_COLUMNHEADER = A11Y_COLUMNHEADER;
60411
60413
  const A11Y_ROW = () => ['role', 'row'];
@@ -65615,10 +65617,11 @@ function getListenersCounter() {
65615
65617
  __webpack_require__(275);
65616
65618
  var _interopRequireDefault = __webpack_require__(198);
65617
65619
  exports.__esModule = true;
65618
- var _classPrivateFieldGet5 = _interopRequireDefault(__webpack_require__(466));
65620
+ var _classPrivateFieldGet7 = _interopRequireDefault(__webpack_require__(466));
65619
65621
  var _classPrivateFieldSet2 = _interopRequireDefault(__webpack_require__(469));
65620
65622
  var _console = __webpack_require__(462);
65621
65623
  var _element = __webpack_require__(304);
65624
+ var _function = __webpack_require__(448);
65622
65625
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
65623
65626
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
65624
65627
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -65643,9 +65646,10 @@ var _hot = /*#__PURE__*/new WeakMap();
65643
65646
  var _focusMode = /*#__PURE__*/new WeakMap();
65644
65647
  var _refocusDelay = /*#__PURE__*/new WeakMap();
65645
65648
  var _refocusElementGetter = /*#__PURE__*/new WeakMap();
65646
- var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
65649
+ var _debouncedSelect = /*#__PURE__*/new WeakMap();
65647
65650
  var _getSelectedCell = /*#__PURE__*/new WeakSet();
65648
- var _manageFocus = /*#__PURE__*/new WeakSet();
65651
+ var _focusCell = /*#__PURE__*/new WeakSet();
65652
+ var _focusEditorElement = /*#__PURE__*/new WeakSet();
65649
65653
  var _onUpdateSettings = /*#__PURE__*/new WeakSet();
65650
65654
  class FocusManager {
65651
65655
  constructor(hotInstance) {
@@ -65653,29 +65657,23 @@ class FocusManager {
65653
65657
  /**
65654
65658
  * Update the manager configuration after calling `updateSettings`.
65655
65659
  *
65656
- * @private
65657
65660
  * @param {object} newSettings The new settings passed to the `updateSettings` method.
65658
65661
  */
65659
65662
  _classPrivateMethodInitSpec(this, _onUpdateSettings);
65660
65663
  /**
65661
- * Manage the browser's focus after cell selection.
65662
- *
65663
- * @private
65664
+ * Manage the browser's focus after cell selection end.
65664
65665
  */
65665
- _classPrivateMethodInitSpec(this, _manageFocus);
65666
+ _classPrivateMethodInitSpec(this, _focusEditorElement);
65666
65667
  /**
65667
- * Get and return the currently selected and highlighted cell/header element.
65668
- *
65669
- * @private
65670
- * @returns {HTMLTableCellElement}
65668
+ * Manage the browser's focus after each cell selection change.
65671
65669
  */
65672
- _classPrivateMethodInitSpec(this, _getSelectedCell);
65670
+ _classPrivateMethodInitSpec(this, _focusCell);
65673
65671
  /**
65674
- * Get the coordinates of the highlight of the currently selected cell/header.
65672
+ * Get and return the currently selected and highlighted cell/header element.
65675
65673
  *
65676
- * @returns {CellCoords}
65674
+ * @param {Function} callback Callback function to be called after the cell element is retrieved.
65677
65675
  */
65678
- _classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
65676
+ _classPrivateMethodInitSpec(this, _getSelectedCell);
65679
65677
  /**
65680
65678
  * The Handsontable instance.
65681
65679
  */
@@ -65691,7 +65689,7 @@ class FocusManager {
65691
65689
  * - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
65692
65690
  * `TEXTAREA` element after a delay defined in the manager.
65693
65691
  *
65694
- * @type {string}
65692
+ * @type {'cell' | 'mixed'}
65695
65693
  */
65696
65694
  _classPrivateFieldInitSpec(this, _focusMode, {
65697
65695
  writable: true,
@@ -65717,20 +65715,35 @@ class FocusManager {
65717
65715
  writable: true,
65718
65716
  value: null
65719
65717
  });
65718
+ /**
65719
+ * Map of the debounced `select` functions.
65720
+ *
65721
+ * @type {Map<number, Function>}
65722
+ */
65723
+ _classPrivateFieldInitSpec(this, _debouncedSelect, {
65724
+ writable: true,
65725
+ value: new Map()
65726
+ });
65720
65727
  const hotSettings = hotInstance.getSettings();
65721
65728
  (0, _classPrivateFieldSet2.default)(this, _hot, hotInstance);
65722
65729
  (0, _classPrivateFieldSet2.default)(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
65723
- (0, _classPrivateFieldGet5.default)(this, _hot).addHook('afterUpdateSettings', function () {
65730
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterUpdateSettings', function () {
65724
65731
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
65725
65732
  args[_key] = arguments[_key];
65726
65733
  }
65727
65734
  return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
65728
65735
  });
65729
- (0, _classPrivateFieldGet5.default)(this, _hot).addHook('afterSelection', function () {
65736
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterSelection', function () {
65730
65737
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
65731
65738
  args[_key2] = arguments[_key2];
65732
65739
  }
65733
- return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
65740
+ return _classPrivateMethodGet(_this, _focusCell, _focusCell2).call(_this, ...args);
65741
+ });
65742
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterSelectionEnd', function () {
65743
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
65744
+ args[_key3] = arguments[_key3];
65745
+ }
65746
+ return _classPrivateMethodGet(_this, _focusEditorElement, _focusEditorElement2).call(_this, ...args);
65734
65747
  });
65735
65748
  }
65736
65749
 
@@ -65740,7 +65753,7 @@ class FocusManager {
65740
65753
  * @returns {'cell' | 'mixed'}
65741
65754
  */
65742
65755
  getFocusMode() {
65743
- return (0, _classPrivateFieldGet5.default)(this, _focusMode);
65756
+ return (0, _classPrivateFieldGet7.default)(this, _focusMode);
65744
65757
  }
65745
65758
 
65746
65759
  /**
@@ -65763,7 +65776,7 @@ class FocusManager {
65763
65776
  * @returns {number} Delay in milliseconds.
65764
65777
  */
65765
65778
  getRefocusDelay() {
65766
- return (0, _classPrivateFieldGet5.default)(this, _refocusDelay);
65779
+ return (0, _classPrivateFieldGet7.default)(this, _refocusDelay);
65767
65780
  }
65768
65781
 
65769
65782
  /**
@@ -65791,11 +65804,11 @@ class FocusManager {
65791
65804
  * @returns {HTMLTextAreaElement|HTMLElement|undefined}
65792
65805
  */
65793
65806
  getRefocusElement() {
65794
- if (typeof (0, _classPrivateFieldGet5.default)(this, _refocusElementGetter) === 'function') {
65795
- return (0, _classPrivateFieldGet5.default)(this, _refocusElementGetter).call(this);
65807
+ if (typeof (0, _classPrivateFieldGet7.default)(this, _refocusElementGetter) === 'function') {
65808
+ return (0, _classPrivateFieldGet7.default)(this, _refocusElementGetter).call(this);
65796
65809
  } else {
65797
65810
  var _classPrivateFieldGet2;
65798
- return (_classPrivateFieldGet2 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
65811
+ return (_classPrivateFieldGet2 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
65799
65812
  }
65800
65813
  }
65801
65814
 
@@ -65805,17 +65818,26 @@ class FocusManager {
65805
65818
  * @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
65806
65819
  */
65807
65820
  focusOnHighlightedCell(selectedCell) {
65808
- var _classPrivateFieldGet3;
65809
- const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
65810
- const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
65811
- let elementToBeFocused = (0, _classPrivateFieldGet5.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
65812
- if (!(elementToBeFocused instanceof HTMLElement)) {
65813
- elementToBeFocused = currentlySelectedHighlight;
65814
- }
65815
- if (elementToBeFocused && !((_classPrivateFieldGet3 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
65816
- elementToBeFocused.focus({
65817
- preventScroll: true
65818
- });
65821
+ const focusElement = element => {
65822
+ var _classPrivateFieldGet3, _classPrivateFieldGet4;
65823
+ const currentHighlightCoords = (_classPrivateFieldGet3 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
65824
+ if (!currentHighlightCoords || !element) {
65825
+ return;
65826
+ }
65827
+ let elementToBeFocused = (0, _classPrivateFieldGet7.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
65828
+ if (!(elementToBeFocused instanceof HTMLElement)) {
65829
+ elementToBeFocused = element;
65830
+ }
65831
+ if (elementToBeFocused && !((_classPrivateFieldGet4 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
65832
+ elementToBeFocused.focus({
65833
+ preventScroll: true
65834
+ });
65835
+ }
65836
+ };
65837
+ if (selectedCell) {
65838
+ focusElement(selectedCell);
65839
+ } else {
65840
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, element => focusElement(element));
65819
65841
  }
65820
65842
  }
65821
65843
 
@@ -65823,49 +65845,63 @@ class FocusManager {
65823
65845
  * Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
65824
65846
  * will be taken from the manager's configuration.
65825
65847
  *
65826
- * @param {number} delay Delay in milliseconds.
65848
+ * @param {number} [delay] Delay in milliseconds.
65827
65849
  */
65828
65850
  refocusToEditorTextarea() {
65829
- var _classPrivateFieldGet4;
65830
- let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _classPrivateFieldGet5.default)(this, _refocusDelay);
65851
+ var _classPrivateFieldGet5;
65852
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _classPrivateFieldGet7.default)(this, _refocusDelay);
65831
65853
  const refocusElement = this.getRefocusElement();
65832
65854
 
65833
65855
  // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
65834
- if ((0, _classPrivateFieldGet5.default)(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet4 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened()) && !!refocusElement) {
65835
- (0, _classPrivateFieldGet5.default)(this, _hot)._registerTimeout(() => {
65836
- refocusElement.select();
65837
- }, delay);
65856
+ if ((0, _classPrivateFieldGet7.default)(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
65857
+ if (!(0, _classPrivateFieldGet7.default)(this, _debouncedSelect).has(delay)) {
65858
+ (0, _classPrivateFieldGet7.default)(this, _debouncedSelect).set(delay, (0, _function.debounce)(() => {
65859
+ refocusElement.select();
65860
+ }, delay));
65861
+ }
65862
+ (0, _classPrivateFieldGet7.default)(this, _debouncedSelect).get(delay)();
65838
65863
  }
65839
65864
  }
65840
65865
  }
65841
65866
  exports.FocusManager = FocusManager;
65842
- function _getCurrentHighlightCoords2() {
65843
- const lastSelectedRange = (0, _classPrivateFieldGet5.default)(this, _hot).getSelectedRangeLast();
65844
- return lastSelectedRange.highlight;
65867
+ function _getSelectedCell2(callback) {
65868
+ var _classPrivateFieldGet6;
65869
+ const highlight = (_classPrivateFieldGet6 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
65870
+ if (!highlight) {
65871
+ callback(null);
65872
+ return;
65873
+ }
65874
+ const cell = (0, _classPrivateFieldGet7.default)(this, _hot).getCell(highlight.row, highlight.col, true);
65875
+ if (cell === null) {
65876
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHookOnce('afterScroll', () => {
65877
+ callback((0, _classPrivateFieldGet7.default)(this, _hot).getCell(highlight.row, highlight.col, true));
65878
+ });
65879
+ } else {
65880
+ callback(cell);
65881
+ }
65845
65882
  }
65846
- function _getSelectedCell2() {
65847
- const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
65848
- return (0, _classPrivateFieldGet5.default)(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
65883
+ function _focusCell2() {
65884
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
65885
+ const {
65886
+ activeElement
65887
+ } = (0, _classPrivateFieldGet7.default)(this, _hot).rootDocument;
65888
+
65889
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
65890
+ // and resets the `document.activeElement` property. The blurring should happen only when the
65891
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
65892
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
65893
+ if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
65894
+ activeElement.blur();
65895
+ }
65896
+ this.focusOnHighlightedCell(selectedCell);
65897
+ });
65849
65898
  }
65850
- function _manageFocus2() {
65851
- const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
65852
- const {
65853
- activeElement
65854
- } = (0, _classPrivateFieldGet5.default)(this, _hot).rootDocument;
65855
-
65856
- // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
65857
- // and resets the `document.activeElement` property. The blurring should happen only when the
65858
- // previously selected input element has not belonged to the Handsontable editor. If blurring is
65859
- // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
65860
- if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
65861
- activeElement.blur();
65862
- }
65863
- this.focusOnHighlightedCell(selectedCell);
65864
- if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
65865
- (0, _classPrivateFieldGet5.default)(this, _hot).addHookOnce('afterSelectionEnd', () => {
65899
+ function _focusEditorElement2() {
65900
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
65901
+ if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
65866
65902
  this.refocusToEditorTextarea();
65867
- });
65868
- }
65903
+ }
65904
+ });
65869
65905
  }
65870
65906
  function _onUpdateSettings2(newSettings) {
65871
65907
  if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
@@ -66882,8 +66918,10 @@ var _src = _interopRequireDefault(__webpack_require__(480));
66882
66918
  var _mouseEventHandler = __webpack_require__(550);
66883
66919
  var _rootInstance = __webpack_require__(551);
66884
66920
  var _a11y = __webpack_require__(447);
66921
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
66885
66922
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
66886
66923
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
66924
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
66887
66925
  /**
66888
66926
  * @class TableView
66889
66927
  * @private
@@ -66895,11 +66933,25 @@ var _mouseDown = /*#__PURE__*/new WeakMap();
66895
66933
  var _table = /*#__PURE__*/new WeakMap();
66896
66934
  var _lastWidth = /*#__PURE__*/new WeakMap();
66897
66935
  var _lastHeight = /*#__PURE__*/new WeakMap();
66936
+ var _getAriaColcount = /*#__PURE__*/new WeakSet();
66937
+ var _updateAriaColcount = /*#__PURE__*/new WeakSet();
66898
66938
  class TableView {
66899
66939
  /**
66900
66940
  * @param {Hanstontable} hotInstance Instance of {@link Handsontable}.
66901
66941
  */
66902
66942
  constructor(hotInstance) {
66943
+ /**
66944
+ * Update the `aria-colcount` attribute by the provided value.
66945
+ *
66946
+ * @param {number} delta The number of columns to add or remove to the aria tag.
66947
+ */
66948
+ _classPrivateMethodInitSpec(this, _updateAriaColcount);
66949
+ /**
66950
+ * Return the value of the `aria-colcount` attribute.
66951
+ *
66952
+ * @returns {number} The value of the `aria-colcount` attribute.
66953
+ */
66954
+ _classPrivateMethodInitSpec(this, _getAriaColcount);
66903
66955
  /**
66904
66956
  * Instance of {@link Handsontable}.
66905
66957
  *
@@ -67136,7 +67188,7 @@ class TableView {
67136
67188
  }
67137
67189
  if (this.settings.ariaTags) {
67138
67190
  (0, _element.setAttribute)((0, _classPrivateFieldGet2.default)(this, _table), [(0, _a11y.A11Y_PRESENTATION)()]);
67139
- (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)()]);
67191
+ (0, _element.setAttribute)(rootElement, [(0, _a11y.A11Y_TREEGRID)(), (0, _a11y.A11Y_ROWCOUNT)(-1), (0, _a11y.A11Y_COLCOUNT)(this.hot.countCols()), (0, _a11y.A11Y_MULTISELECTABLE)()]);
67140
67192
  }
67141
67193
  this.THEAD = rootDocument.createElement('THEAD');
67142
67194
  (0, _classPrivateFieldGet2.default)(this, _table).appendChild(this.THEAD);
@@ -67529,6 +67581,13 @@ class TableView {
67529
67581
  }
67530
67582
  this.hot.runHooks('afterGetRowHeaderRenderers', headerRenderers);
67531
67583
  (0, _classPrivateFieldSet2.default)(this, _rowHeadersCount, headerRenderers.length);
67584
+ if (this.hot.getSettings().ariaTags) {
67585
+ // Update the aria-colcount attribute.
67586
+ // Only needs to be done once after initialization/data update.
67587
+ if (_classPrivateMethodGet(this, _getAriaColcount, _getAriaColcount2).call(this) === this.hot.countCols()) {
67588
+ _classPrivateMethodGet(this, _updateAriaColcount, _updateAriaColcount2).call(this, (0, _classPrivateFieldGet2.default)(this, _rowHeadersCount));
67589
+ }
67590
+ }
67532
67591
  return headerRenderers;
67533
67592
  },
67534
67593
  columnHeaders: () => {
@@ -68168,7 +68227,6 @@ class TableView {
68168
68227
  getRowHeadersCount() {
68169
68228
  return (0, _classPrivateFieldGet2.default)(this, _rowHeadersCount);
68170
68229
  }
68171
-
68172
68230
  /**
68173
68231
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
68174
68232
  *
@@ -68179,6 +68237,13 @@ class TableView {
68179
68237
  this.eventManager.destroy();
68180
68238
  }
68181
68239
  }
68240
+ function _getAriaColcount2() {
68241
+ return parseInt(this.hot.rootElement.getAttribute((0, _a11y.A11Y_COLCOUNT)()[0]), 10);
68242
+ }
68243
+ function _updateAriaColcount2(delta) {
68244
+ const colCount = _classPrivateMethodGet(this, _getAriaColcount, _getAriaColcount2).call(this) + delta;
68245
+ (0, _element.setAttribute)(this.hot.rootElement, ...(0, _a11y.A11Y_COLCOUNT)(colCount));
68246
+ }
68182
68247
  var _default = exports["default"] = TableView;
68183
68248
 
68184
68249
  /***/ }),
@@ -73815,7 +73880,7 @@ class ColumnHeadersRenderer extends _base.default {
73815
73880
  columnHeadersCount
73816
73881
  } = this.table;
73817
73882
  if (this.table.isAriaEnabled()) {
73818
- (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_PRESENTATION)()]);
73883
+ (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_ROWGROUP)()]);
73819
73884
  }
73820
73885
  for (let rowHeaderIndex = 0; rowHeaderIndex < columnHeadersCount; rowHeaderIndex += 1) {
73821
73886
  const {
@@ -73837,7 +73902,10 @@ class ColumnHeadersRenderer extends _base.default {
73837
73902
  // Remove all accessibility-related attributes for the header to start fresh.
73838
73903
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
73839
73904
  if (this.table.isAriaEnabled()) {
73840
- (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)()] : [])]);
73905
+ (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)()] : [
73906
+ // Adding `role=row` to the corner headers to prevent
73907
+ // https://github.com/handsontable/dev-handsontable/issues/1574
73908
+ (0, _a11y.A11Y_ROW)()])]);
73841
73909
  }
73842
73910
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
73843
73911
  }
@@ -73989,7 +74057,7 @@ class RowsRenderer extends _base.default {
73989
74057
  the number of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.`);
73990
74058
  }
73991
74059
  if (this.table.isAriaEnabled()) {
73992
- (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_PRESENTATION)()]);
74060
+ (0, _element.setAttribute)(this.rootNode, [(0, _a11y.A11Y_ROWGROUP)()]);
73993
74061
  }
73994
74062
  this.orderView.setSize(rowsToRender).setOffset(this.table.renderedRowToSource(0)).start();
73995
74063
  for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
@@ -75060,8 +75128,8 @@ class Overlay {
75060
75128
  rootDocument,
75061
75129
  rootWindow
75062
75130
  } = this.domBindings;
75063
- const clone = rootDocument.createElement('DIV');
75064
- const clonedTable = rootDocument.createElement('TABLE');
75131
+ const clone = rootDocument.createElement('div');
75132
+ const clonedTable = rootDocument.createElement('table');
75065
75133
  const tableParent = wtTable.wtRootElement.parentNode;
75066
75134
  clone.className = `${_constants.CLONE_CLASS_NAMES.get(this.type)} handsontable`;
75067
75135
  clone.setAttribute('dir', this.isRtl() ? 'rtl' : 'ltr');
@@ -93054,7 +93122,9 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
93054
93122
  hotInstance.render();
93055
93123
  }
93056
93124
  if (hotInstance.getSettings().ariaTags) {
93057
- (0, _element.setAttribute)(hotInstance.rootElement, [(0, _a11y.A11Y_ROWCOUNT)(hotInstance.countRows()), (0, _a11y.A11Y_COLCOUNT)(hotInstance.countCols())]);
93125
+ (0, _element.setAttribute)(hotInstance.rootElement, [(0, _a11y.A11Y_ROWCOUNT)(-1),
93126
+ // If run after initialization, add the number of row headers.
93127
+ (0, _a11y.A11Y_COLCOUNT)(hotInstance.countCols() + (hotInstance.view ? hotInstance.countRowHeaders() : 0))]);
93058
93128
  }
93059
93129
  }
93060
93130
 
@@ -99857,6 +99927,7 @@ exports.PasswordEditor = _passwordEditor.PasswordEditor;
99857
99927
  exports.__esModule = true;
99858
99928
  var _textEditor = __webpack_require__(668);
99859
99929
  var _element = __webpack_require__(304);
99930
+ var _a11y = __webpack_require__(447);
99860
99931
  const EDITOR_TYPE = exports.EDITOR_TYPE = 'password';
99861
99932
 
99862
99933
  /**
@@ -99876,6 +99947,9 @@ class PasswordEditor extends _textEditor.TextEditor {
99876
99947
  this.textareaStyle = this.TEXTAREA.style;
99877
99948
  this.textareaStyle.width = 0;
99878
99949
  this.textareaStyle.height = 0;
99950
+ if (this.hot.getSettings().ariaTags) {
99951
+ (0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
99952
+ }
99879
99953
  (0, _element.empty)(this.TEXTAREA_PARENT);
99880
99954
  this.TEXTAREA_PARENT.appendChild(this.TEXTAREA);
99881
99955
  }
@@ -100678,7 +100752,6 @@ function createInput(rootDocument) {
100678
100752
  const input = rootDocument.createElement('input');
100679
100753
  input.className = 'htCheckboxRendererInput';
100680
100754
  input.type = 'checkbox';
100681
- input.setAttribute('autocomplete', 'off');
100682
100755
  input.setAttribute('tabindex', '-1');
100683
100756
  return input.cloneNode(false);
100684
100757
  }
@@ -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: 14.0.0-next-23212d5-20231127
29
- * Release date: 22/11/2023 (built at 27/11/2023 08:14:13)
28
+ * Version: 14.0.0-next-477622d-20231128
29
+ * Release date: 29/11/2023 (built at 28/11/2023 12:48:34)
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