@pingux/astro 2.32.0-alpha.12 → 2.32.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/ImageUploadField/ImageUploadField.test.js +47 -14
- package/lib/cjs/components/TreeView/TreeView.js +99 -11
- package/lib/cjs/components/TreeView/TreeView.stories.js +23 -10
- package/lib/cjs/components/TreeView/TreeView.styles.js +22 -2
- package/lib/cjs/components/TreeView/TreeView.test.js +91 -11
- package/lib/cjs/components/TreeView/TreeViewItem.js +112 -14
- package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.js +200 -0
- package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.test.js +511 -0
- package/lib/cjs/components/TreeView/TreeViewRow.js +20 -5
- package/lib/cjs/components/TreeView/TreeViewSection.js +164 -16
- package/lib/cjs/components/TreeView/TreeViewWrapper.js +40 -0
- package/lib/cjs/hooks/useImageUploadState/index.d.ts +1 -0
- package/lib/cjs/hooks/useImageUploadState/useImageUploadState.d.ts +28 -0
- package/lib/cjs/hooks/useImageUploadState/useImageUploadState.js +9 -6
- package/lib/cjs/hooks/useModalState/index.d.ts +1 -0
- package/lib/cjs/hooks/useModalState/useModalState.d.ts +21 -0
- package/lib/cjs/hooks/useModalState/useModalState.js +0 -9
- package/lib/cjs/hooks/useModalState/useModalState.test.d.ts +1 -0
- package/lib/cjs/utils/testUtils/setupTests.d.ts +4 -0
- package/lib/cjs/utils/testUtils/testAxe.d.ts +2 -0
- package/lib/cjs/utils/testUtils/testTheme.d.ts +21 -0
- package/lib/cjs/utils/testUtils/testWrapper.d.ts +5 -0
- package/lib/cjs/utils/testUtils/testWrapper.js +3 -2
- package/lib/components/ImageUploadField/ImageUploadField.test.js +47 -14
- package/lib/components/TreeView/TreeView.js +100 -12
- package/lib/components/TreeView/TreeView.stories.js +23 -10
- package/lib/components/TreeView/TreeView.styles.js +22 -2
- package/lib/components/TreeView/TreeView.test.js +92 -12
- package/lib/components/TreeView/TreeViewItem.js +111 -14
- package/lib/components/TreeView/TreeViewKeyboardDelegate.js +176 -0
- package/lib/components/TreeView/TreeViewKeyboardDelegate.test.js +496 -0
- package/lib/components/TreeView/TreeViewRow.js +20 -5
- package/lib/components/TreeView/TreeViewSection.js +161 -16
- package/lib/components/TreeView/TreeViewWrapper.js +31 -0
- package/lib/hooks/useImageUploadState/useImageUploadState.js +9 -6
- package/lib/hooks/useModalState/useModalState.js +0 -10
- package/lib/utils/testUtils/testWrapper.js +3 -2
- package/package.json +1 -1
@@ -0,0 +1,511 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
7
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
8
|
+
_Object$defineProperty(exports, "__esModule", {
|
9
|
+
value: true
|
10
|
+
});
|
11
|
+
exports.refArray = exports.flatKeyArray = void 0;
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
13
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
15
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
16
|
+
var _isIterable = require("../../utils/devUtils/props/isIterable");
|
17
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
18
|
+
var _TreeViewItem = require("./TreeViewItem");
|
19
|
+
var _TreeViewKeyboardDelegate = require("./TreeViewKeyboardDelegate");
|
20
|
+
var _TreeViewSection = require("./TreeViewSection");
|
21
|
+
var _react2 = require("@emotion/react");
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
23
|
+
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; }
|
24
|
+
var testId = 'test-keyboard-tree';
|
25
|
+
var toggleKey = jest.fn();
|
26
|
+
var setSelectedKeys = jest.fn();
|
27
|
+
var focusPrevious = jest.fn();
|
28
|
+
var focusNext = jest.fn();
|
29
|
+
var refFocus = jest.fn();
|
30
|
+
var state = {
|
31
|
+
toggleKey: toggleKey
|
32
|
+
};
|
33
|
+
var tree = {
|
34
|
+
setSelectedKeys: setSelectedKeys
|
35
|
+
};
|
36
|
+
var focusManager = {
|
37
|
+
focusPrevious: focusPrevious,
|
38
|
+
focusNext: focusNext
|
39
|
+
};
|
40
|
+
var refArray = [{
|
41
|
+
key: 'testprior',
|
42
|
+
thisRef: {
|
43
|
+
current: {
|
44
|
+
focus: refFocus
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}, {
|
48
|
+
key: 'test',
|
49
|
+
thisRef: {
|
50
|
+
current: {
|
51
|
+
focus: refFocus
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}, {
|
55
|
+
key: 'testsecond',
|
56
|
+
thisRef: {
|
57
|
+
current: {
|
58
|
+
focus: refFocus
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}];
|
62
|
+
exports.refArray = refArray;
|
63
|
+
var flatKeyArray = [{
|
64
|
+
key: 'testprior'
|
65
|
+
}, {
|
66
|
+
key: 'test'
|
67
|
+
}, {
|
68
|
+
key: 'testsecond'
|
69
|
+
}];
|
70
|
+
exports.flatKeyArray = flatKeyArray;
|
71
|
+
var defaultProps = {
|
72
|
+
'data-testid': testId,
|
73
|
+
focusManager: focusManager,
|
74
|
+
state: state,
|
75
|
+
tree: tree,
|
76
|
+
key: 'test',
|
77
|
+
flatKeyArray: flatKeyArray,
|
78
|
+
refArray: refArray
|
79
|
+
};
|
80
|
+
var TestComponent = function TestComponent(props) {
|
81
|
+
var focusManagerProp = props.focusManager,
|
82
|
+
stateProp = props.state,
|
83
|
+
treeProp = props.tree,
|
84
|
+
isSelected = props.isSelected,
|
85
|
+
isExpanded = props.isExpanded,
|
86
|
+
_props$isInRefArray = props.isInRefArray,
|
87
|
+
isInRefArray = _props$isInRefArray === void 0 ? true : _props$isInRefArray,
|
88
|
+
flatKeyArrayProp = props.flatKeyArray,
|
89
|
+
refArrayProp = props.refArray;
|
90
|
+
var thisRef = (0, _react.useRef)(null);
|
91
|
+
var testOnKeyDown = function testOnKeyDown(e) {
|
92
|
+
props.onKeyDown(e, stateProp, 'test', treeProp, isSelected, isExpanded, focusManagerProp, flatKeyArrayProp, refArrayProp, 5, true);
|
93
|
+
};
|
94
|
+
var testOnKeyDownAddRef = function testOnKeyDownAddRef(e) {
|
95
|
+
var _context;
|
96
|
+
props.onKeyDown(e, stateProp, 'test', treeProp, isSelected, isExpanded, focusManagerProp, flatKeyArrayProp, (0, _concat["default"])(_context = []).call(_context, refArrayProp, [{
|
97
|
+
key: 'button',
|
98
|
+
thisRef: thisRef
|
99
|
+
}]), 5, true);
|
100
|
+
};
|
101
|
+
return (0, _react2.jsx)("div", null, (0, _react2.jsx)("button", {
|
102
|
+
ref: thisRef,
|
103
|
+
onKeyDown: function onKeyDown(e) {
|
104
|
+
return isInRefArray ? testOnKeyDownAddRef(e) : testOnKeyDown(e);
|
105
|
+
}
|
106
|
+
}, "let us test keypresses"));
|
107
|
+
};
|
108
|
+
TestComponent.propTypes = {
|
109
|
+
isInRefArray: _propTypes["default"].bool,
|
110
|
+
isEventTargetAKey: _propTypes["default"].bool,
|
111
|
+
state: _propTypes["default"].shape({
|
112
|
+
toggleKey: _propTypes["default"].func
|
113
|
+
}),
|
114
|
+
tree: _propTypes["default"].shape({
|
115
|
+
setSelectedKeys: _propTypes["default"].func
|
116
|
+
}),
|
117
|
+
focusManager: _propTypes["default"].shape({
|
118
|
+
focusPrevious: _propTypes["default"].func,
|
119
|
+
focusNext: _propTypes["default"].func
|
120
|
+
}),
|
121
|
+
isExpanded: _propTypes["default"].bool,
|
122
|
+
isSelected: _propTypes["default"].bool,
|
123
|
+
onKeyDown: _propTypes["default"].func,
|
124
|
+
flatKeyArray: _isIterable.isIterableProp,
|
125
|
+
refArray: _isIterable.isIterableProp
|
126
|
+
};
|
127
|
+
var getComponent = function getComponent() {
|
128
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
129
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(TestComponent, (0, _extends2["default"])({}, defaultProps, props)));
|
130
|
+
};
|
131
|
+
afterEach(function () {
|
132
|
+
jest.clearAllMocks();
|
133
|
+
});
|
134
|
+
afterAll(function () {
|
135
|
+
jest.restoreAllMocks();
|
136
|
+
});
|
137
|
+
test('OnEnterPress calls when enter is pressed', function () {
|
138
|
+
getComponent({
|
139
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
140
|
+
});
|
141
|
+
var button = _testWrapper.screen.getByRole('button');
|
142
|
+
_testWrapper.fireEvent.keyDown(button, {
|
143
|
+
key: 'Enter',
|
144
|
+
keyCode: 13
|
145
|
+
});
|
146
|
+
_testWrapper.fireEvent.keyUp(button, {
|
147
|
+
key: 'Enter',
|
148
|
+
keyCode: 13
|
149
|
+
});
|
150
|
+
expect(toggleKey).toHaveBeenCalled();
|
151
|
+
});
|
152
|
+
test('onSpacePress calls when space is pressed', function () {
|
153
|
+
getComponent({
|
154
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
155
|
+
});
|
156
|
+
var button = _testWrapper.screen.getByRole('button');
|
157
|
+
_testWrapper.fireEvent.keyDown(button, {
|
158
|
+
key: 'Space',
|
159
|
+
keyCode: 32
|
160
|
+
});
|
161
|
+
_testWrapper.fireEvent.keyUp(button, {
|
162
|
+
key: 'Space',
|
163
|
+
keyCode: 32
|
164
|
+
});
|
165
|
+
expect(setSelectedKeys).toHaveBeenCalled();
|
166
|
+
});
|
167
|
+
test('onSpacePress calls when space is pressed, and selected', function () {
|
168
|
+
getComponent({
|
169
|
+
onKeyDown: _TreeViewSection.onKeyDownSection,
|
170
|
+
isSelected: true
|
171
|
+
});
|
172
|
+
var button = _testWrapper.screen.getByRole('button');
|
173
|
+
_testWrapper.fireEvent.keyDown(button, {
|
174
|
+
key: 'Space',
|
175
|
+
keyCode: 32
|
176
|
+
});
|
177
|
+
_testWrapper.fireEvent.keyUp(button, {
|
178
|
+
key: 'Space',
|
179
|
+
keyCode: 32
|
180
|
+
});
|
181
|
+
expect(setSelectedKeys).toHaveBeenCalled();
|
182
|
+
});
|
183
|
+
test('onSpacePress calls when space is pressed, item', function () {
|
184
|
+
getComponent({
|
185
|
+
onKeyDown: _TreeViewItem.onKeyDownItem,
|
186
|
+
isInRefArray: false
|
187
|
+
});
|
188
|
+
var button = _testWrapper.screen.getByRole('button');
|
189
|
+
_testWrapper.fireEvent.keyDown(button, {
|
190
|
+
key: 'Space',
|
191
|
+
keyCode: 32
|
192
|
+
});
|
193
|
+
_testWrapper.fireEvent.keyUp(button, {
|
194
|
+
key: 'Space',
|
195
|
+
keyCode: 32
|
196
|
+
});
|
197
|
+
expect(setSelectedKeys).toHaveBeenCalled();
|
198
|
+
});
|
199
|
+
test('onLeftPress calls when Left Arrow is pressed and expanded', function () {
|
200
|
+
getComponent({
|
201
|
+
isExpanded: true,
|
202
|
+
onKeyDown: _TreeViewSection.onKeyDownSection,
|
203
|
+
isInRefArray: false
|
204
|
+
});
|
205
|
+
var button = _testWrapper.screen.getByRole('button');
|
206
|
+
_testWrapper.fireEvent.keyDown(button, {
|
207
|
+
key: 'ArrowLeft',
|
208
|
+
keyCode: 37
|
209
|
+
});
|
210
|
+
_testWrapper.fireEvent.keyUp(button, {
|
211
|
+
key: 'ArrowLeft',
|
212
|
+
keyCode: 37
|
213
|
+
});
|
214
|
+
expect(toggleKey).not.toHaveBeenCalled();
|
215
|
+
expect(focusPrevious).toHaveBeenCalled();
|
216
|
+
});
|
217
|
+
test('onLeftPress does not call when Left Arrow is pressed and NOT expanded', function () {
|
218
|
+
getComponent({
|
219
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
220
|
+
});
|
221
|
+
var button = _testWrapper.screen.getByRole('button');
|
222
|
+
_testWrapper.fireEvent.keyDown(button, {
|
223
|
+
key: 'ArrowLeft',
|
224
|
+
keyCode: 37
|
225
|
+
});
|
226
|
+
_testWrapper.fireEvent.keyUp(button, {
|
227
|
+
key: 'ArrowLeft',
|
228
|
+
keyCode: 37
|
229
|
+
});
|
230
|
+
expect(toggleKey).not.toHaveBeenCalled();
|
231
|
+
expect(focusPrevious).not.toHaveBeenCalled();
|
232
|
+
});
|
233
|
+
test('onRightPress calls when Right Arrow is pressed and NOT expanded', function () {
|
234
|
+
getComponent({
|
235
|
+
onKeyDown: _TreeViewSection.onKeyDownSection,
|
236
|
+
isInRefArray: false
|
237
|
+
});
|
238
|
+
var button = _testWrapper.screen.getByRole('button');
|
239
|
+
_testWrapper.fireEvent.keyDown(button, {
|
240
|
+
key: 'ArrowRight',
|
241
|
+
keyCode: 39
|
242
|
+
});
|
243
|
+
_testWrapper.fireEvent.keyUp(button, {
|
244
|
+
key: 'ArrowRight',
|
245
|
+
keyCode: 39
|
246
|
+
});
|
247
|
+
expect(toggleKey).toHaveBeenCalled();
|
248
|
+
expect(focusNext).not.toHaveBeenCalled();
|
249
|
+
});
|
250
|
+
test('onRightPress calls correct callback when Right Arrow is pressed and expanded', function () {
|
251
|
+
getComponent({
|
252
|
+
onKeyDown: _TreeViewSection.onKeyDownSection,
|
253
|
+
isExpanded: true,
|
254
|
+
isInRefArray: false
|
255
|
+
});
|
256
|
+
var button = _testWrapper.screen.getByRole('button');
|
257
|
+
_testWrapper.fireEvent.keyDown(button, {
|
258
|
+
key: 'ArrowRight',
|
259
|
+
keyCode: 39
|
260
|
+
});
|
261
|
+
_testWrapper.fireEvent.keyUp(button, {
|
262
|
+
key: 'ArrowRight',
|
263
|
+
keyCode: 39
|
264
|
+
});
|
265
|
+
expect(toggleKey).not.toHaveBeenCalled();
|
266
|
+
expect(focusNext).not.toHaveBeenCalled();
|
267
|
+
});
|
268
|
+
test('onLeftPress calls when Left Arrow is pressed and expanded', function () {
|
269
|
+
getComponent({
|
270
|
+
isExpanded: true,
|
271
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
272
|
+
});
|
273
|
+
var button = _testWrapper.screen.getByRole('button');
|
274
|
+
_testWrapper.fireEvent.keyDown(button, {
|
275
|
+
key: 'ArrowRight',
|
276
|
+
keyCode: 39
|
277
|
+
});
|
278
|
+
_testWrapper.fireEvent.keyUp(button, {
|
279
|
+
key: 'ArrowRight',
|
280
|
+
keyCode: 39
|
281
|
+
});
|
282
|
+
expect(toggleKey).not.toHaveBeenCalled();
|
283
|
+
});
|
284
|
+
test('onDownPress calls when down Arrow is pressed and expanded', function () {
|
285
|
+
getComponent({
|
286
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
287
|
+
});
|
288
|
+
var button = _testWrapper.screen.getByRole('button');
|
289
|
+
_testWrapper.fireEvent.keyDown(button, {
|
290
|
+
key: 'ArrowDown',
|
291
|
+
keyCode: 40
|
292
|
+
});
|
293
|
+
_testWrapper.fireEvent.keyUp(button, {
|
294
|
+
key: 'ArrowDown',
|
295
|
+
keyCode: 40
|
296
|
+
});
|
297
|
+
expect(refFocus).toHaveBeenCalled();
|
298
|
+
});
|
299
|
+
test('onUpPress calls when down Arrow is pressed and expanded', function () {
|
300
|
+
getComponent({
|
301
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
302
|
+
});
|
303
|
+
var button = _testWrapper.screen.getByRole('button');
|
304
|
+
_testWrapper.fireEvent.keyDown(button, {
|
305
|
+
key: 'ArrowUp',
|
306
|
+
keyCode: 38
|
307
|
+
});
|
308
|
+
_testWrapper.fireEvent.keyUp(button, {
|
309
|
+
key: 'ArrowUp',
|
310
|
+
keyCode: 38
|
311
|
+
});
|
312
|
+
expect(refFocus).toHaveBeenCalled();
|
313
|
+
});
|
314
|
+
test('onUpPress calls when down Arrow is pressed and expanded for items', function () {
|
315
|
+
getComponent({
|
316
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
317
|
+
});
|
318
|
+
var button = _testWrapper.screen.getByRole('button');
|
319
|
+
_testWrapper.fireEvent.keyDown(button, {
|
320
|
+
key: 'ArrowUp',
|
321
|
+
keyCode: 38
|
322
|
+
});
|
323
|
+
_testWrapper.fireEvent.keyUp(button, {
|
324
|
+
key: 'ArrowUp',
|
325
|
+
keyCode: 38
|
326
|
+
});
|
327
|
+
expect(refFocus).toHaveBeenCalled();
|
328
|
+
});
|
329
|
+
test('onPageUpPress calls when page up is pressed', function () {
|
330
|
+
getComponent({
|
331
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
332
|
+
});
|
333
|
+
var button = _testWrapper.screen.getByRole('button');
|
334
|
+
_testWrapper.fireEvent.keyDown(button, {
|
335
|
+
key: 'PageUp',
|
336
|
+
keyCode: 33
|
337
|
+
});
|
338
|
+
_testWrapper.fireEvent.keyUp(button, {
|
339
|
+
key: 'PageUp',
|
340
|
+
keyCode: 33
|
341
|
+
});
|
342
|
+
expect(refFocus).toHaveBeenCalled();
|
343
|
+
});
|
344
|
+
test('onPageUpPress calls when page up is pressed, on section', function () {
|
345
|
+
getComponent({
|
346
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
347
|
+
});
|
348
|
+
var button = _testWrapper.screen.getByRole('button');
|
349
|
+
_testWrapper.fireEvent.keyDown(button, {
|
350
|
+
key: 'PageUp',
|
351
|
+
keyCode: 33
|
352
|
+
});
|
353
|
+
_testWrapper.fireEvent.keyUp(button, {
|
354
|
+
key: 'PageUp',
|
355
|
+
keyCode: 33
|
356
|
+
});
|
357
|
+
expect(refFocus).toHaveBeenCalled();
|
358
|
+
});
|
359
|
+
test('onPageDownPress calls when page up is pressed', function () {
|
360
|
+
getComponent({
|
361
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
362
|
+
});
|
363
|
+
var button = _testWrapper.screen.getByRole('button');
|
364
|
+
_testWrapper.fireEvent.keyDown(button, {
|
365
|
+
key: 'PageDown',
|
366
|
+
keyCode: 34
|
367
|
+
});
|
368
|
+
_testWrapper.fireEvent.keyUp(button, {
|
369
|
+
key: 'PageDown',
|
370
|
+
keyCode: 34
|
371
|
+
});
|
372
|
+
expect(refFocus).toHaveBeenCalled();
|
373
|
+
});
|
374
|
+
test('onPageDownPress calls when page up is pressed, on section', function () {
|
375
|
+
getComponent({
|
376
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
377
|
+
});
|
378
|
+
var button = _testWrapper.screen.getByRole('button');
|
379
|
+
_testWrapper.fireEvent.keyDown(button, {
|
380
|
+
key: 'PageDown',
|
381
|
+
keyCode: 34
|
382
|
+
});
|
383
|
+
_testWrapper.fireEvent.keyUp(button, {
|
384
|
+
key: 'PageDown',
|
385
|
+
keyCode: 34
|
386
|
+
});
|
387
|
+
expect(refFocus).toHaveBeenCalled();
|
388
|
+
});
|
389
|
+
test('onDownPress calls when down Arrow is pressed and expanded, for items', function () {
|
390
|
+
getComponent({
|
391
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
392
|
+
});
|
393
|
+
var button = _testWrapper.screen.getByRole('button');
|
394
|
+
_testWrapper.fireEvent.keyDown(button, {
|
395
|
+
key: 'ArrowDown',
|
396
|
+
keyCode: 40
|
397
|
+
});
|
398
|
+
_testWrapper.fireEvent.keyUp(button, {
|
399
|
+
key: 'ArrowDown',
|
400
|
+
keyCode: 40
|
401
|
+
});
|
402
|
+
expect(refFocus).toHaveBeenCalled();
|
403
|
+
});
|
404
|
+
test('onTabPress calls correct callbacks', function () {
|
405
|
+
getComponent({
|
406
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
407
|
+
});
|
408
|
+
var button = _testWrapper.screen.getByRole('button');
|
409
|
+
_testWrapper.fireEvent.keyDown(button, {
|
410
|
+
key: 'Tab',
|
411
|
+
keyCode: 9
|
412
|
+
});
|
413
|
+
_testWrapper.fireEvent.keyUp(button, {
|
414
|
+
key: 'Tab',
|
415
|
+
keyCode: 9
|
416
|
+
});
|
417
|
+
expect(focusNext).not.toHaveBeenCalled();
|
418
|
+
});
|
419
|
+
test('onTabPress calls correct callbacks', function () {
|
420
|
+
getComponent({
|
421
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
422
|
+
});
|
423
|
+
var button = _testWrapper.screen.getByRole('button');
|
424
|
+
_testWrapper.fireEvent.keyDown(button, {
|
425
|
+
key: 'Tab',
|
426
|
+
keyCode: 9
|
427
|
+
});
|
428
|
+
_testWrapper.fireEvent.keyUp(button, {
|
429
|
+
key: 'Tab',
|
430
|
+
keyCode: 9
|
431
|
+
});
|
432
|
+
expect(focusNext).toHaveBeenCalled();
|
433
|
+
});
|
434
|
+
test('onEndPress calls correct callbacks', function () {
|
435
|
+
getComponent({
|
436
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
437
|
+
});
|
438
|
+
var button = _testWrapper.screen.getByRole('button');
|
439
|
+
_testWrapper.fireEvent.keyDown(button, {
|
440
|
+
key: 'End',
|
441
|
+
keyCode: 35
|
442
|
+
});
|
443
|
+
_testWrapper.fireEvent.keyUp(button, {
|
444
|
+
key: 'End',
|
445
|
+
keyCode: 35
|
446
|
+
});
|
447
|
+
expect(refFocus).toHaveBeenCalled();
|
448
|
+
});
|
449
|
+
test('onEndPress calls correct callbacks', function () {
|
450
|
+
getComponent({
|
451
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
452
|
+
});
|
453
|
+
var button = _testWrapper.screen.getByRole('button');
|
454
|
+
_testWrapper.fireEvent.keyDown(button, {
|
455
|
+
key: 'End',
|
456
|
+
keyCode: 35
|
457
|
+
});
|
458
|
+
_testWrapper.fireEvent.keyUp(button, {
|
459
|
+
key: 'End',
|
460
|
+
keyCode: 35
|
461
|
+
});
|
462
|
+
expect(refFocus).toHaveBeenCalled();
|
463
|
+
});
|
464
|
+
test('onHomePress calls correct callbacks', function () {
|
465
|
+
getComponent({
|
466
|
+
onKeyDown: _TreeViewSection.onKeyDownSection
|
467
|
+
});
|
468
|
+
var button = _testWrapper.screen.getByRole('button');
|
469
|
+
_testWrapper.fireEvent.keyDown(button, {
|
470
|
+
key: 'Home',
|
471
|
+
keyCode: 36
|
472
|
+
});
|
473
|
+
_testWrapper.fireEvent.keyUp(button, {
|
474
|
+
key: 'Home',
|
475
|
+
keyCode: 36
|
476
|
+
});
|
477
|
+
expect(refFocus).toHaveBeenCalled();
|
478
|
+
});
|
479
|
+
test('onHomePress calls correct callbacks', function () {
|
480
|
+
getComponent({
|
481
|
+
onKeyDown: _TreeViewItem.onKeyDownItem
|
482
|
+
});
|
483
|
+
var button = _testWrapper.screen.getByRole('button');
|
484
|
+
_testWrapper.fireEvent.keyDown(button, {
|
485
|
+
key: 'Home',
|
486
|
+
keyCode: 36
|
487
|
+
});
|
488
|
+
_testWrapper.fireEvent.keyUp(button, {
|
489
|
+
key: 'Home',
|
490
|
+
keyCode: 36
|
491
|
+
});
|
492
|
+
expect(refFocus).toHaveBeenCalled();
|
493
|
+
});
|
494
|
+
test('onLeftPress calls correct callbacks, when correct props are provided', function () {
|
495
|
+
var thisRefArray = [{
|
496
|
+
thisRef: {
|
497
|
+
current: 'test target'
|
498
|
+
}
|
499
|
+
}];
|
500
|
+
var thisEvent = {
|
501
|
+
target: 'test target',
|
502
|
+
preventDefault: function preventDefault() {
|
503
|
+
return jest.fn();
|
504
|
+
},
|
505
|
+
stopPropagation: function stopPropagation() {
|
506
|
+
return jest.fn();
|
507
|
+
}
|
508
|
+
};
|
509
|
+
(0, _TreeViewKeyboardDelegate.onLeftPress)(thisEvent, focusManager, state, 'test', true, thisRefArray);
|
510
|
+
expect(toggleKey).toHaveBeenCalled();
|
511
|
+
});
|
@@ -30,7 +30,7 @@ var _TreeViewContext = require("../../context/TreeViewContext");
|
|
30
30
|
var _hooks = require("../../hooks");
|
31
31
|
var _index = require("../../index");
|
32
32
|
var _react2 = require("@emotion/react");
|
33
|
-
var _excluded = ["title", "mainIcon", "lastIcon", "item", "items", "isExpanded", "isSelected", "isDisabled", "iconButtonProps"];
|
33
|
+
var _excluded = ["title", "mainIcon", "lastIcon", "item", "items", "isExpanded", "isSelected", "isDisabled", "isParentFocused", "iconButtonProps"];
|
34
34
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
35
35
|
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; }
|
36
36
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
@@ -46,6 +46,7 @@ var TreeViewRow = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
46
46
|
isExpanded = props.isExpanded,
|
47
47
|
isSelected = props.isSelected,
|
48
48
|
isDisabled = props.isDisabled,
|
49
|
+
isParentFocused = props.isParentFocused,
|
49
50
|
iconButtonProps = props.iconButtonProps,
|
50
51
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
51
52
|
var treeRowRef = (0, _react.useRef)();
|
@@ -84,13 +85,19 @@ var TreeViewRow = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
84
85
|
}),
|
85
86
|
classNames = _useStatusClasses.classNames;
|
86
87
|
var mergedProps = (0, _utils.mergeProps)(hoverProps, pressProps, others);
|
88
|
+
|
89
|
+
// console.log(`ROW: ${key} has parent focus: ${isParentFocused}`)
|
90
|
+
|
87
91
|
return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
|
88
92
|
ref: treeRowRef,
|
89
93
|
isRow: true,
|
90
94
|
alignItems: "center",
|
91
95
|
gap: "xs",
|
92
96
|
sx: {
|
93
|
-
flexGrow: 1
|
97
|
+
flexGrow: 1,
|
98
|
+
'& :focus': {
|
99
|
+
border: 'none'
|
100
|
+
}
|
94
101
|
},
|
95
102
|
className: classNames,
|
96
103
|
key: "".concat(key, " box")
|
@@ -103,15 +110,22 @@ var TreeViewRow = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
103
110
|
size: 25,
|
104
111
|
title: "".concat(title, " expand or collapse button")
|
105
112
|
},
|
106
|
-
buttonProps: {
|
113
|
+
buttonProps: _objectSpread(_objectSpread({
|
107
114
|
'aria-label': "".concat(title, " expand or collapse button")
|
108
|
-
}
|
115
|
+
}, isParentFocused && {
|
116
|
+
tabIndex: 0
|
117
|
+
}), !isParentFocused && {
|
118
|
+
tabIndex: -1
|
119
|
+
})
|
109
120
|
}), (0, _react2.jsx)(_index.Box, {
|
110
121
|
isRow: true,
|
111
122
|
className: classNames,
|
112
123
|
alignItems: "center",
|
113
124
|
gap: "xs",
|
114
|
-
variant: "treeView.treeRow"
|
125
|
+
variant: "treeView.treeRow",
|
126
|
+
sx: !items && {
|
127
|
+
ml: '36px'
|
128
|
+
}
|
115
129
|
}, (0, _react2.jsx)(_index.Icon, {
|
116
130
|
color: "focus",
|
117
131
|
icon: mainIcon,
|
@@ -132,6 +146,7 @@ TreeViewRow.propTypes = {
|
|
132
146
|
isSelected: _propTypes["default"].bool,
|
133
147
|
isDisabled: _propTypes["default"].bool,
|
134
148
|
isExpanded: _propTypes["default"].bool,
|
149
|
+
isParentFocused: _propTypes["default"].bool,
|
135
150
|
title: _propTypes["default"].string,
|
136
151
|
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({})),
|
137
152
|
iconButtonProps: _propTypes["default"].shape({
|