handsontable 0.0.0-next-f11b1a2-20231123 → 0.0.0-next-a417c2b-20231124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -1
- package/3rdparty/walkontable/src/selection/manager.js +8 -8
- package/3rdparty/walkontable/src/selection/manager.mjs +8 -8
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/focusCatcher/focusDetector.js +1 -1
- package/core/focusCatcher/focusDetector.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +59 -33
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +7 -7
- package/dist/handsontable.js +59 -33
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +7 -7
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/package.json +1 -1
- package/plugins/filters/filters.js +10 -1
- package/plugins/filters/filters.mjs +10 -1
- package/plugins/filters/menu/focusController.js +29 -10
- package/plugins/filters/menu/focusController.mjs +29 -10
- package/plugins/nestedRows/nestedRows.js +3 -0
- package/plugins/nestedRows/nestedRows.mjs +3 -0
- package/selection/highlight/types/focus.js +2 -6
- package/selection/highlight/types/focus.mjs +2 -6
- package/selection/selection.js +0 -1
- package/selection/selection.mjs +0 -1
|
@@ -93,7 +93,7 @@ class ColumnHeadersRenderer extends _base.default {
|
|
|
93
93
|
// Remove all accessibility-related attributes for the header to start fresh.
|
|
94
94
|
(0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
|
|
95
95
|
if (this.table.isAriaEnabled()) {
|
|
96
|
-
(0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1),
|
|
96
|
+
(0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), (0, _a11y.A11Y_COLUMNHEADER)(), ...(renderedColumnIndex >= 0 ? [(0, _a11y.A11Y_SCOPE_COL)()] : [])]);
|
|
97
97
|
}
|
|
98
98
|
columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
|
|
99
99
|
}
|
|
@@ -89,7 +89,7 @@ export default class ColumnHeadersRenderer extends BaseRenderer {
|
|
|
89
89
|
// Remove all accessibility-related attributes for the header to start fresh.
|
|
90
90
|
removeAttribute(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
|
|
91
91
|
if (this.table.isAriaEnabled()) {
|
|
92
|
-
setAttribute(TH, [A11Y_COLINDEX(renderedColumnIndex + 1 + this.table.rowHeadersCount), A11Y_TABINDEX(-1), ...(renderedColumnIndex
|
|
92
|
+
setAttribute(TH, [A11Y_COLINDEX(renderedColumnIndex + 1 + this.table.rowHeadersCount), A11Y_TABINDEX(-1), A11Y_COLUMNHEADER(), ...(renderedColumnIndex >= 0 ? [A11Y_SCOPE_COL()] : [])]);
|
|
93
93
|
}
|
|
94
94
|
columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
|
|
95
95
|
}
|
|
@@ -190,12 +190,12 @@ class SelectionManager {
|
|
|
190
190
|
}
|
|
191
191
|
const selections = Array.from(_classPrivateFieldGet(this, _selections));
|
|
192
192
|
const classNamesMap = new Map();
|
|
193
|
-
const
|
|
193
|
+
const headerAttributesMap = new Map();
|
|
194
194
|
for (let i = 0; i < selections.length; i++) {
|
|
195
195
|
const selection = selections[i];
|
|
196
196
|
const {
|
|
197
197
|
className,
|
|
198
|
-
|
|
198
|
+
headerAttributes,
|
|
199
199
|
createLayers,
|
|
200
200
|
selectionType
|
|
201
201
|
} = selection.settings;
|
|
@@ -222,12 +222,12 @@ class SelectionManager {
|
|
|
222
222
|
} else {
|
|
223
223
|
classNamesMap.set(element, new Map([[className, 1]]));
|
|
224
224
|
}
|
|
225
|
-
if (
|
|
226
|
-
if (!
|
|
227
|
-
|
|
225
|
+
if (headerAttributes) {
|
|
226
|
+
if (!headerAttributesMap.has(element)) {
|
|
227
|
+
headerAttributesMap.set(element, []);
|
|
228
228
|
}
|
|
229
229
|
if (element.nodeName === 'TH') {
|
|
230
|
-
|
|
230
|
+
headerAttributesMap.get(element).push(...headerAttributes);
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
});
|
|
@@ -255,8 +255,8 @@ class SelectionManager {
|
|
|
255
255
|
});
|
|
256
256
|
|
|
257
257
|
// Set the attributes for the headers if they're focused.
|
|
258
|
-
Array.from(
|
|
259
|
-
(0, _element.setAttribute)(element, [...
|
|
258
|
+
Array.from(headerAttributesMap.keys()).forEach(element => {
|
|
259
|
+
(0, _element.setAttribute)(element, [...headerAttributesMap.get(element)]);
|
|
260
260
|
});
|
|
261
261
|
}
|
|
262
262
|
}
|
|
@@ -186,12 +186,12 @@ export class SelectionManager {
|
|
|
186
186
|
}
|
|
187
187
|
const selections = Array.from(_classPrivateFieldGet(this, _selections));
|
|
188
188
|
const classNamesMap = new Map();
|
|
189
|
-
const
|
|
189
|
+
const headerAttributesMap = new Map();
|
|
190
190
|
for (let i = 0; i < selections.length; i++) {
|
|
191
191
|
const selection = selections[i];
|
|
192
192
|
const {
|
|
193
193
|
className,
|
|
194
|
-
|
|
194
|
+
headerAttributes,
|
|
195
195
|
createLayers,
|
|
196
196
|
selectionType
|
|
197
197
|
} = selection.settings;
|
|
@@ -218,12 +218,12 @@ export class SelectionManager {
|
|
|
218
218
|
} else {
|
|
219
219
|
classNamesMap.set(element, new Map([[className, 1]]));
|
|
220
220
|
}
|
|
221
|
-
if (
|
|
222
|
-
if (!
|
|
223
|
-
|
|
221
|
+
if (headerAttributes) {
|
|
222
|
+
if (!headerAttributesMap.has(element)) {
|
|
223
|
+
headerAttributesMap.set(element, []);
|
|
224
224
|
}
|
|
225
225
|
if (element.nodeName === 'TH') {
|
|
226
|
-
|
|
226
|
+
headerAttributesMap.get(element).push(...headerAttributes);
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
});
|
|
@@ -251,8 +251,8 @@ export class SelectionManager {
|
|
|
251
251
|
});
|
|
252
252
|
|
|
253
253
|
// Set the attributes for the headers if they're focused.
|
|
254
|
-
Array.from(
|
|
255
|
-
setAttribute(element, [...
|
|
254
|
+
Array.from(headerAttributesMap.keys()).forEach(element => {
|
|
255
|
+
setAttribute(element, [...headerAttributesMap.get(element)]);
|
|
256
256
|
});
|
|
257
257
|
}
|
|
258
258
|
}
|
package/base.js
CHANGED
|
@@ -43,8 +43,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
|
|
|
43
43
|
Handsontable.CellCoords = _src.CellCoords;
|
|
44
44
|
Handsontable.CellRange = _src.CellRange;
|
|
45
45
|
Handsontable.packageName = 'handsontable';
|
|
46
|
-
Handsontable.buildDate = "
|
|
47
|
-
Handsontable.version = "0.0.0-next-
|
|
46
|
+
Handsontable.buildDate = "24/11/2023 11:00:10";
|
|
47
|
+
Handsontable.version = "0.0.0-next-a417c2b-20231124";
|
|
48
48
|
Handsontable.languages = {
|
|
49
49
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
50
50
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
package/base.mjs
CHANGED
|
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
|
|
|
35
35
|
Handsontable.CellCoords = CellCoords;
|
|
36
36
|
Handsontable.CellRange = CellRange;
|
|
37
37
|
Handsontable.packageName = 'handsontable';
|
|
38
|
-
Handsontable.buildDate = "
|
|
39
|
-
Handsontable.version = "0.0.0-next-
|
|
38
|
+
Handsontable.buildDate = "24/11/2023 11:00:16";
|
|
39
|
+
Handsontable.version = "0.0.0-next-a417c2b-20231124";
|
|
40
40
|
Handsontable.languages = {
|
|
41
41
|
dictionaryKeys,
|
|
42
42
|
getLanguageDictionary,
|
|
@@ -57,7 +57,7 @@ function createInputElement(hot) {
|
|
|
57
57
|
input.type = 'text';
|
|
58
58
|
input.classList.add('htFocusCatcher');
|
|
59
59
|
if (hot.getSettings().ariaTags) {
|
|
60
|
-
(0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
|
|
60
|
+
(0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
|
|
61
61
|
}
|
|
62
62
|
return input;
|
|
63
63
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setAttribute } from "../../helpers/dom/element.mjs";
|
|
2
|
-
import { A11Y_PRESENTATION } from "../../helpers/a11y.mjs";
|
|
2
|
+
import { A11Y_PRESENTATION, A11Y_HIDDEN } from "../../helpers/a11y.mjs";
|
|
3
3
|
/**
|
|
4
4
|
* Installs a focus detector module. The module appends two input elements into the DOM side by side.
|
|
5
5
|
* When the first input is focused, then it means that a user entered to the component using the TAB key
|
|
@@ -53,7 +53,7 @@ function createInputElement(hot) {
|
|
|
53
53
|
input.type = 'text';
|
|
54
54
|
input.classList.add('htFocusCatcher');
|
|
55
55
|
if (hot.getSettings().ariaTags) {
|
|
56
|
-
setAttribute(input, [A11Y_PRESENTATION()]);
|
|
56
|
+
setAttribute(input, [A11Y_PRESENTATION(), A11Y_HIDDEN()]);
|
|
57
57
|
}
|
|
58
58
|
return input;
|
|
59
59
|
}
|
package/dist/handsontable.css
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date: 31/08/2023 (built at
|
|
28
|
+
* Version: 0.0.0-next-a417c2b-20231124
|
|
29
|
+
* Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
32
|
* Fix for bootstrap styles
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date: 31/08/2023 (built at
|
|
28
|
+
* Version: 0.0.0-next-a417c2b-20231124
|
|
29
|
+
* Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
32
|
* Fix for bootstrap styles
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date: 31/08/2023 (built at
|
|
28
|
+
* Version: 0.0.0-next-a417c2b-20231124
|
|
29
|
+
* Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
|
|
30
30
|
*/
|
|
31
31
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
32
32
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
@@ -42664,8 +42664,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
|
|
|
42664
42664
|
Handsontable.CellCoords = _src.CellCoords;
|
|
42665
42665
|
Handsontable.CellRange = _src.CellRange;
|
|
42666
42666
|
Handsontable.packageName = 'handsontable';
|
|
42667
|
-
Handsontable.buildDate = "
|
|
42668
|
-
Handsontable.version = "0.0.0-next-
|
|
42667
|
+
Handsontable.buildDate = "24/11/2023 11:00:21";
|
|
42668
|
+
Handsontable.version = "0.0.0-next-a417c2b-20231124";
|
|
42669
42669
|
Handsontable.languages = {
|
|
42670
42670
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
42671
42671
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
|
@@ -52786,7 +52786,7 @@ const domMessages = {
|
|
|
52786
52786
|
function _injectProductInfo(key, element) {
|
|
52787
52787
|
const hasValidType = !isEmpty(key);
|
|
52788
52788
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
52789
|
-
const hotVersion = "0.0.0-next-
|
|
52789
|
+
const hotVersion = "0.0.0-next-a417c2b-20231124";
|
|
52790
52790
|
let keyValidityDate;
|
|
52791
52791
|
let consoleMessageState = 'invalid';
|
|
52792
52792
|
let domMessageState = 'invalid';
|
|
@@ -73494,7 +73494,7 @@ class ColumnHeadersRenderer extends _base.default {
|
|
|
73494
73494
|
// Remove all accessibility-related attributes for the header to start fresh.
|
|
73495
73495
|
(0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
|
|
73496
73496
|
if (this.table.isAriaEnabled()) {
|
|
73497
|
-
(0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1),
|
|
73497
|
+
(0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), (0, _a11y.A11Y_COLUMNHEADER)(), ...(renderedColumnIndex >= 0 ? [(0, _a11y.A11Y_SCOPE_COL)()] : [])]);
|
|
73498
73498
|
}
|
|
73499
73499
|
columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
|
|
73500
73500
|
}
|
|
@@ -77062,12 +77062,12 @@ class SelectionManager {
|
|
|
77062
77062
|
}
|
|
77063
77063
|
const selections = Array.from((0, _classPrivateFieldGet7.default)(this, _selections));
|
|
77064
77064
|
const classNamesMap = new Map();
|
|
77065
|
-
const
|
|
77065
|
+
const headerAttributesMap = new Map();
|
|
77066
77066
|
for (let i = 0; i < selections.length; i++) {
|
|
77067
77067
|
const selection = selections[i];
|
|
77068
77068
|
const {
|
|
77069
77069
|
className,
|
|
77070
|
-
|
|
77070
|
+
headerAttributes,
|
|
77071
77071
|
createLayers,
|
|
77072
77072
|
selectionType
|
|
77073
77073
|
} = selection.settings;
|
|
@@ -77094,12 +77094,12 @@ class SelectionManager {
|
|
|
77094
77094
|
} else {
|
|
77095
77095
|
classNamesMap.set(element, new Map([[className, 1]]));
|
|
77096
77096
|
}
|
|
77097
|
-
if (
|
|
77098
|
-
if (!
|
|
77099
|
-
|
|
77097
|
+
if (headerAttributes) {
|
|
77098
|
+
if (!headerAttributesMap.has(element)) {
|
|
77099
|
+
headerAttributesMap.set(element, []);
|
|
77100
77100
|
}
|
|
77101
77101
|
if (element.nodeName === 'TH') {
|
|
77102
|
-
|
|
77102
|
+
headerAttributesMap.get(element).push(...headerAttributes);
|
|
77103
77103
|
}
|
|
77104
77104
|
}
|
|
77105
77105
|
});
|
|
@@ -77127,8 +77127,8 @@ class SelectionManager {
|
|
|
77127
77127
|
});
|
|
77128
77128
|
|
|
77129
77129
|
// Set the attributes for the headers if they're focused.
|
|
77130
|
-
Array.from(
|
|
77131
|
-
(0, _element.setAttribute)(element, [...
|
|
77130
|
+
Array.from(headerAttributesMap.keys()).forEach(element => {
|
|
77131
|
+
(0, _element.setAttribute)(element, [...headerAttributesMap.get(element)]);
|
|
77132
77132
|
});
|
|
77133
77133
|
}
|
|
77134
77134
|
}
|
|
@@ -83118,7 +83118,6 @@ class Selection {
|
|
|
83118
83118
|
this.tableProps = tableProps;
|
|
83119
83119
|
this.highlight = new _highlight.default({
|
|
83120
83120
|
headerClassName: settings.currentHeaderClassName,
|
|
83121
|
-
headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
|
|
83122
83121
|
activeHeaderClassName: settings.activeHeaderClassName,
|
|
83123
83122
|
rowClassName: settings.currentRowClassName,
|
|
83124
83123
|
columnClassName: settings.currentColClassName,
|
|
@@ -84717,27 +84716,23 @@ exports.__esModule = true;
|
|
|
84717
84716
|
exports.createHighlight = createHighlight;
|
|
84718
84717
|
var _src = __webpack_require__(478);
|
|
84719
84718
|
var _visualSelection = _interopRequireDefault(__webpack_require__(581));
|
|
84719
|
+
var _a11y = __webpack_require__(445);
|
|
84720
84720
|
/**
|
|
84721
84721
|
* Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
|
|
84722
84722
|
* can present on the table only one at the time.
|
|
84723
84723
|
*
|
|
84724
84724
|
* @param {object} highlightParams A configuration object to create a highlight.
|
|
84725
84725
|
* @param {Function} highlightParams.cellCornerVisible Function to determine if cell's corner should be visible.
|
|
84726
|
-
* @param {Function} highlightParams.cellAttributes Array of cell attributes.
|
|
84727
|
-
* @param {Function} highlightParams.headerAttributes Array of header attributes.
|
|
84728
84726
|
* @returns {Selection}
|
|
84729
84727
|
*/
|
|
84730
84728
|
function createHighlight(_ref) {
|
|
84731
84729
|
let {
|
|
84732
84730
|
cellCornerVisible,
|
|
84733
|
-
cellAttributes,
|
|
84734
|
-
headerAttributes,
|
|
84735
84731
|
...restOptions
|
|
84736
84732
|
} = _ref;
|
|
84737
84733
|
return new _visualSelection.default({
|
|
84738
84734
|
className: 'current',
|
|
84739
|
-
|
|
84740
|
-
focusedHeaderAttributes: headerAttributes,
|
|
84735
|
+
headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
|
|
84741
84736
|
border: {
|
|
84742
84737
|
width: 2,
|
|
84743
84738
|
color: '#4b89ff',
|
|
@@ -94650,7 +94645,7 @@ function createInputElement(hot) {
|
|
|
94650
94645
|
input.type = 'text';
|
|
94651
94646
|
input.classList.add('htFocusCatcher');
|
|
94652
94647
|
if (hot.getSettings().ariaTags) {
|
|
94653
|
-
(0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
|
|
94648
|
+
(0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
|
|
94654
94649
|
}
|
|
94655
94650
|
return input;
|
|
94656
94651
|
}
|
|
@@ -117416,7 +117411,16 @@ class Filters extends _base.BasePlugin {
|
|
|
117416
117411
|
// A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
|
|
117417
117412
|
// to the menu navigation using arrow keys.
|
|
117418
117413
|
{
|
|
117419
|
-
focus: () =>
|
|
117414
|
+
focus: () => {
|
|
117415
|
+
const menuNavigator = mainMenu.getNavigator();
|
|
117416
|
+
const lastSelectedMenuItem = (0, _classPrivateFieldGet2.default)(this, _menuFocusNavigator).getLastMenuPage();
|
|
117417
|
+
mainMenu.focus();
|
|
117418
|
+
if (lastSelectedMenuItem > 0) {
|
|
117419
|
+
menuNavigator.setCurrentPage(lastSelectedMenuItem);
|
|
117420
|
+
} else {
|
|
117421
|
+
menuNavigator.toFirstItem();
|
|
117422
|
+
}
|
|
117423
|
+
}
|
|
117420
117424
|
}, ...Array.from(this.components).map(_ref => {
|
|
117421
117425
|
let [, component] = _ref;
|
|
117422
117426
|
return component.getElements();
|
|
@@ -122085,12 +122089,17 @@ const SHORTCUTS_MENU_CONTEXT = 'filters';
|
|
|
122085
122089
|
* @returns {Paginator}
|
|
122086
122090
|
*/
|
|
122087
122091
|
function createMenuFocusController(mainMenu, menuItems) {
|
|
122088
|
-
|
|
122092
|
+
/**
|
|
122093
|
+
* @type {number} The last selected menu item (before clearing the the menu state after going
|
|
122094
|
+
* into the focus mode triggered by the TAB or SHIFT+TAB keys).
|
|
122095
|
+
*/
|
|
122096
|
+
let lastSelectedMenuItem = -1;
|
|
122097
|
+
const focusNavigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
|
|
122089
122098
|
const updateNavigatorPosition = element => () => {
|
|
122090
122099
|
if (mainMenu.isOpened()) {
|
|
122091
122100
|
mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
|
|
122092
122101
|
}
|
|
122093
|
-
|
|
122102
|
+
focusNavigator.setCurrentPage(menuItems.indexOf(element));
|
|
122094
122103
|
};
|
|
122095
122104
|
|
|
122096
122105
|
// update navigator position (internal state) to element that was recently clicked or focused
|
|
@@ -122103,7 +122112,7 @@ function createMenuFocusController(mainMenu, menuItems) {
|
|
|
122103
122112
|
});
|
|
122104
122113
|
mainMenu.addLocalHook('afterSelectionChange', selectedItem => {
|
|
122105
122114
|
if (!selectedItem.key.startsWith('filter_')) {
|
|
122106
|
-
|
|
122115
|
+
focusNavigator.clear();
|
|
122107
122116
|
}
|
|
122108
122117
|
});
|
|
122109
122118
|
|
|
@@ -122115,7 +122124,7 @@ function createMenuFocusController(mainMenu, menuItems) {
|
|
|
122115
122124
|
function addKeyboardShortcuts(menu) {
|
|
122116
122125
|
const mainMenuShortcutsCtrl = mainMenu.getKeyboardShortcutsCtrl();
|
|
122117
122126
|
const currentMenuShortcutsCtrl = menu.getKeyboardShortcutsCtrl();
|
|
122118
|
-
|
|
122127
|
+
focusNavigator.clear();
|
|
122119
122128
|
currentMenuShortcutsCtrl.addCustomShortcuts([{
|
|
122120
122129
|
keys: [['Tab'], ['Shift', 'Tab']],
|
|
122121
122130
|
forwardToContext: mainMenuShortcutsCtrl.getContext(SHORTCUTS_MENU_CONTEXT),
|
|
@@ -122132,11 +122141,15 @@ function createMenuFocusController(mainMenu, menuItems) {
|
|
|
122132
122141
|
mainMenuShortcutsCtrl.addCustomShortcuts([{
|
|
122133
122142
|
keys: [['Tab'], ['Shift', 'Tab']],
|
|
122134
122143
|
callback: event => {
|
|
122135
|
-
mainMenu.getNavigator()
|
|
122144
|
+
const menuNavigator = mainMenu.getNavigator();
|
|
122145
|
+
if (menuNavigator.getCurrentPage() > -1) {
|
|
122146
|
+
lastSelectedMenuItem = menuNavigator.getCurrentPage();
|
|
122147
|
+
}
|
|
122148
|
+
menuNavigator.clear();
|
|
122136
122149
|
if (event.shiftKey) {
|
|
122137
|
-
|
|
122150
|
+
focusNavigator.toPreviousItem();
|
|
122138
122151
|
} else {
|
|
122139
|
-
|
|
122152
|
+
focusNavigator.toNextItem();
|
|
122140
122153
|
}
|
|
122141
122154
|
}
|
|
122142
122155
|
}, {
|
|
@@ -122148,7 +122161,7 @@ function createMenuFocusController(mainMenu, menuItems) {
|
|
|
122148
122161
|
keys: [['Enter'], ['Space']],
|
|
122149
122162
|
preventDefault: false,
|
|
122150
122163
|
callback: event => {
|
|
122151
|
-
const element = menuItems[
|
|
122164
|
+
const element = menuItems[focusNavigator.getCurrentPage()];
|
|
122152
122165
|
if (element instanceof _select.SelectUI) {
|
|
122153
122166
|
element.openOptions();
|
|
122154
122167
|
event.preventDefault();
|
|
@@ -122174,9 +122187,19 @@ function createMenuFocusController(mainMenu, menuItems) {
|
|
|
122174
122187
|
mainMenu.focus();
|
|
122175
122188
|
mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
|
|
122176
122189
|
}
|
|
122190
|
+
|
|
122191
|
+
/**
|
|
122192
|
+
* Retrieves the last selected menu item (before clearing the state after going into the focus mode).
|
|
122193
|
+
*
|
|
122194
|
+
* @returns {number} The last selected menu item.
|
|
122195
|
+
*/
|
|
122196
|
+
function getLastMenuPage() {
|
|
122197
|
+
return lastSelectedMenuItem;
|
|
122198
|
+
}
|
|
122177
122199
|
return {
|
|
122178
|
-
...
|
|
122179
|
-
listen
|
|
122200
|
+
...focusNavigator,
|
|
122201
|
+
listen,
|
|
122202
|
+
getLastMenuPage
|
|
122180
122203
|
};
|
|
122181
122204
|
}
|
|
122182
122205
|
|
|
@@ -136611,6 +136634,7 @@ class NestedRows extends _base.BasePlugin {
|
|
|
136611
136634
|
/**
|
|
136612
136635
|
* The modifyRowData hook callback.
|
|
136613
136636
|
*
|
|
136637
|
+
* @private
|
|
136614
136638
|
* @param {number} row Visual row index.
|
|
136615
136639
|
* @returns {boolean}
|
|
136616
136640
|
*/
|
|
@@ -136624,6 +136648,7 @@ class NestedRows extends _base.BasePlugin {
|
|
|
136624
136648
|
/**
|
|
136625
136649
|
* Modify the source data length to match the length of the nested structure.
|
|
136626
136650
|
*
|
|
136651
|
+
* @private
|
|
136627
136652
|
* @returns {number}
|
|
136628
136653
|
*/
|
|
136629
136654
|
onModifySourceLength() {
|
|
@@ -136634,6 +136659,7 @@ class NestedRows extends _base.BasePlugin {
|
|
|
136634
136659
|
}
|
|
136635
136660
|
|
|
136636
136661
|
/**
|
|
136662
|
+
* @private
|
|
136637
136663
|
* @param {number} index The index where the data was spliced.
|
|
136638
136664
|
* @param {number} amount An amount of items to remove.
|
|
136639
136665
|
* @param {object} element An element to add.
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date: 31/08/2023 (built at
|
|
28
|
+
* Version: 0.0.0-next-a417c2b-20231124
|
|
29
|
+
* Release date: 31/08/2023 (built at 24/11/2023 11:00:38)
|
|
30
30
|
*/.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable th:nth-child(2){border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;bottom:-100%\9;content:"";left:0;position:absolute;right:0;top:0}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.htSelectEditor:focus{outline:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}
|
|
31
31
|
/*!
|
|
32
32
|
* Pikaday
|