handsontable 0.0.0-next-092f69c-20240806 → 0.0.0-next-bda8d59-20240809

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.

package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "06/08/2024 05:35:30";
49
- Handsontable.version = "0.0.0-next-092f69c-20240806";
48
+ Handsontable.buildDate = "09/08/2024 06:40:01";
49
+ Handsontable.version = "0.0.0-next-bda8d59-20240809";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "06/08/2024 05:35:36";
39
- Handsontable.version = "0.0.0-next-092f69c-20240806";
38
+ Handsontable.buildDate = "09/08/2024 06:40:06";
39
+ Handsontable.version = "0.0.0-next-bda8d59-20240809";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -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-092f69c-20240806
29
- * Release date: 30/07/2024 (built at 06/08/2024 05:35:40)
28
+ * Version: 0.0.0-next-bda8d59-20240809
29
+ * Release date: 30/07/2024 (built at 09/08/2024 06:40:11)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-092f69c-20240806
29
- * Release date: 30/07/2024 (built at 06/08/2024 05:35:40)
28
+ * Version: 0.0.0-next-bda8d59-20240809
29
+ * Release date: 30/07/2024 (built at 09/08/2024 06:40:11)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-092f69c-20240806
29
- * Release date: 30/07/2024 (built at 06/08/2024 05:35:40)
28
+ * Version: 0.0.0-next-bda8d59-20240809
29
+ * Release date: 30/07/2024 (built at 09/08/2024 06:40:11)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42675,8 +42675,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
42675
42675
  Handsontable.CellCoords = _src.CellCoords;
42676
42676
  Handsontable.CellRange = _src.CellRange;
42677
42677
  Handsontable.packageName = 'handsontable';
