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
@@ -6,25 +6,34 @@ require("core-js/modules/es.error.cause.js");
|
|
6
6
|
var _element = require("../../../helpers/dom/element");
|
7
7
|
var _array = require("../../../helpers/array");
|
8
8
|
var _templateLiteralTag = require("../../../helpers/templateLiteralTag");
|
9
|
-
var _base =
|
9
|
+
var _base = require("./_base");
|
10
10
|
var _logicalOperationRegisterer = require("../logicalOperationRegisterer");
|
11
11
|
var _conjunction = require("../logicalOperations/conjunction");
|
12
12
|
var _disjunction = require("../logicalOperations/disjunction");
|
13
13
|
var _disjunctionWithExtraCondition = require("../logicalOperations/disjunctionWithExtraCondition");
|
14
|
-
var _radioInput =
|
15
|
-
function
|
14
|
+
var _radioInput = require("../ui/radioInput");
|
15
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
16
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
17
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
16
18
|
const SELECTED_AT_START_ELEMENT_INDEX = 0;
|
17
19
|
|
18
20
|
/**
|
19
21
|
* @private
|
20
22
|
* @class OperatorsComponent
|
21
23
|
*/
|
22
|
-
|
24
|
+
var _onRadioInputChange = /*#__PURE__*/new WeakSet();
|
25
|
+
class OperatorsComponent extends _base.BaseComponent {
|
23
26
|
constructor(hotInstance, options) {
|
24
27
|
super(hotInstance, {
|
25
28
|
id: options.id,
|
26
29
|
stateless: false
|
27
30
|
});
|
31
|
+
/**
|
32
|
+
* OnChange listener.
|
33
|
+
*
|
34
|
+
* @param {Event} event The DOM event object.
|
35
|
+
*/
|
36
|
+
_classPrivateMethodInitSpec(this, _onRadioInputChange);
|
28
37
|
this.name = options.name;
|
29
38
|
this.buildOperatorsElement();
|
30
39
|
}
|
@@ -43,9 +52,7 @@ class OperatorsComponent extends _base.default {
|
|
43
52
|
hidden: () => this.isHidden(),
|
44
53
|
renderer: (hot, wrapper) => {
|
45
54
|
(0, _element.addClass)(wrapper.parentNode, 'htFiltersMenuOperators');
|
46
|
-
|
47
|
-
(0, _array.arrayEach)(this.elements, ui => wrapper.appendChild(ui.element));
|
48
|
-
}
|
55
|
+
(0, _array.arrayEach)(this.elements, ui => wrapper.appendChild(ui.element));
|
49
56
|
return wrapper;
|
50
57
|
}
|
51
58
|
};
|
@@ -59,7 +66,7 @@ class OperatorsComponent extends _base.default {
|
|
59
66
|
buildOperatorsElement() {
|
60
67
|
const operationKeys = [_conjunction.OPERATION_ID, _disjunction.OPERATION_ID];
|
61
68
|
(0, _array.arrayEach)(operationKeys, operation => {
|
62
|
-
const radioInput = new _radioInput.
|
69
|
+
const radioInput = new _radioInput.RadioInputUI(this.hot, {
|
63
70
|
name: 'operator',
|
64
71
|
label: {
|
65
72
|
htmlFor: operation,
|
@@ -69,7 +76,7 @@ class OperatorsComponent extends _base.default {
|
|
69
76
|
checked: operation === operationKeys[SELECTED_AT_START_ELEMENT_INDEX],
|
70
77
|
id: operation
|
71
78
|
});
|
72
|
-
radioInput.addLocalHook('change', event => this.
|
79
|
+
radioInput.addLocalHook('change', event => _classPrivateMethodGet(this, _onRadioInputChange, _onRadioInputChange2).call(this, event));
|
73
80
|
this.elements.push(radioInput);
|
74
81
|
});
|
75
82
|
}
|
@@ -94,7 +101,7 @@ class OperatorsComponent extends _base.default {
|
|
94
101
|
* @returns {string}
|
95
102
|
*/
|
96
103
|
getActiveOperationId() {
|
97
|
-
const operationElement = this.elements.find(element => element instanceof _radioInput.
|
104
|
+
const operationElement = this.elements.find(element => element instanceof _radioInput.RadioInputUI && element.isChecked());
|
98
105
|
if (operationElement) {
|
99
106
|
return operationElement.getValue();
|
100
107
|
}
|
@@ -146,16 +153,8 @@ class OperatorsComponent extends _base.default {
|
|
146
153
|
reset() {
|
147
154
|
this.setChecked(SELECTED_AT_START_ELEMENT_INDEX);
|
148
155
|
}
|
149
|
-
|
150
|
-
/**
|
151
|
-
* OnChange listener.
|
152
|
-
*
|
153
|
-
* @private
|
154
|
-
* @param {Event} event The DOM event object.
|
155
|
-
*/
|
156
|
-
onRadioInputChange(event) {
|
157
|
-
this.setState(event.target.value);
|
158
|
-
}
|
159
156
|
}
|
160
|
-
|
161
|
-
|
157
|
+
exports.OperatorsComponent = OperatorsComponent;
|
158
|
+
function _onRadioInputChange2(event) {
|
159
|
+
this.setState(event.target.value);
|
160
|
+
}
|
@@ -1,26 +1,36 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
2
|
import "core-js/modules/es.error.cause.js";
|
3
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
4
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
5
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
3
6
|
import { addClass } from "../../../helpers/dom/element.mjs";
|
4
7
|
import { arrayEach } from "../../../helpers/array.mjs";
|
5
8
|
import { toSingleLine } from "../../../helpers/templateLiteralTag.mjs";
|
6
|
-
import BaseComponent from "./_base.mjs";
|
9
|
+
import { BaseComponent } from "./_base.mjs";
|
7
10
|
import { getOperationName } from "../logicalOperationRegisterer.mjs";
|
8
11
|
import { OPERATION_ID as OPERATION_AND } from "../logicalOperations/conjunction.mjs";
|
9
12
|
import { OPERATION_ID as OPERATION_OR } from "../logicalOperations/disjunction.mjs";
|
10
13
|
import { OPERATION_ID as OPERATION_OR_THEN_VARIABLE } from "../logicalOperations/disjunctionWithExtraCondition.mjs";
|
11
|
-
import RadioInputUI from "../ui/radioInput.mjs";
|
14
|
+
import { RadioInputUI } from "../ui/radioInput.mjs";
|
12
15
|
const SELECTED_AT_START_ELEMENT_INDEX = 0;
|
13
16
|
|
14
17
|
/**
|
15
18
|
* @private
|
16
19
|
* @class OperatorsComponent
|
17
20
|
*/
|
18
|
-
|
21
|
+
var _onRadioInputChange = /*#__PURE__*/new WeakSet();
|
22
|
+
export class OperatorsComponent extends BaseComponent {
|
19
23
|
constructor(hotInstance, options) {
|
20
24
|
super(hotInstance, {
|
21
25
|
id: options.id,
|
22
26
|
stateless: false
|
23
27
|
});
|
28
|
+
/**
|
29
|
+
* OnChange listener.
|
30
|
+
*
|
31
|
+
* @param {Event} event The DOM event object.
|
32
|
+
*/
|
33
|
+
_classPrivateMethodInitSpec(this, _onRadioInputChange);
|
24
34
|
this.name = options.name;
|
25
35
|
this.buildOperatorsElement();
|
26
36
|
}
|
@@ -39,9 +49,7 @@ class OperatorsComponent extends BaseComponent {
|
|
39
49
|
hidden: () => this.isHidden(),
|
40
50
|
renderer: (hot, wrapper) => {
|
41
51
|
addClass(wrapper.parentNode, 'htFiltersMenuOperators');
|
42
|
-
|
43
|
-
arrayEach(this.elements, ui => wrapper.appendChild(ui.element));
|
44
|
-
}
|
52
|
+
arrayEach(this.elements, ui => wrapper.appendChild(ui.element));
|
45
53
|
return wrapper;
|
46
54
|
}
|
47
55
|
};
|
@@ -65,7 +73,7 @@ class OperatorsComponent extends BaseComponent {
|
|
65
73
|
checked: operation === operationKeys[SELECTED_AT_START_ELEMENT_INDEX],
|
66
74
|
id: operation
|
67
75
|
});
|
68
|
-
radioInput.addLocalHook('change', event => this.
|
76
|
+
radioInput.addLocalHook('change', event => _classPrivateMethodGet(this, _onRadioInputChange, _onRadioInputChange2).call(this, event));
|
69
77
|
this.elements.push(radioInput);
|
70
78
|
});
|
71
79
|
}
|
@@ -142,15 +150,7 @@ class OperatorsComponent extends BaseComponent {
|
|
142
150
|
reset() {
|
143
151
|
this.setChecked(SELECTED_AT_START_ELEMENT_INDEX);
|
144
152
|
}
|
145
|
-
|
146
|
-
/**
|
147
|
-
* OnChange listener.
|
148
|
-
*
|
149
|
-
* @private
|
150
|
-
* @param {Event} event The DOM event object.
|
151
|
-
*/
|
152
|
-
onRadioInputChange(event) {
|
153
|
-
this.setState(event.target.value);
|
154
|
-
}
|
155
153
|
}
|
156
|
-
|
154
|
+
function _onRadioInputChange2(event) {
|
155
|
+
this.setState(event.target.value);
|
156
|
+
}
|
@@ -2,31 +2,41 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.array.push.js");
|
5
|
+
require("core-js/modules/es.error.cause.js");
|
5
6
|
var _element = require("../../../helpers/dom/element");
|
6
7
|
var _event = require("../../../helpers/dom/event");
|
7
8
|
var _array = require("../../../helpers/array");
|
8
9
|
var _unicode = require("../../../helpers/unicode");
|
9
10
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
10
11
|
var _utils = require("../utils");
|
11
|
-
var _base =
|
12
|
-
var _multipleSelect =
|
12
|
+
var _base = require("./_base");
|
13
|
+
var _multipleSelect = require("../ui/multipleSelect");
|
13
14
|
var _constants2 = require("../constants");
|
14
15
|
var _conditionRegisterer = require("../conditionRegisterer");
|
15
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
17
17
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
18
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
19
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
20
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
18
21
|
/**
|
19
22
|
* @private
|
20
23
|
* @class ValueComponent
|
21
24
|
*/
|
22
|
-
|
25
|
+
var _onInputKeyDown = /*#__PURE__*/new WeakSet();
|
26
|
+
class ValueComponent extends _base.BaseComponent {
|
23
27
|
constructor(hotInstance, options) {
|
24
28
|
super(hotInstance, {
|
25
29
|
id: options.id,
|
26
30
|
stateless: false
|
27
31
|
});
|
32
|
+
/**
|
33
|
+
* Key down listener.
|
34
|
+
*
|
35
|
+
* @param {Event} event The DOM event object.
|
36
|
+
*/
|
37
|
+
_classPrivateMethodInitSpec(this, _onInputKeyDown);
|
28
38
|
this.name = options.name;
|
29
|
-
this.elements.push(new _multipleSelect.
|
39
|
+
this.elements.push(new _multipleSelect.MultipleSelectUI(this.hot));
|
30
40
|
this.registerHooks();
|
31
41
|
}
|
32
42
|
|
@@ -36,7 +46,17 @@ class ValueComponent extends _base.default {
|
|
36
46
|
* @private
|
37
47
|
*/
|
38
48
|
registerHooks() {
|
39
|
-
this.getMultipleSelectElement().addLocalHook('keydown', event => this.
|
49
|
+
this.getMultipleSelectElement().addLocalHook('keydown', event => _classPrivateMethodGet(this, _onInputKeyDown, _onInputKeyDown2).call(this, event)).addLocalHook('listTabKeydown', event => this.runLocalHooks('listTabKeydown', event));
|
50
|
+
}
|
51
|
+
|
52
|
+
/**
|
53
|
+
* Gets the list of elements from which the component is built.
|
54
|
+
*
|
55
|
+
* @returns {BaseUI[]}
|
56
|
+
*/
|
57
|
+
getElements() {
|
58
|
+
const selectElement = this.getMultipleSelectElement();
|
59
|
+
return [selectElement.getSearchInputElement(), selectElement.getSelectAllElement(), selectElement.getClearAllElement(), this.getMultipleSelectElement()];
|
40
60
|
}
|
41
61
|
|
42
62
|
/**
|
@@ -121,7 +141,7 @@ class ValueComponent extends _base.default {
|
|
121
141
|
* @returns {MultipleSelectUI}
|
122
142
|
*/
|
123
143
|
getMultipleSelectElement() {
|
124
|
-
return this.elements.filter(element => element instanceof _multipleSelect.
|
144
|
+
return this.elements.filter(element => element instanceof _multipleSelect.MultipleSelectUI)[0];
|
125
145
|
}
|
126
146
|
|
127
147
|
/**
|
@@ -142,9 +162,7 @@ class ValueComponent extends _base.default {
|
|
142
162
|
(0, _element.addClass)(label, 'htFiltersMenuLabel');
|
143
163
|
label.textContent = value;
|
144
164
|
wrapper.appendChild(label);
|
145
|
-
|
146
|
-
(0, _array.arrayEach)(this.elements, ui => wrapper.appendChild(ui.element));
|
147
|
-
}
|
165
|
+
(0, _array.arrayEach)(this.elements, ui => wrapper.appendChild(ui.element));
|
148
166
|
return wrapper;
|
149
167
|
}
|
150
168
|
};
|
@@ -165,20 +183,6 @@ class ValueComponent extends _base.default {
|
|
165
183
|
this.getMultipleSelectElement().setLocale(this.hot.getCellMeta(0, selectedColumn.visualIndex).locale);
|
166
184
|
}
|
167
185
|
}
|
168
|
-
|
169
|
-
/**
|
170
|
-
* Key down listener.
|
171
|
-
*
|
172
|
-
* @private
|
173
|
-
* @param {Event} event The DOM event object.
|
174
|
-
*/
|
175
|
-
onInputKeyDown(event) {
|
176
|
-
if ((0, _unicode.isKey)(event.keyCode, 'ESCAPE')) {
|
177
|
-
this.runLocalHooks('cancel');
|
178
|
-
(0, _event.stopImmediatePropagation)(event);
|
179
|
-
}
|
180
|
-
}
|
181
|
-
|
182
186
|
/**
|
183
187
|
* Get data for currently selected column.
|
184
188
|
*
|
@@ -193,5 +197,10 @@ class ValueComponent extends _base.default {
|
|
193
197
|
return (0, _array.arrayMap)(this.hot.getDataAtCol(selectedColumn.visualIndex), v => (0, _utils.toEmptyString)(v));
|
194
198
|
}
|
195
199
|
}
|
196
|
-
|
197
|
-
|
200
|
+
exports.ValueComponent = ValueComponent;
|
201
|
+
function _onInputKeyDown2(event) {
|
202
|
+
if ((0, _unicode.isKey)(event.keyCode, 'ESCAPE')) {
|
203
|
+
this.runLocalHooks('cancel');
|
204
|
+
(0, _event.stopImmediatePropagation)(event);
|
205
|
+
}
|
206
|
+
}
|
@@ -1,24 +1,35 @@
|
|
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 _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
5
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
2
6
|
import { addClass } from "../../../helpers/dom/element.mjs";
|
3
7
|
import { stopImmediatePropagation } from "../../../helpers/dom/event.mjs";
|
4
8
|
import { arrayEach, arrayFilter, arrayMap } from "../../../helpers/array.mjs";
|
5
9
|
import { isKey } from "../../../helpers/unicode.mjs";
|
6
10
|
import * as C from "../../../i18n/constants.mjs";
|
7
11
|
import { unifyColumnValues, intersectValues, toEmptyString } from "../utils.mjs";
|
8
|
-
import BaseComponent from "./_base.mjs";
|
9
|
-
import MultipleSelectUI from "../ui/multipleSelect.mjs";
|
12
|
+
import { BaseComponent } from "./_base.mjs";
|
13
|
+
import { MultipleSelectUI } from "../ui/multipleSelect.mjs";
|
10
14
|
import { CONDITION_BY_VALUE, CONDITION_NONE } from "../constants.mjs";
|
11
15
|
import { getConditionDescriptor } from "../conditionRegisterer.mjs";
|
12
16
|
/**
|
13
17
|
* @private
|
14
18
|
* @class ValueComponent
|
15
19
|
*/
|
16
|
-
|
20
|
+
var _onInputKeyDown = /*#__PURE__*/new WeakSet();
|
21
|
+
export class ValueComponent extends BaseComponent {
|
17
22
|
constructor(hotInstance, options) {
|
18
23
|
super(hotInstance, {
|
19
24
|
id: options.id,
|
20
25
|
stateless: false
|
21
26
|
});
|
27
|
+
/**
|
28
|
+
* Key down listener.
|
29
|
+
*
|
30
|
+
* @param {Event} event The DOM event object.
|
31
|
+
*/
|
32
|
+
_classPrivateMethodInitSpec(this, _onInputKeyDown);
|
22
33
|
this.name = options.name;
|
23
34
|
this.elements.push(new MultipleSelectUI(this.hot));
|
24
35
|
this.registerHooks();
|
@@ -30,7 +41,17 @@ class ValueComponent extends BaseComponent {
|
|
30
41
|
* @private
|
31
42
|
*/
|
32
43
|
registerHooks() {
|
33
|
-
this.getMultipleSelectElement().addLocalHook('keydown', event => this.
|
44
|
+
this.getMultipleSelectElement().addLocalHook('keydown', event => _classPrivateMethodGet(this, _onInputKeyDown, _onInputKeyDown2).call(this, event)).addLocalHook('listTabKeydown', event => this.runLocalHooks('listTabKeydown', event));
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* Gets the list of elements from which the component is built.
|
49
|
+
*
|
50
|
+
* @returns {BaseUI[]}
|
51
|
+
*/
|
52
|
+
getElements() {
|
53
|
+
const selectElement = this.getMultipleSelectElement();
|
54
|
+
return [selectElement.getSearchInputElement(), selectElement.getSelectAllElement(), selectElement.getClearAllElement(), this.getMultipleSelectElement()];
|
34
55
|
}
|
35
56
|
|
36
57
|
/**
|
@@ -136,9 +157,7 @@ class ValueComponent extends BaseComponent {
|
|
136
157
|
addClass(label, 'htFiltersMenuLabel');
|
137
158
|
label.textContent = value;
|
138
159
|
wrapper.appendChild(label);
|
139
|
-
|
140
|
-
arrayEach(this.elements, ui => wrapper.appendChild(ui.element));
|
141
|
-
}
|
160
|
+
arrayEach(this.elements, ui => wrapper.appendChild(ui.element));
|
142
161
|
return wrapper;
|
143
162
|
}
|
144
163
|
};
|
@@ -159,20 +178,6 @@ class ValueComponent extends BaseComponent {
|
|
159
178
|
this.getMultipleSelectElement().setLocale(this.hot.getCellMeta(0, selectedColumn.visualIndex).locale);
|
160
179
|
}
|
161
180
|
}
|
162
|
-
|
163
|
-
/**
|
164
|
-
* Key down listener.
|
165
|
-
*
|
166
|
-
* @private
|
167
|
-
* @param {Event} event The DOM event object.
|
168
|
-
*/
|
169
|
-
onInputKeyDown(event) {
|
170
|
-
if (isKey(event.keyCode, 'ESCAPE')) {
|
171
|
-
this.runLocalHooks('cancel');
|
172
|
-
stopImmediatePropagation(event);
|
173
|
-
}
|
174
|
-
}
|
175
|
-
|
176
181
|
/**
|
177
182
|
* Get data for currently selected column.
|
178
183
|
*
|
@@ -187,4 +192,9 @@ class ValueComponent extends BaseComponent {
|
|
187
192
|
return arrayMap(this.hot.getDataAtCol(selectedColumn.visualIndex), v => toEmptyString(v));
|
188
193
|
}
|
189
194
|
}
|
190
|
-
|
195
|
+
function _onInputKeyDown2(event) {
|
196
|
+
if (isKey(event.keyCode, 'ESCAPE')) {
|
197
|
+
this.runLocalHooks('cancel');
|
198
|
+
stopImmediatePropagation(event);
|
199
|
+
}
|
200
|
+
}
|
@@ -1,29 +1,42 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
require("core-js/modules/es.error.cause.js");
|
3
4
|
exports.__esModule = true;
|
5
|
+
require("core-js/modules/es.array.unscopables.flat.js");
|
4
6
|
require("core-js/modules/es.array.push.js");
|
5
7
|
var _base = require("../base");
|
6
8
|
var _array = require("../../helpers/array");
|
7
9
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
8
10
|
var _console = require("../../helpers/console");
|
9
11
|
var _number = require("../../helpers/number");
|
10
|
-
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
11
12
|
var _element = require("../../helpers/dom/element");
|
13
|
+
var _unicode = require("../../helpers/unicode");
|
12
14
|
var _predefinedItems = require("../contextMenu/predefinedItems");
|
13
15
|
var constants = _interopRequireWildcard(require("../../i18n/constants"));
|
14
|
-
var _condition =
|
15
|
-
var _operators =
|
16
|
-
var _value =
|
17
|
-
var _actionBar =
|
16
|
+
var _condition = require("./component/condition");
|
17
|
+
var _operators = require("./component/operators");
|
18
|
+
var _value = require("./component/value");
|
19
|
+
var _actionBar = require("./component/actionBar");
|
18
20
|
var _conditionCollection = _interopRequireDefault(require("./conditionCollection"));
|
19
21
|
var _dataFilter = _interopRequireDefault(require("./dataFilter"));
|
20
22
|
var _conditionUpdateObserver = _interopRequireDefault(require("./conditionUpdateObserver"));
|
21
23
|
var _utils = require("./utils");
|
24
|
+
var _focusController = require("./menu/focusController");
|
22
25
|
var _constants2 = require("./constants");
|
23
26
|
var _translations = require("../../translations");
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
24
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
25
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
26
|
-
function
|
30
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
31
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
32
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
33
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
34
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
35
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
36
|
+
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; } }
|
37
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
38
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
39
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
27
40
|
const PLUGIN_KEY = 'filters';
|
28
41
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
29
42
|
const PLUGIN_PRIORITY = 250;
|
@@ -65,6 +78,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
65
78
|
* ```
|
66
79
|
* :::
|
67
80
|
*/
|
81
|
+
var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
|
68
82
|
class Filters extends _base.BasePlugin {
|
69
83
|
static get PLUGIN_KEY() {
|
70
84
|
return PLUGIN_KEY;
|
@@ -75,52 +89,55 @@ class Filters extends _base.BasePlugin {
|
|
75
89
|
static get PLUGIN_DEPS() {
|
76
90
|
return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
|
77
91
|
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* Instance of {@link DropdownMenu}.
|
95
|
+
*
|
96
|
+
* @private
|
97
|
+
* @type {DropdownMenu}
|
98
|
+
*/
|
99
|
+
|
78
100
|
constructor(hotInstance) {
|
79
101
|
super(hotInstance);
|
80
|
-
|
81
|
-
|
82
|
-
*
|
83
|
-
* @private
|
84
|
-
* @type {EventManager}
|
85
|
-
*/
|
86
|
-
this.eventManager = new _eventManager.default(this);
|
87
|
-
/**
|
88
|
-
* Instance of {@link DropdownMenu}.
|
89
|
-
*
|
90
|
-
* @private
|
91
|
-
* @type {DropdownMenu}
|
92
|
-
*/
|
93
|
-
this.dropdownMenuPlugin = null;
|
102
|
+
// One listener for the enable/disable functionality
|
103
|
+
_defineProperty(this, "dropdownMenuPlugin", null);
|
94
104
|
/**
|
95
105
|
* Instance of {@link ConditionCollection}.
|
96
106
|
*
|
97
107
|
* @private
|
98
108
|
* @type {ConditionCollection}
|
99
109
|
*/
|
100
|
-
this
|
110
|
+
_defineProperty(this, "conditionCollection", null);
|
101
111
|
/**
|
102
112
|
* Instance of {@link ConditionUpdateObserver}.
|
103
113
|
*
|
104
114
|
* @private
|
105
115
|
* @type {ConditionUpdateObserver}
|
106
116
|
*/
|
107
|
-
this
|
117
|
+
_defineProperty(this, "conditionUpdateObserver", null);
|
108
118
|
/**
|
109
119
|
* Map, where key is component identifier and value represent `BaseComponent` element or it derivatives.
|
110
120
|
*
|
111
121
|
* @private
|
112
122
|
* @type {Map}
|
113
123
|
*/
|
114
|
-
this
|
124
|
+
_defineProperty(this, "components", new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]));
|
115
125
|
/**
|
116
126
|
* Map of skipped rows by plugin.
|
117
127
|
*
|
118
128
|
* @private
|
119
129
|
* @type {null|TrimmingMap}
|
120
130
|
*/
|
121
|
-
this
|
122
|
-
|
123
|
-
|
131
|
+
_defineProperty(this, "filtersRowsMap", null);
|
132
|
+
/**
|
133
|
+
* Menu focus navigator allows switching the focus position through Tab and Shift Tab keys.
|
134
|
+
*
|
135
|
+
* @type {MenuFocusNavigator|undefined}
|
136
|
+
*/
|
137
|
+
_classPrivateFieldInitSpec(this, _menuFocusNavigator, {
|
138
|
+
writable: true,
|
139
|
+
value: void 0
|
140
|
+
});
|
124
141
|
this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
|
125
142
|
}
|
126
143
|
|
@@ -155,7 +172,7 @@ class Filters extends _base.BasePlugin {
|
|
155
172
|
const filterByConditionLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_CONDITION)}:`;
|
156
173
|
const filterValueLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_VALUE)}:`;
|
157
174
|
if (!this.components.get('filter_by_condition')) {
|
158
|
-
const conditionComponent = new _condition.
|
175
|
+
const conditionComponent = new _condition.ConditionComponent(this.hot, {
|
159
176
|
id: 'filter_by_condition',
|
160
177
|
name: filterByConditionLabel,
|
161
178
|
addSeparator: false,
|
@@ -165,13 +182,13 @@ class Filters extends _base.BasePlugin {
|
|
165
182
|
this.components.set('filter_by_condition', addConfirmationHooks(conditionComponent));
|
166
183
|
}
|
167
184
|
if (!this.components.get('filter_operators')) {
|
168
|
-
this.components.set('filter_operators', new _operators.
|
185
|
+
this.components.set('filter_operators', new _operators.OperatorsComponent(this.hot, {
|
169
186
|
id: 'filter_operators',
|
170
187
|
name: 'Operators'
|
171
188
|
}));
|
172
189
|
}
|
173
190
|
if (!this.components.get('filter_by_condition2')) {
|
174
|
-
const conditionComponent = new _condition.
|
191
|
+
const conditionComponent = new _condition.ConditionComponent(this.hot, {
|
175
192
|
id: 'filter_by_condition2',
|
176
193
|
name: '',
|
177
194
|
addSeparator: true,
|
@@ -181,13 +198,13 @@ class Filters extends _base.BasePlugin {
|
|
181
198
|
this.components.set('filter_by_condition2', addConfirmationHooks(conditionComponent));
|
182
199
|
}
|
183
200
|
if (!this.components.get('filter_by_value')) {
|
184
|
-
this.components.set('filter_by_value', addConfirmationHooks(new _value.
|
201
|
+
this.components.set('filter_by_value', addConfirmationHooks(new _value.ValueComponent(this.hot, {
|
185
202
|
id: 'filter_by_value',
|
186
203
|
name: filterValueLabel
|
187
204
|
})));
|
188
205
|
}
|
189
206
|
if (!this.components.get('filter_action_bar')) {
|
190
|
-
this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.
|
207
|
+
this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.ActionBarComponent(this.hot, {
|
191
208
|
id: 'filter_action_bar',
|
192
209
|
name: 'Action bar'
|
193
210
|
})));
|
@@ -200,7 +217,6 @@ class Filters extends _base.BasePlugin {
|
|
200
217
|
this.conditionUpdateObserver.addLocalHook('update', conditionState => this.updateComponents(conditionState));
|
201
218
|
}
|
202
219
|
this.components.forEach(component => component.show());
|
203
|
-
this.addHook('beforeDropdownMenuSetItems', items => this.onBeforeDropdownMenuSetItems(items));
|
204
220
|
this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => this.onAfterDropdownMenuDefaultOptions(defaultOptions));
|
205
221
|
this.addHook('afterDropdownMenuShow', () => this.onAfterDropdownMenuShow());
|
206
222
|
this.addHook('afterDropdownMenuHide', () => this.onAfterDropdownMenuHide());
|
@@ -211,6 +227,32 @@ class Filters extends _base.BasePlugin {
|
|
211
227
|
this.dropdownMenuPlugin.disablePlugin();
|
212
228
|
this.dropdownMenuPlugin.enablePlugin();
|
213
229
|
}
|
230
|
+
if (!_classPrivateFieldGet(this, _menuFocusNavigator) && this.dropdownMenuPlugin.enabled) {
|
231
|
+
const mainMenu = this.dropdownMenuPlugin.menu;
|
232
|
+
const focusableItems = [
|
233
|
+
// A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
|
234
|
+
// to the menu navigation using arrow keys.
|
235
|
+
{
|
236
|
+
focus: () => mainMenu.focus()
|
237
|
+
}, ...Array.from(this.components).map(_ref => {
|
238
|
+
let [, component] = _ref;
|
239
|
+
return component.getElements();
|
240
|
+
}).flat()];
|
241
|
+
_classPrivateFieldSet(this, _menuFocusNavigator, (0, _focusController.createMenuFocusController)(mainMenu, focusableItems));
|
242
|
+
const forwardToFocusNavigation = event => {
|
243
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).listen();
|
244
|
+
event.preventDefault();
|
245
|
+
if ((0, _unicode.isKey)(event.keyCode, 'TAB')) {
|
246
|
+
if (event.shiftKey) {
|
247
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).toPreviousItem();
|
248
|
+
} else {
|
249
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).toNextItem();
|
250
|
+
}
|
251
|
+
}
|
252
|
+
};
|
253
|
+
this.components.get('filter_by_value').addLocalHook('listTabKeydown', forwardToFocusNavigation);
|
254
|
+
this.components.get('filter_by_condition').addLocalHook('selectTabKeydown', forwardToFocusNavigation);
|
255
|
+
}
|
214
256
|
this.registerShortcuts();
|
215
257
|
super.enablePlugin();
|
216
258
|
}
|
@@ -578,21 +620,6 @@ class Filters extends _base.BasePlugin {
|
|
578
620
|
this.components.get('filter_by_condition2').getSelectElement().closeOptions();
|
579
621
|
}
|
580
622
|
|
581
|
-
/**
|
582
|
-
* Before dropdown menu set menu items listener.
|
583
|
-
*
|
584
|
-
* @private
|
585
|
-
*/
|
586
|
-
onBeforeDropdownMenuSetItems() {
|
587
|
-
if (this.dropdownMenuPlugin) {
|
588
|
-
this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', () => {
|
589
|
-
this.dropdownMenuPlugin.menu.hotMenu.updateSettings({
|
590
|
-
hiddenRows: true
|
591
|
-
});
|
592
|
-
});
|
593
|
-
}
|
594
|
-
}
|
595
|
-
|
596
623
|
/**
|
597
624
|
* After dropdown menu default options listener.
|
598
625
|
*
|
@@ -685,7 +712,7 @@ class Filters extends _base.BasePlugin {
|
|
685
712
|
*/
|
686
713
|
onComponentChange(component, command) {
|
687
714
|
this.updateDependentComponentsVisibility();
|
688
|
-
if (component.constructor === _condition.
|
715
|
+
if (component.constructor === _condition.ConditionComponent && !command.inputsCount) {
|
689
716
|
this.setListeningDropdownMenu();
|
690
717
|
}
|
691
718
|
}
|