handsontable 0.0.0-next-bfb0e3a-20240403 → 0.0.0-next-53a190b-20240403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
- package/3rdparty/walkontable/src/overlay/top.js +11 -0
- package/3rdparty/walkontable/src/overlay/top.mjs +12 -1
- package/3rdparty/walkontable/src/overlays.js +45 -3
- package/3rdparty/walkontable/src/overlays.mjs +45 -3
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +98 -9
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +4 -4
- package/dist/handsontable.js +98 -9
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +4 -4
- package/helpers/dom/element.js +22 -0
- package/helpers/dom/element.mjs +20 -0
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
@@ -227,9 +227,15 @@ class InlineStartOverlay extends _base.Overlay {
|
|
227
227
|
* @returns {boolean}
|
228
228
|
*/
|
229
229
|
scrollTo(sourceCol, beyondRendered) {
|
230
|
-
|
230
|
+
const {
|
231
|
+
wtSettings
|
232
|
+
} = this;
|
233
|
+
const rowHeaders = wtSettings.getSetting('rowHeaders');
|
234
|
+
const fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
|
231
235
|
const sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot;
|
232
236
|
const mainHolder = sourceInstance.wtTable.holder;
|
237
|
+
const rowHeaderBorderCompensation = fixedColumnsStart === 0 && rowHeaders.length > 0 && !(0, _element.hasClass)(mainHolder.parentNode, 'innerBorderInlineStart') ? 1 : 0;
|
238
|
+
let newX = this.getTableParentOffset();
|
233
239
|
let scrollbarCompensation = 0;
|
234
240
|
if (beyondRendered) {
|
235
241
|
const columnWidth = this.wot.wtTable.getColumnWidth(sourceCol);
|
@@ -244,10 +250,18 @@ class InlineStartOverlay extends _base.Overlay {
|
|
244
250
|
if (beyondRendered) {
|
245
251
|
newX += this.sumCellSizes(0, sourceCol + 1);
|
246
252
|
newX -= this.wot.wtViewport.getViewportWidth();
|
253
|
+
// Compensate for the right header border if scrolled from the absolute left.
|
254
|
+
newX += rowHeaderBorderCompensation;
|
247
255
|
} else {
|
248
256
|
newX += this.sumCellSizes(this.wtSettings.getSetting('fixedColumnsStart'), sourceCol);
|
249
257
|
}
|
250
258
|
newX += scrollbarCompensation;
|
259
|
+
|
260
|
+
// If the table is scrolled all the way left when starting the scroll and going to be scrolled to the far right,
|
261
|
+
// we need to compensate for the potential header border width.
|
262
|
+
if ((0, _element.getMaximumScrollLeft)(this.mainTableScrollableElement) === newX - rowHeaderBorderCompensation && rowHeaderBorderCompensation > 0) {
|
263
|
+
this.wot.wtOverlays.expandHiderHorizontallyBy(rowHeaderBorderCompensation);
|
264
|
+
}
|
251
265
|
return this.setScrollPosition(newX);
|
252
266
|
}
|
253
267
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
-
import { addClass, getScrollbarWidth, getScrollLeft, getWindowScrollTop, hasClass, outerWidth, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
|
2
|
+
import { addClass, getScrollbarWidth, getScrollLeft, getMaximumScrollLeft, getWindowScrollTop, hasClass, outerWidth, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
|
3
3
|
import InlineStartOverlayTable from "../table/inlineStart.mjs";
|
4
4
|
import { Overlay } from "./_base.mjs";
|
5
5
|
import { CORNER_DEFAULT_STYLE } from "../selection/index.mjs";
|
@@ -223,9 +223,15 @@ export class InlineStartOverlay extends Overlay {
|
|
223
223
|
* @returns {boolean}
|
224
224
|
*/
|
225
225
|
scrollTo(sourceCol, beyondRendered) {
|
226
|
-
|
226
|
+
const {
|
227
|
+
wtSettings
|
228
|
+
} = this;
|
229
|
+
const rowHeaders = wtSettings.getSetting('rowHeaders');
|
230
|
+
const fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
|
227
231
|
const sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot;
|
228
232
|
const mainHolder = sourceInstance.wtTable.holder;
|
233
|
+
const rowHeaderBorderCompensation = fixedColumnsStart === 0 && rowHeaders.length > 0 && !hasClass(mainHolder.parentNode, 'innerBorderInlineStart') ? 1 : 0;
|
234
|
+
let newX = this.getTableParentOffset();
|
229
235
|
let scrollbarCompensation = 0;
|
230
236
|
if (beyondRendered) {
|
231
237
|
const columnWidth = this.wot.wtTable.getColumnWidth(sourceCol);
|
@@ -240,10 +246,18 @@ export class InlineStartOverlay extends Overlay {
|
|
240
246
|
if (beyondRendered) {
|
241
247
|
newX += this.sumCellSizes(0, sourceCol + 1);
|
242
248
|
newX -= this.wot.wtViewport.getViewportWidth();
|
249
|
+
// Compensate for the right header border if scrolled from the absolute left.
|
250
|
+
newX += rowHeaderBorderCompensation;
|
243
251
|
} else {
|
244
252
|
newX += this.sumCellSizes(this.wtSettings.getSetting('fixedColumnsStart'), sourceCol);
|
245
253
|
}
|
246
254
|
newX += scrollbarCompensation;
|
255
|
+
|
256
|
+
// If the table is scrolled all the way left when starting the scroll and going to be scrolled to the far right,
|
257
|
+
// we need to compensate for the potential header border width.
|
258
|
+
if (getMaximumScrollLeft(this.mainTableScrollableElement) === newX - rowHeaderBorderCompensation && rowHeaderBorderCompensation > 0) {
|
259
|
+
this.wot.wtOverlays.expandHiderHorizontallyBy(rowHeaderBorderCompensation);
|
260
|
+
}
|
247
261
|
return this.setScrollPosition(newX);
|
248
262
|
}
|
249
263
|
|
@@ -259,6 +259,9 @@ class TopOverlay extends _base.Overlay {
|
|
259
259
|
} = this;
|
260
260
|
const sourceInstance = wot.cloneSource ? wot.cloneSource : wot;
|
261
261
|
const mainHolder = sourceInstance.wtTable.holder;
|
262
|
+
const columnHeaders = wtSettings.getSetting('columnHeaders');
|
263
|
+
const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
|
264
|
+
const columnHeaderBorderCompensation = fixedRowsTop === 0 && columnHeaders.length > 0 && !(0, _element.hasClass)(mainHolder.parentNode, 'innerBorderTop') ? 1 : 0;
|
262
265
|
let newY = this.getTableParentOffset();
|
263
266
|
let scrollbarCompensation = 0;
|
264
267
|
if (bottomEdge) {
|
@@ -278,10 +281,18 @@ class TopOverlay extends _base.Overlay {
|
|
278
281
|
newY -= wot.wtViewport.getViewportHeight() - this.sumCellSizes(totalRows - fixedRowsBottom, totalRows);
|
279
282
|
// Fix 1 pixel offset when cell is selected
|
280
283
|
newY += 1;
|
284
|
+
// Compensate for the bottom header border if scrolled from the absolute top.
|
285
|
+
newY += columnHeaderBorderCompensation;
|
281
286
|
} else {
|
282
287
|
newY += this.sumCellSizes(wtSettings.getSetting('fixedRowsTop'), sourceRow);
|
283
288
|
}
|
284
289
|
newY += scrollbarCompensation;
|
290
|
+
|
291
|
+
// If the table is scrolled all the way up when starting the scroll and going to be scrolled to the bottom,
|
292
|
+
// we need to compensate for the potential header bottom border height.
|
293
|
+
if ((0, _element.getMaximumScrollTop)(this.mainTableScrollableElement) === newY - columnHeaderBorderCompensation && columnHeaderBorderCompensation > 0) {
|
294
|
+
this.wot.wtOverlays.expandHiderVerticallyBy(columnHeaderBorderCompensation);
|
295
|
+
}
|
285
296
|
return this.setScrollPosition(newY);
|
286
297
|
}
|
287
298
|
|
@@ -2,7 +2,7 @@ import "core-js/modules/es.error.cause.js";
|
|
2
2
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
3
3
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
4
4
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
5
|
-
import { addClass, getScrollbarWidth, getScrollTop, getWindowScrollLeft, hasClass, outerHeight, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
|
5
|
+
import { addClass, getMaximumScrollTop, getScrollbarWidth, getScrollTop, getWindowScrollLeft, hasClass, outerHeight, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
|
6
6
|
import TopOverlayTable from "./../table/top.mjs";
|
7
7
|
import { Overlay } from "./_base.mjs";
|
8
8
|
import { CORNER_DEFAULT_STYLE } from "../selection/index.mjs";
|
@@ -255,6 +255,9 @@ export class TopOverlay extends Overlay {
|
|
255
255
|
} = this;
|
256
256
|
const sourceInstance = wot.cloneSource ? wot.cloneSource : wot;
|
257
257
|
const mainHolder = sourceInstance.wtTable.holder;
|
258
|
+
const columnHeaders = wtSettings.getSetting('columnHeaders');
|
259
|
+
const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
|
260
|
+
const columnHeaderBorderCompensation = fixedRowsTop === 0 && columnHeaders.length > 0 && !hasClass(mainHolder.parentNode, 'innerBorderTop') ? 1 : 0;
|
258
261
|
let newY = this.getTableParentOffset();
|
259
262
|
let scrollbarCompensation = 0;
|
260
263
|
if (bottomEdge) {
|
@@ -274,10 +277,18 @@ export class TopOverlay extends Overlay {
|
|
274
277
|
newY -= wot.wtViewport.getViewportHeight() - this.sumCellSizes(totalRows - fixedRowsBottom, totalRows);
|
275
278
|
// Fix 1 pixel offset when cell is selected
|
276
279
|
newY += 1;
|
280
|
+
// Compensate for the bottom header border if scrolled from the absolute top.
|
281
|
+
newY += columnHeaderBorderCompensation;
|
277
282
|
} else {
|
278
283
|
newY += this.sumCellSizes(wtSettings.getSetting('fixedRowsTop'), sourceRow);
|
279
284
|
}
|
280
285
|
newY += scrollbarCompensation;
|
286
|
+
|
287
|
+
// If the table is scrolled all the way up when starting the scroll and going to be scrolled to the bottom,
|
288
|
+
// we need to compensate for the potential header bottom border height.
|
289
|
+
if (getMaximumScrollTop(this.mainTableScrollableElement) === newY - columnHeaderBorderCompensation && columnHeaderBorderCompensation > 0) {
|
290
|
+
this.wot.wtOverlays.expandHiderVerticallyBy(columnHeaderBorderCompensation);
|
291
|
+
}
|
281
292
|
return this.setScrollPosition(newY);
|
282
293
|
}
|
283
294
|
|
@@ -562,13 +562,31 @@ class Overlays {
|
|
562
562
|
const {
|
563
563
|
wtTable
|
564
564
|
} = this;
|
565
|
+
const {
|
566
|
+
rootWindow
|
567
|
+
} = this.domBindings;
|
568
|
+
const isWindowScrolled = this.scrollableElement === rootWindow;
|
565
569
|
const totalColumns = this.wtSettings.getSetting('totalColumns');
|
566
570
|
const totalRows = this.wtSettings.getSetting('totalRows');
|
567
571
|
const headerRowSize = wtViewport.getRowHeaderWidth();
|
568
572
|
const headerColumnSize = wtViewport.getColumnHeaderHeight();
|
569
|
-
const
|
570
|
-
|
571
|
-
|
573
|
+
const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
|
574
|
+
const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
|
575
|
+
const hiderElement = wtTable.hider;
|
576
|
+
const hiderStyle = hiderElement.style;
|
577
|
+
const isScrolledBeyondHiderHeight = () => {
|
578
|
+
return isWindowScrolled ? false : this.scrollableElement.scrollTop > Math.max(0, proposedHiderHeight - wtTable.holder.clientHeight);
|
579
|
+
};
|
580
|
+
const isScrolledBeyondHiderWidth = () => {
|
581
|
+
return isWindowScrolled ? false : this.scrollableElement.scrollLeft > Math.max(0, proposedHiderWidth - wtTable.holder.clientWidth);
|
582
|
+
};
|
583
|
+
const columnHeaderBorderCompensation = isScrolledBeyondHiderHeight() ? 1 : 0;
|
584
|
+
const rowHeaderBorderCompensation = isScrolledBeyondHiderWidth() ? 1 : 0;
|
585
|
+
|
586
|
+
// If the elements are being adjusted after scrolling the table from the very beginning to the very end,
|
587
|
+
// we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
|
588
|
+
hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
|
589
|
+
hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
|
572
590
|
if (this.scrollbarSize > 0) {
|
573
591
|
// todo refactoring, looking as a part of logic which should be moved outside the class
|
574
592
|
const {
|
@@ -592,6 +610,30 @@ class Overlays {
|
|
592
610
|
this.bottomOverlay.adjustElementsSize(force);
|
593
611
|
}
|
594
612
|
|
613
|
+
/**
|
614
|
+
* Expand the hider vertically element by the provided delta value.
|
615
|
+
*
|
616
|
+
* @param {number} heightDelta The delta value to expand the hider element by.
|
617
|
+
*/
|
618
|
+
expandHiderVerticallyBy(heightDelta) {
|
619
|
+
const {
|
620
|
+
wtTable
|
621
|
+
} = this;
|
622
|
+
wtTable.hider.style.height = `${parseInt(wtTable.hider.style.height, 10) + heightDelta}px`;
|
623
|
+
}
|
624
|
+
|
625
|
+
/**
|
626
|
+
* Expand the hider horizontally element by the provided delta value.
|
627
|
+
*
|
628
|
+
* @param {number} widthDelta The delta value to expand the hider element by.
|
629
|
+
*/
|
630
|
+
expandHiderHorizontallyBy(widthDelta) {
|
631
|
+
const {
|
632
|
+
wtTable
|
633
|
+
} = this;
|
634
|
+
wtTable.hider.style.width = `${parseInt(wtTable.hider.style.width, 10) + widthDelta}px`;
|
635
|
+
}
|
636
|
+
|
595
637
|
/**
|
596
638
|
*
|
597
639
|
*/
|
@@ -559,13 +559,31 @@ class Overlays {
|
|
559
559
|
const {
|
560
560
|
wtTable
|
561
561
|
} = this;
|
562
|
+
const {
|
563
|
+
rootWindow
|
564
|
+
} = this.domBindings;
|
565
|
+
const isWindowScrolled = this.scrollableElement === rootWindow;
|
562
566
|
const totalColumns = this.wtSettings.getSetting('totalColumns');
|
563
567
|
const totalRows = this.wtSettings.getSetting('totalRows');
|
564
568
|
const headerRowSize = wtViewport.getRowHeaderWidth();
|
565
569
|
const headerColumnSize = wtViewport.getColumnHeaderHeight();
|
566
|
-
const
|
567
|
-
|
568
|
-
|
570
|
+
const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
|
571
|
+
const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
|
572
|
+
const hiderElement = wtTable.hider;
|
573
|
+
const hiderStyle = hiderElement.style;
|
574
|
+
const isScrolledBeyondHiderHeight = () => {
|
575
|
+
return isWindowScrolled ? false : this.scrollableElement.scrollTop > Math.max(0, proposedHiderHeight - wtTable.holder.clientHeight);
|
576
|
+
};
|
577
|
+
const isScrolledBeyondHiderWidth = () => {
|
578
|
+
return isWindowScrolled ? false : this.scrollableElement.scrollLeft > Math.max(0, proposedHiderWidth - wtTable.holder.clientWidth);
|
579
|
+
};
|
580
|
+
const columnHeaderBorderCompensation = isScrolledBeyondHiderHeight() ? 1 : 0;
|
581
|
+
const rowHeaderBorderCompensation = isScrolledBeyondHiderWidth() ? 1 : 0;
|
582
|
+
|
583
|
+
// If the elements are being adjusted after scrolling the table from the very beginning to the very end,
|
584
|
+
// we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
|
585
|
+
hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
|
586
|
+
hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
|
569
587
|
if (this.scrollbarSize > 0) {
|
570
588
|
// todo refactoring, looking as a part of logic which should be moved outside the class
|
571
589
|
const {
|
@@ -589,6 +607,30 @@ class Overlays {
|
|
589
607
|
this.bottomOverlay.adjustElementsSize(force);
|
590
608
|
}
|
591
609
|
|
610
|
+
/**
|
611
|
+
* Expand the hider vertically element by the provided delta value.
|
612
|
+
*
|
613
|
+
* @param {number} heightDelta The delta value to expand the hider element by.
|
614
|
+
*/
|
615
|
+
expandHiderVerticallyBy(heightDelta) {
|
616
|
+
const {
|
617
|
+
wtTable
|
618
|
+
} = this;
|
619
|
+
wtTable.hider.style.height = `${parseInt(wtTable.hider.style.height, 10) + heightDelta}px`;
|
620
|
+
}
|
621
|
+
|
622
|
+
/**
|
623
|
+
* Expand the hider horizontally element by the provided delta value.
|
624
|
+
*
|
625
|
+
* @param {number} widthDelta The delta value to expand the hider element by.
|
626
|
+
*/
|
627
|
+
expandHiderHorizontallyBy(widthDelta) {
|
628
|
+
const {
|
629
|
+
wtTable
|
630
|
+
} = this;
|
631
|
+
wtTable.hider.style.width = `${parseInt(wtTable.hider.style.width, 10) + widthDelta}px`;
|
632
|
+
}
|
633
|
+
|
592
634
|
/**
|
593
635
|
*
|
594
636
|
*/
|
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 = "03/04/2024 11:
|
49
|
-
Handsontable.version = "0.0.0-next-
|
48
|
+
Handsontable.buildDate = "03/04/2024 11:36:00";
|
49
|
+
Handsontable.version = "0.0.0-next-53a190b-20240403";
|
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 = "03/04/2024 11:
|
39
|
-
Handsontable.version = "0.0.0-next-
|
38
|
+
Handsontable.buildDate = "03/04/2024 11:36:05";
|
39
|
+
Handsontable.version = "0.0.0-next-53a190b-20240403";
|
40
40
|
Handsontable.languages = {
|
41
41
|
dictionaryKeys,
|
42
42
|
getLanguageDictionary,
|
package/dist/handsontable.css
CHANGED
@@ -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-
|
29
|
-
* Release date: 06/03/2024 (built at 03/04/2024 11:
|
28
|
+
* Version: 0.0.0-next-53a190b-20240403
|
29
|
+
* Release date: 06/03/2024 (built at 03/04/2024 11:36:10)
|
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-
|
29
|
-
* Release date: 06/03/2024 (built at 03/04/2024 11:
|
28
|
+
* Version: 0.0.0-next-53a190b-20240403
|
29
|
+
* Release date: 06/03/2024 (built at 03/04/2024 11:36:10)
|
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-
|
29
|
-
* Release date: 06/03/2024 (built at 03/04/2024 11:
|
28
|
+
* Version: 0.0.0-next-53a190b-20240403
|
29
|
+
* Release date: 06/03/2024 (built at 03/04/2024 11:36:10)
|
30
30
|
*/
|
31
31
|
(function webpackUniversalModuleDefinition(root, factory) {
|
32
32
|
if(typeof exports === 'object' && typeof module === 'object')
|
@@ -42644,8 +42644,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
|
|
42644
42644
|
Handsontable.CellCoords = _src.CellCoords;
|
42645
42645
|
Handsontable.CellRange = _src.CellRange;
|
42646
42646
|
Handsontable.packageName = 'handsontable';
|
42647
|
-
Handsontable.buildDate = "03/04/2024 11:
|
42648
|
-
Handsontable.version = "0.0.0-next-
|
42647
|
+
Handsontable.buildDate = "03/04/2024 11:36:10";
|
42648
|
+
Handsontable.version = "0.0.0-next-53a190b-20240403";
|
42649
42649
|
Handsontable.languages = {
|
42650
42650
|
dictionaryKeys: _registry.dictionaryKeys,
|
42651
42651
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
@@ -49675,6 +49675,8 @@ exports.getCaretPosition = getCaretPosition;
|
|
49675
49675
|
exports.getComputedStyle = getComputedStyle;
|
49676
49676
|
exports.getCssTransform = getCssTransform;
|
49677
49677
|
exports.getFrameElement = getFrameElement;
|
49678
|
+
exports.getMaximumScrollLeft = getMaximumScrollLeft;
|
49679
|
+
exports.getMaximumScrollTop = getMaximumScrollTop;
|
49678
49680
|
exports.getParent = getParent;
|
49679
49681
|
exports.getParentWindow = getParentWindow;
|
49680
49682
|
exports.getScrollLeft = getScrollLeft;
|
@@ -50326,6 +50328,26 @@ function getScrollableElement(element) {
|
|
50326
50328
|
return rootWindow;
|
50327
50329
|
}
|
50328
50330
|
|
50331
|
+
/**
|
50332
|
+
* Get the maximum available `scrollTop` value for the provided element.
|
50333
|
+
*
|
50334
|
+
* @param {HTMLElement} element The element to get the maximum scroll top value from.
|
50335
|
+
* @returns {number} The maximum scroll top value.
|
50336
|
+
*/
|
50337
|
+
function getMaximumScrollTop(element) {
|
50338
|
+
return element.scrollHeight - element.clientHeight;
|
50339
|
+
}
|
50340
|
+
|
50341
|
+
/**
|
50342
|
+
* Get the maximum available `scrollLeft` value for the provided element.
|
50343
|
+
*
|
50344
|
+
* @param {HTMLElement} element The element to get the maximum scroll left value from.
|
50345
|
+
* @returns {number} The maximum scroll left value.
|
50346
|
+
*/
|
50347
|
+
function getMaximumScrollLeft(element) {
|
50348
|
+
return element.scrollWidth - element.clientWidth;
|
50349
|
+
}
|
50350
|
+
|
50329
50351
|
/**
|
50330
50352
|
* Returns a DOM element responsible for trimming the provided element.
|
50331
50353
|
*
|
@@ -52777,7 +52799,7 @@ const domMessages = {
|
|
52777
52799
|
function _injectProductInfo(key, element) {
|
52778
52800
|
const hasValidType = !isEmpty(key);
|
52779
52801
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
52780
|
-
const hotVersion = "0.0.0-next-
|
52802
|
+
const hotVersion = "0.0.0-next-53a190b-20240403";
|
52781
52803
|
let keyValidityDate;
|
52782
52804
|
let consoleMessageState = 'invalid';
|
52783
52805
|
let domMessageState = 'invalid';
|
@@ -71342,13 +71364,31 @@ class Overlays {
|
|
71342
71364
|
const {
|
71343
71365
|
wtTable
|
71344
71366
|
} = this;
|
71367
|
+
const {
|
71368
|
+
rootWindow
|
71369
|
+
} = this.domBindings;
|
71370
|
+
const isWindowScrolled = this.scrollableElement === rootWindow;
|
71345
71371
|
const totalColumns = this.wtSettings.getSetting('totalColumns');
|
71346
71372
|
const totalRows = this.wtSettings.getSetting('totalRows');
|
71347
71373
|
const headerRowSize = wtViewport.getRowHeaderWidth();
|
71348
71374
|
const headerColumnSize = wtViewport.getColumnHeaderHeight();
|
71349
|
-
const
|
71350
|
-
|
71351
|
-
|
71375
|
+
const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
|
71376
|
+
const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
|
71377
|
+
const hiderElement = wtTable.hider;
|
71378
|
+
const hiderStyle = hiderElement.style;
|
71379
|
+
const isScrolledBeyondHiderHeight = () => {
|
71380
|
+
return isWindowScrolled ? false : this.scrollableElement.scrollTop > Math.max(0, proposedHiderHeight - wtTable.holder.clientHeight);
|
71381
|
+
};
|
71382
|
+
const isScrolledBeyondHiderWidth = () => {
|
71383
|
+
return isWindowScrolled ? false : this.scrollableElement.scrollLeft > Math.max(0, proposedHiderWidth - wtTable.holder.clientWidth);
|
71384
|
+
};
|
71385
|
+
const columnHeaderBorderCompensation = isScrolledBeyondHiderHeight() ? 1 : 0;
|
71386
|
+
const rowHeaderBorderCompensation = isScrolledBeyondHiderWidth() ? 1 : 0;
|
71387
|
+
|
71388
|
+
// If the elements are being adjusted after scrolling the table from the very beginning to the very end,
|
71389
|
+
// we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
|
71390
|
+
hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
|
71391
|
+
hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
|
71352
71392
|
if (this.scrollbarSize > 0) {
|
71353
71393
|
// todo refactoring, looking as a part of logic which should be moved outside the class
|
71354
71394
|
const {
|
@@ -71372,6 +71412,30 @@ class Overlays {
|
|
71372
71412
|
this.bottomOverlay.adjustElementsSize(force);
|
71373
71413
|
}
|
71374
71414
|
|
71415
|
+
/**
|
71416
|
+
* Expand the hider vertically element by the provided delta value.
|
71417
|
+
*
|
71418
|
+
* @param {number} heightDelta The delta value to expand the hider element by.
|
71419
|
+
*/
|
71420
|
+
expandHiderVerticallyBy(heightDelta) {
|
71421
|
+
const {
|
71422
|
+
wtTable
|
71423
|
+
} = this;
|
71424
|
+
wtTable.hider.style.height = `${parseInt(wtTable.hider.style.height, 10) + heightDelta}px`;
|
71425
|
+
}
|
71426
|
+
|
71427
|
+
/**
|
71428
|
+
* Expand the hider horizontally element by the provided delta value.
|
71429
|
+
*
|
71430
|
+
* @param {number} widthDelta The delta value to expand the hider element by.
|
71431
|
+
*/
|
71432
|
+
expandHiderHorizontallyBy(widthDelta) {
|
71433
|
+
const {
|
71434
|
+
wtTable
|
71435
|
+
} = this;
|
71436
|
+
wtTable.hider.style.width = `${parseInt(wtTable.hider.style.width, 10) + widthDelta}px`;
|
71437
|
+
}
|
71438
|
+
|
71375
71439
|
/**
|
71376
71440
|
*
|
71377
71441
|
*/
|
@@ -76862,9 +76926,15 @@ class InlineStartOverlay extends _base.Overlay {
|
|
76862
76926
|
* @returns {boolean}
|
76863
76927
|
*/
|
76864
76928
|
scrollTo(sourceCol, beyondRendered) {
|
76865
|
-
|
76929
|
+
const {
|
76930
|
+
wtSettings
|
76931
|
+
} = this;
|
76932
|
+
const rowHeaders = wtSettings.getSetting('rowHeaders');
|
76933
|
+
const fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
|
76866
76934
|
const sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot;
|
76867
76935
|
const mainHolder = sourceInstance.wtTable.holder;
|
76936
|
+
const rowHeaderBorderCompensation = fixedColumnsStart === 0 && rowHeaders.length > 0 && !(0, _element.hasClass)(mainHolder.parentNode, 'innerBorderInlineStart') ? 1 : 0;
|
76937
|
+
let newX = this.getTableParentOffset();
|
76868
76938
|
let scrollbarCompensation = 0;
|
76869
76939
|
if (beyondRendered) {
|
76870
76940
|
const columnWidth = this.wot.wtTable.getColumnWidth(sourceCol);
|
@@ -76879,10 +76949,18 @@ class InlineStartOverlay extends _base.Overlay {
|
|
76879
76949
|
if (beyondRendered) {
|
76880
76950
|
newX += this.sumCellSizes(0, sourceCol + 1);
|
76881
76951
|
newX -= this.wot.wtViewport.getViewportWidth();
|
76952
|
+
// Compensate for the right header border if scrolled from the absolute left.
|
76953
|
+
newX += rowHeaderBorderCompensation;
|
76882
76954
|
} else {
|
76883
76955
|
newX += this.sumCellSizes(this.wtSettings.getSetting('fixedColumnsStart'), sourceCol);
|
76884
76956
|
}
|
76885
76957
|
newX += scrollbarCompensation;
|
76958
|
+
|
76959
|
+
// If the table is scrolled all the way left when starting the scroll and going to be scrolled to the far right,
|
76960
|
+
// we need to compensate for the potential header border width.
|
76961
|
+
if ((0, _element.getMaximumScrollLeft)(this.mainTableScrollableElement) === newX - rowHeaderBorderCompensation && rowHeaderBorderCompensation > 0) {
|
76962
|
+
this.wot.wtOverlays.expandHiderHorizontallyBy(rowHeaderBorderCompensation);
|
76963
|
+
}
|
76886
76964
|
return this.setScrollPosition(newX);
|
76887
76965
|
}
|
76888
76966
|
|
@@ -79176,6 +79254,9 @@ class TopOverlay extends _base.Overlay {
|
|
79176
79254
|
} = this;
|
79177
79255
|
const sourceInstance = wot.cloneSource ? wot.cloneSource : wot;
|
79178
79256
|
const mainHolder = sourceInstance.wtTable.holder;
|
79257
|
+
const columnHeaders = wtSettings.getSetting('columnHeaders');
|
79258
|
+
const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
|
79259
|
+
const columnHeaderBorderCompensation = fixedRowsTop === 0 && columnHeaders.length > 0 && !(0, _element.hasClass)(mainHolder.parentNode, 'innerBorderTop') ? 1 : 0;
|
79179
79260
|
let newY = this.getTableParentOffset();
|
79180
79261
|
let scrollbarCompensation = 0;
|
79181
79262
|
if (bottomEdge) {
|
@@ -79195,10 +79276,18 @@ class TopOverlay extends _base.Overlay {
|
|
79195
79276
|
newY -= wot.wtViewport.getViewportHeight() - this.sumCellSizes(totalRows - fixedRowsBottom, totalRows);
|
79196
79277
|
// Fix 1 pixel offset when cell is selected
|
79197
79278
|
newY += 1;
|
79279
|
+
// Compensate for the bottom header border if scrolled from the absolute top.
|
79280
|
+
newY += columnHeaderBorderCompensation;
|
79198
79281
|
} else {
|
79199
79282
|
newY += this.sumCellSizes(wtSettings.getSetting('fixedRowsTop'), sourceRow);
|
79200
79283
|
}
|
79201
79284
|
newY += scrollbarCompensation;
|
79285
|
+
|
79286
|
+
// If the table is scrolled all the way up when starting the scroll and going to be scrolled to the bottom,
|
79287
|
+
// we need to compensate for the potential header bottom border height.
|
79288
|
+
if ((0, _element.getMaximumScrollTop)(this.mainTableScrollableElement) === newY - columnHeaderBorderCompensation && columnHeaderBorderCompensation > 0) {
|
79289
|
+
this.wot.wtOverlays.expandHiderVerticallyBy(columnHeaderBorderCompensation);
|
79290
|
+
}
|
79202
79291
|
return this.setScrollPosition(newY);
|
79203
79292
|
}
|
79204
79293
|
|
@@ -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-
|
29
|
-
* Release date: 06/03/2024 (built at 03/04/2024 11:
|
28
|
+
* Version: 0.0.0-next-53a190b-20240403
|
29
|
+
* Release date: 06/03/2024 (built at 03/04/2024 11:36:27)
|
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 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 .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-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
|