handsontable 0.0.0-next-ff8465d-20231006 → 0.0.0-next-b0a4ea2-20231024
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/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/core.d.ts +1 -1
- package/core.js +10 -5
- package/core.mjs +10 -5
- package/dataMap/metaManager/metaSchema.js +1 -1
- package/dataMap/metaManager/metaSchema.mjs +1 -1
- package/dist/handsontable.css +13 -12
- package/dist/handsontable.full.css +13 -12
- package/dist/handsontable.full.js +2260 -1403
- package/dist/handsontable.full.min.css +5 -5
- package/dist/handsontable.full.min.js +10 -10
- package/dist/handsontable.js +2260 -1403
- package/dist/handsontable.min.css +5 -5
- package/dist/handsontable.min.js +24 -24
- package/dist/languages/all.js +6 -2
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +3 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +3 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/editors/autocompleteEditor/autocompleteEditor.js +1 -1
- package/editors/autocompleteEditor/autocompleteEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +26 -7
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/handsontableEditor/handsontableEditor.js +7 -0
- package/editors/handsontableEditor/handsontableEditor.mjs +8 -1
- package/helpers/a11y.js +3 -1
- package/helpers/a11y.mjs +2 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/i18n/constants.js +7 -1
- package/i18n/constants.mjs +4 -1
- package/i18n/languages/en-US.js +3 -1
- package/i18n/languages/en-US.mjs +3 -1
- package/i18n/languages/pl-PL.js +3 -1
- package/i18n/languages/pl-PL.mjs +3 -1
- package/languages/all.js +6 -2
- package/languages/en-US.js +3 -1
- package/languages/en-US.mjs +3 -1
- package/languages/index.js +6 -2
- package/languages/pl-PL.js +3 -1
- package/languages/pl-PL.mjs +3 -1
- package/package.json +11 -1
- package/pluginHooks.js +1 -1
- package/pluginHooks.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
- package/plugins/contextMenu/menu/menu.js +87 -151
- package/plugins/contextMenu/menu/menu.mjs +90 -154
- package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
- package/plugins/contextMenu/menu/navigator.js +19 -144
- package/plugins/contextMenu/menu/navigator.mjs +18 -143
- package/plugins/contextMenu/menu/shortcuts.js +114 -0
- package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
- package/plugins/dropdownMenu/dropdownMenu.js +32 -4
- package/plugins/dropdownMenu/dropdownMenu.mjs +33 -5
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +29 -27
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +46 -59
- package/plugins/filters/component/condition.mjs +40 -52
- package/plugins/filters/component/operators.js +21 -22
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +35 -26
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/filters.js +75 -48
- package/plugins/filters/filters.mjs +68 -41
- package/plugins/filters/menu/focusController.js +123 -0
- package/plugins/filters/menu/focusController.mjs +119 -0
- package/plugins/filters/menu/focusNavigator.js +30 -0
- package/plugins/filters/menu/focusNavigator.mjs +26 -0
- package/plugins/filters/ui/_base.js +35 -13
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -32
- package/plugins/filters/ui/input.mjs +42 -30
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +234 -129
- package/plugins/filters/ui/multipleSelect.mjs +232 -127
- package/plugins/filters/ui/radioInput.js +42 -18
- package/plugins/filters/ui/radioInput.mjs +42 -17
- package/plugins/filters/ui/select.js +144 -75
- package/plugins/filters/ui/select.mjs +140 -70
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +3 -3
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +29 -0
- package/renderers/dateRenderer/dateRenderer.mjs +24 -0
- package/renderers/dateRenderer/index.d.ts +1 -0
- package/renderers/dateRenderer/index.js +6 -0
- package/renderers/dateRenderer/index.mjs +1 -0
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
- package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
- package/renderers/handsontableRenderer/index.d.ts +1 -0
- package/renderers/handsontableRenderer/index.js +6 -0
- package/renderers/handsontableRenderer/index.mjs +1 -0
- package/renderers/index.d.ts +6 -0
- package/renderers/selectRenderer/selectRenderer.js +2 -1
- package/renderers/selectRenderer/selectRenderer.mjs +2 -1
- package/selection/selection.js +2 -2
- package/selection/selection.mjs +2 -2
- package/shortcuts/context.js +3 -2
- package/shortcuts/context.mjs +3 -2
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
@@ -1,4 +1,14 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
|
+
import "core-js/modules/es.error.cause.js";
|
3
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
4
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
5
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
6
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
7
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
8
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
9
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
10
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
11
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
2
12
|
import { addClass, getScrollbarWidth } from "../../../helpers/dom/element.mjs";
|
3
13
|
import { clone, extend } from "../../../helpers/object.mjs";
|
4
14
|
import { arrayFilter, arrayMap, arrayEach } from "../../../helpers/array.mjs";
|
@@ -7,77 +17,147 @@ import { partial } from "../../../helpers/function.mjs";
|
|
7
17
|
import { dataRowToChangesArray } from "../../../helpers/data.mjs";
|
8
18
|
import * as C from "../../../i18n/constants.mjs";
|
9
19
|
import { stopImmediatePropagation } from "../../../helpers/dom/event.mjs";
|
10
|
-
import BaseUI from "./_base.mjs";
|
11
|
-
import InputUI from "./input.mjs";
|
12
|
-
import LinkUI from "./link.mjs";
|
20
|
+
import { BaseUI } from "./_base.mjs";
|
21
|
+
import { InputUI } from "./input.mjs";
|
22
|
+
import { LinkUI } from "./link.mjs";
|
13
23
|
import { createArrayAssertion } from "../utils.mjs";
|
14
|
-
const privatePool = new WeakMap();
|
15
24
|
const SHORTCUTS_GROUP = 'multipleSelect.itemBox';
|
16
25
|
|
17
26
|
/**
|
18
27
|
* @private
|
19
28
|
* @class MultipleSelectUI
|
20
29
|
*/
|
21
|
-
|
30
|
+
var _items = /*#__PURE__*/new WeakMap();
|
31
|
+
var _itemsBox = /*#__PURE__*/new WeakMap();
|
32
|
+
var _locale = /*#__PURE__*/new WeakMap();
|
33
|
+
var _searchInput = /*#__PURE__*/new WeakMap();
|
34
|
+
var _selectAllUI = /*#__PURE__*/new WeakMap();
|
35
|
+
var _clearAllUI = /*#__PURE__*/new WeakMap();
|
36
|
+
var _onInput = /*#__PURE__*/new WeakSet();
|
37
|
+
var _onInputKeyDown = /*#__PURE__*/new WeakSet();
|
38
|
+
var _onSelectAllClick = /*#__PURE__*/new WeakSet();
|
39
|
+
var _onClearAllClick = /*#__PURE__*/new WeakSet();
|
40
|
+
export class MultipleSelectUI extends BaseUI {
|
22
41
|
static get DEFAULTS() {
|
23
42
|
return clone({
|
24
43
|
className: 'htUIMultipleSelect',
|
25
44
|
value: []
|
26
45
|
});
|
27
46
|
}
|
47
|
+
|
48
|
+
/**
|
49
|
+
* List of available select options.
|
50
|
+
*
|
51
|
+
* @type {Array}
|
52
|
+
*/
|
53
|
+
|
28
54
|
constructor(hotInstance, options) {
|
29
55
|
super(hotInstance, extend(MultipleSelectUI.DEFAULTS, options));
|
30
|
-
privatePool.set(this, {});
|
31
56
|
/**
|
32
|
-
*
|
57
|
+
* On click listener for "Clear" link.
|
33
58
|
*
|
34
|
-
* @
|
59
|
+
* @param {DOMEvent} event The mouse event object.
|
35
60
|
*/
|
36
|
-
|
37
|
-
|
38
|
-
|
61
|
+
_classPrivateMethodInitSpec(this, _onClearAllClick);
|
62
|
+
/**
|
63
|
+
* On click listener for "Select all" link.
|
64
|
+
*
|
65
|
+
* @param {DOMEvent} event The mouse event object.
|
66
|
+
*/
|
67
|
+
_classPrivateMethodInitSpec(this, _onSelectAllClick);
|
68
|
+
/**
|
69
|
+
* 'keydown' event listener for input element.
|
70
|
+
*
|
71
|
+
* @param {Event} event DOM event.
|
72
|
+
*/
|
73
|
+
_classPrivateMethodInitSpec(this, _onInputKeyDown);
|
74
|
+
/**
|
75
|
+
* 'input' event listener for input element.
|
76
|
+
*
|
77
|
+
* @param {Event} event DOM event.
|
78
|
+
*/
|
79
|
+
_classPrivateMethodInitSpec(this, _onInput);
|
80
|
+
_classPrivateFieldInitSpec(this, _items, {
|
81
|
+
writable: true,
|
82
|
+
value: []
|
39
83
|
});
|
40
84
|
/**
|
41
|
-
*
|
85
|
+
* Handsontable instance used as items list element.
|
42
86
|
*
|
43
|
-
* @type {
|
87
|
+
* @type {Handsontable}
|
44
88
|
*/
|
45
|
-
|
46
|
-
|
47
|
-
|
89
|
+
_classPrivateFieldInitSpec(this, _itemsBox, {
|
90
|
+
writable: true,
|
91
|
+
value: void 0
|
48
92
|
});
|
49
93
|
/**
|
50
|
-
*
|
94
|
+
* A locale for the component used to compare filtered values.
|
51
95
|
*
|
52
|
-
* @type {
|
96
|
+
* @type {string}
|
53
97
|
*/
|
54
|
-
|
55
|
-
|
56
|
-
|
98
|
+
_classPrivateFieldInitSpec(this, _locale, {
|
99
|
+
writable: true,
|
100
|
+
value: void 0
|
57
101
|
});
|
58
102
|
/**
|
59
|
-
*
|
103
|
+
* Input element.
|
60
104
|
*
|
61
|
-
* @type {
|
105
|
+
* @type {InputUI}
|
62
106
|
*/
|
63
|
-
this
|
107
|
+
_classPrivateFieldInitSpec(this, _searchInput, {
|
108
|
+
writable: true,
|
109
|
+
value: void 0
|
110
|
+
});
|
64
111
|
/**
|
65
|
-
*
|
112
|
+
* "Select all" UI element.
|
66
113
|
*
|
67
|
-
* @type {
|
114
|
+
* @type {LinkUI}
|
115
|
+
*/
|
116
|
+
_classPrivateFieldInitSpec(this, _selectAllUI, {
|
117
|
+
writable: true,
|
118
|
+
value: void 0
|
119
|
+
});
|
120
|
+
/**
|
121
|
+
* "Clear" UI element.
|
122
|
+
*
|
123
|
+
* @type {LinkUI}
|
68
124
|
*/
|
69
|
-
this
|
125
|
+
_classPrivateFieldInitSpec(this, _clearAllUI, {
|
126
|
+
writable: true,
|
127
|
+
value: void 0
|
128
|
+
});
|
129
|
+
_classPrivateFieldSet(this, _searchInput, new InputUI(this.hot, {
|
130
|
+
placeholder: C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH,
|
131
|
+
className: 'htUIMultipleSelectSearch'
|
132
|
+
}));
|
133
|
+
_classPrivateFieldSet(this, _selectAllUI, new LinkUI(this.hot, {
|
134
|
+
textContent: C.FILTERS_BUTTONS_SELECT_ALL,
|
135
|
+
className: 'htUISelectAll'
|
136
|
+
}));
|
137
|
+
_classPrivateFieldSet(this, _clearAllUI, new LinkUI(this.hot, {
|
138
|
+
textContent: C.FILTERS_BUTTONS_CLEAR,
|
139
|
+
className: 'htUIClearAll'
|
140
|
+
}));
|
70
141
|
this.registerHooks();
|
71
142
|
}
|
72
143
|
|
144
|
+
/**
|
145
|
+
* Gets the instance of the internal Handsontable that acts here as a listbox component.
|
146
|
+
*
|
147
|
+
* @returns {Handsontable}
|
148
|
+
*/
|
149
|
+
getItemsBox() {
|
150
|
+
return _classPrivateFieldGet(this, _itemsBox);
|
151
|
+
}
|
152
|
+
|
73
153
|
/**
|
74
154
|
* Register all necessary hooks.
|
75
155
|
*/
|
76
156
|
registerHooks() {
|
77
|
-
this.
|
78
|
-
this.
|
79
|
-
this.
|
80
|
-
this.
|
157
|
+
_classPrivateFieldGet(this, _searchInput).addLocalHook('keydown', event => _classPrivateMethodGet(this, _onInputKeyDown, _onInputKeyDown2).call(this, event));
|
158
|
+
_classPrivateFieldGet(this, _searchInput).addLocalHook('input', event => _classPrivateMethodGet(this, _onInput, _onInput2).call(this, event));
|
159
|
+
_classPrivateFieldGet(this, _selectAllUI).addLocalHook('click', event => _classPrivateMethodGet(this, _onSelectAllClick, _onSelectAllClick2).call(this, event));
|
160
|
+
_classPrivateFieldGet(this, _clearAllUI).addLocalHook('click', event => _classPrivateMethodGet(this, _onClearAllClick, _onClearAllClick2).call(this, event));
|
81
161
|
}
|
82
162
|
|
83
163
|
/**
|
@@ -86,9 +166,9 @@ class MultipleSelectUI extends BaseUI {
|
|
86
166
|
* @param {Array} items Array of objects with `checked` and `label` property.
|
87
167
|
*/
|
88
168
|
setItems(items) {
|
89
|
-
this
|
90
|
-
if (this
|
91
|
-
this.
|
169
|
+
_classPrivateFieldSet(this, _items, items);
|
170
|
+
if (_classPrivateFieldGet(this, _itemsBox)) {
|
171
|
+
_classPrivateFieldGet(this, _itemsBox).loadData(_classPrivateFieldGet(this, _items));
|
92
172
|
}
|
93
173
|
}
|
94
174
|
|
@@ -98,7 +178,7 @@ class MultipleSelectUI extends BaseUI {
|
|
98
178
|
* @param {string} locale Locale used for filter actions performed on data, ie. `en-US`.
|
99
179
|
*/
|
100
180
|
setLocale(locale) {
|
101
|
-
this
|
181
|
+
_classPrivateFieldSet(this, _locale, locale);
|
102
182
|
}
|
103
183
|
|
104
184
|
/**
|
@@ -107,7 +187,7 @@ class MultipleSelectUI extends BaseUI {
|
|
107
187
|
* @returns {string}
|
108
188
|
*/
|
109
189
|
getLocale() {
|
110
|
-
return this
|
190
|
+
return _classPrivateFieldGet(this, _locale);
|
111
191
|
}
|
112
192
|
|
113
193
|
/**
|
@@ -116,7 +196,7 @@ class MultipleSelectUI extends BaseUI {
|
|
116
196
|
* @returns {Array}
|
117
197
|
*/
|
118
198
|
getItems() {
|
119
|
-
return [...this
|
199
|
+
return [..._classPrivateFieldGet(this, _items)];
|
120
200
|
}
|
121
201
|
|
122
202
|
/**
|
@@ -125,7 +205,34 @@ class MultipleSelectUI extends BaseUI {
|
|
125
205
|
* @returns {Array} Array of selected values.
|
126
206
|
*/
|
127
207
|
getValue() {
|
128
|
-
return itemsToValue(this
|
208
|
+
return itemsToValue(_classPrivateFieldGet(this, _items));
|
209
|
+
}
|
210
|
+
|
211
|
+
/**
|
212
|
+
* Gets the instance of the search input element.
|
213
|
+
*
|
214
|
+
* @returns {InputUI}
|
215
|
+
*/
|
216
|
+
getSearchInputElement() {
|
217
|
+
return _classPrivateFieldGet(this, _searchInput);
|
218
|
+
}
|
219
|
+
|
220
|
+
/**
|
221
|
+
* Gets the instance of the "select all" link element.
|
222
|
+
*
|
223
|
+
* @returns {LinkUI}
|
224
|
+
*/
|
225
|
+
getSelectAllElement() {
|
226
|
+
return _classPrivateFieldGet(this, _selectAllUI);
|
227
|
+
}
|
228
|
+
|
229
|
+
/**
|
230
|
+
* Gets the instance of the "clear" link element.
|
231
|
+
*
|
232
|
+
* @returns {LinkUI}
|
233
|
+
*/
|
234
|
+
getClearAllElement() {
|
235
|
+
return _classPrivateFieldGet(this, _clearAllUI);
|
129
236
|
}
|
130
237
|
|
131
238
|
/**
|
@@ -134,7 +241,7 @@ class MultipleSelectUI extends BaseUI {
|
|
134
241
|
* @returns {boolean}
|
135
242
|
*/
|
136
243
|
isSelectedAllValues() {
|
137
|
-
return this.
|
244
|
+
return _classPrivateFieldGet(this, _items).length === this.getValue().length;
|
138
245
|
}
|
139
246
|
|
140
247
|
/**
|
@@ -148,22 +255,22 @@ class MultipleSelectUI extends BaseUI {
|
|
148
255
|
const itemsBoxWrapper = rootDocument.createElement('div');
|
149
256
|
const selectionControl = new BaseUI(this.hot, {
|
150
257
|
className: 'htUISelectionControls',
|
151
|
-
children: [this
|
258
|
+
children: [_classPrivateFieldGet(this, _selectAllUI), _classPrivateFieldGet(this, _clearAllUI)]
|
152
259
|
});
|
153
|
-
this._element.appendChild(this.
|
260
|
+
this._element.appendChild(_classPrivateFieldGet(this, _searchInput).element);
|
154
261
|
this._element.appendChild(selectionControl.element);
|
155
262
|
this._element.appendChild(itemsBoxWrapper);
|
156
263
|
const hotInitializer = wrapper => {
|
157
264
|
if (!this._element) {
|
158
265
|
return;
|
159
266
|
}
|
160
|
-
if (this
|
161
|
-
this.
|
267
|
+
if (_classPrivateFieldGet(this, _itemsBox)) {
|
268
|
+
_classPrivateFieldGet(this, _itemsBox).destroy();
|
162
269
|
}
|
163
270
|
addClass(wrapper, 'htUIMultipleSelectHot');
|
164
271
|
// Constructs and initializes a new Handsontable instance
|
165
|
-
this
|
166
|
-
data: this
|
272
|
+
_classPrivateFieldSet(this, _itemsBox, new this.hot.constructor(wrapper, {
|
273
|
+
data: _classPrivateFieldGet(this, _items),
|
167
274
|
columns: [{
|
168
275
|
data: 'checked',
|
169
276
|
type: 'checkbox',
|
@@ -175,11 +282,17 @@ class MultipleSelectUI extends BaseUI {
|
|
175
282
|
beforeRenderer: (TD, row, col, prop, value, cellProperties) => {
|
176
283
|
TD.title = cellProperties.instance.getDataAtRowProp(row, cellProperties.label.property);
|
177
284
|
},
|
285
|
+
afterListen: () => {
|
286
|
+
this.runLocalHooks('focus', this);
|
287
|
+
},
|
288
|
+
beforeOnCellMouseUp: () => {
|
289
|
+
_classPrivateFieldGet(this, _itemsBox).listen();
|
290
|
+
},
|
178
291
|
maxCols: 1,
|
179
292
|
autoWrapCol: true,
|
180
293
|
height: 110,
|
181
294
|
// Workaround for #151.
|
182
|
-
colWidths: () => this.
|
295
|
+
colWidths: () => _classPrivateFieldGet(this, _itemsBox).container.scrollWidth - getScrollbarWidth(rootDocument),
|
183
296
|
copyPaste: false,
|
184
297
|
disableVisualSelection: 'area',
|
185
298
|
fillHandle: false,
|
@@ -189,30 +302,49 @@ class MultipleSelectUI extends BaseUI {
|
|
189
302
|
col: 0
|
190
303
|
},
|
191
304
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr'
|
192
|
-
});
|
193
|
-
this.
|
194
|
-
const shortcutManager = this.
|
305
|
+
}));
|
306
|
+
_classPrivateFieldGet(this, _itemsBox).init();
|
307
|
+
const shortcutManager = _classPrivateFieldGet(this, _itemsBox).getShortcutManager();
|
195
308
|
const gridContext = shortcutManager.getContext('grid');
|
309
|
+
gridContext.removeShortcutsByKeys(['Tab']);
|
310
|
+
gridContext.removeShortcutsByKeys(['Shift', 'Tab']);
|
196
311
|
gridContext.addShortcut({
|
197
|
-
// TODO: Is this shortcut really needed? We have one test for that case, but focus is performed programmatically.
|
198
312
|
keys: [['Escape']],
|
199
313
|
callback: event => {
|
200
314
|
this.runLocalHooks('keydown', event, this);
|
201
315
|
},
|
202
316
|
group: SHORTCUTS_GROUP
|
203
317
|
});
|
318
|
+
gridContext.addShortcut({
|
319
|
+
keys: [['Tab'], ['Shift', 'Tab']],
|
320
|
+
callback: event => {
|
321
|
+
_classPrivateFieldGet(this, _itemsBox).deselectCell();
|
322
|
+
this.runLocalHooks('keydown', event, this);
|
323
|
+
this.runLocalHooks('listTabKeydown', event, this);
|
324
|
+
},
|
325
|
+
group: SHORTCUTS_GROUP
|
326
|
+
});
|
204
327
|
};
|
205
328
|
hotInitializer(itemsBoxWrapper);
|
206
|
-
|
329
|
+
this.hot._registerTimeout(() => hotInitializer(itemsBoxWrapper), 100);
|
330
|
+
}
|
331
|
+
|
332
|
+
/**
|
333
|
+
* Focus element.
|
334
|
+
*/
|
335
|
+
focus() {
|
336
|
+
if (this.isBuilt()) {
|
337
|
+
_classPrivateFieldGet(this, _itemsBox).listen();
|
338
|
+
}
|
207
339
|
}
|
208
340
|
|
209
341
|
/**
|
210
342
|
* Reset DOM structure.
|
211
343
|
*/
|
212
344
|
reset() {
|
213
|
-
this.
|
214
|
-
this.
|
215
|
-
this.
|
345
|
+
_classPrivateFieldGet(this, _searchInput).reset();
|
346
|
+
_classPrivateFieldGet(this, _selectAllUI).reset();
|
347
|
+
_classPrivateFieldGet(this, _clearAllUI).reset();
|
216
348
|
}
|
217
349
|
|
218
350
|
/**
|
@@ -222,7 +354,7 @@ class MultipleSelectUI extends BaseUI {
|
|
222
354
|
if (!this.isBuilt()) {
|
223
355
|
return;
|
224
356
|
}
|
225
|
-
this.
|
357
|
+
_classPrivateFieldGet(this, _itemsBox).loadData(valueToItems(_classPrivateFieldGet(this, _items), this.options.value));
|
226
358
|
super.update();
|
227
359
|
}
|
228
360
|
|
@@ -230,85 +362,58 @@ class MultipleSelectUI extends BaseUI {
|
|
230
362
|
* Destroy instance.
|
231
363
|
*/
|
232
364
|
destroy() {
|
233
|
-
if (this
|
234
|
-
this.
|
365
|
+
if (_classPrivateFieldGet(this, _itemsBox)) {
|
366
|
+
_classPrivateFieldGet(this, _itemsBox).destroy();
|
235
367
|
}
|
236
|
-
this.
|
237
|
-
this.
|
238
|
-
this.
|
239
|
-
this
|
240
|
-
this
|
241
|
-
this
|
242
|
-
this
|
243
|
-
this
|
368
|
+
_classPrivateFieldGet(this, _searchInput).destroy();
|
369
|
+
_classPrivateFieldGet(this, _clearAllUI).destroy();
|
370
|
+
_classPrivateFieldGet(this, _selectAllUI).destroy();
|
371
|
+
_classPrivateFieldSet(this, _searchInput, null);
|
372
|
+
_classPrivateFieldSet(this, _clearAllUI, null);
|
373
|
+
_classPrivateFieldSet(this, _selectAllUI, null);
|
374
|
+
_classPrivateFieldSet(this, _itemsBox, null);
|
375
|
+
_classPrivateFieldSet(this, _items, null);
|
244
376
|
super.destroy();
|
245
377
|
}
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
const value = event.target.value.toLocaleLowerCase(this.getLocale());
|
255
|
-
let filteredItems;
|
256
|
-
if (value === '') {
|
257
|
-
filteredItems = [...this.items];
|
258
|
-
} else {
|
259
|
-
filteredItems = arrayFilter(this.items, item => `${item.value}`.toLocaleLowerCase(this.getLocale()).indexOf(value) >= 0);
|
260
|
-
}
|
261
|
-
this.itemsBox.loadData(filteredItems);
|
262
|
-
}
|
263
|
-
|
264
|
-
/**
|
265
|
-
* 'keydown' event listener for input element.
|
266
|
-
*
|
267
|
-
* @private
|
268
|
-
* @param {Event} event DOM event.
|
269
|
-
*/
|
270
|
-
onInputKeyDown(event) {
|
271
|
-
this.runLocalHooks('keydown', event, this);
|
272
|
-
const isKeyCode = partial(isKey, event.keyCode);
|
273
|
-
if (isKeyCode('ARROW_DOWN|TAB') && !this.itemsBox.isListening()) {
|
274
|
-
stopImmediatePropagation(event);
|
275
|
-
this.itemsBox.listen();
|
276
|
-
this.itemsBox.selectCell(0, 0);
|
277
|
-
}
|
278
|
-
}
|
279
|
-
|
280
|
-
/**
|
281
|
-
* On click listener for "Select all" link.
|
282
|
-
*
|
283
|
-
* @private
|
284
|
-
* @param {DOMEvent} event The mouse event object.
|
285
|
-
*/
|
286
|
-
onSelectAllClick(event) {
|
287
|
-
const changes = [];
|
288
|
-
event.preventDefault();
|
289
|
-
arrayEach(this.itemsBox.getSourceData(), (row, rowIndex) => {
|
290
|
-
row.checked = true;
|
291
|
-
changes.push(dataRowToChangesArray(row, rowIndex)[0]);
|
292
|
-
});
|
293
|
-
this.itemsBox.setSourceDataAtCell(changes);
|
378
|
+
}
|
379
|
+
function _onInput2(event) {
|
380
|
+
const value = event.target.value.toLocaleLowerCase(this.getLocale());
|
381
|
+
let filteredItems;
|
382
|
+
if (value === '') {
|
383
|
+
filteredItems = [..._classPrivateFieldGet(this, _items)];
|
384
|
+
} else {
|
385
|
+
filteredItems = arrayFilter(_classPrivateFieldGet(this, _items), item => `${item.value}`.toLocaleLowerCase(this.getLocale()).indexOf(value) >= 0);
|
294
386
|
}
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
*/
|
302
|
-
onClearAllClick(event) {
|
303
|
-
const changes = [];
|
387
|
+
_classPrivateFieldGet(this, _itemsBox).loadData(filteredItems);
|
388
|
+
}
|
389
|
+
function _onInputKeyDown2(event) {
|
390
|
+
this.runLocalHooks('keydown', event, this);
|
391
|
+
const isKeyCode = partial(isKey, event.keyCode);
|
392
|
+
if (isKeyCode('ARROW_DOWN')) {
|
304
393
|
event.preventDefault();
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
});
|
309
|
-
this.itemsBox.setSourceDataAtCell(changes);
|
394
|
+
stopImmediatePropagation(event);
|
395
|
+
_classPrivateFieldGet(this, _itemsBox).listen();
|
396
|
+
_classPrivateFieldGet(this, _itemsBox).selectCell(0, 0);
|
310
397
|
}
|
311
398
|
}
|
399
|
+
function _onSelectAllClick2(event) {
|
400
|
+
const changes = [];
|
401
|
+
event.preventDefault();
|
402
|
+
arrayEach(_classPrivateFieldGet(this, _itemsBox).getSourceData(), (row, rowIndex) => {
|
403
|
+
row.checked = true;
|
404
|
+
changes.push(dataRowToChangesArray(row, rowIndex)[0]);
|
405
|
+
});
|
406
|
+
_classPrivateFieldGet(this, _itemsBox).setSourceDataAtCell(changes);
|
407
|
+
}
|
408
|
+
function _onClearAllClick2(event) {
|
409
|
+
const changes = [];
|
410
|
+
event.preventDefault();
|
411
|
+
arrayEach(_classPrivateFieldGet(this, _itemsBox).getSourceData(), (row, rowIndex) => {
|
412
|
+
row.checked = false;
|
413
|
+
changes.push(dataRowToChangesArray(row, rowIndex)[0]);
|
414
|
+
});
|
415
|
+
_classPrivateFieldGet(this, _itemsBox).setSourceDataAtCell(changes);
|
416
|
+
}
|
312
417
|
export default MultipleSelectUI;
|
313
418
|
|
314
419
|
/**
|
@@ -1,16 +1,23 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
4
5
|
var _object = require("../../../helpers/object");
|
5
|
-
var _base =
|
6
|
-
function
|
7
|
-
|
8
|
-
|
6
|
+
var _base = require("./_base");
|
7
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
8
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
9
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
10
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
11
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
12
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
13
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
9
14
|
/**
|
10
15
|
* @private
|
11
16
|
* @class RadioInputUI
|
12
17
|
*/
|
13
|
-
|
18
|
+
var _input = /*#__PURE__*/new WeakMap();
|
19
|
+
var _label = /*#__PURE__*/new WeakMap();
|
20
|
+
class RadioInputUI extends _base.BaseUI {
|
14
21
|
static get DEFAULTS() {
|
15
22
|
return (0, _object.clone)({
|
16
23
|
type: 'radio',
|
@@ -19,9 +26,28 @@ class RadioInputUI extends _base.default {
|
|
19
26
|
label: {}
|
20
27
|
});
|
21
28
|
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* The reference to the input element.
|
32
|
+
*
|
33
|
+
* @type {HTMLInputElement}
|
34
|
+
*/
|
35
|
+
|
22
36
|
constructor(hotInstance, options) {
|
23
37
|
super(hotInstance, (0, _object.extend)(RadioInputUI.DEFAULTS, options));
|
24
|
-
|
38
|
+
_classPrivateFieldInitSpec(this, _input, {
|
39
|
+
writable: true,
|
40
|
+
value: void 0
|
41
|
+
});
|
42
|
+
/**
|
43
|
+
* The reference to the label element.
|
44
|
+
*
|
45
|
+
* @type {HTMLLabelElement}
|
46
|
+
*/
|
47
|
+
_classPrivateFieldInitSpec(this, _label, {
|
48
|
+
writable: true,
|
49
|
+
value: void 0
|
50
|
+
});
|
25
51
|
}
|
26
52
|
|
27
53
|
/**
|
@@ -29,12 +55,12 @@ class RadioInputUI extends _base.default {
|
|
29
55
|
*/
|
30
56
|
build() {
|
31
57
|
super.build();
|
32
|
-
const priv = privatePool.get(this);
|
33
|
-
priv.input = this._element.firstChild;
|
34
58
|
const label = this.hot.rootDocument.createElement('label');
|
35
59
|
label.textContent = this.translateIfPossible(this.options.label.textContent);
|
36
60
|
label.htmlFor = this.translateIfPossible(this.options.label.htmlFor);
|
37
|
-
|
61
|
+
_classPrivateFieldSet(this, _label, label);
|
62
|
+
_classPrivateFieldSet(this, _input, this._element.firstChild);
|
63
|
+
_classPrivateFieldGet(this, _input).checked = this.options.checked;
|
38
64
|
this._element.appendChild(label);
|
39
65
|
this.update();
|
40
66
|
}
|
@@ -46,9 +72,7 @@ class RadioInputUI extends _base.default {
|
|
46
72
|
if (!this.isBuilt()) {
|
47
73
|
return;
|
48
74
|
}
|
49
|
-
|
50
|
-
priv.input.checked = this.options.checked;
|
51
|
-
priv.label.textContent = this.translateIfPossible(this.options.label.textContent);
|
75
|
+
_classPrivateFieldGet(this, _label).textContent = this.translateIfPossible(this.options.label.textContent);
|
52
76
|
}
|
53
77
|
|
54
78
|
/**
|
@@ -57,7 +81,7 @@ class RadioInputUI extends _base.default {
|
|
57
81
|
* @returns {boolean}
|
58
82
|
*/
|
59
83
|
isChecked() {
|
60
|
-
return this.
|
84
|
+
return _classPrivateFieldGet(this, _input).checked;
|
61
85
|
}
|
62
86
|
|
63
87
|
/**
|
@@ -67,8 +91,9 @@ class RadioInputUI extends _base.default {
|
|
67
91
|
*/
|
68
92
|
setChecked() {
|
69
93
|
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
70
|
-
this.
|
71
|
-
|
94
|
+
if (this.isBuilt()) {
|
95
|
+
_classPrivateFieldGet(this, _input).checked = value;
|
96
|
+
}
|
72
97
|
}
|
73
98
|
|
74
99
|
/**
|
@@ -76,9 +101,8 @@ class RadioInputUI extends _base.default {
|
|
76
101
|
*/
|
77
102
|
focus() {
|
78
103
|
if (this.isBuilt()) {
|
79
|
-
|
104
|
+
_classPrivateFieldGet(this, _input).focus();
|
80
105
|
}
|
81
106
|
}
|
82
107
|
}
|
83
|
-
|
84
|
-
exports.default = _default;
|
108
|
+
exports.RadioInputUI = RadioInputUI;
|