@servicetitan/design-system 13.3.2 → 14.0.0-react18.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 (199) hide show
  1. package/dist/components/ActionMenu/ActionMenu.css +29 -21
  2. package/dist/components/ActionMenu/ActionMenu.css.map +1 -1
  3. package/dist/components/ActionMenu/ActionMenu.d.ts +7 -3
  4. package/dist/components/ActionMenu/ActionMenu.js +46 -3
  5. package/dist/components/ActionMenu/ActionMenu.js.map +1 -1
  6. package/dist/components/ActionMenu/ActionMenu.stories.d.ts +41 -0
  7. package/dist/components/ActionMenu/ActionMenu.stories.js +250 -0
  8. package/dist/components/ActionMenu/ActionMenu.stories.js.map +1 -0
  9. package/dist/components/ActionMenu/ActionMenuItem.js +2 -5
  10. package/dist/components/ActionMenu/ActionMenuItem.js.map +1 -1
  11. package/dist/components/ActionMenu/index.css +29 -21
  12. package/dist/components/ActionMenu/index.css.map +1 -1
  13. package/dist/components/ActionMenu/useLatestEvent.d.ts +2 -0
  14. package/dist/components/ActionMenu/useLatestEvent.js +20 -0
  15. package/dist/components/ActionMenu/useLatestEvent.js.map +1 -0
  16. package/dist/components/AnvilSelect/AnvilSelect.d.ts +2 -1
  17. package/dist/components/AnvilSelect/AnvilSelect.js +17 -41
  18. package/dist/components/AnvilSelect/AnvilSelect.js.map +1 -1
  19. package/dist/components/AnvilSelect/components/FocusProvider.d.ts +2 -1
  20. package/dist/components/AnvilSelect/components/FocusProvider.js.map +1 -1
  21. package/dist/components/AnvilSelect/components/SelectFooter.js +6 -6
  22. package/dist/components/AnvilSelect/components/SelectFooter.js.map +1 -1
  23. package/dist/components/AnvilSelect/components/Trigger.js +2 -0
  24. package/dist/components/AnvilSelect/components/Trigger.js.map +1 -1
  25. package/dist/components/AnvilSelect/utils/focus-utils.d.ts +0 -3
  26. package/dist/components/AnvilSelect/utils/focus-utils.js +1 -19
  27. package/dist/components/AnvilSelect/utils/focus-utils.js.map +1 -1
  28. package/dist/components/BodyText/BodyText.js +2 -2
  29. package/dist/components/BodyText/BodyText.js.map +1 -1
  30. package/dist/components/BreakPoint/BreakPoint.d.ts +2 -1
  31. package/dist/components/BreakPoint/BreakPoint.js.map +1 -1
  32. package/dist/components/Button/Button.js +2 -10
  33. package/dist/components/Button/Button.js.map +1 -1
  34. package/dist/components/ButtonToggle/ButtonToggle.d.ts +1 -1
  35. package/dist/components/ButtonToggle/ButtonToggle.js +11 -1
  36. package/dist/components/ButtonToggle/ButtonToggle.js.map +1 -1
  37. package/dist/components/ButtonToggle/ButtonToggleItem.js +1 -1
  38. package/dist/components/ButtonToggle/ButtonToggleItem.js.map +1 -1
  39. package/dist/components/Collapsible/Collapsible.js +1 -1
  40. package/dist/components/Collapsible/Collapsible.js.map +1 -1
  41. package/dist/components/ColorPicker/ColorPicker.css +6 -4
  42. package/dist/components/ColorPicker/ColorPicker.css.map +1 -1
  43. package/dist/components/ColorPicker/ColorPicker.d.ts +1 -7
  44. package/dist/components/ColorPicker/ColorPicker.js +14 -27
  45. package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
  46. package/dist/components/ColorPicker/index.css +6 -4
  47. package/dist/components/ColorPicker/index.css.map +1 -1
  48. package/dist/components/DataList/DataList.js +1 -1
  49. package/dist/components/DataList/DataList.js.map +1 -1
  50. package/dist/components/DataList/DataListCell.d.ts +1 -1
  51. package/dist/components/DataList/DataListCell.js +2 -3
  52. package/dist/components/DataList/DataListCell.js.map +1 -1
  53. package/dist/components/DataList/DataListHeaderCell.d.ts +1 -0
  54. package/dist/components/DataList/DataListHeaderCell.js.map +1 -1
  55. package/dist/components/DatePicker/InputDateMask.js +2 -2
  56. package/dist/components/DatePicker/InputDateMask.js.map +1 -1
  57. package/dist/components/DateRangePicker/components/DateRangeInput.js +1 -1
  58. package/dist/components/DateRangePicker/components/DateRangeInput.js.map +1 -1
  59. package/dist/components/Dialog/Dialog.d.ts +1 -0
  60. package/dist/components/Dialog/Dialog.js.map +1 -1
  61. package/dist/components/Drawer/Drawer.d.ts +1 -0
  62. package/dist/components/Drawer/Drawer.js.map +1 -1
  63. package/dist/components/Dropdown/Dropdown.d.ts +2 -1
  64. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  65. package/dist/components/FlowCard/FlowCard.d.ts +2 -1
  66. package/dist/components/FlowCard/FlowCard.js.map +1 -1
  67. package/dist/components/FormControls/FormInput.d.ts +1 -1
  68. package/dist/components/FormField/FormField.js +4 -5
  69. package/dist/components/FormField/FormField.js.map +1 -1
  70. package/dist/components/Input/Input.d.ts +1 -0
  71. package/dist/components/Input/Input.js.map +1 -1
  72. package/dist/components/Modal/Modal.js +4 -5
  73. package/dist/components/Modal/Modal.js.map +1 -1
  74. package/dist/components/Modal/components.d.ts +1 -0
  75. package/dist/components/Modal/components.js.map +1 -1
  76. package/dist/components/OptionList/OptionList.d.ts +2 -0
  77. package/dist/components/OptionList/OptionList.js +6 -2
  78. package/dist/components/OptionList/OptionList.js.map +1 -1
  79. package/dist/components/Popover/Popover.d.ts +2 -1
  80. package/dist/components/Popover/Popover.js.map +1 -1
  81. package/dist/components/Popover/components.d.ts +2 -0
  82. package/dist/components/Popover/components.js.map +1 -1
  83. package/dist/components/SideNav/SideNav.d.ts +1 -0
  84. package/dist/components/SideNav/SideNav.js +20 -5
  85. package/dist/components/SideNav/SideNav.js.map +1 -1
  86. package/dist/components/SideNav/SideNavItem.css +4 -2
  87. package/dist/components/SideNav/SideNavItem.css.map +1 -1
  88. package/dist/components/SideNav/SideNavItem.d.ts +1 -0
  89. package/dist/components/SideNav/SideNavItem.js +13 -51
  90. package/dist/components/SideNav/SideNavItem.js.map +1 -1
  91. package/dist/components/SideNav/index.css +4 -2
  92. package/dist/components/SideNav/index.css.map +1 -1
  93. package/dist/components/Snackbar/Snackbar.d.ts +1 -0
  94. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  95. package/dist/components/Tab/Tab.js +1 -1
  96. package/dist/components/Tab/Tab.js.map +1 -1
  97. package/dist/components/TabGroup/TabGroup.js +8 -1
  98. package/dist/components/TabGroup/TabGroup.js.map +1 -1
  99. package/dist/components/TabGroup/components.d.ts +4 -2
  100. package/dist/components/TabGroup/components.js.map +1 -1
  101. package/dist/components/Table/Table.js.map +1 -1
  102. package/dist/components/TextArea/TextArea.d.ts +2 -1
  103. package/dist/components/TextArea/TextArea.js +1 -1
  104. package/dist/components/TextArea/TextArea.js.map +1 -1
  105. package/dist/components/TimePicker/TimePicker.js +5 -6
  106. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  107. package/dist/components/TimePicker/TimePicker.test.js +13 -4
  108. package/dist/components/TimePicker/TimePicker.test.js.map +1 -1
  109. package/dist/components/TimePicker/components/TimePickerOptionList.d.ts +1 -1
  110. package/dist/components/TimePicker/components/TimePickerOptionList.js +21 -25
  111. package/dist/components/TimePicker/components/TimePickerOptionList.js.map +1 -1
  112. package/dist/components/TimePicker/utils/filterOptions.js +7 -5
  113. package/dist/components/TimePicker/utils/filterOptions.js.map +1 -1
  114. package/dist/components/TimePicker/utils/utils.js +10 -12
  115. package/dist/components/TimePicker/utils/utils.js.map +1 -1
  116. package/dist/components/Toast/Toast.d.ts +2 -1
  117. package/dist/components/Toast/Toast.js.map +1 -1
  118. package/dist/components/Toast/ToastGroup.d.ts +1 -1
  119. package/dist/components/ToggleSwitch/ToggleSwitch.js +8 -7
  120. package/dist/components/ToggleSwitch/ToggleSwitch.js.map +1 -1
  121. package/dist/components/Tooltip/Tooltip.js +3 -4
  122. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  123. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +2 -1
  124. package/dist/components/VisuallyHidden/VisuallyHidden.js +1 -1
  125. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  126. package/dist/components/index.css +39 -27
  127. package/dist/components/index.css.map +1 -1
  128. package/dist/global/index.css +1 -1
  129. package/dist/global/version.css +1 -1
  130. package/dist/hooks/useArrowNav/index.d.ts +1 -0
  131. package/dist/hooks/useArrowNav/index.js +2 -0
  132. package/dist/hooks/useArrowNav/index.js.map +1 -0
  133. package/dist/hooks/useArrowNav/useArrowNav.d.ts +27 -0
  134. package/dist/hooks/useArrowNav/useArrowNav.js +65 -0
  135. package/dist/hooks/useArrowNav/useArrowNav.js.map +1 -0
  136. package/dist/hooks/useArrowNav/utils/index.d.ts +3 -0
  137. package/dist/hooks/useArrowNav/utils/index.js +4 -0
  138. package/dist/hooks/useArrowNav/utils/index.js.map +1 -0
  139. package/dist/hooks/useArrowNav/utils/keys.d.ts +3 -0
  140. package/dist/hooks/useArrowNav/utils/keys.js +12 -0
  141. package/dist/hooks/useArrowNav/utils/keys.js.map +1 -0
  142. package/dist/hooks/useArrowNav/utils/tabIndex.d.ts +2 -0
  143. package/dist/hooks/useArrowNav/utils/tabIndex.js +53 -0
  144. package/dist/hooks/useArrowNav/utils/tabIndex.js.map +1 -0
  145. package/dist/hooks/useArrowNav/utils/utils.d.ts +14 -0
  146. package/dist/hooks/useArrowNav/utils/utils.js +111 -0
  147. package/dist/hooks/useArrowNav/utils/utils.js.map +1 -0
  148. package/dist/hooks/useFocusTrap/internal/useAutoFocus.js +12 -13
  149. package/dist/hooks/useFocusTrap/internal/useAutoFocus.js.map +1 -1
  150. package/dist/hooks/useFocusTrap/internal/useDisableClickOutside.js +5 -5
  151. package/dist/hooks/useFocusTrap/internal/useDisableClickOutside.js.map +1 -1
  152. package/dist/hooks/useFocusTrap/internal/useFocusLock.js +4 -5
  153. package/dist/hooks/useFocusTrap/internal/useFocusLock.js.map +1 -1
  154. package/dist/hooks/useFocusTrap/internal/useRestoreFocus.js +4 -1
  155. package/dist/hooks/useFocusTrap/internal/useRestoreFocus.js.map +1 -1
  156. package/dist/hooks/useFocusTrap/internal/utils.d.ts +6 -2
  157. package/dist/hooks/useFocusTrap/internal/utils.js +27 -12
  158. package/dist/hooks/useFocusTrap/internal/utils.js.map +1 -1
  159. package/dist/hooks/useFocusVisible.js +9 -11
  160. package/dist/hooks/useFocusVisible.js.map +1 -1
  161. package/dist/internal/CollapsibleList/CollapsibleList.d.ts +2 -1
  162. package/dist/internal/CollapsibleList/CollapsibleList.js.map +1 -1
  163. package/dist/internal/CollapsibleList/CollapsibleListItem.d.ts +2 -1
  164. package/dist/internal/CollapsibleList/CollapsibleListItem.js +20 -2
  165. package/dist/internal/CollapsibleList/CollapsibleListItem.js.map +1 -1
  166. package/dist/internal/Overlay/Overlay.d.ts +2 -1
  167. package/dist/internal/Overlay/Overlay.js.map +1 -1
  168. package/dist/internal/Popper/Popper.css +4 -2
  169. package/dist/internal/Popper/Popper.css.map +1 -1
  170. package/dist/internal/Popper/Popper.d.ts +1 -1
  171. package/dist/internal/Popper/Popper.js +3 -3
  172. package/dist/internal/Popper/Popper.js.map +1 -1
  173. package/dist/internal/Popper/index.css +4 -2
  174. package/dist/internal/Popper/index.css.map +1 -1
  175. package/dist/internal/Portal/Portal.d.ts +2 -1
  176. package/dist/internal/Portal/Portal.js.map +1 -1
  177. package/dist/internal/index.css +4 -2
  178. package/dist/internal/index.css.map +1 -1
  179. package/dist/system-light.css +5 -3
  180. package/dist/system-light.css.map +1 -1
  181. package/dist/system-light.min.css +1 -1
  182. package/dist/system.css +75 -96
  183. package/dist/system.css.map +1 -1
  184. package/dist/system.min.css +2 -2
  185. package/dist/themes/index.css.map +1 -1
  186. package/dist/themes/kendo/index.css.map +1 -1
  187. package/dist/utilities/KeyboardAccessTests/KeyboardAccess.test.js +143 -32
  188. package/dist/utilities/KeyboardAccessTests/KeyboardAccess.test.js.map +1 -1
  189. package/dist/utilities/KeyboardAccessTests/components/components.d.ts +1 -0
  190. package/dist/utilities/KeyboardAccessTests/components/components.js +78 -39
  191. package/dist/utilities/KeyboardAccessTests/components/components.js.map +1 -1
  192. package/dist/utilities/KeyboardAccessTests/utils/jestUtils.d.ts +1 -0
  193. package/dist/utilities/KeyboardAccessTests/utils/jestUtils.js +18 -0
  194. package/dist/utilities/KeyboardAccessTests/utils/jestUtils.js.map +1 -1
  195. package/dist/utilities/KeyboardAccessTests/utils/utils.d.ts +0 -1
  196. package/dist/utilities/KeyboardAccessTests/utils/utils.js +0 -16
  197. package/dist/utilities/KeyboardAccessTests/utils/utils.js.map +1 -1
  198. package/dist/utilities/wrapWithComponent.d.ts +1 -1
  199. package/package.json +28 -34
