handsontable 16.1.1-next-895fbb8-20250923 → 16.2.0-next-216dbd0-20251112
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.
- package/3rdparty/walkontable/src/overlays.js +1 -1
- package/3rdparty/walkontable/src/overlays.mjs +1 -1
- package/3rdparty/walkontable/src/selection/border/border.js +19 -3
- package/3rdparty/walkontable/src/selection/border/border.mjs +19 -3
- package/CHANGELOG.md +40 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/coordsMapper/index.js +11 -0
- package/core/coordsMapper/index.mjs +1 -0
- package/core/hooks/bucket.js +7 -1
- package/core/hooks/bucket.mjs +7 -1
- package/core/hooks/constants.js +54 -0
- package/core/hooks/constants.mjs +54 -0
- package/core/hooks/index.d.ts +6 -0
- package/core/index.js +10 -4
- package/core/index.mjs +2 -1
- package/core.d.ts +3 -2
- package/core.js +67 -26
- package/core.mjs +56 -15
- package/dataMap/metaManager/metaSchema.js +197 -20
- package/dataMap/metaManager/metaSchema.mjs +197 -20
- package/dist/handsontable.css +175 -3
- package/dist/handsontable.full.css +175 -3
- package/dist/handsontable.full.js +10940 -8445
- package/dist/handsontable.full.min.css +5 -4
- package/dist/handsontable.full.min.js +193 -192
- package/dist/handsontable.js +6472 -4116
- package/dist/handsontable.min.css +4 -4
- package/dist/handsontable.min.js +43 -42
- package/dist/languages/all.js +168 -21
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +8 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.js +8 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.js +8 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.js +8 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.js +8 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +8 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fa-IR.js +8 -1
- package/dist/languages/fa-IR.min.js +1 -1
- package/dist/languages/fr-FR.js +8 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.js +8 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.js +8 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.js +8 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.js +8 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.js +8 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.js +8 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.js +8 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.js +8 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +8 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.js +8 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.js +8 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.js +8 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.js +8 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/editors/autocompleteEditor/autocompleteEditor.js +21 -1
- package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -2
- package/focusManager/constants.js +25 -0
- package/focusManager/constants.mjs +22 -0
- package/focusManager/eventListener.js +107 -0
- package/focusManager/eventListener.mjs +103 -0
- package/{focusManager.d.ts → focusManager/grid.d.ts} +1 -1
- package/{focusManager.js → focusManager/grid.js} +48 -17
- package/{focusManager.mjs → focusManager/grid.mjs} +47 -16
- package/focusManager/index.d.ts +2 -0
- package/focusManager/index.js +20 -0
- package/focusManager/index.mjs +20 -0
- package/focusManager/scope.js +133 -0
- package/focusManager/scope.mjs +129 -0
- package/focusManager/scopeManager.d.ts +19 -0
- package/focusManager/scopeManager.js +268 -0
- package/focusManager/scopeManager.mjs +263 -0
- package/focusManager/scopes/grid.js +120 -0
- package/focusManager/scopes/grid.mjs +116 -0
- package/focusManager/scopes/index.js +13 -0
- package/focusManager/scopes/index.mjs +9 -0
- package/{utils → focusManager/utils}/focusDetector.js +21 -31
- package/{utils → focusManager/utils}/focusDetector.mjs +21 -31
- package/focusManager/utils/utils.js +95 -0
- package/focusManager/utils/utils.mjs +89 -0
- package/helpers/dom/element.js +1 -1
- package/helpers/dom/element.mjs +2 -2
- package/helpers/dom/event.js +1 -1
- package/helpers/dom/event.mjs +1 -1
- package/helpers/mixed.js +2 -65
- package/helpers/mixed.mjs +2 -63
- package/i18n/constants.js +10 -1
- package/i18n/constants.mjs +10 -1
- package/i18n/languages/ar-AR.js +8 -1
- package/i18n/languages/ar-AR.mjs +8 -1
- package/i18n/languages/cs-CZ.js +8 -1
- package/i18n/languages/cs-CZ.mjs +8 -1
- package/i18n/languages/de-CH.js +8 -1
- package/i18n/languages/de-CH.mjs +8 -1
- package/i18n/languages/de-DE.js +8 -1
- package/i18n/languages/de-DE.mjs +8 -1
- package/i18n/languages/en-US.js +8 -1
- package/i18n/languages/en-US.mjs +8 -1
- package/i18n/languages/es-MX.js +8 -1
- package/i18n/languages/es-MX.mjs +8 -1
- package/i18n/languages/fa-IR.js +8 -1
- package/i18n/languages/fa-IR.mjs +8 -1
- package/i18n/languages/fr-FR.js +8 -1
- package/i18n/languages/fr-FR.mjs +8 -1
- package/i18n/languages/hr-HR.js +8 -1
- package/i18n/languages/hr-HR.mjs +8 -1
- package/i18n/languages/it-IT.js +8 -1
- package/i18n/languages/it-IT.mjs +8 -1
- package/i18n/languages/ja-JP.js +8 -1
- package/i18n/languages/ja-JP.mjs +8 -1
- package/i18n/languages/ko-KR.js +8 -1
- package/i18n/languages/ko-KR.mjs +8 -1
- package/i18n/languages/lv-LV.js +8 -1
- package/i18n/languages/lv-LV.mjs +8 -1
- package/i18n/languages/nb-NO.js +8 -1
- package/i18n/languages/nb-NO.mjs +8 -1
- package/i18n/languages/nl-NL.js +8 -1
- package/i18n/languages/nl-NL.mjs +8 -1
- package/i18n/languages/pl-PL.js +8 -1
- package/i18n/languages/pl-PL.mjs +8 -1
- package/i18n/languages/pt-BR.js +8 -1
- package/i18n/languages/pt-BR.mjs +8 -1
- package/i18n/languages/ru-RU.js +8 -1
- package/i18n/languages/ru-RU.mjs +8 -1
- package/i18n/languages/sr-SP.js +8 -1
- package/i18n/languages/sr-SP.mjs +8 -1
- package/i18n/languages/zh-CN.js +8 -1
- package/i18n/languages/zh-CN.mjs +8 -1
- package/i18n/languages/zh-TW.js +8 -1
- package/i18n/languages/zh-TW.mjs +8 -1
- package/index.d.ts +9 -0
- package/languages/all.js +168 -21
- package/languages/ar-AR.js +8 -1
- package/languages/ar-AR.mjs +8 -1
- package/languages/cs-CZ.js +8 -1
- package/languages/cs-CZ.mjs +8 -1
- package/languages/de-CH.js +8 -1
- package/languages/de-CH.mjs +8 -1
- package/languages/de-DE.js +8 -1
- package/languages/de-DE.mjs +8 -1
- package/languages/en-US.js +8 -1
- package/languages/en-US.mjs +8 -1
- package/languages/es-MX.js +8 -1
- package/languages/es-MX.mjs +8 -1
- package/languages/fa-IR.js +8 -1
- package/languages/fa-IR.mjs +8 -1
- package/languages/fr-FR.js +8 -1
- package/languages/fr-FR.mjs +8 -1
- package/languages/hr-HR.js +8 -1
- package/languages/hr-HR.mjs +8 -1
- package/languages/index.js +168 -21
- package/languages/it-IT.js +8 -1
- package/languages/it-IT.mjs +8 -1
- package/languages/ja-JP.js +8 -1
- package/languages/ja-JP.mjs +8 -1
- package/languages/ko-KR.js +8 -1
- package/languages/ko-KR.mjs +8 -1
- package/languages/lv-LV.js +8 -1
- package/languages/lv-LV.mjs +8 -1
- package/languages/nb-NO.js +8 -1
- package/languages/nb-NO.mjs +8 -1
- package/languages/nl-NL.js +8 -1
- package/languages/nl-NL.mjs +8 -1
- package/languages/pl-PL.js +8 -1
- package/languages/pl-PL.mjs +8 -1
- package/languages/pt-BR.js +8 -1
- package/languages/pt-BR.mjs +8 -1
- package/languages/ru-RU.js +8 -1
- package/languages/ru-RU.mjs +8 -1
- package/languages/sr-SP.js +8 -1
- package/languages/sr-SP.mjs +8 -1
- package/languages/zh-CN.js +8 -1
- package/languages/zh-CN.mjs +8 -1
- package/languages/zh-TW.js +8 -1
- package/languages/zh-TW.mjs +8 -1
- package/package.json +25 -7
- package/plugins/autoRowSize/autoRowSize.js +8 -1
- package/plugins/autoRowSize/autoRowSize.mjs +8 -1
- package/plugins/base/base.js +36 -10
- package/plugins/base/base.mjs +36 -10
- package/plugins/columnSummary/columnSummary.d.ts +2 -2
- package/plugins/columnSummary/columnSummary.js +44 -10
- package/plugins/columnSummary/columnSummary.mjs +44 -10
- package/plugins/columnSummary/endpoints.js +15 -13
- package/plugins/columnSummary/endpoints.mjs +15 -13
- package/plugins/columnSummary/utils.js +31 -0
- package/plugins/columnSummary/utils.mjs +30 -0
- package/plugins/customBorders/customBorders.d.ts +1 -0
- package/plugins/customBorders/customBorders.js +32 -2
- package/plugins/customBorders/customBorders.mjs +32 -2
- package/plugins/dialog/constants.js +7 -0
- package/plugins/dialog/constants.mjs +4 -0
- package/plugins/dialog/dialog.d.ts +22 -2
- package/plugins/dialog/dialog.js +197 -81
- package/plugins/dialog/dialog.mjs +196 -81
- package/plugins/dialog/templates/base.js +60 -0
- package/plugins/dialog/templates/base.mjs +56 -0
- package/plugins/dialog/templates/confirm.js +106 -0
- package/plugins/dialog/templates/confirm.mjs +102 -0
- package/plugins/dialog/templates/index.js +6 -0
- package/plugins/dialog/templates/index.mjs +4 -0
- package/plugins/dialog/ui.js +125 -41
- package/plugins/dialog/ui.mjs +119 -35
- package/plugins/emptyDataState/emptyDataState.d.ts +24 -0
- package/plugins/emptyDataState/emptyDataState.js +526 -0
- package/plugins/emptyDataState/emptyDataState.mjs +521 -0
- package/plugins/emptyDataState/index.d.ts +1 -0
- package/plugins/emptyDataState/index.js +7 -0
- package/plugins/emptyDataState/index.mjs +1 -0
- package/plugins/emptyDataState/ui.js +282 -0
- package/plugins/emptyDataState/ui.mjs +278 -0
- package/plugins/filters/component/value.js +16 -1
- package/plugins/filters/component/value.mjs +16 -1
- package/plugins/filters/filters.d.ts +5 -1
- package/plugins/filters/filters.js +22 -1
- package/plugins/filters/filters.mjs +22 -1
- package/plugins/filters/ui/multipleSelect.js +90 -79
- package/plugins/filters/ui/multipleSelect.mjs +90 -79
- package/plugins/index.d.ts +3 -0
- package/plugins/index.js +3 -0
- package/plugins/index.mjs +3 -1
- package/plugins/mergeCells/utils.js +1 -5
- package/plugins/mergeCells/utils.mjs +1 -5
- package/plugins/pagination/pagination.js +37 -175
- package/plugins/pagination/pagination.mjs +37 -175
- package/plugins/pagination/strategies/autoPageSize.js +2 -2
- package/plugins/pagination/strategies/autoPageSize.mjs +2 -2
- package/plugins/pagination/ui.js +6 -10
- package/plugins/pagination/ui.mjs +7 -11
- package/plugins/stretchColumns/calculator.js +3 -1
- package/plugins/stretchColumns/calculator.mjs +3 -1
- package/plugins/undoRedo/undoRedo.js +16 -6
- package/plugins/undoRedo/undoRedo.mjs +16 -5
- package/renderers/checkboxRenderer/checkboxRenderer.js +12 -15
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +12 -15
- package/selection/selection.js +1 -1
- package/selection/selection.mjs +1 -1
- package/settings.d.ts +3 -0
- package/shortcutContexts/commands/index.js +2 -1
- package/shortcutContexts/commands/index.mjs +2 -1
- package/shortcutContexts/commands/tabNavigation.js +51 -0
- package/shortcutContexts/commands/tabNavigation.mjs +48 -0
- package/shortcutContexts/constants.js +16 -1
- package/shortcutContexts/constants.mjs +16 -1
- package/shortcutContexts/editor.js +2 -2
- package/shortcutContexts/editor.mjs +3 -3
- package/shortcutContexts/grid.js +19 -3
- package/shortcutContexts/grid.mjs +20 -4
- package/shortcuts/manager.d.ts +1 -0
- package/shortcuts/manager.js +17 -2
- package/shortcuts/manager.mjs +17 -2
- package/styles/handsontable.css +192 -35
- package/styles/handsontable.min.css +3 -3
- package/styles/ht-icons-horizon.css +233 -0
- package/styles/ht-icons-horizon.min.css +30 -0
- package/styles/ht-icons-main.css +233 -0
- package/styles/ht-icons-main.min.css +30 -0
- package/styles/ht-theme-classic-no-icons.css +399 -0
- package/styles/ht-theme-classic-no-icons.min.css +30 -0
- package/styles/ht-theme-classic.css +308 -556
- package/styles/ht-theme-classic.min.css +3 -3
- package/styles/ht-theme-horizon-no-icons.css +405 -0
- package/styles/ht-theme-horizon-no-icons.min.css +30 -0
- package/styles/ht-theme-horizon.css +312 -556
- package/styles/ht-theme-horizon.min.css +3 -3
- package/styles/ht-theme-main-no-icons.css +396 -0
- package/styles/ht-theme-main-no-icons.min.css +30 -0
- package/styles/ht-theme-main.css +303 -556
- package/styles/ht-theme-main.min.css +3 -3
- package/tableView.js +23 -5
- package/tableView.mjs +23 -5
- package/utils/dataStructures/uniqueMap.js +10 -0
- package/utils/dataStructures/uniqueMap.mjs +10 -0
- package/utils/ghostTable.js +0 -3
- package/utils/ghostTable.mjs +0 -3
- package/utils/stylesHandler.js +19 -4
- package/utils/stylesHandler.mjs +19 -4
- package/core/focusCatcher/index.js +0 -131
- package/core/focusCatcher/index.mjs +0 -127
- package/core/focusCatcher/utils.js +0 -31
- package/core/focusCatcher/utils.mjs +0 -27
- package/plugins/pagination/focusController.js +0 -27
- package/plugins/pagination/focusController.mjs +0 -23
|
@@ -100,6 +100,16 @@ export class Filters extends BasePlugin {
|
|
|
100
100
|
static get PLUGIN_PRIORITY() {
|
|
101
101
|
return PLUGIN_PRIORITY;
|
|
102
102
|
}
|
|
103
|
+
static get DEFAULT_SETTINGS() {
|
|
104
|
+
return {
|
|
105
|
+
searchMode: 'show'
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
static get SETTINGS_VALIDATORS() {
|
|
109
|
+
return {
|
|
110
|
+
searchMode: value => typeof value === 'string' && ['show', 'apply'].includes(value)
|
|
111
|
+
};
|
|
112
|
+
}
|
|
103
113
|
static get PLUGIN_DEPS() {
|
|
104
114
|
return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
|
|
105
115
|
}
|
|
@@ -236,9 +246,11 @@ export class Filters extends BasePlugin {
|
|
|
236
246
|
this.components.set('filter_by_condition2', addConfirmationHooks(conditionComponent));
|
|
237
247
|
}
|
|
238
248
|
if (!this.components.get('filter_by_value')) {
|
|
249
|
+
const searchMode = this.getSetting('searchMode');
|
|
239
250
|
this.components.set('filter_by_value', addConfirmationHooks(new ValueComponent(this.hot, {
|
|
240
251
|
id: 'filter_by_value',
|
|
241
|
-
name: filterValueLabel
|
|
252
|
+
name: filterValueLabel,
|
|
253
|
+
searchMode
|
|
242
254
|
})));
|
|
243
255
|
}
|
|
244
256
|
if (!this.components.get('filter_action_bar')) {
|
|
@@ -310,6 +322,15 @@ export class Filters extends BasePlugin {
|
|
|
310
322
|
super.enablePlugin();
|
|
311
323
|
}
|
|
312
324
|
|
|
325
|
+
/**
|
|
326
|
+
* Update plugin state after Handsontable settings update.
|
|
327
|
+
*/
|
|
328
|
+
updatePlugin() {
|
|
329
|
+
this.disablePlugin();
|
|
330
|
+
this.enablePlugin();
|
|
331
|
+
super.updatePlugin();
|
|
332
|
+
}
|
|
333
|
+
|
|
313
334
|
/**
|
|
314
335
|
* Disables the plugin functionality for this Handsontable instance.
|
|
315
336
|
*/
|
|
@@ -212,6 +212,7 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
|
212
212
|
* Build DOM structure.
|
|
213
213
|
*/
|
|
214
214
|
build() {
|
|
215
|
+
var _classPrivateFieldGet3;
|
|
215
216
|
super.build();
|
|
216
217
|
const {
|
|
217
218
|
rootDocument
|
|
@@ -224,79 +225,74 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
|
224
225
|
this._element.appendChild(_classPrivateFieldGet(_searchInput, this).element);
|
|
225
226
|
this._element.appendChild(selectionControl.element);
|
|
226
227
|
this._element.appendChild(itemsBoxWrapper);
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
if (!this._element) {
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
(_classPrivateFieldGet3 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.destroy();
|
|
233
|
-
(0, _element.addClass)(wrapper, 'htUIMultipleSelectHot');
|
|
228
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.destroy();
|
|
229
|
+
(0, _element.addClass)(itemsBoxWrapper, 'htUIMultipleSelectHot');
|
|
234
230
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
231
|
+
// Constructs and initializes a new Handsontable instance
|
|
232
|
+
_classPrivateFieldSet(_itemsBox, this, new this.hot.constructor(itemsBoxWrapper, {
|
|
233
|
+
data: [[]],
|
|
234
|
+
columns: [{
|
|
235
|
+
data: 'checked',
|
|
236
|
+
type: 'checkbox',
|
|
237
|
+
label: {
|
|
238
|
+
property: 'visualValue',
|
|
239
|
+
position: 'after'
|
|
240
|
+
}
|
|
241
|
+
}],
|
|
242
|
+
beforeRenderer: (TD, row, col, prop, value, cellProperties) => {
|
|
243
|
+
TD.title = cellProperties.instance.getDataAtRowProp(row, cellProperties.label.property);
|
|
244
|
+
},
|
|
245
|
+
afterListen: () => {
|
|
246
|
+
this.runLocalHooks('focus', this);
|
|
247
|
+
},
|
|
248
|
+
beforeOnCellMouseUp: () => {
|
|
249
|
+
_classPrivateFieldGet(_itemsBox, this).listen();
|
|
250
|
+
},
|
|
251
|
+
modifyColWidth: width => {
|
|
252
|
+
const minWidth = _classPrivateFieldGet(_itemsBox, this).container.scrollWidth - (0, _element.getScrollbarWidth)(rootDocument);
|
|
253
|
+
if (width !== undefined && width < minWidth) {
|
|
254
|
+
return minWidth;
|
|
255
|
+
}
|
|
256
|
+
return width;
|
|
257
|
+
},
|
|
258
|
+
autoColumnSize: true,
|
|
259
|
+
autoRowSize: false,
|
|
260
|
+
hiddenRows: true,
|
|
261
|
+
maxCols: 1,
|
|
262
|
+
autoWrapCol: true,
|
|
263
|
+
height: 110,
|
|
264
|
+
copyPaste: false,
|
|
265
|
+
disableVisualSelection: 'area',
|
|
266
|
+
fillHandle: false,
|
|
267
|
+
fragmentSelection: 'cell',
|
|
268
|
+
tabMoves: {
|
|
269
|
+
row: 1,
|
|
270
|
+
col: 0
|
|
271
|
+
},
|
|
272
|
+
themeName: this.hot.getCurrentThemeName(),
|
|
273
|
+
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr'
|
|
274
|
+
}));
|
|
275
|
+
_classPrivateFieldGet(_itemsBox, this).init();
|
|
276
|
+
const shortcutManager = _classPrivateFieldGet(_itemsBox, this).getShortcutManager();
|
|
277
|
+
const gridContext = shortcutManager.getContext('grid');
|
|
278
|
+
gridContext.removeShortcutsByKeys(['Tab']);
|
|
279
|
+
gridContext.removeShortcutsByKeys(['Shift', 'Tab']);
|
|
280
|
+
gridContext.addShortcut({
|
|
281
|
+
keys: [['Escape']],
|
|
282
|
+
callback: event => {
|
|
283
|
+
this.runLocalHooks('keydown', event, this);
|
|
284
|
+
},
|
|
285
|
+
group: SHORTCUTS_GROUP
|
|
286
|
+
});
|
|
287
|
+
gridContext.addShortcut({
|
|
288
|
+
keys: [['Tab'], ['Shift', 'Tab']],
|
|
289
|
+
callback: event => {
|
|
290
|
+
_classPrivateFieldGet(_itemsBox, this).deselectCell();
|
|
291
|
+
this.runLocalHooks('keydown', event, this);
|
|
292
|
+
this.runLocalHooks('listTabKeydown', event, this);
|
|
293
|
+
},
|
|
294
|
+
group: SHORTCUTS_GROUP
|
|
295
|
+
});
|
|
300
296
|
}
|
|
301
297
|
|
|
302
298
|
/**
|
|
@@ -321,10 +317,12 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
|
321
317
|
* Update DOM structure.
|
|
322
318
|
*/
|
|
323
319
|
update() {
|
|
324
|
-
if (!this.isBuilt()) {
|
|
320
|
+
if (!this.isBuilt() || _classPrivateFieldGet(_itemsBox, this).rootElement.offsetHeight === 0) {
|
|
325
321
|
return;
|
|
326
322
|
}
|
|
327
|
-
_classPrivateFieldGet(_itemsBox, this).
|
|
323
|
+
_classPrivateFieldGet(_itemsBox, this).updateSettings({
|
|
324
|
+
data: valueToItems(_classPrivateFieldGet(_items, this), this.options.value)
|
|
325
|
+
});
|
|
328
326
|
super.update();
|
|
329
327
|
}
|
|
330
328
|
|
|
@@ -348,13 +346,26 @@ class MultipleSelectUI extends _base.BaseUI {
|
|
|
348
346
|
exports.MultipleSelectUI = MultipleSelectUI;
|
|
349
347
|
function _onInput(event) {
|
|
350
348
|
const value = event.target.value.toLocaleLowerCase(this.getLocale());
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
349
|
+
if (this.options.searchMode === 'apply') {
|
|
350
|
+
const hiddenRows = _classPrivateFieldGet(_itemsBox, this).getPlugin('hiddenRows');
|
|
351
|
+
hiddenRows.showRows(hiddenRows.getHiddenRows());
|
|
352
|
+
_classPrivateFieldGet(_items, this).forEach((item, index) => {
|
|
353
|
+
item.checked = `${item.value}`.toLocaleLowerCase(this.getLocale()).indexOf(value) >= 0;
|
|
354
|
+
if (!item.checked) {
|
|
355
|
+
hiddenRows.hideRow(index);
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
_classPrivateFieldGet(_itemsBox, this).view.adjustElementsSize();
|
|
359
|
+
_classPrivateFieldGet(_itemsBox, this).render();
|
|
354
360
|
} else {
|
|
355
|
-
filteredItems
|
|
361
|
+
let filteredItems;
|
|
362
|
+
if (value === '') {
|
|
363
|
+
filteredItems = [..._classPrivateFieldGet(_items, this)];
|
|
364
|
+
} else {
|
|
365
|
+
filteredItems = _classPrivateFieldGet(_items, this).filter(item => `${item.value}`.toLocaleLowerCase(this.getLocale()).indexOf(value) >= 0);
|
|
366
|
+
}
|
|
367
|
+
_classPrivateFieldGet(_itemsBox, this).loadData(filteredItems);
|
|
356
368
|
}
|
|
357
|
-
_classPrivateFieldGet(_itemsBox, this).loadData(filteredItems);
|
|
358
369
|
}
|
|
359
370
|
/**
|
|
360
371
|
* 'keydown' event listener for input element.
|
|
@@ -208,6 +208,7 @@ export class MultipleSelectUI extends BaseUI {
|
|
|
208
208
|
* Build DOM structure.
|
|
209
209
|
*/
|
|
210
210
|
build() {
|
|
211
|
+
var _classPrivateFieldGet3;
|
|
211
212
|
super.build();
|
|
212
213
|
const {
|
|
213
214
|
rootDocument
|
|
@@ -220,79 +221,74 @@ export class MultipleSelectUI extends BaseUI {
|
|
|
220
221
|
this._element.appendChild(_classPrivateFieldGet(_searchInput, this).element);
|
|
221
222
|
this._element.appendChild(selectionControl.element);
|
|
222
223
|
this._element.appendChild(itemsBoxWrapper);
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (!this._element) {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
(_classPrivateFieldGet3 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.destroy();
|
|
229
|
-
addClass(wrapper, 'htUIMultipleSelectHot');
|
|
224
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(_itemsBox, this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.destroy();
|
|
225
|
+
addClass(itemsBoxWrapper, 'htUIMultipleSelectHot');
|
|
230
226
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
227
|
+
// Constructs and initializes a new Handsontable instance
|
|
228
|
+
_classPrivateFieldSet(_itemsBox, this, new this.hot.constructor(itemsBoxWrapper, {
|
|
229
|
+
data: [[]],
|
|
230
|
+
columns: [{
|
|
231
|
+
data: 'checked',
|
|
232
|
+
type: 'checkbox',
|
|
233
|
+
label: {
|
|
234
|
+
property: 'visualValue',
|
|
235
|
+
position: 'after'
|
|
236
|
+
}
|
|
237
|
+
}],
|
|
238
|
+
beforeRenderer: (TD, row, col, prop, value, cellProperties) => {
|
|
239
|
+
TD.title = cellProperties.instance.getDataAtRowProp(row, cellProperties.label.property);
|
|
240
|
+
},
|
|
241
|
+
afterListen: () => {
|
|
242
|
+
this.runLocalHooks('focus', this);
|
|
243
|
+
},
|
|
244
|
+
beforeOnCellMouseUp: () => {
|
|
245
|
+
_classPrivateFieldGet(_itemsBox, this).listen();
|
|
246
|
+
},
|
|
247
|
+
modifyColWidth: width => {
|
|
248
|
+
const minWidth = _classPrivateFieldGet(_itemsBox, this).container.scrollWidth - getScrollbarWidth(rootDocument);
|
|
249
|
+
if (width !== undefined && width < minWidth) {
|
|
250
|
+
return minWidth;
|
|
251
|
+
}
|
|
252
|
+
return width;
|
|
253
|
+
},
|
|
254
|
+
autoColumnSize: true,
|
|
255
|
+
autoRowSize: false,
|
|
256
|
+
hiddenRows: true,
|
|
257
|
+
maxCols: 1,
|
|
258
|
+
autoWrapCol: true,
|
|
259
|
+
height: 110,
|
|
260
|
+
copyPaste: false,
|
|
261
|
+
disableVisualSelection: 'area',
|
|
262
|
+
fillHandle: false,
|
|
263
|
+
fragmentSelection: 'cell',
|
|
264
|
+
tabMoves: {
|
|
265
|
+
row: 1,
|
|
266
|
+
col: 0
|
|
267
|
+
},
|
|
268
|
+
themeName: this.hot.getCurrentThemeName(),
|
|
269
|
+
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr'
|
|
270
|
+
}));
|
|
271
|
+
_classPrivateFieldGet(_itemsBox, this).init();
|
|
272
|
+
const shortcutManager = _classPrivateFieldGet(_itemsBox, this).getShortcutManager();
|
|
273
|
+
const gridContext = shortcutManager.getContext('grid');
|
|
274
|
+
gridContext.removeShortcutsByKeys(['Tab']);
|
|
275
|
+
gridContext.removeShortcutsByKeys(['Shift', 'Tab']);
|
|
276
|
+
gridContext.addShortcut({
|
|
277
|
+
keys: [['Escape']],
|
|
278
|
+
callback: event => {
|
|
279
|
+
this.runLocalHooks('keydown', event, this);
|
|
280
|
+
},
|
|
281
|
+
group: SHORTCUTS_GROUP
|
|
282
|
+
});
|
|
283
|
+
gridContext.addShortcut({
|
|
284
|
+
keys: [['Tab'], ['Shift', 'Tab']],
|
|
285
|
+
callback: event => {
|
|
286
|
+
_classPrivateFieldGet(_itemsBox, this).deselectCell();
|
|
287
|
+
this.runLocalHooks('keydown', event, this);
|
|
288
|
+
this.runLocalHooks('listTabKeydown', event, this);
|
|
289
|
+
},
|
|
290
|
+
group: SHORTCUTS_GROUP
|
|
291
|
+
});
|
|
296
292
|
}
|
|
297
293
|
|
|
298
294
|
/**
|
|
@@ -317,10 +313,12 @@ export class MultipleSelectUI extends BaseUI {
|
|
|
317
313
|
* Update DOM structure.
|
|
318
314
|
*/
|
|
319
315
|
update() {
|
|
320
|
-
if (!this.isBuilt()) {
|
|
316
|
+
if (!this.isBuilt() || _classPrivateFieldGet(_itemsBox, this).rootElement.offsetHeight === 0) {
|
|
321
317
|
return;
|
|
322
318
|
}
|
|
323
|
-
_classPrivateFieldGet(_itemsBox, this).
|
|
319
|
+
_classPrivateFieldGet(_itemsBox, this).updateSettings({
|
|
320
|
+
data: valueToItems(_classPrivateFieldGet(_items, this), this.options.value)
|
|
321
|
+
});
|
|
324
322
|
super.update();
|
|
325
323
|
}
|
|
326
324
|
|
|
@@ -343,13 +341,26 @@ export class MultipleSelectUI extends BaseUI {
|
|
|
343
341
|
}
|
|
344
342
|
function _onInput(event) {
|
|
345
343
|
const value = event.target.value.toLocaleLowerCase(this.getLocale());
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
344
|
+
if (this.options.searchMode === 'apply') {
|
|
345
|
+
const hiddenRows = _classPrivateFieldGet(_itemsBox, this).getPlugin('hiddenRows');
|
|
346
|
+
hiddenRows.showRows(hiddenRows.getHiddenRows());
|
|
347
|
+
_classPrivateFieldGet(_items, this).forEach((item, index) => {
|
|
348
|
+
item.checked = `${item.value}`.toLocaleLowerCase(this.getLocale()).indexOf(value) >= 0;
|
|
349
|
+
if (!item.checked) {
|
|
350
|
+
hiddenRows.hideRow(index);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
_classPrivateFieldGet(_itemsBox, this).view.adjustElementsSize();
|
|
354
|
+
_classPrivateFieldGet(_itemsBox, this).render();
|
|
349
355
|
} else {
|
|
350
|
-
filteredItems
|
|
356
|
+
let filteredItems;
|
|
357
|
+
if (value === '') {
|
|
358
|
+
filteredItems = [..._classPrivateFieldGet(_items, this)];
|
|
359
|
+
} else {
|
|
360
|
+
filteredItems = _classPrivateFieldGet(_items, this).filter(item => `${item.value}`.toLocaleLowerCase(this.getLocale()).indexOf(value) >= 0);
|
|
361
|
+
}
|
|
362
|
+
_classPrivateFieldGet(_itemsBox, this).loadData(filteredItems);
|
|
351
363
|
}
|
|
352
|
-
_classPrivateFieldGet(_itemsBox, this).loadData(filteredItems);
|
|
353
364
|
}
|
|
354
365
|
/**
|
|
355
366
|
* 'keydown' event listener for input element.
|
package/plugins/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ import { StretchColumns } from './stretchColumns';
|
|
|
34
34
|
import { TouchScroll } from './touchScroll';
|
|
35
35
|
import { TrimRows } from './trimRows';
|
|
36
36
|
import { Dialog } from './dialog';
|
|
37
|
+
import { EmptyDataState } from './emptyDataState';
|
|
37
38
|
import { Loading } from './loading';
|
|
38
39
|
import { UndoRedo } from './undoRedo';
|
|
39
40
|
|
|
@@ -74,6 +75,7 @@ export interface Plugins {
|
|
|
74
75
|
touchScroll: TouchScroll;
|
|
75
76
|
trimRows: TrimRows;
|
|
76
77
|
dialog: Dialog;
|
|
78
|
+
emptyDataState: EmptyDataState;
|
|
77
79
|
loading: Loading;
|
|
78
80
|
undoRedo: UndoRedo;
|
|
79
81
|
}
|
|
@@ -118,6 +120,7 @@ export {
|
|
|
118
120
|
TouchScroll,
|
|
119
121
|
TrimRows,
|
|
120
122
|
Dialog,
|
|
123
|
+
EmptyDataState,
|
|
121
124
|
Loading,
|
|
122
125
|
UndoRedo
|
|
123
126
|
};
|
package/plugins/index.js
CHANGED
|
@@ -78,6 +78,8 @@ var _dialog = require("./dialog");
|
|
|
78
78
|
exports.Dialog = _dialog.Dialog;
|
|
79
79
|
var _loading = require("./loading");
|
|
80
80
|
exports.Loading = _loading.Loading;
|
|
81
|
+
var _emptyDataState = require("./emptyDataState");
|
|
82
|
+
exports.EmptyDataState = _emptyDataState.EmptyDataState;
|
|
81
83
|
var _registry = require("./registry");
|
|
82
84
|
exports.registerPlugin = _registry.registerPlugin;
|
|
83
85
|
exports.getPlugin = _registry.getPlugin;
|
|
@@ -123,4 +125,5 @@ function registerAllPlugins() {
|
|
|
123
125
|
(0, _registry.registerPlugin)(_undoRedo.UndoRedo);
|
|
124
126
|
(0, _registry.registerPlugin)(_dialog.Dialog);
|
|
125
127
|
(0, _registry.registerPlugin)(_loading.Loading);
|
|
128
|
+
(0, _registry.registerPlugin)(_emptyDataState.EmptyDataState);
|
|
126
129
|
}
|
package/plugins/index.mjs
CHANGED
|
@@ -36,6 +36,7 @@ import { TrimRows } from "./trimRows/index.mjs";
|
|
|
36
36
|
import { UndoRedo } from "./undoRedo/index.mjs";
|
|
37
37
|
import { Dialog } from "./dialog/index.mjs";
|
|
38
38
|
import { Loading } from "./loading/index.mjs";
|
|
39
|
+
import { EmptyDataState } from "./emptyDataState/index.mjs";
|
|
39
40
|
import { registerPlugin } from "./registry.mjs";
|
|
40
41
|
/**
|
|
41
42
|
* Registers all available plugins.
|
|
@@ -78,6 +79,7 @@ export function registerAllPlugins() {
|
|
|
78
79
|
registerPlugin(UndoRedo);
|
|
79
80
|
registerPlugin(Dialog);
|
|
80
81
|
registerPlugin(Loading);
|
|
82
|
+
registerPlugin(EmptyDataState);
|
|
81
83
|
}
|
|
82
|
-
export { AutoColumnSize, Autofill, AutoRowSize, BasePlugin, BindRowsWithHeaders, CollapsibleColumns, ColumnSorting, ColumnSummary, Comments, ContextMenu, CopyPaste, CustomBorders, DragToScroll, DropdownMenu, ExportFile, Filters, Formulas, HiddenColumns, HiddenRows, ManualColumnFreeze, ManualColumnMove, ManualColumnResize, ManualRowMove, ManualRowResize, MergeCells, MultiColumnSorting, MultipleSelectionHandles, NestedHeaders, NestedRows, Pagination, PersistentState, Search, StretchColumns, TouchScroll, TrimRows, UndoRedo, Dialog, Loading };
|
|
84
|
+
export { AutoColumnSize, Autofill, AutoRowSize, BasePlugin, BindRowsWithHeaders, CollapsibleColumns, ColumnSorting, ColumnSummary, Comments, ContextMenu, CopyPaste, CustomBorders, DragToScroll, DropdownMenu, ExportFile, Filters, Formulas, HiddenColumns, HiddenRows, ManualColumnFreeze, ManualColumnMove, ManualColumnResize, ManualRowMove, ManualRowResize, MergeCells, MultiColumnSorting, MultipleSelectionHandles, NestedHeaders, NestedRows, Pagination, PersistentState, Search, StretchColumns, TouchScroll, TrimRows, UndoRedo, Dialog, Loading, EmptyDataState };
|
|
83
85
|
export { getPlugin, getPluginsNames, registerPlugin } from "./registry.mjs";
|
|
@@ -15,15 +15,11 @@ function sumCellsHeights(hotInstance, row, rowspan) {
|
|
|
15
15
|
rowIndexMapper,
|
|
16
16
|
stylesHandler
|
|
17
17
|
} = hotInstance;
|
|
18
|
-
const defaultHeight = stylesHandler.getDefaultRowHeight();
|
|
19
18
|
let height = 0;
|
|
20
19
|
for (let i = row; i < row + rowspan; i++) {
|
|
21
20
|
if (!rowIndexMapper.isHidden(i)) {
|
|
22
21
|
var _hotInstance$getRowHe;
|
|
23
|
-
height += (_hotInstance$getRowHe = hotInstance.getRowHeight(i)) !== null && _hotInstance$getRowHe !== void 0 ? _hotInstance$getRowHe :
|
|
24
|
-
if (i === 0 && !stylesHandler.isClassicTheme()) {
|
|
25
|
-
height += 1; // border-top-width
|
|
26
|
-
}
|
|
22
|
+
height += (_hotInstance$getRowHe = hotInstance.getRowHeight(i)) !== null && _hotInstance$getRowHe !== void 0 ? _hotInstance$getRowHe : stylesHandler.getDefaultRowHeight(i);
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
25
|
return height;
|
|
@@ -11,15 +11,11 @@ export function sumCellsHeights(hotInstance, row, rowspan) {
|
|
|
11
11
|
rowIndexMapper,
|
|
12
12
|
stylesHandler
|
|
13
13
|
} = hotInstance;
|
|
14
|
-
const defaultHeight = stylesHandler.getDefaultRowHeight();
|
|
15
14
|
let height = 0;
|
|
16
15
|
for (let i = row; i < row + rowspan; i++) {
|
|
17
16
|
if (!rowIndexMapper.isHidden(i)) {
|
|
18
17
|
var _hotInstance$getRowHe;
|
|
19
|
-
height += (_hotInstance$getRowHe = hotInstance.getRowHeight(i)) !== null && _hotInstance$getRowHe !== void 0 ? _hotInstance$getRowHe :
|
|
20
|
-
if (i === 0 && !stylesHandler.isClassicTheme()) {
|
|
21
|
-
height += 1; // border-top-width
|
|
22
|
-
}
|
|
18
|
+
height += (_hotInstance$getRowHe = hotInstance.getRowHeight(i)) !== null && _hotInstance$getRowHe !== void 0 ? _hotInstance$getRowHe : stylesHandler.getDefaultRowHeight(i);
|
|
23
19
|
}
|
|
24
20
|
}
|
|
25
21
|
return height;
|