@pingux/astro 2.32.0-alpha.8 → 2.32.0

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.
Files changed (45) hide show
  1. package/lib/cjs/components/TreeView/TreeView.js +99 -11
  2. package/lib/cjs/components/TreeView/TreeView.stories.js +23 -10
  3. package/lib/cjs/components/TreeView/TreeView.styles.js +22 -2
  4. package/lib/cjs/components/TreeView/TreeView.test.js +91 -11
  5. package/lib/cjs/components/TreeView/TreeViewItem.js +112 -14
  6. package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.js +200 -0
  7. package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.test.js +511 -0
  8. package/lib/cjs/components/TreeView/TreeViewRow.js +20 -5
  9. package/lib/cjs/components/TreeView/TreeViewSection.js +164 -16
  10. package/lib/cjs/components/TreeView/TreeViewWrapper.js +40 -0
  11. package/lib/cjs/hooks/useField/index.d.ts +1 -0
  12. package/lib/cjs/hooks/useField/useField.d.ts +1686 -0
  13. package/lib/cjs/hooks/useField/useField.js +7 -16
  14. package/lib/cjs/hooks/useField/useField.test.d.ts +1 -0
  15. package/lib/cjs/hooks/useField/useField.test.js +6 -6
  16. package/lib/cjs/hooks/useModalState/index.d.ts +1 -0
  17. package/lib/cjs/hooks/useModalState/useModalState.d.ts +21 -0
  18. package/lib/cjs/hooks/useModalState/useModalState.js +0 -9
  19. package/lib/cjs/hooks/useModalState/useModalState.test.d.ts +1 -0
  20. package/lib/cjs/hooks/useMountTransition/index.d.ts +1 -0
  21. package/lib/cjs/hooks/useMountTransition/useMountTransition.d.ts +14 -0
  22. package/lib/cjs/hooks/useMountTransition/useMountTransition.js +0 -9
  23. package/lib/cjs/hooks/useMountTransition/useMountTransition.test.d.ts +1 -0
  24. package/lib/cjs/hooks/useMountTransition/useMountTransition.test.js +2 -2
  25. package/lib/cjs/hooks/useStatusClasses/index.d.ts +1 -0
  26. package/lib/cjs/hooks/useStatusClasses/useStatusClasses.d.ts +18 -0
  27. package/lib/cjs/hooks/useStatusClasses/useStatusClasses.js +0 -9
  28. package/lib/cjs/hooks/useStatusClasses/useStatusClasses.test.d.ts +1 -0
  29. package/lib/components/TreeView/TreeView.js +100 -12
  30. package/lib/components/TreeView/TreeView.stories.js +23 -10
  31. package/lib/components/TreeView/TreeView.styles.js +22 -2
  32. package/lib/components/TreeView/TreeView.test.js +92 -12
  33. package/lib/components/TreeView/TreeViewItem.js +111 -14
  34. package/lib/components/TreeView/TreeViewKeyboardDelegate.js +176 -0
  35. package/lib/components/TreeView/TreeViewKeyboardDelegate.test.js +496 -0
  36. package/lib/components/TreeView/TreeViewRow.js +20 -5
  37. package/lib/components/TreeView/TreeViewSection.js +161 -16
  38. package/lib/components/TreeView/TreeViewWrapper.js +31 -0
  39. package/lib/hooks/useField/useField.js +7 -16
  40. package/lib/hooks/useField/useField.test.js +6 -6
  41. package/lib/hooks/useModalState/useModalState.js +0 -10
  42. package/lib/hooks/useMountTransition/useMountTransition.js +0 -10
  43. package/lib/hooks/useMountTransition/useMountTransition.test.js +2 -2
  44. package/lib/hooks/useStatusClasses/useStatusClasses.js +0 -10
  45. package/package.json +1 -1
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.verifyIndex = exports.sectionPressHandlers = exports.pageUpOrDown = exports.onUpPress = exports.onTabPress = exports.onSpacePress = exports.onRightPress = exports.onRightLeftItemPress = exports.onPageUpPress = exports.onPageDownPress = exports.onLeftPress = exports.onHomePress = exports.onEnterPress = exports.onEndPress = exports.onDownPress = exports.itemPressHandlers = void 0;
9
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
10
+ var _findIndex = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find-index"));
11
+ var focusPrevious = function focusPrevious(index, refArray, flatKeyList) {
12
+ if (index !== 0) {
13
+ var key = flatKeyList[index - 1].key;
14
+ var _refArray$find = (0, _find["default"])(refArray).call(refArray, function (item) {
15
+ return item.key === key;
16
+ }),
17
+ thisRef = _refArray$find.thisRef;
18
+ thisRef.current.focus();
19
+ }
20
+ };
21
+ var focusNext = function focusNext(index, refArray, flatKeyList) {
22
+ if (index !== flatKeyList.length - 1) {
23
+ var key = flatKeyList[index + 1].key;
24
+ var _refArray$find2 = (0, _find["default"])(refArray).call(refArray, function (item) {
25
+ return item.key === key;
26
+ }),
27
+ thisRef = _refArray$find2.thisRef;
28
+ thisRef.current.focus();
29
+ }
30
+ };
31
+ var verifyIndex = function verifyIndex(thisIndex, interval, length) {
32
+ var newIndex = thisIndex + interval;
33
+ if (newIndex < 0) {
34
+ return 0;
35
+ }
36
+ if (newIndex >= length) {
37
+ return length - 1;
38
+ }
39
+ return newIndex;
40
+ };
41
+ exports.verifyIndex = verifyIndex;
42
+ var onHomePress = function onHomePress(key, flatKeyArray, refArray) {
43
+ var _thisRef$current;
44
+ var firstKey = flatKeyArray[0];
45
+ if (firstKey.key === key) {
46
+ return;
47
+ }
48
+ var _refArray$find3 = (0, _find["default"])(refArray).call(refArray, function (_item) {
49
+ return _item.key === firstKey.key;
50
+ }),
51
+ thisRef = _refArray$find3.thisRef;
52
+ (_thisRef$current = thisRef.current) === null || _thisRef$current === void 0 ? void 0 : _thisRef$current.focus();
53
+ };
54
+ exports.onHomePress = onHomePress;
55
+ var onEndPress = function onEndPress(key, flatKeyArray, refArray) {
56
+ var _thisRef$current2;
57
+ var lastKey = flatKeyArray[flatKeyArray.length - 1];
58
+ if (lastKey.key === key) {
59
+ return;
60
+ }
61
+ var _refArray$find4 = (0, _find["default"])(refArray).call(refArray, function (_item) {
62
+ return _item.key === lastKey.key;
63
+ }),
64
+ thisRef = _refArray$find4.thisRef;
65
+ (_thisRef$current2 = thisRef.current) === null || _thisRef$current2 === void 0 ? void 0 : _thisRef$current2.focus();
66
+ };
67
+ exports.onEndPress = onEndPress;
68
+ var pageUpOrDown = function pageUpOrDown(key, flatKeyArray, refArray, pageLength) {
69
+ var _thisRef$current3;
70
+ var thisIndex = (0, _findIndex["default"])(flatKeyArray).call(flatKeyArray, function (item) {
71
+ return item.key === key;
72
+ });
73
+ var newIndex = verifyIndex(thisIndex, pageLength, flatKeyArray.length);
74
+ var foundKey = flatKeyArray[newIndex].key;
75
+ var _refArray$find5 = (0, _find["default"])(refArray).call(refArray, function (_item) {
76
+ return _item.key === foundKey;
77
+ }),
78
+ thisRef = _refArray$find5.thisRef;
79
+ (_thisRef$current3 = thisRef.current) === null || _thisRef$current3 === void 0 ? void 0 : _thisRef$current3.focus();
80
+ };
81
+ exports.pageUpOrDown = pageUpOrDown;
82
+ var onEnterPress = function onEnterPress(e, state, key) {
83
+ state.toggleKey(key);
84
+ e.preventDefault();
85
+ e.stopPropagation();
86
+ };
87
+ exports.onEnterPress = onEnterPress;
88
+ var onLeftPress = function onLeftPress(e, focusManager, state, key, isExpanded, refArray) {
89
+ var isEventTargetAKey = (0, _find["default"])(refArray).call(refArray, function (_item) {
90
+ return _item.thisRef.current === e.target;
91
+ });
92
+ if (isExpanded && isEventTargetAKey) {
93
+ state.toggleKey(key);
94
+ }
95
+ if (isExpanded && !isEventTargetAKey) {
96
+ focusManager.focusPrevious();
97
+ }
98
+ e.preventDefault();
99
+ e.stopPropagation();
100
+ };
101
+ exports.onLeftPress = onLeftPress;
102
+ var onSpacePress = function onSpacePress(e, tree, key, isSelected) {
103
+ if (isSelected) {
104
+ tree.setSelectedKeys([]);
105
+ } else {
106
+ tree.setSelectedKeys([key]);
107
+ }
108
+ e.preventDefault();
109
+ e.stopPropagation();
110
+ };
111
+ exports.onSpacePress = onSpacePress;
112
+ var onUpPress = function onUpPress(e, key, refArray, flatKeyList) {
113
+ var foundIndex = (0, _findIndex["default"])(flatKeyList).call(flatKeyList, function (item) {
114
+ return item.key === key;
115
+ });
116
+ focusPrevious(foundIndex, refArray, flatKeyList);
117
+ e.preventDefault();
118
+ e.stopPropagation();
119
+ };
120
+ exports.onUpPress = onUpPress;
121
+ var onTabPress = function onTabPress(e, refArray, focusManager, isSection) {
122
+ var isEventTargetAKey = (0, _find["default"])(refArray).call(refArray, function (_item) {
123
+ return _item.thisRef.current === e.target;
124
+ });
125
+ if (isEventTargetAKey && isSection) {
126
+ focusManager.focusNext();
127
+ e.preventDefault();
128
+ e.stopPropagation();
129
+ }
130
+ };
131
+ exports.onTabPress = onTabPress;
132
+ var onRightPress = function onRightPress(e, focusManager, state, key, isExpanded, refArray) {
133
+ if (!isExpanded) {
134
+ state.toggleKey(key);
135
+ return;
136
+ }
137
+ var isEventTargetAKey = (0, _find["default"])(refArray).call(refArray, function (_item) {
138
+ return _item.thisRef.current === e.target;
139
+ });
140
+ if (isExpanded && isEventTargetAKey) {
141
+ focusManager.focusNext();
142
+ }
143
+ e.preventDefault();
144
+ e.stopPropagation();
145
+ };
146
+ exports.onRightPress = onRightPress;
147
+ var onDownPress = function onDownPress(e, key, refArray, flatKeyList) {
148
+ // find the key
149
+ var foundIndex = (0, _findIndex["default"])(flatKeyList).call(flatKeyList, function (item) {
150
+ return item.key === key;
151
+ });
152
+ focusNext(foundIndex, refArray, flatKeyList);
153
+ // check if first or last
154
+ e.preventDefault();
155
+ e.stopPropagation();
156
+ };
157
+ exports.onDownPress = onDownPress;
158
+ var onRightLeftItemPress = function onRightLeftItemPress(e) {
159
+ e.preventDefault();
160
+ e.stopPropagation();
161
+ };
162
+ exports.onRightLeftItemPress = onRightLeftItemPress;
163
+ var onPageUpPress = function onPageUpPress(e, key, flatKeyArray, refArray, pageLength) {
164
+ pageUpOrDown(key, flatKeyArray, refArray, -Math.abs(pageLength));
165
+ e.preventDefault();
166
+ e.stopPropagation();
167
+ };
168
+ exports.onPageUpPress = onPageUpPress;
169
+ var onPageDownPress = function onPageDownPress(e, key, flatKeyArray, refArray, pageLength) {
170
+ pageUpOrDown(key, flatKeyArray, refArray, Math.abs(pageLength));
171
+ e.preventDefault();
172
+ e.stopPropagation();
173
+ };
174
+ exports.onPageDownPress = onPageDownPress;
175
+ var sectionPressHandlers = {
176
+ onEnterPress: onEnterPress,
177
+ onSpacePress: onSpacePress,
178
+ onLeftPress: onLeftPress,
179
+ onRightPress: onRightPress,
180
+ onUpPress: onUpPress,
181
+ onDownPress: onDownPress,
182
+ onTabPress: onTabPress,
183
+ onPageUpPress: onPageUpPress,
184
+ onPageDownPress: onPageDownPress,
185
+ onHomePress: onHomePress,
186
+ onEndPress: onEndPress
187
+ };
188
+ exports.sectionPressHandlers = sectionPressHandlers;
189
+ var itemPressHandlers = {
190
+ onSpacePress: onSpacePress,
191
+ onDownPress: onDownPress,
192
+ onUpPress: onUpPress,
193
+ onRightLeftItemPress: onRightLeftItemPress,
194
+ onTabPress: onTabPress,
195
+ onPageUpPress: onPageUpPress,
196
+ onPageDownPress: onPageDownPress,
197
+ onHomePress: onHomePress,
198
+ onEndPress: onEndPress
199
+ };
200
+ exports.itemPressHandlers = itemPressHandlers;
@@ -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
+ });