@@ -0,0 +1,53 @@
1
+ import { queryOnScope, getSelector, isInsideSameKeynav, active } from './utils';
2
+ export const initTabIndexes = (scopeElements, selectorOptions, keynavId) => {
3
+ const getFocusables = (scope) => {
4
+ var _a;
5
+ const selector = getSelector(selectorOptions);
6
+ const focusables = (_a = queryOnScope(scope, selector)) === null || _a === void 0 ? void 0 : _a.filter((el) => isInsideSameKeynav(el, keynavId));
7
+ if (!focusables || focusables.length < 1)
8
+ return null;
9
+ return focusables;
10
+ };
11
+ scopeElements.forEach((el) => setTabIndex(getFocusables(el)));
12
+ const handleFocus = () => scopeElements.forEach((el) => setTabIndex(getFocusables(el)));
13
+ const allFocusables = getFocusables(scopeElements);
14
+ allFocusables === null || allFocusables === void 0 ? void 0 : allFocusables.forEach((el) => {
15
+ el === null || el === void 0 ? void 0 : el.addEventListener('focusin', handleFocus);
16
+ el === null || el === void 0 ? void 0 : el.addEventListener('focusout', handleFocus);
17
+ });
18
+ return allFocusables === null || allFocusables === void 0 ? void 0 : allFocusables.map((el) => () => {
19
+ el === null || el === void 0 ? void 0 : el.removeEventListener('focusout', handleFocus);
20
+ el === null || el === void 0 ? void 0 : el.removeEventListener('focusin', handleFocus);
21
+ });
22
+ };
23
+ const setTabIndex = (els) => {
24
+ if (!els || (els === null || els === void 0 ? void 0 : els.length) < 1)
25
+ return;
26
+ // One element should always be focusable, having `tabIndex=0`
27
+ const keepFocusable = findActive(els) || findSelected(els) || findLastFocused(els) || els[0];
28
+ els.forEach((el) => (el.tabIndex = -1));
29
+ keepFocusable.tabIndex = 0;
30
+ };
31
+ const findLastFocused = (els) => {
32
+ const result = els === null || els === void 0 ? void 0 : els.filter((el) => (el === null || el === void 0 ? void 0 : el.hasAttribute('tabIndex')) && el.tabIndex >= 0);
33
+ if ((result === null || result === void 0 ? void 0 : result.length) === 1)
34
+ return result[0];
35
+ return null;
36
+ };
37
+ const findSelected = (els) => {
38
+ const result = els === null || els === void 0 ? void 0 : els.find((el) => el === null || el === void 0 ? void 0 : el.matches([
39
+ '[aria-current]:not([aria-current=false])',
40
+ '[aria-checked]:not([aria-checked=false])',
41
+ '[aria-selected]:not([aria-selected=false])',
42
+ '[aria-pressed]:not([aria-pressed=false])',
43
+ ].join(':not([aria-disabled=true]),')));
44
+ if (result)
45
+ return result;
46
+ return null;
47
+ };
48
+ const findActive = (els) => {
49
+ if (els === null || els === void 0 ? void 0 : els.includes(active()))
50
+ return active();
51
+ return null;
52
+ };
53
+ //# sourceMappingURL=tabIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabIndex.js","sourceRoot":"","sources":["../../../../src/hooks/useArrowNav/utils/tabIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { UseArrowNavProps, SelectorOptions } from '../useArrowNav';
2
+ import { queryOnScope, active } from '../../useFocusTrap/internal/utils';
3
+ export declare const focusableSelector: string;
4
+ export { active, queryOnScope };
5
+ export declare const getScope: (scope: UseArrowNavProps['scope']) => HTMLElement[];
6
+ export declare const isInsideScope: (scope: HTMLElement[], el: HTMLElement | Element, keynavId: string) => boolean;
7
+ export interface IFocusables {
8
+ active: HTMLElement;
9
+ next: HTMLElement;
10
+ }
11
+ export declare const getFocusables: (scope: HTMLElement[], selectorOptions: SelectorOptions, tabLoop: boolean, key: string, keynavId: string) => IFocusables;
12
+ export declare const getSelector: (selectorOptions: any) => string;
13
+ export declare const createId: () => string;
14
+ export declare const isInsideSameKeynav: (el: HTMLElement, keynavId: string) => boolean;
@@ -0,0 +1,111 @@
1
+ import { keys } from '../../../utilities';
2
+ import { queryOnScope, active, toArray, } from '../../useFocusTrap/internal/utils';
3
+ // Excluded: input[type=text], select, textarea, [contenteditable]
4
+ const focusableElements = [
5
+ 'input[type=button]:not([disabled])',
6
+ 'input[type=checkbox]:not([disabled])',
7
+ 'input[type=radio]:not([disabled])',
8
+ 'input[type=file]:not([disabled])',
9
+ 'input[type=reset]:not([disabled])',
10
+ 'input[type=submit]:not([disabled])',
11
+ 'button:not([disabled])',
12
+ 'a[href]',
13
+ 'area[href]',
14
+ 'summary',
15
+ 'object',
16
+ 'embed',
17
+ 'audio[controls]',
18
+ 'video[controls]',
19
+ '[tabindex]:not([disabled]):not([aria-disabled=true]):not(input):not(textarea):not(select)',
20
+ ];
21
+ export const focusableSelector = focusableElements
22
+ .map((s) => s + ':not([hidden]):not([contenteditable])')
23
+ .join(',');
24
+ export { active, queryOnScope };
25
+ export const getScope = (scope) => {
26
+ if (!scope)
27
+ return null;
28
+ return toArray(scope)
29
+ .map((el) => { var _a; return (_a = el.current) !== null && _a !== void 0 ? _a : el; })
30
+ .filter((el) => el instanceof HTMLElement);
31
+ };
32
+ export const isInsideScope = (scope, el, keynavId) => {
33
+ const scopeElement = scope.find((item) => (item === null || item === void 0 ? void 0 : item.contains(el)) &&
34
+ isInsideSameKeynav(el, keynavId));
35
+ return !!scopeElement;
36
+ };
37
+ export const getFocusables = (scope, selectorOptions, tabLoop, key, keynavId) => {
38
+ const selector = getSelector(selectorOptions);
39
+ const focusables = queryOnScope(scope, selector).filter((el) => isInsideSameKeynav(el, keynavId));
40
+ const result = {
41
+ active: null,
42
+ next: null,
43
+ };
44
+ const current = focusables === null || focusables === void 0 ? void 0 : focusables.indexOf(active());
45
+ if (!focusables || current < 0)
46
+ return result;
47
+ result.active = focusables[current];
48
+ result.next = focusables[nextIdx(focusables, tabLoop, key)];
49
+ return result;
50
+ };
51
+ // Trims commas and whitespaces
52
+ const trim = (str) => {
53
+ let result = str, prevResult = '';
54
+ do {
55
+ prevResult = result;
56
+ result = result.trim().replace(/(^,)|(,$)/, '');
57
+ } while (result !== prevResult);
58
+ return result;
59
+ };
60
+ const isSelectorValid = (selector) => {
61
+ const queryCheck = (s) => document.createDocumentFragment().querySelector(s);
62
+ try {
63
+ queryCheck(selector);
64
+ }
65
+ catch (_a) {
66
+ return false;
67
+ }
68
+ return true;
69
+ };
70
+ export const getSelector = (selectorOptions) => {
71
+ const { selector, extendSelector = '' } = selectorOptions;
72
+ let result;
73
+ if (selector) {
74
+ result = trim(selector);
75
+ }
76
+ else {
77
+ result = trim(focusableSelector + ',' + trim(extendSelector));
78
+ }
79
+ if (isSelectorValid(result))
80
+ return result;
81
+ console.warn('@servicetitan/design-system: useKeyNav() provided with invalid `selectorOptions`', result);
82
+ return focusableSelector;
83
+ };
84
+ const nextIdx = (focusables, loop, key) => {
85
+ const current = focusables === null || focusables === void 0 ? void 0 : focusables.indexOf(active());
86
+ const last = (focusables === null || focusables === void 0 ? void 0 : focusables.length) - 1;
87
+ if (key === keys.home)
88
+ return 0;
89
+ if (key === keys.end)
90
+ return last;
91
+ if ([keys.down, keys.right].includes(key)) {
92
+ if (current === last)
93
+ return loop ? 0 : last;
94
+ return current + 1;
95
+ }
96
+ if ([keys.up, keys.left].includes(key)) {
97
+ if (current === 0)
98
+ return loop ? last : 0;
99
+ return current - 1;
100
+ }
101
+ };
102
+ export const createId = () => {
103
+ const res = Math.round(Math.random() * 0xffffff).toString(16);
104
+ return res;
105
+ };
106
+ export const isInsideSameKeynav = (el, keynavId) => {
107
+ var _a;
108
+ const closest = el.closest('[data-keynav]');
109
+ return keynavId === ((_a = closest === null || closest === void 0 ? void 0 : closest.dataset) === null || _a === void 0 ? void 0 : _a.keynav);
110
+ };
111
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/hooks/useArrowNav/utils/utils.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,22 @@
1
1
  import { useEffect, useCallback } from 'react';