42678
- Handsontable.buildDate = "06/08/2024 05:35:40";
42679
- Handsontable.version = "0.0.0-next-092f69c-20240806";
42678
+ Handsontable.buildDate = "09/08/2024 06:40:11";
42679
+ Handsontable.version = "0.0.0-next-bda8d59-20240809";
42680
42680
  Handsontable.languages = {
42681
42681
  dictionaryKeys: _registry.dictionaryKeys,
42682
42682
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -53247,7 +53247,7 @@ const domMessages = {
53247
53247
  function _injectProductInfo(key, element) {
53248
53248
  const hasValidType = !isEmpty(key);
53249
53249
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
53250
- const hotVersion = "0.0.0-next-092f69c-20240806";
53250
+ const hotVersion = "0.0.0-next-bda8d59-20240809";
53251
53251
  let keyValidityDate;
53252
53252
  let consoleMessageState = 'invalid';
53253
53253
  let domMessageState = 'invalid';
@@ -60535,6 +60535,8 @@ const A11Y_MENU = () => ['role', 'menu'];
60535
60535
  exports.A11Y_MENU = A11Y_MENU;
60536
60536
  const A11Y_MENU_ITEM = () => ['role', 'menuitem'];
60537
60537
  exports.A11Y_MENU_ITEM = A11Y_MENU_ITEM;
60538
+ const A11Y_MENU_ITEM_CHECKBOX = () => ['role', 'menuitemcheckbox'];
60539
+ exports.A11Y_MENU_ITEM_CHECKBOX = A11Y_MENU_ITEM_CHECKBOX;
60538
60540
  const A11Y_COMBOBOX = () => ['role', 'combobox'];
60539
60541
  exports.A11Y_COMBOBOX = A11Y_COMBOBOX;
60540
60542
  const A11Y_LISTBOX = () => ['role', 'listbox'];
@@ -112426,6 +112428,17 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
112426
112428
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
112427
112429
  const KEY = exports.KEY = 'alignment';
112428
112430
 
112431
+ /**
112432
+ * @param {object} hot The current Handsontable instance.
112433
+ * @param {string} rawName The raw name of the menu item.
112434
+ * @param {string} htClassName The class name to check.
112435
+ * @returns {string} The value of aria-label parameter.
112436
+ */
112437
+ function ariaLabel(hot, rawName, htClassName) {
112438
+ const checkboxState = (0, _utils.hasSelectionAClass)(hot, htClassName) ? hot.getTranslatedPhrase(C.CHECKBOX_CHECKED) : hot.getTranslatedPhrase(C.CHECKBOX_UNCHECKED);
112439
+ return `${rawName} ${checkboxState.toLowerCase()}`;
112440
+ }
112441
+
112429
112442
  /**
112430
112443
  * @returns {object}
112431
112444
  */
@@ -112451,15 +112464,16 @@ function alignmentItem() {
112451
112464
  submenu: {
112452
112465
  items: [{
112453
112466
  key: `${KEY}:left`,
112467
+ checkable: true,
112468
+ ariaLabel() {
112469
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT), 'htLeft');
112470
+ },
112471
+ ariaChecked() {
112472
+ return (0, _utils.hasSelectionAClass)(this, 'htLeft');
112473
+ },
112454
112474
  name() {
112455
112475
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT);
112456
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112457
- const className = this.getCellMeta(row, col).className;
112458
- if (className && className.indexOf('htLeft') !== -1) {
112459
- return true;
112460
- }
112461
- });
112462
- if (hasClass) {
112476
+ if ((0, _utils.hasSelectionAClass)(this, 'htLeft')) {
112463
112477
  label = (0, _utils.markLabelAsSelected)(label);
112464
112478
  }
112465
112479
  return label;
@@ -112476,15 +112490,16 @@ function alignmentItem() {
112476
112490
  disabled: false
112477
112491
  }, {
112478
112492
  key: `${KEY}:center`,
112493
+ checkable: true,
112494
+ ariaLabel() {
112495
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER), 'htCenter');
112496
+ },
112497
+ ariaChecked() {
112498
+ return (0, _utils.hasSelectionAClass)(this, 'htCenter');
112499
+ },
112479
112500
  name() {
112480
112501
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER);
112481
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112482
- const className = this.getCellMeta(row, col).className;
112483
- if (className && className.indexOf('htCenter') !== -1) {
112484
- return true;
112485
- }
112486
- });
112487
- if (hasClass) {
112502
+ if ((0, _utils.hasSelectionAClass)(this, 'htCenter')) {
112488
112503
  label = (0, _utils.markLabelAsSelected)(label);
112489
112504
  }
112490
112505
  return label;
@@ -112501,15 +112516,16 @@ function alignmentItem() {
112501
112516
  disabled: false
112502
112517
  }, {
112503
112518
  key: `${KEY}:right`,
112519
+ checkable: true,
112520
+ ariaLabel() {
112521
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT), 'htRight');
112522
+ },
112523
+ ariaChecked() {
112524
+ return (0, _utils.hasSelectionAClass)(this, 'htRight');
112525
+ },
112504
112526
  name() {
112505
112527
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT);
112506
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112507
- const className = this.getCellMeta(row, col).className;
112508
- if (className && className.indexOf('htRight') !== -1) {
112509
- return true;
112510
- }
112511
- });
112512
- if (hasClass) {
112528
+ if ((0, _utils.hasSelectionAClass)(this, 'htRight')) {
112513
112529
  label = (0, _utils.markLabelAsSelected)(label);
112514
112530
  }
112515
112531
  return label;
@@ -112526,15 +112542,16 @@ function alignmentItem() {
112526
112542
  disabled: false
112527
112543
  }, {
112528
112544
  key: `${KEY}:justify`,
112545
+ checkable: true,
112546
+ ariaLabel() {
112547
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY), 'htJustify');
112548
+ },
112549
+ ariaChecked() {
112550
+ return (0, _utils.hasSelectionAClass)(this, 'htJustify');
112551
+ },
112529
112552
  name() {
112530
112553
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY);
112531
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112532
- const className = this.getCellMeta(row, col).className;
112533
- if (className && className.indexOf('htJustify') !== -1) {
112534
- return true;
112535
- }
112536
- });
112537
- if (hasClass) {
112554
+ if ((0, _utils.hasSelectionAClass)(this, 'htJustify')) {
112538
112555
  label = (0, _utils.markLabelAsSelected)(label);
112539
112556
  }
112540
112557
  return label;
@@ -112553,15 +112570,16 @@ function alignmentItem() {
112553
112570
  name: _separator.KEY
112554
112571
  }, {
112555
112572
  key: `${KEY}:top`,
112573
+ checkable: true,
112574
+ ariaLabel() {
112575
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_TOP), 'htTop');
112576
+ },
112577
+ ariaChecked() {
112578
+ return (0, _utils.hasSelectionAClass)(this, 'htTop');
112579
+ },
112556
112580
  name() {
112557
112581
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_TOP);
112558
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112559
- const className = this.getCellMeta(row, col).className;
112560
- if (className && className.indexOf('htTop') !== -1) {
112561
- return true;
112562
- }
112563
- });
112564
- if (hasClass) {
112582
+ if ((0, _utils.hasSelectionAClass)(this, 'htTop')) {
112565
112583
  label = (0, _utils.markLabelAsSelected)(label);
112566
112584
  }
112567
112585
  return label;
@@ -112578,15 +112596,16 @@ function alignmentItem() {
112578
112596
  disabled: false
112579
112597
  }, {
112580
112598
  key: `${KEY}:middle`,
112599
+ checkable: true,
112600
+ ariaLabel() {
112601
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE), 'htMiddle');
112602
+ },
112603
+ ariaChecked() {
112604
+ return (0, _utils.hasSelectionAClass)(this, 'htMiddle');
112605
+ },
112581
112606
  name() {
112582
112607
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE);
112583
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112584
- const className = this.getCellMeta(row, col).className;
112585
- if (className && className.indexOf('htMiddle') !== -1) {
112586
- return true;
112587
- }
112588
- });
112589
- if (hasClass) {
112608
+ if ((0, _utils.hasSelectionAClass)(this, 'htMiddle')) {
112590
112609
  label = (0, _utils.markLabelAsSelected)(label);
112591
112610
  }
112592
112611
  return label;
@@ -112603,15 +112622,16 @@ function alignmentItem() {
112603
112622
  disabled: false
112604
112623
  }, {
112605
112624
  key: `${KEY}:bottom`,
112625
+ checkable: true,
112626
+ ariaLabel() {
112627
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM), 'htBottom');
112628
+ },
112629
+ ariaChecked() {
112630
+ return (0, _utils.hasSelectionAClass)(this, 'htBottom');
112631
+ },
112606
112632
  name() {
112607
112633
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM);
112608
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
112609
- const className = this.getCellMeta(row, col).className;
112610
- if (className && className.indexOf('htBottom') !== -1) {
112611
- return true;
112612
- }
112613
- });
112614
- if (hasClass) {
112634
+ if ((0, _utils.hasSelectionAClass)(this, 'htBottom')) {
112615
112635
  label = (0, _utils.markLabelAsSelected)(label);
112616
112636
  }
112617
112637
  return label;
@@ -112642,7 +112662,9 @@ exports.__esModule = true;
112642
112662
  exports.align = align;
112643
112663
  exports.checkSelectionConsistency = checkSelectionConsistency;
112644
112664
  exports.getAlignmentClasses = getAlignmentClasses;
112665
+ exports.getAlignmentComparatorByClass = getAlignmentComparatorByClass;
112645
112666
  exports.getDocumentOffsetByElement = getDocumentOffsetByElement;
112667
+ exports.hasSelectionAClass = hasSelectionAClass;
112646
112668
  exports.markLabelAsSelected = markLabelAsSelected;
112647
112669
  exports.prepareHorizontalAlignClass = prepareHorizontalAlignClass;
112648
112670
  exports.prepareVerticalAlignClass = prepareVerticalAlignClass;
@@ -112791,6 +112813,30 @@ function getDocumentOffsetByElement(elementToCheck, baseDocument) {
112791
112813
  return offset;
112792
112814
  }
112793
112815
 
112816
+ /**
112817
+ * Prepares comparator function consumable by checkSelectionConsistency
112818
+ * Comparator function checks if the cell has the provided class name.
112819
+ *
112820
+ * @param {string} htClassName The class name to check.
112821
+ * @returns {Function} Returns the comparator function.
112822
+ * Use with .bind, .call or .apply to pass the Handsontable instance.
112823
+ */
112824
+ function getAlignmentComparatorByClass(htClassName) {
112825
+ return function (row, col) {
112826
+ const className = this.getCellMeta(row, col).className;
112827
+ return className && className.indexOf(htClassName) !== -1;
112828
+ };
112829
+ }
112830
+
112831
+ /**
112832
+ * @param {object} hot Handsontable instance.
112833
+ * @param {string} htClassName The class name to check.
112834
+ * @returns {boolean} Returns true if at least one cell has the provided class name.
112835
+ */
112836
+ function hasSelectionAClass(hot, htClassName) {
112837
+ return checkSelectionConsistency(hot.getSelectedRange(), getAlignmentComparatorByClass(htClassName).bind(hot));
112838
+ }
112839
+
112794
112840
  /***/ }),
