handsontable 0.0.0-next-9891faa-20240822 → 0.0.0-next-eaf150e-20240823

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 = "22/08/2024 12:46:11";
49
- Handsontable.version = "0.0.0-next-9891faa-20240822";
48
+ Handsontable.buildDate = "23/08/2024 12:05:31";
49
+ Handsontable.version = "0.0.0-next-eaf150e-20240823";
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 = "22/08/2024 12:46:16";
39
- Handsontable.version = "0.0.0-next-9891faa-20240822";
38
+ Handsontable.buildDate = "23/08/2024 12:05:37";
39
+ Handsontable.version = "0.0.0-next-eaf150e-20240823";
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-9891faa-20240822
29
- * Release date: 30/07/2024 (built at 22/08/2024 12:46:21)
28
+ * Version: 0.0.0-next-eaf150e-20240823
29
+ * Release date: 30/07/2024 (built at 23/08/2024 12:05:42)
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-9891faa-20240822
29
- * Release date: 30/07/2024 (built at 22/08/2024 12:46:21)
28
+ * Version: 0.0.0-next-eaf150e-20240823
29
+ * Release date: 30/07/2024 (built at 23/08/2024 12:05:42)
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-9891faa-20240822
29
- * Release date: 30/07/2024 (built at 22/08/2024 12:46:21)
28
+ * Version: 0.0.0-next-eaf150e-20240823
29
+ * Release date: 30/07/2024 (built at 23/08/2024 12:05:42)
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 = "22/08/2024 12:46:21";
42679
- Handsontable.version = "0.0.0-next-9891faa-20240822";
42678
+ Handsontable.buildDate = "23/08/2024 12:05:42";
42679
+ Handsontable.version = "0.0.0-next-eaf150e-20240823";
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-9891faa-20240822";
53250
+ const hotVersion = "0.0.0-next-eaf150e-20240823";
53251
53251
  let keyValidityDate;
53252
53252
  let consoleMessageState = 'invalid';
53253
53253
  let domMessageState = 'invalid';
@@ -64439,6 +64439,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
64439
64439
  *
64440
64440
  * @event Hooks#beforeFilter