2
- import { getScope, getFocusables, priorityFocusableSelector } from './utils';
2
+ import { getScopeElements, getFocusables, priorityFocusableSelector, } from './utils';
3
3
  export const useAutoFocus = (props) => {
4
- const { scope: initialScope, enabled = true } = props;
4
+ const { scope, enabled = true } = props;
5
5
  const autoFocus = useCallback(() => {
6
- var _a, _b, _c;
6
+ var _a, _b;
7
7
  if (!enabled)
8
8
  return;
9
- const scope = getScope(initialScope);
10
- if (scope.length === 0)
9
+ const elements = getScopeElements(scope);
10
+ if (elements.length === 0)
11
11
  return;
12
12
  // Do not auto focus on wrappers, buttons and so on, if input exist
13
- const priorityFocusable = (_a = getFocusables(scope, priorityFocusableSelector)) === null || _a === void 0 ? void 0 : _a.first;
14
- priorityFocusable
15
- ? priorityFocusable.focus(preventScroll)
16
- : (_c = (_b = getFocusables(scope)) === null || _b === void 0 ? void 0 : _b.first) === null || _c === void 0 ? void 0 : _c.focus(preventScroll);
17
- }, [enabled, initialScope]);
18
- useEffect(() => {
19
- autoFocus();
20
- }, [enabled, initialScope]); // eslint-disable-line
13
+ const priorityFocusable = (_a = getFocusables(elements, priorityFocusableSelector)) === null || _a === void 0 ? void 0 : _a.first;
14
+ const focusElement = priorityFocusable
15
+ ? priorityFocusable
16
+ : (_b = getFocusables(elements)) === null || _b === void 0 ? void 0 : _b.first;
17
+ focusElement === null || focusElement === void 0 ? void 0 : focusElement.focus(preventScroll);
18
+ }, [enabled, scope]);
19
+ useEffect(autoFocus, [enabled, scope]); // eslint-disable-line
21
20
  };