112795
112841
  /* 856 */
112796
112842
  /***/ ((__unused_webpack_module, exports) => {
@@ -112980,6 +113026,17 @@ const KEY = exports.KEY = 'make_read_only';
112980
113026
  function readOnlyItem() {
112981
113027
  return {
112982
113028
  key: KEY,
113029
+ checkable: true,
113030
+ ariaChecked() {
113031
+ const atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => this.getCellMeta(row, col).readOnly);
113032
+ return atLeastOneReadOnly;
113033
+ },
113034
+ ariaLabel() {
113035
+ const rawName = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY);
113036
+ const atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => this.getCellMeta(row, col).readOnly);
113037
+ const checkboxState = atLeastOneReadOnly ? this.getTranslatedPhrase(C.CHECKBOX_CHECKED) : this.getTranslatedPhrase(C.CHECKBOX_UNCHECKED);
113038
+ return `${rawName} ${checkboxState.toLowerCase()}`;
113039
+ },
112983
113040
  name() {
112984
113041
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY);
112985
113042
  const atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => this.getCellMeta(row, col).readOnly);
@@ -115419,6 +115476,7 @@ exports.__esModule = true;
115419
115476
  exports.filterSeparators = filterSeparators;
115420
115477
  exports.hasSubMenu = hasSubMenu;