64441
64441
  * @param {object[]} conditionsStack An array of objects with your [column filters](@/api/filters.md#addcondition).
64442
+ * @param {object[]|null} previousConditionsStack An array of objects with your previous [column filters](@/api/filters.md#addcondition). It can also be `null` if there was no previous filters applied or the conditions did not change between performing the `filter` action.
64442
64443
  * @returns {boolean} To perform server-side filtering (i.e., to not apply filtering to Handsontable's UI), return `false`.
64443
64444
  */
64444
64445
  'beforeFilter',
@@ -120483,7 +120484,7 @@ class Filters extends _base.BasePlugin {
120483
120484
  const needToFilter = !this.conditionCollection.isEmpty();
120484
120485
  let visibleVisualRows = [];
120485
120486
  const conditions = this.conditionCollection.exportAllConditions();
120486
- const allowFiltering = this.hot.runHooks('beforeFilter', conditions);
120487
+ const allowFiltering = this.hot.runHooks('beforeFilter', conditions, this.conditionCollection.previousConditionStack);
120487
120488
  if (allowFiltering !== false) {
120488
120489
  if (needToFilter) {
120489
120490
  const trimmedRows = [];
@@ -120508,6 +120509,7 @@ class Filters extends _base.BasePlugin {
120508
120509
  }
120509
120510
  }
120510
120511
  this.hot.runHooks('afterFilter', conditions);
120512
+ this.conditionCollection.setPreviousConditionStack(null);
120511
120513
  this.hot.view.adjustElementsSize();
120512
120514
  this.hot.render();
120513
120515
  if (this.hot.selection.isSelected()) {
@@ -124332,6 +124334,13 @@ class ConditionCollection {
124332
124334
  * @type {LinkedPhysicalIndexToValueMap}
124333
124335
  */
124334
124336
  (0, _defineProperty2.default)(this, "filteringStates", new _translations.LinkedPhysicalIndexToValueMap());
124337
+ /**
124338
+ * Stores the previous state of the condition stack before the latest filter operation.
124339
+ * This is used in the `beforeFilter` plugin to allow performing the undo operation.
124340
+ *
124341
+ * @type {null|Array}
124342
+ */
124343
+ (0, _defineProperty2.default)(this, "previousConditionStack", null);
124335
124344
  this.hot = hot;
124336
124345
  this.isMapRegistrable = isMapRegistrable;
124337
124346
  if (this.isMapRegistrable === true) {
@@ -124400,6 +124409,13 @@ class ConditionCollection {
124400
124409
  const localeForColumn = this.hot.getCellMeta(0, column).locale;
124401
124410
  const args = (0, _array.arrayMap)(conditionDefinition.args, v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
124402
124411
  const name = conditionDefinition.name || conditionDefinition.command.key;
124412
+
124413
+ // If there's no previous condition stack defined (which means the condition stack was not cleared after the
124414
+ // previous filter operation or that there was no filter operation performed yet), store the current conditions as
124415
+ // the previous condition stack.
124416
+ if (this.previousConditionStack === null) {
124417
+ this.setPreviousConditionStack(this.exportAllConditions());
124418
+ }
124403
124419
  this.runLocalHooks('beforeAdd', column);
124404
124420
  const columnType = this.getOperation(column);
124405
124421
  if (columnType) {
@@ -124528,6 +124544,8 @@ class ConditionCollection {
124528
124544
  * @fires ConditionCollection#afterRemove
124529
124545
  */
124530
124546
  removeConditions(column) {
124547
+ // Store the current conditions as the previous condition stack before it's cleared.
124548
+ this.setPreviousConditionStack(this.exportAllConditions());
124531
124549
  this.runLocalHooks('beforeRemove', column);
124532
124550
  this.filteringStates.clearValue(column);
124533
124551
  this.runLocalHooks('afterRemove', column);
@@ -124561,6 +124579,16 @@ class ConditionCollection {
124561
124579
  return conditions.length > 0;
124562
124580
  }
124563
124581
 
124582
+ /**
124583
+ * Updates the `previousConditionStack` property with the provided stack.
124584
+ * It is used to store the current conditions before they are modified, allowing for undo operations.
124585
+ *
124586
+ * @param {Array|null} previousConditionStack The stack of previous conditions.
124587
+ */
124588
+ setPreviousConditionStack(previousConditionStack) {
124589
+ this.previousConditionStack = previousConditionStack;
124590
+ }
124591
+
124564
124592
  /**
124565
124593
  * Destroy object.
124566
124594
  */
@@ -143331,8 +143359,8 @@ function UndoRedo(instance) {
143331
143359
  instance.addHook('beforeCellAlignment', (stateBefore, range, type, alignment) => {
143332
143360
  plugin.done(() => new UndoRedo.CellAlignmentAction(stateBefore, range, type, alignment));
143333
143361
  });
143334
- instance.addHook('beforeFilter', conditionsStack => {
143335
- plugin.done(() => new UndoRedo.FiltersAction(conditionsStack));
143362
+ instance.addHook('beforeFilter', (conditionsStack, previousConditionsStack) => {
143363
+ plugin.done(() => new UndoRedo.FiltersAction(conditionsStack, previousConditionsStack));
143336
143364
  });
143337
143365
  instance.addHook('beforeRowMove', (rows, finalIndex) => {
143338
143366
  if (rows === false) {
@@ -143852,9 +143880,11 @@ UndoRedo.CellAlignmentAction.prototype.redo = function (instance, undoneCallback
143852
143880
  * Filters action.
143853
143881
  *
143854
143882
  * @private
143855
- * @param {Array} conditionsStack An array of the filter condition.
143883
+ * @param {Array} conditionsStack An array of the filter conditions.
143884
+ * @param {Array} previousConditionsStack An array of the previous filter conditions.
143856
143885
  */
143857
- UndoRedo.FiltersAction = function (conditionsStack) {
143886
+ UndoRedo.FiltersAction = function (conditionsStack, previousConditionsStack) {
143887
+ this.previousConditionsStack = previousConditionsStack;
143858
143888
  this.conditionsStack = conditionsStack;
143859
143889
  this.actionType = 'filter';
143860
143890
  };
@@ -143862,7 +143892,9 @@ UndoRedo.FiltersAction = function (conditionsStack) {
143862
143892
  UndoRedo.FiltersAction.prototype.undo = function (instance, undoneCallback) {
143863
143893
  const filters = instance.getPlugin('filters');
143864
143894
  instance.addHookOnce('afterViewRender', undoneCallback);
143865
- filters.conditionCollection.importAllConditions(this.conditionsStack.slice(0, this.conditionsStack.length - 1));
143895
+ if (this.previousConditionsStack) {
143896
+ filters.conditionCollection.importAllConditions(this.previousConditionsStack);
143897
+ }
143866
143898
  filters.filter();
143867
143899
  };
143868
143900
  UndoRedo.FiltersAction.prototype.redo = function (instance, redoneCallback) {
@@ -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-9891faa-20240822
29
- * Release date: 30/07/2024 (built at 22/08/2024 12:46:39)
28
+ * Version: 0.0.0-next-eaf150e-20240823
29
+ * Release date: 30/07/2024 (built at 23/08/2024 12:06:00)
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;border:2px solid #4b89ff;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