22
21
  const preventScroll = { preventScroll: true };
23
22
  //# sourceMappingURL=useAutoFocus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoFocus.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useAutoFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAQ7E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;IACxD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEtD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,mEAAmE;QACnE,MAAM,iBAAiB,GAAG,MAAA,aAAa,CACtC,KAAK,EACL,yBAAyB,CACzB,0CAAE,KAAK,CAAC;QAET,iBAAiB;YAChB,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC;YACxC,CAAC,CAAC,MAAA,MAAA,aAAa,CAAC,KAAK,CAAC,0CAAE,KAAK,0CAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,GAAG,EAAE;QACd,SAAS,EAAE,CAAC;IACb,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,sBAAsB;AACpD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"useAutoFocus.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useAutoFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EACN,gBAAgB,EAChB,aAAa,EACb,yBAAyB,GACzB,MAAM,SAAS,CAAC;AAQjB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;IACxD,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAExC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,mEAAmE;QACnE,MAAM,iBAAiB,GAAG,MAAA,aAAa,CACtC,QAAQ,EACR,yBAAyB,CACzB,0CAAE,KAAK,CAAC;QAET,MAAM,YAAY,GAAG,iBAAiB;YACrC,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,MAAA,aAAa,CAAC,QAAQ,CAAC,0CAAE,KAAK,CAAC;QAElC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAErB,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB;AAC/D,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import { useEffect } from 'react';
