@servicetitan/design-system 12.9.0 → 12.11.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.
- package/dist/components/AnvilSelect/AnvilSelect.js +1 -1
- package/dist/components/AnvilSelect/AnvilSelect.js.map +1 -1
- package/dist/components/AnvilSelect/utils/focus-utils.js +3 -3
- package/dist/components/Button/Button.css +1 -1
- package/dist/components/Button/index.css +1 -1
- package/dist/components/ButtonToggle/ButtonToggleItem.js +1 -1
- package/dist/components/ButtonToggle/ButtonToggleItem.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +5 -6
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.test.js +16 -6
- package/dist/components/Checkbox/Checkbox.test.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.js +3 -3
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +13 -0
- package/dist/components/DatePicker/DatePicker.js +24 -8
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/InputDateMask.d.ts +1 -1
- package/dist/components/DatePicker/InputDateMask.js +13 -4
- package/dist/components/DatePicker/InputDateMask.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +84 -37
- package/dist/components/DateRangePicker/DateRangePicker.js +46 -30
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.test.js +30 -22
- package/dist/components/DateRangePicker/DateRangePicker.test.js.map +1 -1
- package/dist/components/DateRangePicker/components/DateRangeInput.d.ts +3 -3
- package/dist/components/DateRangePicker/components/DateRangeInput.js +9 -7
- package/dist/components/DateRangePicker/components/DateRangeInput.js.map +1 -1
- package/dist/components/Drawer/Drawer.js +1 -1
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/FormField/FormField.js +4 -5
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormField/FormField.test.js +19 -8
- package/dist/components/FormField/FormField.test.js.map +1 -1
- package/dist/components/Icon/Icon.css +1 -1
- package/dist/components/Icon/index.css +1 -1
- package/dist/components/Input/Input.test.js +21 -11
- package/dist/components/Input/Input.test.js.map +1 -1
- package/dist/components/KeyPressListener/KeyPressListener.d.ts +1 -0
- package/dist/components/KeyPressListener/KeyPressListener.js +8 -6
- package/dist/components/KeyPressListener/KeyPressListener.js.map +1 -1
- package/dist/components/OptionList/OptionList.js +0 -1
- package/dist/components/OptionList/OptionList.js.map +1 -1
- package/dist/components/Popover/Popover.test.js +7 -6
- package/dist/components/Popover/Popover.test.js.map +1 -1
- package/dist/components/Radio/Radio.test.js +16 -6
- package/dist/components/Radio/Radio.test.js.map +1 -1
- package/dist/components/SideNav/SideNav.css +10 -8
- package/dist/components/SideNav/SideNav.css.map +1 -1
- package/dist/components/SideNav/SideNav.js +13 -5
- package/dist/components/SideNav/SideNav.js.map +1 -1
- package/dist/components/SideNav/SideNavGroup.css +6 -2
- package/dist/components/SideNav/SideNavGroup.css.map +1 -1
- package/dist/components/SideNav/SideNavGroup.js +1 -1
- package/dist/components/SideNav/SideNavGroup.js.map +1 -1
- package/dist/components/SideNav/SideNavItem.css +92 -17
- package/dist/components/SideNav/SideNavItem.css.map +1 -1
- package/dist/components/SideNav/SideNavItem.d.ts +17 -4
- package/dist/components/SideNav/SideNavItem.js +113 -14
- package/dist/components/SideNav/SideNavItem.js.map +1 -1
- package/dist/components/SideNav/index.css +98 -19
- package/dist/components/SideNav/index.css.map +1 -1
- package/dist/components/Sidebar/Sidebar.css +4 -1
- package/dist/components/Sidebar/Sidebar.css.map +1 -1
- package/dist/components/Sidebar/Sidebar.js +1 -1
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/SidebarSection.css +4 -1
- package/dist/components/Sidebar/SidebarSection.css.map +1 -1
- package/dist/components/Sidebar/index.css +4 -1
- package/dist/components/Sidebar/index.css.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +6 -2
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.test.js +18 -6
- package/dist/components/Snackbar/Snackbar.test.js.map +1 -1
- package/dist/components/ToggleSwitch/ToggleSwitch.test.js +16 -6
- package/dist/components/ToggleSwitch/ToggleSwitch.test.js.map +1 -1
- package/dist/components/index.css +103 -21
- package/dist/components/index.css.map +1 -1
- package/dist/global/index.css +1 -1
- package/dist/global/version.css +1 -1
- package/dist/hooks/useFocusVisible.test.js +25 -15
- package/dist/hooks/useFocusVisible.test.js.map +1 -1
- package/dist/internal/CollapsibleList/CollapsibleContext.d.ts +9 -0
- package/dist/internal/CollapsibleList/CollapsibleContext.js +3 -0
- package/dist/internal/CollapsibleList/CollapsibleContext.js.map +1 -0
- package/dist/internal/CollapsibleList/CollapsibleList.css +9 -0
- package/dist/internal/CollapsibleList/CollapsibleList.css.map +1 -0
- package/dist/internal/CollapsibleList/CollapsibleList.d.ts +11 -0
- package/dist/internal/CollapsibleList/CollapsibleList.js +27 -0
- package/dist/internal/CollapsibleList/CollapsibleList.js.map +1 -0
- package/dist/internal/CollapsibleList/CollapsibleListItem.d.ts +11 -0
- package/dist/internal/CollapsibleList/CollapsibleListItem.js +60 -0
- package/dist/internal/CollapsibleList/CollapsibleListItem.js.map +1 -0
- package/dist/internal/CollapsibleList/index.css +9 -0
- package/dist/internal/CollapsibleList/index.css.map +1 -0
- package/dist/internal/CollapsibleList/index.d.ts +3 -0
- package/dist/internal/CollapsibleList/index.js +4 -0
- package/dist/internal/CollapsibleList/index.js.map +1 -0
- package/dist/internal/Portal/Portal.js +1 -1
- package/dist/internal/index.css +8 -1
- package/dist/internal/index.css.map +1 -1
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.js +1 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/system-light.css +8 -1
- package/dist/system-light.css.map +1 -1
- package/dist/system-light.min.css +1 -1
- package/dist/system.css +111 -22
- package/dist/system.css.map +1 -1
- package/dist/system.min.css +2 -2
- package/dist/utilities/KeyboardAccessTests/KeyboardAccess.test.d.ts +1 -0
- package/dist/utilities/KeyboardAccessTests/KeyboardAccess.test.js +373 -0
- package/dist/utilities/KeyboardAccessTests/KeyboardAccess.test.js.map +1 -0
- package/dist/utilities/KeyboardAccessTests/components/KeyboardTester.d.ts +2 -0
- package/dist/utilities/KeyboardAccessTests/components/KeyboardTester.js +22 -0
- package/dist/utilities/KeyboardAccessTests/components/KeyboardTester.js.map +1 -0
- package/dist/utilities/KeyboardAccessTests/components/components.d.ts +15 -0
- package/dist/utilities/KeyboardAccessTests/components/components.js +166 -0
- package/dist/utilities/KeyboardAccessTests/components/components.js.map +1 -0
- package/dist/utilities/KeyboardAccessTests/components/index.d.ts +2 -0
- package/dist/utilities/KeyboardAccessTests/components/index.js +3 -0
- package/dist/utilities/KeyboardAccessTests/components/index.js.map +1 -0
- package/dist/utilities/KeyboardAccessTests/utils/index.d.ts +2 -0
- package/dist/utilities/KeyboardAccessTests/utils/index.js +3 -0
- package/dist/utilities/KeyboardAccessTests/utils/index.js.map +1 -0
- package/dist/utilities/KeyboardAccessTests/utils/jestUtils.d.ts +12 -0
- package/dist/utilities/KeyboardAccessTests/utils/jestUtils.js +52 -0
- package/dist/utilities/KeyboardAccessTests/utils/jestUtils.js.map +1 -0
- package/dist/utilities/KeyboardAccessTests/utils/utils.d.ts +2 -0
- package/dist/utilities/KeyboardAccessTests/utils/utils.js +132 -0
- package/dist/utilities/KeyboardAccessTests/utils/utils.js.map +1 -0
- package/dist/utilities/TimezoneProvider/TimezoneProvider.test.js +5 -3
- package/dist/utilities/TimezoneProvider/TimezoneProvider.test.js.map +1 -1
- package/dist/utilities/keyCodes.d.ts +1 -1
- package/dist/utilities/keyCodes.js +1 -1
- package/dist/utilities/keyCodes.js.map +1 -1
- package/package.json +13 -12
- package/dist/components/Drawer/DrawerFooter.d.ts +0 -8
- package/dist/components/Drawer/DrawerFooter.js +0 -24
- package/dist/components/Drawer/DrawerFooter.js.map +0 -1
- package/dist/components/Drawer/DrawerHeader.d.ts +0 -9
- package/dist/components/Drawer/DrawerHeader.js +0 -24
- package/dist/components/Drawer/DrawerHeader.js.map +0 -1
- package/dist/components/Drawer/DrawerWindow.d.ts +0 -6
- package/dist/components/Drawer/DrawerWindow.js +0 -18
- package/dist/components/Drawer/DrawerWindow.js.map +0 -1
- package/dist/components/Page/components/Footer.d.ts +0 -8
- package/dist/components/Page/components/Footer.js +0 -7
- package/dist/components/Page/components/Footer.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import { render, screen } from '@testing-library/react';
|
|
12
|
+
import userEvent from '@testing-library/user-event';
|
|
13
|
+
import { mockResizeObserver, expectLog, keypressLegacy } from './utils';
|
|
14
|
+
import { KeyboardTester, DatePickerWithValue, DateRangePickerWithValue, TimePickerWithValue, SelectWithValue, FocusTrapTest, ModalTest, DrawerTest, DialogTest, PopoverTest, TakeoverTest, ActionMenuTest, SideNavTest, TabTest, ButtonToggleTest, } from './components';
|
|
15
|
+
mockResizeObserver();
|
|
16
|
+
window.HTMLElement.prototype.scrollIntoView = () => { };
|
|
17
|
+
describe('DatePicker', () => {
|
|
18
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
19
|
+
it('keyboard nav: {enter} on icon to open picker, navigation over calendar', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
const user = userEvent.setup();
|
|
21
|
+
render(React.createElement(KeyboardTester, null,
|
|
22
|
+
React.createElement(DatePickerWithValue, null)));
|
|
23
|
+
const cal = () => screen.getByRole('grid') || global.document;
|
|
24
|
+
// focus on icon → enter → arrow keys → enter to select value → tab to exit
|
|
25
|
+
yield expectLog({ text: 'first focusable' });
|
|
26
|
+
yield user.tab();
|
|
27
|
+
yield expectLog({ text: 'toggle calendar' });
|
|
28
|
+
yield user.tab({ shift: true });
|
|
29
|
+
yield expectLog({ text: 'first focusable' });
|
|
30
|
+
yield user.tab();
|
|
31
|
+
yield expectLog({ text: 'toggle calendar' });
|
|
32
|
+
yield user.keyboard('{enter}'); // Opens calendar
|
|
33
|
+
keypressLegacy(cal(), 'ArrowDown'); // Kendo relied on event.code, which is unsupported by user-events@v14
|
|
34
|
+
keypressLegacy(cal(), 'ArrowDown');
|
|
35
|
+
keypressLegacy(cal(), 'ArrowLeft');
|
|
36
|
+
yield expectLog({ text: '24' });
|
|
37
|
+
keypressLegacy(cal(), 'Enter'); // Select value
|
|
38
|
+
yield expectLog({
|
|
39
|
+
text: '11/24/2022',
|
|
40
|
+
anvilComponent: 'DatePicker', // Just for example
|
|
41
|
+
});
|
|
42
|
+
yield user.tab();
|
|
43
|
+
yield expectLog({ text: 'last focusable' });
|
|
44
|
+
}));
|
|
45
|
+
it('keyboard nav: {arrowDown} on mask to open picker, navigation over calendar', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
const user = userEvent.setup();
|
|
47
|
+
render(React.createElement(KeyboardTester, null,
|
|
48
|
+
React.createElement(DatePickerWithValue, null)));
|
|
49
|
+
const cal = () => screen.getByRole('grid') || global.document;
|
|
50
|
+
/*
|
|
51
|
+
* focus input → arrow keys → enter to select value → tab to exit
|
|
52
|
+
*/
|
|
53
|
+
yield expectLog({ text: 'first focusable' });
|
|
54
|
+
yield user.tab();
|
|
55
|
+
yield expectLog({ text: 'toggle calendar' }); // Icon focused
|
|
56
|
+
yield user.tab();
|
|
57
|
+
yield expectLog({ text: '11/11/2022' }); // Input focused
|
|
58
|
+
yield user.keyboard('{ArrowDown}'); // Opens calendar
|
|
59
|
+
yield expectLog({ text: '11/11/2022' });
|
|
60
|
+
yield user.keyboard('{ArrowDown}');
|
|
61
|
+
yield expectLog({ text: '11' });
|
|
62
|
+
keypressLegacy(cal(), 'ArrowDown'); // Kendo relied on event.code, which is unsupported by user-events@v14
|
|
63
|
+
yield expectLog({ text: '18' });
|
|
64
|
+
keypressLegacy(cal(), 'ArrowRight');
|
|
65
|
+
yield expectLog({ text: '19' });
|
|
66
|
+
keypressLegacy(cal(), 'Enter'); // Select value
|
|
67
|
+
yield expectLog({ text: '11/19/2022' });
|
|
68
|
+
yield user.tab();
|
|
69
|
+
yield expectLog({ text: 'last focusable' });
|
|
70
|
+
}));
|
|
71
|
+
});
|
|
72
|
+
describe('DateRangePicker', () => {
|
|
73
|
+
const user = userEvent.setup();
|
|
74
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
75
|
+
it('keyboard nav: (TBD) {enter} or {arrowDown} on mask to open picker, autofocus on start, tab to end date, tab to navigation over calendar', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
76
|
+
render(React.createElement(KeyboardTester, null,
|
|
77
|
+
React.createElement(DateRangePickerWithValue, null)));
|
|
78
|
+
// focus on icon → enter → arrow keys → enter to select value → tab to exit
|
|
79
|
+
yield expectLog({ text: 'first focusable' });
|
|
80
|
+
yield user.tab();
|
|
81
|
+
yield expectLog({ text: 'Nov 7, 2022 - Nov 15, 2022' });
|
|
82
|
+
// TBD, write test here, as keyboard is not yet supported
|
|
83
|
+
yield user.tab();
|
|
84
|
+
yield expectLog({ text: 'clear selection' });
|
|
85
|
+
yield user.tab();
|
|
86
|
+
yield expectLog({ text: 'last focusable' });
|
|
87
|
+
}));
|
|
88
|
+
});
|
|
89
|
+
describe('TimePicker', () => {
|
|
90
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
91
|
+
it('keyboard nav: focus to open picker, {arrowDown} to navigate over picker, enter to select value', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
const user = userEvent.setup();
|
|
93
|
+
render(React.createElement(KeyboardTester, null,
|
|
94
|
+
React.createElement(TimePickerWithValue, null)));
|
|
95
|
+
// focus on input → arrow down → enter to select value → tab to exit
|
|
96
|
+
yield expectLog({ text: 'first focusable' });
|
|
97
|
+
yield user.tab();
|
|
98
|
+
yield expectLog({ text: '08:00 AM' });
|
|
99
|
+
yield user.keyboard('{ArrowDown}');
|
|
100
|
+
yield expectLog({ text: '08:00 AM' });
|
|
101
|
+
yield user.keyboard('{ArrowDown}');
|
|
102
|
+
yield expectLog({ text: '08:30 AM' });
|
|
103
|
+
yield user.keyboard('{ArrowDown}');
|
|
104
|
+
yield expectLog({ text: '09:00 AM' });
|
|
105
|
+
yield user.keyboard('{Enter}');
|
|
106
|
+
yield expectLog({
|
|
107
|
+
text: '09:00 AM',
|
|
108
|
+
anvilComponent: 'TimePicker',
|
|
109
|
+
});
|
|
110
|
+
yield user.tab();
|
|
111
|
+
yield expectLog({ text: 'last focusable' });
|
|
112
|
+
yield user.tab({ shift: true });
|
|
113
|
+
yield expectLog({ text: '09:00 AM' });
|
|
114
|
+
}));
|
|
115
|
+
it('keyboard access: typing "123" should inject "01:23 AM" option (between stepped options), tab should select it', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
+
const user = userEvent.setup();
|
|
117
|
+
render(React.createElement(KeyboardTester, null,
|
|
118
|
+
React.createElement(TimePickerWithValue, null)));
|
|
119
|
+
yield expectLog({ text: 'first focusable' });
|
|
120
|
+
yield user.tab();
|
|
121
|
+
yield expectLog({ text: '08:00 AM' });
|
|
122
|
+
yield user.keyboard('123{Tab}'); // Select "01:23 AM" option
|
|
123
|
+
yield expectLog({ text: 'last focusable' });
|
|
124
|
+
yield user.tab({ shift: true });
|
|
125
|
+
yield expectLog({ text: '01:23 AM' });
|
|
126
|
+
}));
|
|
127
|
+
});
|
|
128
|
+
describe('AnvilSelect', () => {
|
|
129
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
130
|
+
it('keyboard nav: {arrowDown} to open picker, {arrowDown} to navigate over picker, enter to select value', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const user = userEvent.setup();
|
|
132
|
+
render(React.createElement(KeyboardTester, null,
|
|
133
|
+
React.createElement(SelectWithValue, null)));
|
|
134
|
+
yield expectLog({ text: 'first focusable' });
|
|
135
|
+
yield user.tab();
|
|
136
|
+
yield expectLog({ text: 'Select a technician' });
|
|
137
|
+
yield user.keyboard('{ArrowDown}');
|
|
138
|
+
yield expectLog({ text: 'Bob Ross' });
|
|
139
|
+
yield user.keyboard('{ArrowDown}');
|
|
140
|
+
yield expectLog({
|
|
141
|
+
text: 'Jackie Robinson',
|
|
142
|
+
anvilComponent: 'Checkbox',
|
|
143
|
+
});
|
|
144
|
+
yield user.keyboard('{Enter}');
|
|
145
|
+
yield expectLog({
|
|
146
|
+
text: 'Jackie Robinson',
|
|
147
|
+
anvilComponent: 'AnvilSelect',
|
|
148
|
+
});
|
|
149
|
+
yield user.tab();
|
|
150
|
+
yield expectLog({ text: 'Clear selection' });
|
|
151
|
+
yield user.tab();
|
|
152
|
+
yield expectLog({ text: 'last focusable' });
|
|
153
|
+
}));
|
|
154
|
+
});
|
|
155
|
+
describe('ActionMenu', () => {
|
|
156
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
157
|
+
it('keyboard nav: (TBD) arrow keys should move focus, {Enter} should open submenu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
158
|
+
const user = userEvent.setup();
|
|
159
|
+
render(React.createElement(KeyboardTester, null,
|
|
160
|
+
React.createElement(ActionMenuTest, null)));
|
|
161
|
+
yield expectLog({ text: 'first focusable' });
|
|
162
|
+
yield user.tab();
|
|
163
|
+
yield expectLog({ text: 'Open' });
|
|
164
|
+
yield user.keyboard('{Enter}'); // Render ActionMenu
|
|
165
|
+
// TBD write test keyboard here, keyboard yet is not supported
|
|
166
|
+
yield user.tab();
|
|
167
|
+
yield expectLog({ text: 'last focusable' });
|
|
168
|
+
}));
|
|
169
|
+
});
|
|
170
|
+
describe('SideNav', () => {
|
|
171
|
+
return;
|
|
172
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
173
|
+
it('keyboard nav: arrow keys should navigate over SideNav, {Enter} should open submenu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
174
|
+
const user = userEvent.setup();
|
|
175
|
+
render(React.createElement(KeyboardTester, null,
|
|
176
|
+
React.createElement(SideNavTest, null)));
|
|
177
|
+
yield expectLog({ text: 'first focusable' });
|
|
178
|
+
yield user.tab();
|
|
179
|
+
yield user.tab();
|
|
180
|
+
yield expectLog({ text: 'Item 1' });
|
|
181
|
+
yield user.keyboard('{ArrowDown}');
|
|
182
|
+
yield expectLog({ text: 'Item 2' }); // Collapsible
|
|
183
|
+
yield user.keyboard('{ArrowDown}');
|
|
184
|
+
yield expectLog({ text: 'Item 3' });
|
|
185
|
+
yield user.keyboard('{ArrowUp}');
|
|
186
|
+
yield user.keyboard('{Enter}'); // Opens collapsible
|
|
187
|
+
yield user.keyboard('{ArrowDown}');
|
|
188
|
+
yield expectLog({ text: 'Item 21' }); // Nested
|
|
189
|
+
yield user.keyboard('{ArrowDown}{ArrowDown}{ArrowDown}');
|
|
190
|
+
yield expectLog({ text: 'Item 3' });
|
|
191
|
+
yield user.keyboard('{ArrowDown}');
|
|
192
|
+
yield expectLog({ text: 'Item 4' });
|
|
193
|
+
yield user.keyboard('{ArrowDown}'); // Nowhere to go
|
|
194
|
+
yield expectLog({ text: 'Item 4' });
|
|
195
|
+
yield user.tab();
|
|
196
|
+
yield expectLog({ text: 'last focusable' });
|
|
197
|
+
}));
|
|
198
|
+
});
|
|
199
|
+
describe('Tab', () => {
|
|
200
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
201
|
+
it('keyboard nav: (TBD) arrow keys should move focus, {Enter} or {Space} should activate Tab', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
202
|
+
const user = userEvent.setup();
|
|
203
|
+
render(React.createElement(KeyboardTester, null,
|
|
204
|
+
React.createElement(TabTest, null)));
|
|
205
|
+
yield expectLog({ text: 'first focusable' });
|
|
206
|
+
yield user.tab();
|
|
207
|
+
yield expectLog({ text: 'Tab 1' });
|
|
208
|
+
// TBD write test keyboard here, keyboard yet is not supported
|
|
209
|
+
yield user.tab();
|
|
210
|
+
yield expectLog({ text: 'Tab 2' });
|
|
211
|
+
yield user.tab();
|
|
212
|
+
yield expectLog({ text: 'Tab 3' });
|
|
213
|
+
yield user.tab();
|
|
214
|
+
yield expectLog({ text: 'last focusable' });
|
|
215
|
+
}));
|
|
216
|
+
});
|
|
217
|
+
describe('ButtonToggle', () => {
|
|
218
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
219
|
+
it('keyboard nav: (TBD) arrow keys should move focus, {Enter} or {Space} should activate', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
220
|
+
const user = userEvent.setup();
|
|
221
|
+
render(React.createElement(KeyboardTester, null,
|
|
222
|
+
React.createElement(ButtonToggleTest, null)));
|
|
223
|
+
yield expectLog({ text: 'first focusable' });
|
|
224
|
+
yield user.tab();
|
|
225
|
+
yield expectLog({ text: 'Item 1' });
|
|
226
|
+
// TBD write test keyboard here, keyboard yet is not supported
|
|
227
|
+
yield user.tab();
|
|
228
|
+
yield expectLog({ text: 'Item 2' });
|
|
229
|
+
yield user.tab();
|
|
230
|
+
yield expectLog({ text: 'Item 3' });
|
|
231
|
+
yield user.tab();
|
|
232
|
+
yield expectLog({ text: 'last focusable' });
|
|
233
|
+
}));
|
|
234
|
+
});
|
|
235
|
+
describe('useFocusTrap', () => {
|
|
236
|
+
beforeEach(() => jest.spyOn(console, 'error'));
|
|
237
|
+
it('useFocusTrap: on any sequence of {tab} or {shift}{tab} focus should stay inside', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
238
|
+
const user = userEvent.setup();
|
|
239
|
+
render(React.createElement(KeyboardTester, null,
|
|
240
|
+
React.createElement(FocusTrapTest, null)));
|
|
241
|
+
yield expectLog({ text: 'first focusable' });
|
|
242
|
+
yield user.tab();
|
|
243
|
+
yield expectLog({ text: 'Inside 1' });
|
|
244
|
+
yield user.tab();
|
|
245
|
+
yield expectLog({ text: 'Inside 2' });
|
|
246
|
+
yield user.tab();
|
|
247
|
+
yield expectLog({ text: 'Inside 3 (shard)' });
|
|
248
|
+
yield user.tab();
|
|
249
|
+
yield expectLog({ text: 'Inside 1' });
|
|
250
|
+
// Reversed tabbing
|
|
251
|
+
yield user.tab({ shift: true });
|
|
252
|
+
yield expectLog({ text: 'Inside 3 (shard)' });
|
|
253
|
+
yield user.tab({ shift: true });
|
|
254
|
+
yield expectLog({ text: 'Inside 2' });
|
|
255
|
+
yield user.tab({ shift: true });
|
|
256
|
+
yield expectLog({ text: 'Inside 1' });
|
|
257
|
+
yield user.tab({ shift: true });
|
|
258
|
+
yield expectLog({ text: 'Inside 3 (shard)' });
|
|
259
|
+
}));
|
|
260
|
+
it('Modal: focus trap, auto focus and restore focus should work inside Modal', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
261
|
+
const user = userEvent.setup();
|
|
262
|
+
render(React.createElement(KeyboardTester, null,
|
|
263
|
+
React.createElement(ModalTest, null)));
|
|
264
|
+
yield expectLog({ text: 'first focusable' });
|
|
265
|
+
yield user.tab();
|
|
266
|
+
yield expectLog({ text: 'Open' });
|
|
267
|
+
yield user.keyboard('{Enter}');
|
|
268
|
+
yield expectLog({ text: 'Modal' }); // Auto focus on Modal's container
|
|
269
|
+
yield user.tab();
|
|
270
|
+
yield expectLog({ text: 'close modal' });
|
|
271
|
+
yield user.tab();
|
|
272
|
+
yield expectLog({ text: 'Inside 1' });
|
|
273
|
+
yield user.tab();
|
|
274
|
+
yield expectLog({ text: 'Inside 2' });
|
|
275
|
+
yield user.tab();
|
|
276
|
+
yield expectLog({ text: 'close modal' }); // Focus is trapped
|
|
277
|
+
yield user.keyboard('{Enter}');
|
|
278
|
+
yield expectLog({ text: 'Open' }); // Focus is restored
|
|
279
|
+
yield user.tab({ shift: true });
|
|
280
|
+
yield expectLog({ text: 'first focusable' });
|
|
281
|
+
}));
|
|
282
|
+
it('Drawer: focus trap, auto focus and restore focus should work inside Drawer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
283
|
+
const user = userEvent.setup();
|
|
284
|
+
render(React.createElement(KeyboardTester, null,
|
|
285
|
+
React.createElement(DrawerTest, null)));
|
|
286
|
+
yield expectLog({ text: 'first focusable' });
|
|
287
|
+
yield user.tab();
|
|
288
|
+
yield expectLog({ text: 'Open' });
|
|
289
|
+
yield user.keyboard('{Enter}');
|
|
290
|
+
yield expectLog({ text: 'Drawer' }); // Auto focus on Drawer's container
|
|
291
|
+
yield user.tab();
|
|
292
|
+
yield expectLog({ text: 'close drawer' });
|
|
293
|
+
yield user.tab();
|
|
294
|
+
yield expectLog({ text: 'Inside 1' });
|
|
295
|
+
yield user.tab();
|
|
296
|
+
yield expectLog({ text: 'Inside 2' });
|
|
297
|
+
yield user.tab();
|
|
298
|
+
yield expectLog({ text: 'close drawer' }); // Focus is trapped
|
|
299
|
+
yield user.keyboard('{Enter}');
|
|
300
|
+
yield expectLog({ text: 'Open' }); // Focus is restored
|
|
301
|
+
yield user.tab({ shift: true });
|
|
302
|
+
yield expectLog({ text: 'first focusable' });
|
|
303
|
+
}));
|
|
304
|
+
it('Dialog: focus trap, auto focus and restore focus: should work inside Dialog', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
305
|
+
const user = userEvent.setup();
|
|
306
|
+
render(React.createElement(KeyboardTester, null,
|
|
307
|
+
React.createElement(DialogTest, null)));
|
|
308
|
+
yield expectLog({ text: 'first focusable' });
|
|
309
|
+
yield user.tab();
|
|
310
|
+
yield expectLog({ text: 'Open' });
|
|
311
|
+
yield user.keyboard('{Enter}');
|
|
312
|
+
yield expectLog({ text: 'DialogClose' }); // Auto focus on Dialog's container
|
|
313
|
+
yield user.tab();
|
|
314
|
+
yield expectLog({ text: 'Inside 1' });
|
|
315
|
+
yield user.tab();
|
|
316
|
+
yield expectLog({ text: 'Inside 2' });
|
|
317
|
+
yield user.tab();
|
|
318
|
+
yield expectLog({ text: 'Close' });
|
|
319
|
+
yield user.tab();
|
|
320
|
+
yield expectLog({ text: 'Inside 1' }); // Focus is trapped
|
|
321
|
+
yield user.tab({ shift: true });
|
|
322
|
+
yield expectLog({ text: 'Close' });
|
|
323
|
+
yield user.keyboard('{Enter}');
|
|
324
|
+
yield expectLog({ text: 'Open' }); // Focus is restored
|
|
325
|
+
yield user.tab({ shift: true });
|
|
326
|
+
yield expectLog({ text: 'first focusable' });
|
|
327
|
+
}));
|
|
328
|
+
it('Popover: focus trap, auto focus and restore focus should work inside Popover', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
329
|
+
const user = userEvent.setup();
|
|
330
|
+
render(React.createElement(KeyboardTester, null,
|
|
331
|
+
React.createElement(PopoverTest, null)));
|
|
332
|
+
yield expectLog({ text: 'first focusable' });
|
|
333
|
+
yield user.tab();
|
|
334
|
+
yield expectLog({ text: 'Open' });
|
|
335
|
+
yield user.keyboard('{Enter}');
|
|
336
|
+
yield expectLog({ text: 'Inside 1' });
|
|
337
|
+
yield user.tab();
|
|
338
|
+
yield expectLog({ text: 'Inside 2' });
|
|
339
|
+
yield user.tab();
|
|
340
|
+
yield expectLog({ text: 'Close' });
|
|
341
|
+
yield user.tab();
|
|
342
|
+
yield expectLog({ text: 'Inside 1' }); // Focus is trapped
|
|
343
|
+
yield user.tab({ shift: true });
|
|
344
|
+
yield expectLog({ text: 'Close' });
|
|
345
|
+
yield user.keyboard('{Enter}');
|
|
346
|
+
yield expectLog({ text: 'Open' }); // Focus is restored
|
|
347
|
+
yield user.tab({ shift: true });
|
|
348
|
+
yield expectLog({ text: 'first focusable' });
|
|
349
|
+
}));
|
|
350
|
+
it('Takeover: focus trap, auto focus and restore focus should work inside Takeover', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
351
|
+
const user = userEvent.setup();
|
|
352
|
+
render(React.createElement(KeyboardTester, null,
|
|
353
|
+
React.createElement(TakeoverTest, null)));
|
|
354
|
+
yield expectLog({ text: 'first focusable' });
|
|
355
|
+
yield user.tab();
|
|
356
|
+
yield expectLog({ text: 'Open' });
|
|
357
|
+
yield user.keyboard('{Enter}');
|
|
358
|
+
yield expectLog({ text: 'Takeover' }); // Auto focus on Takeover's container
|
|
359
|
+
yield user.tab();
|
|
360
|
+
yield expectLog({ text: 'close takeover' });
|
|
361
|
+
yield user.tab();
|
|
362
|
+
yield expectLog({ text: 'Inside 1' });
|
|
363
|
+
yield user.tab();
|
|
364
|
+
yield expectLog({ text: 'Inside 2' });
|
|
365
|
+
yield user.tab();
|
|
366
|
+
yield expectLog({ text: 'close takeover' }); // Focus is trapped
|
|
367
|
+
yield user.keyboard('{Enter}');
|
|
368
|
+
yield expectLog({ text: 'Open' }); // Focus is restored
|
|
369
|
+
yield user.tab({ shift: true });
|
|
370
|
+
yield expectLog({ text: 'first focusable' });
|
|
371
|
+
}));
|
|
372
|
+
});
|
|
373
|
+
//# sourceMappingURL=KeyboardAccess.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardAccess.test.js","sourceRoot":"","sources":["../../../src/utilities/KeyboardAccessTests/KeyboardAccess.test.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,OAAO,EACP,gBAAgB,GAChB,MAAM,cAAc,CAAC;AAEtB,kBAAkB,EAAE,CAAC;AACrB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEvD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,wEAAwE,EAAE,GAAS,EAAE;QACvF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,mBAAmB,OAAG,CACP,CACjB,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;QAE9D,4EAA4E;QAC5E,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB;QACjD,cAAc,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,sEAAsE;QAC1G,cAAc,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QACnC,cAAc,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,cAAc,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe;QAC/C,MAAM,SAAS,CAAC;YACf,IAAI,EAAE,YAAY;YAClB,cAAc,EAAE,YAAY,EAAE,mBAAmB;SACjD,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAS,EAAE;QAC3F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,mBAAmB,OAAG,CACP,CACjB,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;QAE9D;;WAEG;QACH,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,eAAe;QAC7D,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,gBAAgB;QACzD,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB;QACrD,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,cAAc,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,sEAAsE;QAC1G,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,cAAc,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QACpC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,cAAc,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe;QAC/C,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,yIAAyI,EAAE,GAAS,EAAE;QACxJ,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,wBAAwB,OAAG,CACZ,CACjB,CAAC;QAEF,4EAA4E;QAC5E,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACxD,yDAAyD;QACzD,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,gGAAgG,EAAE,GAAS,EAAE;QAC/G,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,mBAAmB,OAAG,CACP,CACjB,CAAC;QAEF,qEAAqE;QACrE,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC;YACf,IAAI,EAAE,UAAU;YAChB,cAAc,EAAE,YAAY;SAC5B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACvC,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,+GAA+G,EAAE,GAAS,EAAE;QAC9H,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,mBAAmB,OAAG,CACP,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B;QAC5D,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACvC,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,sGAAsG,EAAE,GAAS,EAAE;QACrH,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,eAAe,OAAG,CACH,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC;YACf,IAAI,EAAE,iBAAiB;YACvB,cAAc,EAAE,UAAU;SAC1B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC;YACf,IAAI,EAAE,iBAAiB;YACvB,cAAc,EAAE,aAAa;SAC7B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,+EAA+E,EAAE,GAAS,EAAE;QAC9F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,cAAc,OAAG,CACF,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;QACpD,8DAA8D;QAC9D,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACxB,OAAO;IACP,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,oFAAoF,EAAE,GAAS,EAAE;QACnG,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,WAAW,OAAG,CACC,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc;QACnD,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;QACpD,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;QAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB;QACpD,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACpB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,0FAA0F,EAAE,GAAS,EAAE;QACzG,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,OAAO,OAAG,CACK,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,8DAA8D;QAC9D,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,sFAAsF,EAAE,GAAS,EAAE;QACrG,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,gBAAgB,OAAG,CACJ,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,8DAA8D;QAC9D,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,iFAAiF,EAAE,GAAS,EAAE;QAChG,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,aAAa,OAAG,CACD,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAEtC,mBAAmB;QACnB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAS,EAAE;QACzF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,SAAS,OAAG,CACG,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,kCAAkC;QACtE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,mBAAmB;QAC7D,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAS,EAAE;QAC3F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,UAAU,OAAG,CACE,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,mCAAmC;QACxE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,mBAAmB;QAC9D,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAS,EAAE;QAC5F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,UAAU,OAAG,CACE,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,mCAAmC;QAC7E,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,mBAAmB;QAC1D,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAS,EAAE;QAC7F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,WAAW,OAAG,CACC,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,mBAAmB;QAC1D,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAS,EAAE;QAC/F,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CACL,oBAAC,cAAc;YACd,oBAAC,YAAY,OAAG,CACA,CACjB,CAAC;QAEF,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,qCAAqC;QAC5E,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,mBAAmB;QAChE,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,oBAAoB;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAA,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { logActiveElement } from '../utils';
|
|
3
|
+
export const KeyboardTester = (props) => {
|
|
4
|
+
const log = (e) => setTimeout(() => logActiveElement(e)); // Delayed log fn
|
|
5
|
+
React.useEffect(() => {
|
|
6
|
+
var _a;
|
|
7
|
+
(_a = document.querySelector('a.focusable-1')) === null || _a === void 0 ? void 0 : _a.focus(); // Autofocus
|
|
8
|
+
if (props.logOnEvent) {
|
|
9
|
+
document.addEventListener('click', log);
|
|
10
|
+
document.addEventListener('keydown', log);
|
|
11
|
+
return () => {
|
|
12
|
+
document.removeEventListener('click', log);
|
|
13
|
+
document.removeEventListener('keydown', log);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}, [props.logOnEvent]);
|
|
17
|
+
return (React.createElement("div", { className: "KeyboardTestWrapper" },
|
|
18
|
+
React.createElement("a", { role: "button", tabIndex: 0, className: "focusable-1" }, "first focusable"),
|
|
19
|
+
React.createElement("div", null, props.children),
|
|
20
|
+
React.createElement("a", { role: "button", tabIndex: 0, className: "focusable-2" }, "last focusable")));
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=KeyboardTester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardTester.js","sourceRoot":"","sources":["../../../../src/utilities/KeyboardAccessTests/components/KeyboardTester.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,EAAE;IAC5C,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAEhF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;QACpB,MAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAS,0CAAE,KAAK,EAAE,CAAC,CAAC,YAAY;QAEvE,IAAI,KAAK,CAAC,UAAU,EAAE;YACrB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO,GAAG,EAAE;gBACX,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC3C,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC,CAAC;SACF;IACF,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvB,OAAO,CACN,6BAAK,SAAS,EAAC,qBAAqB;QACnC,2BAAG,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAC,aAAa,sBAEjD;QACJ,iCAAM,KAAK,CAAC,QAAQ,CAAO;QAC3B,2BAAG,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAC,aAAa,qBAEjD,CACC,CACN,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const DatePickerWithValue: () => JSX.Element;
|
|
3
|
+
export declare const DateRangePickerWithValue: () => JSX.Element;
|
|
4
|
+
export declare const TimePickerWithValue: () => JSX.Element;
|
|
5
|
+
export declare const SelectWithValue: () => JSX.Element;
|
|
6
|
+
export declare const FocusTrapTest: () => JSX.Element;
|
|
7
|
+
export declare const ModalTest: () => JSX.Element;
|
|
8
|
+
export declare const DrawerTest: () => JSX.Element;
|
|
9
|
+
export declare const DialogTest: () => JSX.Element;
|
|
10
|
+
export declare const PopoverTest: () => JSX.Element;
|
|
11
|
+
export declare const TakeoverTest: () => JSX.Element;
|
|
12
|
+
export declare const ActionMenuTest: () => JSX.Element;
|
|
13
|
+
export declare const SideNavTest: () => JSX.Element;
|
|
14
|
+
export declare const TabTest: () => JSX.Element;
|
|
15
|
+
export declare const ButtonToggleTest: () => JSX.Element;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button, DatePicker, DateRangePicker, TimePicker, AnvilSelect, Input, Modal, Drawer, Dialog, Popover, Takeover, ActionMenu, Sidebar, SideNav, TabGroup, Tab, ButtonToggle, } from '../../../components';
|
|
3
|
+
import { Portal } from '../../../internal';
|
|
4
|
+
import { useFocusTrap } from '../../../hooks';
|
|
5
|
+
export const DatePickerWithValue = () => {
|
|
6
|
+
const [date, setDate] = React.useState(new Date('11/11/2022'));
|
|
7
|
+
return (React.createElement("div", { className: "m-2" },
|
|
8
|
+
React.createElement(DatePicker, { value: date, onChange: (v) => setDate(v) })));
|
|
9
|
+
};
|
|
10
|
+
export const DateRangePickerWithValue = () => {
|
|
11
|
+
const [range, setRange] = React.useState({
|
|
12
|
+
start: new Date('11/07/2022'),
|
|
13
|
+
end: new Date('11/15/2022'),
|
|
14
|
+
});
|
|
15
|
+
return (React.createElement("div", { className: "m-2" },
|
|
16
|
+
React.createElement(DateRangePicker, { startPlaceholder: "start", endPlaceholder: "end", value: range, minDate: new Date('01/01/2022'), maxDate: new Date('12/31/2022'), onChange: (v) => setRange(v) })));
|
|
17
|
+
};
|
|
18
|
+
export const TimePickerWithValue = () => {
|
|
19
|
+
const [time, setTime] = React.useState('08:00 AM');
|
|
20
|
+
return (React.createElement("div", { className: "m-2" },
|
|
21
|
+
React.createElement(TimePicker, { min: "00:00", max: "24:00", value: time, onChange: setTime })));
|
|
22
|
+
};
|
|
23
|
+
const dummyOptions = [
|
|
24
|
+
{
|
|
25
|
+
text: 'Jane Doe',
|
|
26
|
+
value: 1,
|
|
27
|
+
disabled: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
text: 'Bob Ross',
|
|
31
|
+
value: 2,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
text: 'Jackie Robinson',
|
|
35
|
+
value: 3,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
text: 'Alexandria Garcia',
|
|
39
|
+
value: 4,
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
export const SelectWithValue = () => {
|
|
43
|
+
return (React.createElement("div", { className: "m-2" },
|
|
44
|
+
React.createElement(AnvilSelect, { options: dummyOptions, trigger: { placeholder: 'Select a technician' } })));
|
|
45
|
+
};
|
|
46
|
+
export const FocusTrapTest = () => {
|
|
47
|
+
const sharded = React.useRef();
|
|
48
|
+
const ref = useFocusTrap({ shards: [sharded] });
|
|
49
|
+
React.useEffect(() => {
|
|
50
|
+
console.log(sharded.current);
|
|
51
|
+
}, []);
|
|
52
|
+
return (React.createElement(React.Fragment, null,
|
|
53
|
+
React.createElement("div", { ref: ref },
|
|
54
|
+
React.createElement(Input, { placeholder: "Inside 1" }),
|
|
55
|
+
React.createElement("br", null),
|
|
56
|
+
React.createElement(Input, { placeholder: "Inside 2" })),
|
|
57
|
+
React.createElement(Portal, null,
|
|
58
|
+
React.createElement("div", { ref: sharded },
|
|
59
|
+
React.createElement(Input, { placeholder: "Inside 3 (shard)" })))));
|
|
60
|
+
};
|
|
61
|
+
export const ModalTest = () => {
|
|
62
|
+
const [open, setOpen] = React.useState(false);
|
|
63
|
+
return (React.createElement("div", null,
|
|
64
|
+
React.createElement(Button, { onClick: () => setOpen(!open) }, "Open"),
|
|
65
|
+
React.createElement("br", null),
|
|
66
|
+
React.createElement(Modal, { open: open, portal: true, closable: true, onClose: () => setOpen(!open), title: "Modal" },
|
|
67
|
+
React.createElement(Input, { placeholder: "Inside 1" }),
|
|
68
|
+
React.createElement("br", null),
|
|
69
|
+
React.createElement(Input, { placeholder: "Inside 2" }))));
|
|
70
|
+
};
|
|
71
|
+
export const DrawerTest = () => {
|
|
72
|
+
const [open, setOpen] = React.useState(false);
|
|
73
|
+
return (React.createElement("div", null,
|
|
74
|
+
React.createElement(Button, { onClick: () => setOpen(!open) }, "Open"),
|
|
75
|
+
React.createElement("br", null),
|
|
76
|
+
React.createElement(Drawer, { open: open, header: "Drawer", portal: true, backdrop: true, onClose: () => setOpen(!open) },
|
|
77
|
+
React.createElement(Input, { placeholder: "Inside 1" }),
|
|
78
|
+
React.createElement("br", null),
|
|
79
|
+
React.createElement(Input, { placeholder: "Inside 2" }))));
|
|
80
|
+
};
|
|
81
|
+
export const DialogTest = () => {
|
|
82
|
+
const [open, setOpen] = React.useState(false);
|
|
83
|
+
return (React.createElement("div", null,
|
|
84
|
+
React.createElement(Button, { onClick: () => setOpen(!open) }, "Open"),
|
|
85
|
+
React.createElement("br", null),
|
|
86
|
+
React.createElement(Dialog, { open: open, primaryActionName: "Close", onPrimaryActionClick: () => setOpen(!open), title: "Dialog" },
|
|
87
|
+
React.createElement(Input, { placeholder: "Inside 1" }),
|
|
88
|
+
React.createElement("br", null),
|
|
89
|
+
React.createElement(Input, { placeholder: "Inside 2" }))));
|
|
90
|
+
};
|
|
91
|
+
export const PopoverTest = () => {
|
|
92
|
+
const [open, setOpen] = React.useState(false);
|
|
93
|
+
return (React.createElement("div", null,
|
|
94
|
+
React.createElement(Popover, { open: open, trigger: React.createElement(Button, { onClick: () => setOpen(!open) }, "Open"), direction: "br", portal: true, focusTrapOptions: { disabled: !open, autoFocus: true }, onClickOutside: () => setOpen(!open) },
|
|
95
|
+
React.createElement(Input, { placeholder: "Inside 1" }),
|
|
96
|
+
React.createElement("br", null),
|
|
97
|
+
React.createElement(Input, { placeholder: "Inside 2" }),
|
|
98
|
+
React.createElement("br", null),
|
|
99
|
+
React.createElement(Button, { onClick: () => setOpen(!open) }, "Close"))));
|
|
100
|
+
};
|
|
101
|
+
export const TakeoverTest = () => {
|
|
102
|
+
const [open, setOpen] = React.useState(false);
|
|
103
|
+
return (React.createElement("div", null,
|
|
104
|
+
React.createElement(Button, { onClick: () => setOpen(!open) }, "Open"),
|
|
105
|
+
React.createElement("br", null),
|
|
106
|
+
React.createElement(Takeover, { open: open, title: "Takeover", onClose: () => setOpen(!open) },
|
|
107
|
+
React.createElement(Input, { placeholder: "Inside 1" }),
|
|
108
|
+
React.createElement("br", null),
|
|
109
|
+
React.createElement(Input, { placeholder: "Inside 2" }))));
|
|
110
|
+
};
|
|
111
|
+
export const ActionMenuTest = () => {
|
|
112
|
+
const [open, setOpen] = React.useState(false);
|
|
113
|
+
const handleClick = () => setOpen(!open);
|
|
114
|
+
return (React.createElement(ActionMenu, { direction: "br", width: "xs", trigger: React.createElement(Button, { onClick: handleClick }, "Open"), open: open },
|
|
115
|
+
React.createElement(ActionMenu.Item, null, "Item 1"),
|
|
116
|
+
React.createElement(ActionMenu.Item, null, "Item 2"),
|
|
117
|
+
React.createElement(ActionMenu.Item, null, "Item 3")));
|
|
118
|
+
};
|
|
119
|
+
export const SideNavTest = () => {
|
|
120
|
+
const [active, setActive] = React.useState(0);
|
|
121
|
+
const handleClick = (index) => () => setActive(index);
|
|
122
|
+
return (React.createElement(Sidebar, { localStorageKey: "test" },
|
|
123
|
+
React.createElement(SideNav, null,
|
|
124
|
+
React.createElement(SideNav.Item, { onClick: handleClick(1), active: active === 1 }, "Item 1"),
|
|
125
|
+
React.createElement(SideNav.Item, { active: [21, 22, 23].includes(active), collapsible: true },
|
|
126
|
+
"Item 2",
|
|
127
|
+
React.createElement(SideNav, null,
|
|
128
|
+
React.createElement(SideNav.Item, { onClick: handleClick(21), active: active === 21 }, "Item 21"),
|
|
129
|
+
React.createElement(SideNav.Item, { onClick: handleClick(22), active: active === 22 }, "Item 22"),
|
|
130
|
+
React.createElement(SideNav.Item, { onClick: handleClick(23), active: active === 23 }, "Item 23"))),
|
|
131
|
+
React.createElement(SideNav.Item, { onClick: handleClick(3), active: active === 3 }, "Item 3"),
|
|
132
|
+
React.createElement(SideNav.Item, { onClick: handleClick(4), active: active === 4 }, "Item 4"))));
|
|
133
|
+
};
|
|
134
|
+
export const TabTest = () => {
|
|
135
|
+
const [active, setActive] = React.useState(0);
|
|
136
|
+
const click = (index) => () => setActive(index);
|
|
137
|
+
return (React.createElement(TabGroup, { divider: true },
|
|
138
|
+
React.createElement(Tab, { onClick: click(0), active: active === 0 }, "Tab 1"),
|
|
139
|
+
React.createElement(Tab, { onClick: click(1), active: active === 1 }, "Tab 2"),
|
|
140
|
+
React.createElement(Tab, { onClick: click(2), active: active === 2 }, "Tab 3")));
|
|
141
|
+
};
|
|
142
|
+
export const ButtonToggleTest = () => {
|
|
143
|
+
const [state, setState] = React.useState(2);
|
|
144
|
+
const onChangeHandler = (value) => {
|
|
145
|
+
setState(value);
|
|
146
|
+
};
|
|
147
|
+
return (React.createElement(ButtonToggle, { value: state, small: true, onChange: onChangeHandler, options: [
|
|
148
|
+
{
|
|
149
|
+
text: 'Item 1',
|
|
150
|
+
value: 1,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
text: 'Item 2',
|
|
154
|
+
value: 2,
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
text: 'Item 3',
|
|
158
|
+
value: 3,
|
|
159
|
+
},
|
|
160
|
+
] }));
|
|
161
|
+
};
|
|
162
|
+
/*
|
|
163
|
+
* ButtonToggleTest
|
|
164
|
+
* ColorPickerTest
|
|
165
|
+
*/
|
|
166
|
+
//# sourceMappingURL=components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../../src/utilities/KeyboardAccessTests/components/components.tsx"],"names":[],"mappings":"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"}
|