115421
115478
  exports.isDisabled = isDisabled;
115479
+ exports.isItemCheckable = isItemCheckable;
115422
115480
  exports.isItemDisabled = isItemDisabled;
115423
115481
  exports.isItemHidden = isItemHidden;
115424
115482
  exports.isItemSelectionDisabled = isItemSelectionDisabled;
@@ -115591,6 +115649,16 @@ function filterSeparators(items) {
115591
115649
  return result;
115592
115650
  }
115593
115651
 
115652
+ /**
115653
+ * Check if the provided element presents the checkboxable menu item.
115654
+ *
115655
+ * @param {object} itemToTest Item element.
115656
+ * @returns {boolean}
115657
+ */
115658
+ function isItemCheckable(itemToTest) {
115659
+ return itemToTest.checkable === true;
115660
+ }
115661
+
115594
115662
  /***/ }),
115595
115663
  /* 885 */
115596
115664
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -115859,11 +115927,13 @@ function createMenuItemRenderer(mainTableHot) {
115859
115927
  const item = menuHot.getSourceDataAtRow(row);
115860
115928
  const wrapper = mainTableHot.rootDocument.createElement('div');
115861
115929
  const itemValue = typeof value === 'function' ? value.call(mainTableHot) : value;
115930
+ const ariaLabel = typeof item.ariaLabel === 'function' ? item.ariaLabel.call(mainTableHot) : item.ariaLabel;
115931
+ const ariaChecked = typeof item.ariaChecked === 'function' ? item.ariaChecked.call(mainTableHot) : item.ariaChecked;
115862
115932
  (0, _element.empty)(TD);
115863
115933
  (0, _element.addClass)(wrapper, 'htItemWrapper');
115864
115934
  if (mainTableHot.getSettings().ariaTags) {
115865
115935
  const isFocusable = !(0, _utils.isItemDisabled)(item, mainTableHot) && !(0, _utils.isItemSelectionDisabled)(item) && !(0, _utils.isItemSeparator)(item);
115866
- (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)] : [])]);
115936
+ (0, _element.setAttribute)(TD, [...((0, _utils.isItemCheckable)(item) ? [(0, _a11y.A11Y_MENU_ITEM_CHECKBOX)(), (0, _a11y.A11Y_LABEL)(ariaLabel), (0, _a11y.A11Y_CHECKED)(ariaChecked)] : [(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)] : [])]);
115867
115937
  }
115868
115938
  TD.className = '';
115869
115939
  TD.appendChild(wrapper);
@@ -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-092f69c-20240806
29
- * Release date: 30/07/2024 (built at 06/08/2024 05:35:57)
28
+ * Version: 0.0.0-next-bda8d59-20240809
29
+ * Release date: 30/07/2024 (built at 09/08/2024 06:40:28)
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{border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child{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) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) 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 table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_master table.htCore>thead{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 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;content:"";left:0;position:absolute;right:0;top:0}.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.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.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