2
- import { getScope, isInside } from './utils';
2
+ import { getScopeElements, isInside } from './utils';
3
3
  export const useDisableClickOutside = (props) => {
4
- const { scope: initialScope, enabled = true, onClickOutside } = props;
4
+ const { scope, enabled = true, onClickOutside } = props;
5
5
  useEffect(() => {
6
6
  function handleClick(event) {
7
7
  var _a, _b;
8
8
  if (!enabled)
9
9
  return;
10
10
  const target = (_b = (_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)[0]) !== null && _b !== void 0 ? _b : event.target;
11
- const scope = getScope(initialScope);
11
+ const elements = getScopeElements(scope);
12
12
  // Suppress if inside current scope
13
- if (isInside(scope, target))
13
+ if (isInside(elements, target))
14
14
  return; // How to prevent disabling on popovers?
15
15
  event.stopPropagation();
16
16
  event.preventDefault();
@@ -23,6 +23,6 @@ export const useDisableClickOutside = (props) => {
23
23
  document === null || document === void 0 ? void 0 : document.removeEventListener('mousedown', handleClick);
24
24
  document === null || document === void 0 ? void 0 : document.removeEventListener('touchstart', handleClick);
25
25
  };
26
- }, [initialScope, enabled, onClickOutside]);
26
+ }, [enabled, scope, onClickOutside]);
27
27
  };
28
28
  //# sourceMappingURL=useDisableClickOutside.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDisableClickOutside.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useDisableClickOutside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAS7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAE,EAAE;IAC5E,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACd,SAAS,WAAW,CAAC,KAAU;;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,MAAM,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,+CAAlB,KAAK,EAAkB,CAAC,CAAC,mCAAI,KAAK,CAAC,MAAM,CAAC;YACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAErC,mCAAmC;YACnC,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAAE,OAAO,CAAC,wCAAwC;YAE7E,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,cAAc;gBAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACrD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,GAAG,EAAE;YACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACxD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC"}
1
+ {"version":3,"file":"useDisableClickOutside.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useDisableClickOutside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAE,EAAE;IAC5E,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACd,SAAS,WAAW,CAAC,KAAU;;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,MAAM,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,+CAAlB,KAAK,EAAkB,CAAC,CAAC,mCAAI,KAAK,CAAC,MAAM,CAAC;YACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAEzC,mCAAmC;YACnC,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAAE,OAAO,CAAC,wCAAwC;YAEhF,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,cAAc;gBAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACrD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,GAAG,EAAE;YACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACxD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC"}
@@ -1,14 +1,13 @@
1
1
  import { useEffect } from 'react';
