handsontable 0.0.0-next-14118b6-20240131 → 0.0.0-next-817afa4-20240202
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 +2 -2
- package/base.mjs +2 -2
- package/dataMap/metaManager/index.js +1 -1
- package/dataMap/metaManager/index.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +17 -0
- package/dataMap/metaManager/metaSchema.mjs +17 -0
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +124 -18
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +6 -6
- package/dist/handsontable.js +124 -18
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +6 -6
- package/helpers/dom/element.js +16 -0
- package/helpers/dom/element.mjs +15 -0
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
- package/pluginHooks.js +1 -1
- package/pluginHooks.mjs +1 -1
- package/plugins/filters/component/value.js +16 -6
- package/plugins/filters/component/value.mjs +17 -7
- package/plugins/filters/ui/multipleSelect.js +38 -0
- package/plugins/filters/ui/multipleSelect.mjs +39 -1
- package/plugins/filters/utils.js +29 -5
- package/plugins/filters/utils.mjs +28 -5
- package/renderers/numericRenderer/numericRenderer.js +1 -0
- package/renderers/numericRenderer/numericRenderer.mjs +1 -0
package/dist/handsontable.js
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: 16/01/2024 (built at
|
28
|
+
* Version: 0.0.0-next-817afa4-20240202
|
29
|
+
* Release date: 16/01/2024 (built at 02/02/2024 12:20:05)
|
30
30
|
*/
|
31
31
|
(function webpackUniversalModuleDefinition(root, factory) {
|
32
32
|
if(typeof exports === 'object' && typeof module === 'object')
|
@@ -107,8 +107,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
|
|
107
107
|
Handsontable.CellCoords = _src.CellCoords;
|
108
108
|
Handsontable.CellRange = _src.CellRange;
|
109
109
|
Handsontable.packageName = 'handsontable';
|
110
|
-
Handsontable.buildDate = "
|
111
|
-
Handsontable.version = "0.0.0-next-
|
110
|
+
Handsontable.buildDate = "02/02/2024 12:20:05";
|
111
|
+
Handsontable.version = "0.0.0-next-817afa4-20240202";
|
112
112
|
Handsontable.languages = {
|
113
113
|
dictionaryKeys: _registry.dictionaryKeys,
|
114
114
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
@@ -7118,6 +7118,7 @@ exports.removeClass = removeClass;
|
|
7118
7118
|
exports.removeContentEditableFromElementAndDeselect = removeContentEditableFromElementAndDeselect;
|
7119
7119
|
exports.removeEvent = removeEvent;
|
7120
7120
|
exports.removeTextNodes = removeTextNodes;
|
7121
|
+
exports.renderMockCell = renderMockCell;
|
7121
7122
|
exports.resetCssTransform = resetCssTransform;
|
7122
7123
|
exports.runWithSelectedContendEditableElement = runWithSelectedContendEditableElement;
|
7123
7124
|
exports.selectElementIfAllowed = selectElementIfAllowed;
|
@@ -8205,6 +8206,21 @@ function runWithSelectedContendEditableElement(element, callback) {
|
|
8205
8206
|
removeContentEditableFromElementAndDeselect(element, invisibleSelection);
|
8206
8207
|
}
|
8207
8208
|
|
8209
|
+
/**
|
8210
|
+
* Return a `td` element rendered outside of the table with the provided renderer function.
|
8211
|
+
*
|
8212
|
+
* @param {Document} rootDocument Root document element.
|
8213
|
+
* @param {Function} renderFunction The renderer function.
|
8214
|
+
* @param {Array} renderArgs The renderer arguments.
|
8215
|
+
* @returns {HTMLElement} The rendered `td` element.
|
8216
|
+
*/
|
8217
|
+
function renderMockCell(rootDocument, renderFunction, renderArgs) {
|
8218
|
+
const cell = rootDocument.createElement('td');
|
8219
|
+
renderArgs.splice(1, 0, cell);
|
8220
|
+
renderFunction.call(renderArgs.instance, ...renderArgs);
|
8221
|
+
return cell;
|
8222
|
+
}
|
8223
|
+
|
8208
8224
|
/***/ }),
|
8209
8225
|
/* 108 */
|
8210
8226
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
@@ -8470,7 +8486,7 @@ const domMessages = {
|
|
8470
8486
|
function _injectProductInfo(key, element) {
|
8471
8487
|
const hasValidType = !isEmpty(key);
|
8472
8488
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
8473
|
-
const hotVersion = "0.0.0-next-
|
8489
|
+
const hotVersion = "0.0.0-next-817afa4-20240202";
|
8474
8490
|
let keyValidityDate;
|
8475
8491
|
let consoleMessageState = 'invalid';
|
8476
8492
|
let domMessageState = 'invalid';
|
@@ -11310,7 +11326,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
11310
11326
|
*/
|
11311
11327
|
'afterUpdateData',
|
11312
11328
|
/**
|
11313
|
-
* Fired after a scroll event, which is identified as a momentum scroll.
|
11329
|
+
* Fired after a scroll event, which is identified as a momentum scroll (e.g. On an iPad).
|
11314
11330
|
*
|
11315
11331
|
* @event Hooks#afterMomentumScroll
|
11316
11332
|
*/
|
@@ -36390,7 +36406,7 @@ class MetaManager {
|
|
36390
36406
|
|
36391
36407
|
/**
|
36392
36408
|
* Returns all cell meta objects that were created during the Handsontable operation but for
|
36393
|
-
*
|
36409
|
+
* specific row index.
|
36394
36410
|
*
|
36395
36411
|
* @param {number} physicalRow The physical row index.
|
36396
36412
|
* @returns {object[]}
|
@@ -38471,6 +38487,23 @@ var _default = () => {
|
|
38471
38487
|
* ```
|
38472
38488
|
*/
|
38473
38489
|
disableVisualSelection: false,
|
38490
|
+
/**
|
38491
|
+
* @description
|
38492
|
+
* The `displayValue` cell meta property defines a string that will be used to display the cell's contents
|
38493
|
+
* in the Filters UI multi-selection module.
|
38494
|
+
*
|
38495
|
+
* For example, it can be utlized:
|
38496
|
+
* - When the cell's underlying value is not easily readable.
|
38497
|
+
* - With custom renderers.
|
38498
|
+
*
|
38499
|
+
* Currently used by default to display the numeric renderer's output.
|
38500
|
+
*
|
38501
|
+
* @memberof Options#
|
38502
|
+
* @type {string}
|
38503
|
+
* @default undefined
|
38504
|
+
* @category Core
|
38505
|
+
*/
|
38506
|
+
displayValue: undefined,
|
38474
38507
|
/**
|
38475
38508
|
* @description
|
38476
38509
|
* The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
|
@@ -49332,6 +49365,7 @@ function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties)
|
|
49332
49365
|
cellProperties.className = classArr.join(' ');
|
49333
49366
|
TD.dir = 'ltr';
|
49334
49367
|
}
|
49368
|
+
cellProperties.displayValue = newValue;
|
49335
49369
|
(0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, newValue, cellProperties);
|
49336
49370
|
}
|
49337
49371
|
numericRenderer.RENDERER_TYPE = RENDERER_TYPE;
|
@@ -67937,6 +67971,7 @@ exports.__esModule = true;
|
|
67937
67971
|
exports.createArrayAssertion = createArrayAssertion;
|
67938
67972
|
exports.intersectValues = intersectValues;
|
67939
67973
|
exports.sortComparison = sortComparison;
|
67974
|
+
exports.syncDisplayValuesToUnifiedValues = syncDisplayValuesToUnifiedValues;
|
67940
67975
|
exports.toEmptyString = toEmptyString;
|
67941
67976
|
exports.toVisualValue = toVisualValue;
|
67942
67977
|
exports.unifyColumnValues = unifyColumnValues;
|
@@ -67964,12 +67999,15 @@ function sortComparison(a, b) {
|
|
67964
67999
|
*
|
67965
68000
|
* @param {*} value The value to convert.
|
67966
68001
|
* @param {string} defaultEmptyValue Default value for empty cells.
|
68002
|
+
* @param {string} [displayValue] The display value.
|
67967
68003
|
* @returns {*}
|
67968
68004
|
*/
|
67969
|
-
function toVisualValue(value, defaultEmptyValue) {
|
68005
|
+
function toVisualValue(value, defaultEmptyValue, displayValue) {
|
67970
68006
|
let visualValue = value;
|
67971
68007
|
if (visualValue === '') {
|
67972
68008
|
visualValue = `(${defaultEmptyValue})`;
|
68009
|
+
} else if (displayValue) {
|
68010
|
+
visualValue = displayValue;
|
67973
68011
|
}
|
67974
68012
|
return visualValue;
|
67975
68013
|
}
|
@@ -68010,7 +68048,7 @@ function toEmptyString(value) {
|
|
68010
68048
|
}
|
68011
68049
|
|
68012
68050
|
/**
|
68013
|
-
* Unify column values (
|
68051
|
+
* Unify column values (remove duplicated values and sort them).
|
68014
68052
|
*
|
68015
68053
|
* @param {Array} values An array of values.
|
68016
68054
|
* @returns {Array}
|
@@ -68034,23 +68072,43 @@ function unifyColumnValues(values) {
|
|
68034
68072
|
return unifiedValues;
|
68035
68073
|
}
|
68036
68074
|
|
68075
|
+
/**
|
68076
|
+
* Synchronize display values with the provided unified values.
|
68077
|
+
*
|
68078
|
+
* @param {Array} displayValues An array of display values.
|
68079
|
+
* @param {Array} values An array of source values.
|
68080
|
+
* @param {Array} unifiedValues An array of unified values.
|
68081
|
+
*
|
68082
|
+
* @returns {Array} An array of synchronized display values.
|
68083
|
+
*/
|
68084
|
+
function syncDisplayValuesToUnifiedValues(displayValues, values, unifiedValues) {
|
68085
|
+
const syncedDisplayValues = [];
|
68086
|
+
(0, _array.arrayEach)(unifiedValues, unifiedValue => {
|
68087
|
+
const index = values.indexOf(unifiedValue);
|
68088
|
+
const displayValue = displayValues[index];
|
68089
|
+
syncedDisplayValues.push(displayValue);
|
68090
|
+
});
|
68091
|
+
return syncedDisplayValues;
|
68092
|
+
}
|
68093
|
+
|
68037
68094
|
/**
|
68038
68095
|
* Intersect 'base' values with 'selected' values and return an array of object.
|
68039
68096
|
*
|
68040
68097
|
* @param {Array} base An array of base values.
|
68041
68098
|
* @param {Array} selected An array of selected values.
|
68042
68099
|
* @param {string} defaultEmptyValue Default value for empty cells.
|
68100
|
+
* @param {string[]} [displayValues] An array of display values.
|
68043
68101
|
* @param {Function} [callback] A callback function which is invoked for every item in an array.
|
68044
68102
|
* @returns {Array}
|
68045
68103
|
*/
|
68046
|
-
function intersectValues(base, selected, defaultEmptyValue, callback) {
|
68104
|
+
function intersectValues(base, selected, defaultEmptyValue, displayValues, callback) {
|
68047
68105
|
const result = [];
|
68048
68106
|
const same = base === selected;
|
68049
68107
|
let selectedItemsAssertion;
|
68050
68108
|
if (!same) {
|
68051
68109
|
selectedItemsAssertion = createArrayAssertion(selected);
|
68052
68110
|
}
|
68053
|
-
(0, _array.arrayEach)(base, value => {
|
68111
|
+
(0, _array.arrayEach)(base, (value, index) => {
|
68054
68112
|
let checked = false;
|
68055
68113
|
if (same || selectedItemsAssertion(value)) {
|
68056
68114
|
checked = true;
|
@@ -68058,7 +68116,7 @@ function intersectValues(base, selected, defaultEmptyValue, callback) {
|
|
68058
68116
|
const item = {
|
68059
68117
|
checked,
|
68060
68118
|
value,
|
68061
|
-
visualValue: toVisualValue(value, defaultEmptyValue)
|
68119
|
+
visualValue: toVisualValue(value, defaultEmptyValue, displayValues[index])
|
68062
68120
|
};
|
68063
68121
|
if (callback) {
|
68064
68122
|
callback(item);
|
@@ -69253,17 +69311,23 @@ class ValueComponent extends _base.BaseComponent {
|
|
69253
69311
|
* `editedConditionStack`, `dependentConditionStacks`, `visibleDataFactory` and `conditionArgsChange`.
|
69254
69312
|
*/
|
69255
69313
|
updateState(stateInfo) {
|
69314
|
+
const multipleSelectComponent = this.getMultipleSelectElement();
|
69256
69315
|
const updateColumnState = (physicalColumn, conditions, conditionArgsChange, filteredRowsFactory, conditionsStack) => {
|
69257
69316
|
const [firstByValueCondition] = (0, _array.arrayFilter)(conditions, condition => condition.name === _constants2.CONDITION_BY_VALUE);
|
69258
69317
|
const state = {};
|
69259
69318
|
const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
|
69260
69319
|
if (firstByValueCondition) {
|
69261
|
-
const
|
69320
|
+
const filteredRows = filteredRowsFactory(physicalColumn, conditionsStack);
|
69321
|
+
const rowValues = (0, _array.arrayMap)(filteredRows, row => row.value);
|
69322
|
+
const rowIndexes = (0, _array.arrayMap)(filteredRows, row => row.meta.visualRow);
|
69323
|
+
const unifiedRowValues = (0, _utils.unifyColumnValues)(rowValues);
|
69324
|
+
const displayValues = (multipleSelectComponent.getDisplayValuesAtCol(this.hot.toVisualColumn(physicalColumn)) || []).filter((value, index) => rowIndexes.includes(index));
|
69325
|
+
const displayValuesSyncedWithUnifiedValues = (0, _utils.syncDisplayValuesToUnifiedValues)(displayValues, rowValues, unifiedRowValues);
|
69262
69326
|
if (conditionArgsChange) {
|
69263
69327
|
firstByValueCondition.args[0] = conditionArgsChange;
|
69264
69328
|
}
|
69265
69329
|
const selectedValues = [];
|
69266
|
-
const itemsSnapshot = (0, _utils.intersectValues)(
|
69330
|
+
const itemsSnapshot = (0, _utils.intersectValues)(unifiedRowValues, firstByValueCondition.args[0], defaultBlankCellValue, displayValuesSyncedWithUnifiedValues, item => {
|
69267
69331
|
if (item.checked) {
|
69268
69332
|
selectedValues.push(item.value);
|
69269
69333
|
}
|
@@ -69326,13 +69390,17 @@ class ValueComponent extends _base.BaseComponent {
|
|
69326
69390
|
* Reset elements to their initial state.
|
69327
69391
|
*/
|
69328
69392
|
reset() {
|
69393
|
+
const multiSelectComponent = this.getMultipleSelectElement();
|
69394
|
+
const selectedColumn = this.hot.getPlugin('filters').getSelectedColumn();
|
69329
69395
|
const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
|
69330
|
-
const values =
|
69331
|
-
const
|
69396
|
+
const values = this._getColumnVisibleValues();
|
69397
|
+
const unifiedValues = (0, _utils.unifyColumnValues)(values);
|
69398
|
+
const displayValues = multiSelectComponent.getDisplayValuesAtCol(selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.visualIndex) || [];
|
69399
|
+
const displayValuesSyncedWithUnifiedValues = (0, _utils.syncDisplayValuesToUnifiedValues)(displayValues, values, unifiedValues);
|
69400
|
+
const items = (0, _utils.intersectValues)(unifiedValues, unifiedValues, defaultBlankCellValue, displayValuesSyncedWithUnifiedValues || []);
|
69332
69401
|
this.getMultipleSelectElement().setItems(items);
|
69333
69402
|
super.reset();
|
69334
|
-
this.getMultipleSelectElement().setValue(
|
69335
|
-
const selectedColumn = this.hot.getPlugin('filters').getSelectedColumn();
|
69403
|
+
this.getMultipleSelectElement().setValue(unifiedValues);
|
69336
69404
|
if (selectedColumn !== null) {
|
69337
69405
|
this.getMultipleSelectElement().setLocale(this.hot.getCellMeta(0, selectedColumn.visualIndex).locale);
|
69338
69406
|
}
|
@@ -69744,6 +69812,44 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
69744
69812
|
(0, _classPrivateFieldSet2.default)(this, _items, null);
|
69745
69813
|
super.destroy();
|
69746
69814
|
}
|
69815
|
+
|
69816
|
+
/**
|
69817
|
+
* Returns the display values for all the cells at the given `column` visual index.
|
69818
|
+
* If no display values are defined, the `source data` values will be returned instead.
|
69819
|
+
*
|
69820
|
+
* If the provided column index is not a valid integer, the method will return `null`.
|
69821
|
+
*
|
69822
|
+
* @param {number} column From visual column index.
|
69823
|
+
* @returns {Array[]|null} Array containing the display values of all the cells in the column.
|
69824
|
+
*/
|
69825
|
+
getDisplayValuesAtCol(column) {
|
69826
|
+
if (!Number.isInteger(column)) {
|
69827
|
+
return null;
|
69828
|
+
}
|
69829
|
+
const sourceRowCount = this.hot.countSourceRows();
|
69830
|
+
const columnData = [];
|
69831
|
+
let returnValue;
|
69832
|
+
for (let row = 0; row < sourceRowCount; row += 1) {
|
69833
|
+
const cellMeta = this.hot.getCellMeta(row, column);
|
69834
|
+
const {
|
69835
|
+
prop,
|
69836
|
+
displayValue
|
69837
|
+
} = cellMeta;
|
69838
|
+
const cellSourceData = this.hot.getSourceDataAtCell(row, column);
|
69839
|
+
if (displayValue) {
|
69840
|
+
returnValue = displayValue;
|
69841
|
+
} else {
|
69842
|
+
var _cellMeta$displayValu;
|
69843
|
+
// Render the cell in a mock element to try to get the display value (possibly applied in the renderer).
|
69844
|
+
(0, _element.renderMockCell)(this.hot.rootDocument, this.hot.getCellRenderer(row, column), [this.hot, row, column, prop, cellSourceData, cellMeta]);
|
69845
|
+
|
69846
|
+
// Retry getting the display value.
|
69847
|
+
returnValue = (_cellMeta$displayValu = cellMeta.displayValue) !== null && _cellMeta$displayValu !== void 0 ? _cellMeta$displayValu : cellSourceData;
|
69848
|
+
}
|
69849
|
+
columnData.push(returnValue);
|
69850
|
+
}
|
69851
|
+
return columnData;
|
69852
|
+
}
|
69747
69853
|
}
|
69748
69854
|
exports.MultipleSelectUI = MultipleSelectUI;
|
69749
69855
|
function _onInput2(event) {
|
@@ -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: 16/01/2024 (built at
|
28
|
+
* Version: 0.0.0-next-817afa4-20240202
|
29
|
+
* Release date: 16/01/2024 (built at 02/02/2024 12:20:23)
|
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}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
|
31
31
|
/*!
|
32
32
|
* Handsontable ContextMenu
|