2
- import { getScope, isInside, tabIndexInside, focusNext, focusPrev, handleFocusablesUnmount, cleanFocusLockMarkers, setFocusLockMarkers, } from './utils';
3
- // More proper name to be useTabLoop
2
+ import { getScopeElements, isInside, tabIndexInside, focusNext, focusPrev, handleFocusablesUnmount, cleanFocusLockMarkers, setFocusLockMarkers, } from './utils';
4
3
  export const useFocusLock = (props) => {
5
4
  const { scope: initialScope, enabled = true } = props;
6
5
  useEffect(() => {
7
6
  if (!enabled) {
8
- cleanFocusLockMarkers(getScope(initialScope));
7
+ cleanFocusLockMarkers(getScopeElements(initialScope));
9
8
  return;
10
9
  }
11
- setFocusLockMarkers(getScope(initialScope));
10
+ setFocusLockMarkers(getScopeElements(initialScope));
12
11
  // Warning in case tabIndex was set inside FocusLock
13
12
  if (tabIndexInside(initialScope))
14
13
  console.warn('@servicetitan/design-system: (FocusTrap) Avoid using tabIndex values greater than 0. Instead put elements in a logical sequence.');
@@ -17,7 +16,7 @@ export const useFocusLock = (props) => {
17
16
  const shift = event.shiftKey;
18
17
  if (!tab)
19
18
  return; // Exit fast if no Tab key was pressed
20
- const scope = getScope(initialScope);
19
+ const scope = getScopeElements(initialScope);
21
20
  if (scope.length === 0)
22
21
  return;
23
22
  // Prevent focus management if Tab happens outside or over nested useFocusLock
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusLock.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useFocusLock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,SAAS,EACT,SAAS,EACT,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACnB,MAAM,SAAS,CAAC;AAOjB,oCAAoC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAqB,EAAE,EAAE;IACrD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO,EAAE;YACb,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9C,OAAO;SACP;QAED,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAE5C,oDAAoD;QACpD,IAAI,cAAc,CAAC,YAAY,CAAC;YAC/B,OAAO,CAAC,IAAI,CACX,kIAAkI,CAClI,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE7B,IAAI,CAAC,GAAG;gBAAE,OAAO,CAAC,sCAAsC;YAExD,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAErC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAE/B,8EAA8E;YAC9E,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAE3C,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,6FAA6F;YAE7H,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;gBAClB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACxB,OAAO;aACP;YACD,IAAI,GAAG,IAAI,KAAK,EAAE;gBACjB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACxB;QACF,CAAC,CAAC;QAEF,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,OAAO,GAAG,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"useFocusLock.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useFocusLock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EACN,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,SAAS,EACT,SAAS,EACT,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACnB,MAAM,SAAS,CAAC;AAOjB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAqB,EAAE,EAAE;IACrD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO,EAAE;YACb,qBAAqB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;YACtD,OAAO;SACP;QAED,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QAEpD,oDAAoD;QACpD,IAAI,cAAc,CAAC,YAAY,CAAC;YAC/B,OAAO,CAAC,IAAI,CACX,kIAAkI,CAClI,CAAC;QAEH,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE7B,IAAI,CAAC,GAAG;gBAAE,OAAO,CAAC,sCAAsC;YAExD,MAAM,KAAK,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAE7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAE/B,8EAA8E;YAC9E,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAE3C,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,6FAA6F;YAE7H,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;gBAClB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACxB,OAAO;aACP;YACD,IAAI,GAAG,IAAI,KAAK,EAAE;gBACjB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACxB;QACF,CAAC,CAAC;QAEF,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,OAAO,GAAG,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC"}
@@ -1,10 +1,13 @@
1
1
  import { useEffect, useRef } from 'react';
2
+ import { active } from './utils';
2
3
  export const useRestoreFocus = ({ enabled = true }) => {
3
4
  const prevActiveRef = useRef(null);
4
5
  useEffect(() => {
5
6
  if (!enabled)
6
7
  return;
7
- prevActiveRef.current = document === null || document === void 0 ? void 0 : document.activeElement;
8
+ if (active() !== (document === null || document === void 0 ? void 0 : document.body))
9
+ prevActiveRef.current = active();
10
+ // Focus previously active element on unmount
8
11
  return () => { var _a; return (_a = prevActiveRef.current) === null || _a === void 0 ? void 0 : _a.focus(preventScroll); };
9
12
  }, [enabled]);
10
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useRestoreFocus.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useRestoreFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE;IACrD,MAAM,aAAa,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,aAAa,CAAC,OAAO,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAA4B,CAAC;QAE/D,OAAO,GAAG,EAAE,WAAC,OAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,KAAK,CAAC,aAAa,CAAC,CAAA,EAAA,CAAC;IAC1D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"useRestoreFocus.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/useRestoreFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE;IACrD,MAAM,aAAa,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,MAAM,EAAE,MAAK,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAA;YAAE,aAAa,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;QAElE,6CAA6C;QAC7C,OAAO,GAAG,EAAE,WAAC,OAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,KAAK,CAAC,aAAa,CAAC,CAAA,EAAA,CAAC;IAC1D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { FocusTrapShards } from '../';
2
- export declare const focusableSelector = "button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])";
2
+ export declare const focusableSelector: string;
3
3
  export declare const priorityFocusableSelector = "input, textarea";
4
- export declare const getScope: (shards: FocusTrapShards) => any[];
4
+ export declare const active: () => HTMLElement;
5
+ export declare const getScopeElements: (shards: FocusTrapShards) => HTMLElement[];
5
6
  export declare const queryOnScope: (scope: HTMLElement | HTMLElement[], selector: string) => HTMLElement[];
6
7
  export declare const getFocusables: (scope: HTMLElement | HTMLElement[], selector?: string) => {
7
8
  focusables: HTMLElement[];
@@ -18,6 +19,9 @@ export declare const shardsUtils: (initialScope: HTMLElement | HTMLElement[]) =>
18
19
  };
19
20
  export declare const focusNext: (scope: HTMLElement | HTMLElement[], event?: React.KeyboardEvent<HTMLElement>) => void;
20
21
  export declare const focusPrev: (scope: HTMLElement | HTMLElement[], event?: React.KeyboardEvent<HTMLElement>) => void;
22
+ export declare const toArray: (obj: any) => any[];
23
+ export declare const prevIdx: (array: any[], current: number) => number;
24
+ export declare const nextIdx: (array: any[], current: number) => number;
21
25
  export declare const handleFocusablesUnmount: (scope: HTMLElement[]) => void;
22
26
  export declare const setFocusLockMarkers: (scope: HTMLElement[]) => void;
23
27
  export declare const cleanFocusLockMarkers: (scope: HTMLElement[]) => void;
@@ -1,7 +1,23 @@
1
- export const focusableSelector = `button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`;
1
+ const focusableElements = [
2
+ 'input:not([disabled]):not([type=hidden])',
3
+ 'select:not([disabled])',
4
+ 'textarea:not([disabled])',
5
+ 'button:not([disabled])',
6
+ 'a[href]',
7
+ 'area[href]',
8
+ 'summary',
9
+ 'iframe',
10
+ 'object',
11
+ 'embed',
12
+ 'audio[controls]',
13
+ 'video[controls]',
14
+ '[contenteditable]',
15
+ '[tabindex]:not([disabled]):not([tabindex="-1"])',
16
+ ];
17
+ export const focusableSelector = focusableElements.join(':not([hidden]):not([tabindex="-1"]),');
2
18
  export const priorityFocusableSelector = 'input, textarea';
3
- const active = () => document === null || document === void 0 ? void 0 : document.activeElement;
4
- export const getScope = (shards) => {
19
+ export const active = () => document === null || document === void 0 ? void 0 : document.activeElement;
20
+ export const getScopeElements = (shards) => {
5
21
  if (!shards)
6
22
  return [];
7
23
  return toArray(shards)
@@ -17,17 +33,16 @@ const queryOnElement = (el, selector) => {
17
33
  result = result.concat(Array.from(nodeList));
18
34
  return result.length > 0 ? result : null;
19
35
  };
36
+ // True if `display: none`, etc.
37
+ const isHidden = (el) => !(el === null || el === void 0 ? void 0 : el.offsetWidth) || !(el === null || el === void 0 ? void 0 : el.offsetHeight);
20
38
  export const queryOnScope = (scope, selector) => {
21
- let targetElements = [];
22
- scope instanceof Array
23
- ? (targetElements = scope)
24
- : (targetElements = [scope]);
39
+ let targetElements = toArray(scope);
25
40
  if (targetElements.length === 0)
26
41
  return null;
27
42
  targetElements = targetElements
28
43
  .map((el) => queryOnElement(el, selector))
29
44
  .flat()
30
- .filter((el) => el);
45
+ .filter((el) => !isHidden(el));
31
46
  if (targetElements.length === 0)
32
47
  return null;
33
48
  return targetElements;
@@ -64,7 +79,7 @@ const isInsideNestedTrap = (scopeElement, target) => {
64
79
  return found;
65
80
  };
66
81
  export const tabIndexInside = (scope) => {
67
- return getScope(scope).some((el) => getFocusables(el).focusables.some((e) => getTabIndex(e) > 0));
82
+ return getScopeElements(scope).some((el) => getFocusables(el).focusables.some((e) => getTabIndex(e) > 0));
68
83
  };
69
84
  export const shardsUtils = (initialScope) => {
70
85
  let currentShardIdx = 0;
@@ -111,13 +126,13 @@ export const focusPrev = (scope, event) => {
111
126
  shards.lastPrevShard.focus();
112
127
  }
113
128
  };
114
- const toArray = (obj) => (obj instanceof Array ? obj : [obj]);
115
- const prevIdx = (array, current) => {
129
+ export const toArray = (obj) => (obj instanceof Array ? obj : [obj]);
130
+ export const prevIdx = (array, current) => {
116
131
  if (current < 0)
117
132
  return current;
118
133
  return current === 0 ? array.length - 1 : current - 1;
119
134
  };
120
- const nextIdx = (array, current) => {
135
+ export const nextIdx = (array, current) => {
121
136
  if (current < 0)
122
137
  return current;
123
138
  return current === array.length - 1 ? 0 : current + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/hooks/useFocusTrap/internal/utils.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,34 @@
1
1
  import { useEffect, useState, useCallback } from 'react';
2
2
  export const useFocusVisible = (target, onBlur, onFocus) => {
3
3
  const [isFocusVisible, setIsFocusVisible] = useState(true);
4
- const [focusVisible, setFocusVisible] = useState(true);
4
+ const [keyboardUser, setKeyboardUser] = useState(true);
5
5
  const [focused, setFocused] = useState(false);
6
6
  const focusFunction = (event) => {
7
- if (onFocus)
8
- onFocus(event);
7
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
9
8
  setIsFocusVisible(true);
10
9
  setFocused(true);
11
10
  };
12
11
  const blurFunction = (event) => {
13
- if (onBlur)
14
- onBlur(event);
12
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
15
13
  setIsFocusVisible(false);
16
14
  setFocused(false);
17
15
  };
18
16
  useEffect(() => {
19
- setIsFocusVisible(focusVisible);
20
- }, [focused, focusVisible]);
17
+ setIsFocusVisible(keyboardUser);
18
+ }, [focused, keyboardUser]);
21
19
  // KeyboardEvent
22
20
  const keyboardEventHandler = useCallback(() => {
23
- setFocusVisible(true);
21
+ setKeyboardUser(true);
24
22
  }, []);
25
23
  // MouseEvent
26
24
  const mouseEventHandler = useCallback(() => {
27
- setFocusVisible(false);
25
+ setKeyboardUser(false);
28
26
  }, []);
29
27
  const useEvent = (event, callback) => {
30
28
  useEffect(() => {
31
29
  const { current } = target;
32
- current.addEventListener(event, callback);
33
- return () => current.removeEventListener(event, callback);
30
+ current === null || current === void 0 ? void 0 : current.addEventListener(event, callback);
31
+ return () => current === null || current === void 0 ? void 0 : current.removeEventListener(event, callback);
34
32
  }, [event, callback]);
35
33
  };
36
34
  useEvent('mousedown', mouseEventHandler);
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusVisible.js","sourceRoot":"","sources":["../../src/hooks/useFocusVisible.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,MAA4B,EAC5B,MAAuD,EACvD,OAAwD,EACvD,EAAE;IACH,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,CAAC,KAAoC,EAAE,EAAE;QAC9D,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAoC,EAAE,EAAE;QAC7D,IAAI,MAAM;YAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,UAAU,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,gBAAgB;IAChB,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,eAAe,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,aAAa;IACb,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,eAAe,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,QAAoB,EAAE,EAAE;QACxD,SAAS,CAAC,GAAG,EAAE;YACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YAC3B,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAExC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACxD,CAAC,CAAC"}
1
+ {"version":3,"file":"useFocusVisible.js","sourceRoot":"","sources":["../../src/hooks/useFocusVisible.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,MAA4B,EAC5B,MAAuD,EACvD,OAAwD,EACvD,EAAE;IACH,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,CAAC,KAAoC,EAAE,EAAE;QAC9D,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;QACjB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAoC,EAAE,EAAE;QAC7D,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,CAAC;QAChB,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,UAAU,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5B,gBAAgB;IAChB,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,eAAe,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,aAAa;IACb,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,eAAe,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,QAAoB,EAAE,EAAE;QACxD,SAAS,CAAC,GAAG,EAAE;YACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YAC3B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAExC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACxD,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
- import { FC } from 'react';
1
+ import React, { FC } from 'react';
2
2
  import { CollapsibleListItem } from './CollapsibleListItem';
3
3
  export interface CollapsibleListProps {
4
4
  className?: string;
5
+ children?: React.ReactNode;
5
6
  el?: any;
6
7
  }
7
8
  export interface CollapsibleList extends FC<CollapsibleListProps> {
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleList.js","sourceRoot":"","sources":["../../../src/internal/CollapsibleList/CollapsibleList.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAYvE,MAAM,CAAC,MAAM,eAAe,GAAoB,CAAC,EAKhD,EAAE,EAAE;QAL4C,EAChD,QAAQ,EACR,SAAS,EACT,EAAE,EAAE,OAAO,GAAG,IAAI,OAElB,EADG,IAAI,cAJyC,+BAKhD,CADO;IAEP,MAAM,WAAW,GAAG,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,CACnB,oBAAC,OAAO,kBACP,SAAS,EAAE,WAAW,0BACD,iBAAiB,IAClC,IAAI,GAEP,QAAQ,CACA,CACV,CAAC;IAEF,IAAI,OAAO;QACV,OAAO,CACN,oBAAC,WAAW,IACX,IAAI,EAAE,OAAO,CAAC,QAAQ,EACtB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,GAAG,EAAE,OAAO,CAAC,cAAc,IAE1B,WAAW,CACC,CACd,CAAC;IAEH,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAEF,eAAe,CAAC,IAAI,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"CollapsibleList.js","sourceRoot":"","sources":["../../../src/internal/CollapsibleList/CollapsibleList.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAavE,MAAM,CAAC,MAAM,eAAe,GAAoB,CAAC,EAKhD,EAAE,EAAE;QAL4C,EAChD,QAAQ,EACR,SAAS,EACT,EAAE,EAAE,OAAO,GAAG,IAAI,OAElB,EADG,IAAI,cAJyC,+BAKhD,CADO;IAEP,MAAM,WAAW,GAAG,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,CACnB,oBAAC,OAAO,kBACP,SAAS,EAAE,WAAW,0BACD,iBAAiB,IAClC,IAAI,GAEP,QAAQ,CACA,CACV,CAAC;IAEF,IAAI,OAAO;QACV,OAAO,CACN,oBAAC,WAAW,IACX,IAAI,EAAE,OAAO,CAAC,QAAQ,EACtB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,GAAG,EAAE,OAAO,CAAC,cAAc,IAE1B,WAAW,CACC,CACd,CAAC;IAEH,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAEF,eAAe,CAAC,IAAI,GAAG,mBAAmB,CAAC"}
@@ -1,6 +1,7 @@
1
- import { FC } from 'react';
1
+ import React, { FC } from 'react';
2
2
  export interface CollapsibleListItemProps {
3
3
  className?: string;
4
+ children?: React.ReactNode;
4
5
  el?: any;
5
6
  collapsible?: {
6
7
  expanded: boolean;
@@ -19,25 +19,43 @@ export const CollapsibleListItem = (_a) => {
19
19
  const collapsibleListRef = React.useRef(null);
20
20
  const [expanded, setExpanded] = React.useState((collapsible === null || collapsible === void 0 ? void 0 : collapsible.expanded) || false);
21
21
  const ListItemClasses = classnames('CollapsibleListItem', className, {
22
+ 'CollapsibleListItem--expanded': collapsible && expanded,
23
+ 'CollapsibleListItem--collapsed': collapsible && !expanded,
22
24
  'cursor-pointer': collapsible,
23
25
  });
24
26
  const handleClick = (e) => {
25
27
  var _a;
26
28
  if ((_a = collapsibleListRef === null || collapsibleListRef === void 0 ? void 0 : collapsibleListRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))
27
- return; // Prevent exapand/collapse on internal list items
29
+ return; // Prevent exapand/collapse on nested list items
30
+ e.preventDefault();
28
31
  const { onClick } = rest;
29
32
  if (collapsible)
30
33
  setExpanded(!expanded);
31
34
  if (onClick)
32
35
  onClick(e);
33
36
  };
37
+ const handleArrowKeypress = (e) => {
38
+ var _a;
39
+ if ((_a = collapsibleListRef === null || collapsibleListRef === void 0 ? void 0 : collapsibleListRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))
40
+ return;
41
+ if (collapsible) {
42
+ e.preventDefault();
43
+ if (e.key === keys.left && expanded)
44
+ setExpanded(false);
45
+ if (e.key === keys.right && !expanded)
46
+ setExpanded(true);
47
+ }
48
+ };
34
49
  const handleKeyDown = (e) => {
35
50
  switch (e.key) {
36
51
  case keys.space:
37
52
  case keys.enter:
38
- e.preventDefault();
39
53
  handleClick(e);
40
54
  break;
55
+ case keys.left: // Collapse
56
+ case keys.right: // Expand
57
+ handleArrowKeypress(e);
58
+ break;
41
59
  }
42
60
  };
43
61
  // Appends CollapsibleList as a last element if CollapsibleItem