@cloudscape-design/components-themeable 3.0.1087 → 3.0.1089

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 (222) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/app-layout/visual-refresh-toolbar/drawer/styles.scss +4 -3
  3. package/lib/internal/scss/app-layout/visual-refresh-toolbar/toolbar/styles.scss +1 -1
  4. package/lib/internal/scss/button/styles.scss +0 -4
  5. package/lib/internal/scss/button/test-classes/styles.scss +4 -4
  6. package/lib/internal/scss/input/styles.scss +0 -8
  7. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +85 -84
  8. package/lib/internal/scss/prompt-input/styles.scss +0 -6
  9. package/lib/internal/scss/segmented-control/segment.scss +0 -1
  10. package/lib/internal/scss/segmented-control/styles.scss +0 -1
  11. package/lib/internal/scss/table/styles.scss +0 -1
  12. package/lib/internal/scss/tabs/tab-header-bar.scss +0 -1
  13. package/lib/internal/scss/textarea/styles.scss +0 -8
  14. package/lib/internal/scss/toggle-button/test-classes/styles.scss +9 -0
  15. package/lib/internal/template/alert/styles.css.js +27 -27
  16. package/lib/internal/template/alert/styles.scoped.css +46 -46
  17. package/lib/internal/template/alert/styles.selectors.js +27 -27
  18. package/lib/internal/template/annotation-context/annotation/styles.css.js +24 -24
  19. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +32 -32
  20. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +24 -24
  21. package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
  22. package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
  23. package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
  24. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
  25. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +258 -258
  26. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
  27. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts.map +1 -1
  28. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js +1 -0
  29. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js.map +1 -1
  30. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +24 -24
  31. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +74 -73
  32. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +24 -24
  33. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +4 -4
  34. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +7 -7
  35. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +4 -4
  36. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +25 -25
  37. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +50 -50
  38. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +25 -25
  39. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.d.ts.map +1 -1
  40. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.js +1 -2
  41. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.js.map +1 -1
  42. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +14 -15
  43. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +31 -31
  44. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +14 -15
  45. package/lib/internal/template/attribute-editor/styles.css.js +15 -15
  46. package/lib/internal/template/attribute-editor/styles.scoped.css +28 -28
  47. package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
  48. package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
  49. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +28 -28
  50. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
  51. package/lib/internal/template/button/icon-helper.d.ts.map +1 -1
  52. package/lib/internal/template/button/icon-helper.js +2 -1
  53. package/lib/internal/template/button/icon-helper.js.map +1 -1
  54. package/lib/internal/template/button/internal.d.ts +2 -0
  55. package/lib/internal/template/button/internal.d.ts.map +1 -1
  56. package/lib/internal/template/button/internal.js +4 -3
  57. package/lib/internal/template/button/internal.js.map +1 -1
  58. package/lib/internal/template/button/styles.css.js +21 -22
  59. package/lib/internal/template/button/styles.scoped.css +255 -259
  60. package/lib/internal/template/button/styles.selectors.js +21 -22
  61. package/lib/internal/template/button/test-classes/styles.css.js +5 -2
  62. package/lib/internal/template/button/test-classes/styles.scoped.css +5 -5
  63. package/lib/internal/template/button/test-classes/styles.selectors.js +5 -2
  64. package/lib/internal/template/button-dropdown/item-element/styles.css.js +16 -16
  65. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +27 -27
  66. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +16 -16
  67. package/lib/internal/template/button-group/internal.js +1 -1
  68. package/lib/internal/template/button-group/internal.js.map +1 -1
  69. package/lib/internal/template/checkbox/internal.js +1 -1
  70. package/lib/internal/template/checkbox/internal.js.map +1 -1
  71. package/lib/internal/template/checkbox/styles.css.js +3 -3
  72. package/lib/internal/template/checkbox/styles.scoped.css +11 -11
  73. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  74. package/lib/internal/template/content-layout/styles.css.js +14 -14
  75. package/lib/internal/template/content-layout/styles.scoped.css +27 -27
  76. package/lib/internal/template/content-layout/styles.selectors.js +14 -14
  77. package/lib/internal/template/file-input/internal.js +1 -1
  78. package/lib/internal/template/file-input/internal.js.map +1 -1
  79. package/lib/internal/template/flashbar/styles.css.js +50 -50
  80. package/lib/internal/template/flashbar/styles.scoped.css +187 -187
  81. package/lib/internal/template/flashbar/styles.selectors.js +50 -50
  82. package/lib/internal/template/help-panel/styles.css.js +6 -6
  83. package/lib/internal/template/help-panel/styles.scoped.css +73 -73
  84. package/lib/internal/template/help-panel/styles.selectors.js +6 -6
  85. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  86. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  87. package/lib/internal/template/i18n/messages/all.ar.js +1 -1
  88. package/lib/internal/template/i18n/messages/all.ar.json +1 -1
  89. package/lib/internal/template/i18n/messages/all.de.js +1 -1
  90. package/lib/internal/template/i18n/messages/all.de.json +1 -1
  91. package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
  92. package/lib/internal/template/i18n/messages/all.en-GB.json +1 -1
  93. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  94. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  95. package/lib/internal/template/i18n/messages/all.es.js +1 -1
  96. package/lib/internal/template/i18n/messages/all.es.json +1 -1
  97. package/lib/internal/template/i18n/messages/all.fr.js +1 -1
  98. package/lib/internal/template/i18n/messages/all.fr.json +1 -1
  99. package/lib/internal/template/i18n/messages/all.id.js +1 -1
  100. package/lib/internal/template/i18n/messages/all.id.json +1 -1
  101. package/lib/internal/template/i18n/messages/all.it.js +1 -1
  102. package/lib/internal/template/i18n/messages/all.it.json +1 -1
  103. package/lib/internal/template/i18n/messages/all.ja.js +1 -1
  104. package/lib/internal/template/i18n/messages/all.ja.json +1 -1
  105. package/lib/internal/template/i18n/messages/all.ko.js +1 -1
  106. package/lib/internal/template/i18n/messages/all.ko.json +1 -1
  107. package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
  108. package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
  109. package/lib/internal/template/i18n/messages/all.tr.js +1 -1
  110. package/lib/internal/template/i18n/messages/all.tr.json +1 -1
  111. package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
  112. package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
  113. package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
  114. package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
  115. package/lib/internal/template/input/styles.css.js +13 -13
  116. package/lib/internal/template/input/styles.scoped.css +28 -42
  117. package/lib/internal/template/input/styles.selectors.js +13 -13
  118. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  119. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.css.js +21 -21
  120. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.scoped.css +44 -44
  121. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.selectors.js +21 -21
  122. package/lib/internal/template/internal/components/dropdown/styles.css.js +20 -20
  123. package/lib/internal/template/internal/components/dropdown/styles.scoped.css +38 -38
  124. package/lib/internal/template/internal/components/dropdown/styles.selectors.js +20 -20
  125. package/lib/internal/template/internal/components/expand-toggle-button/index.d.ts.map +1 -1
  126. package/lib/internal/template/internal/components/expand-toggle-button/index.js +1 -1
  127. package/lib/internal/template/internal/components/expand-toggle-button/index.js.map +1 -1
  128. package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
  129. package/lib/internal/template/internal/components/token-list/styles.scoped.css +25 -25
  130. package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
  131. package/lib/internal/template/internal/context/reset-contexts-for-modal.d.ts.map +1 -1
  132. package/lib/internal/template/internal/context/reset-contexts-for-modal.js +2 -2
  133. package/lib/internal/template/internal/context/reset-contexts-for-modal.js.map +1 -1
  134. package/lib/internal/template/internal/environment.js +2 -2
  135. package/lib/internal/template/internal/environment.json +2 -2
  136. package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts +1 -0
  137. package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  138. package/lib/internal/template/internal/generated/custom-css-properties/index.js +84 -83
  139. package/lib/internal/template/internal/generated/custom-css-properties/index.js.map +1 -1
  140. package/lib/internal/template/link/internal.js +1 -1
  141. package/lib/internal/template/link/internal.js.map +1 -1
  142. package/lib/internal/template/link/styles.css.js +20 -20
  143. package/lib/internal/template/link/styles.scoped.css +103 -103
  144. package/lib/internal/template/link/styles.selectors.js +20 -20
  145. package/lib/internal/template/popover/internal.js +1 -1
  146. package/lib/internal/template/popover/internal.js.map +1 -1
  147. package/lib/internal/template/prompt-input/styles.css.js +17 -17
  148. package/lib/internal/template/prompt-input/styles.scoped.css +36 -43
  149. package/lib/internal/template/prompt-input/styles.selectors.js +17 -17
  150. package/lib/internal/template/radio-group/radio-button.js +1 -1
  151. package/lib/internal/template/radio-group/radio-button.js.map +1 -1
  152. package/lib/internal/template/radio-group/styles.css.js +10 -10
  153. package/lib/internal/template/radio-group/styles.scoped.css +22 -22
  154. package/lib/internal/template/radio-group/styles.selectors.js +10 -10
  155. package/lib/internal/template/segmented-control/styles.css.js +16 -16
  156. package/lib/internal/template/segmented-control/styles.scoped.css +36 -42
  157. package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
  158. package/lib/internal/template/slider/styles.css.js +26 -26
  159. package/lib/internal/template/slider/styles.scoped.css +86 -86
  160. package/lib/internal/template/slider/styles.selectors.js +26 -26
  161. package/lib/internal/template/spinner/styles.css.js +13 -13
  162. package/lib/internal/template/spinner/styles.scoped.css +39 -39
  163. package/lib/internal/template/spinner/styles.selectors.js +13 -13
  164. package/lib/internal/template/table/body-cell/disabled-inline-editor.js +1 -1
  165. package/lib/internal/template/table/body-cell/disabled-inline-editor.js.map +1 -1
  166. package/lib/internal/template/table/body-cell/index.d.ts.map +1 -1
  167. package/lib/internal/template/table/body-cell/index.js +1 -1
  168. package/lib/internal/template/table/body-cell/index.js.map +1 -1
  169. package/lib/internal/template/table/body-cell/td-element.js +1 -1
  170. package/lib/internal/template/table/body-cell/td-element.js.map +1 -1
  171. package/lib/internal/template/table/header-cell/index.js +1 -1
  172. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  173. package/lib/internal/template/table/header-cell/th-element.js +1 -1
  174. package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
  175. package/lib/internal/template/table/resizer/index.js +1 -1
  176. package/lib/internal/template/table/resizer/index.js.map +1 -1
  177. package/lib/internal/template/table/selection/selection-control.d.ts.map +1 -1
  178. package/lib/internal/template/table/selection/selection-control.js +3 -4
  179. package/lib/internal/template/table/selection/selection-control.js.map +1 -1
  180. package/lib/internal/template/table/styles.css.js +34 -34
  181. package/lib/internal/template/table/styles.scoped.css +41 -42
  182. package/lib/internal/template/table/styles.selectors.js +34 -34
  183. package/lib/internal/template/table/table-role/grid-navigation.d.ts +1 -1
  184. package/lib/internal/template/table/table-role/grid-navigation.d.ts.map +1 -1
  185. package/lib/internal/template/table/table-role/grid-navigation.js +1 -1
  186. package/lib/internal/template/table/table-role/grid-navigation.js.map +1 -1
  187. package/lib/internal/template/tabs/styles.css.js +30 -30
  188. package/lib/internal/template/tabs/styles.scoped.css +51 -52
  189. package/lib/internal/template/tabs/styles.selectors.js +30 -30
  190. package/lib/internal/template/tabs/tab-header-bar.js +1 -2
  191. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  192. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  193. package/lib/internal/template/tag-editor/styles.scoped.css +13 -13
  194. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  195. package/lib/internal/template/test-utils/dom/button/index.js +4 -5
  196. package/lib/internal/template/test-utils/dom/button/index.js.map +1 -1
  197. package/lib/internal/template/test-utils/dom/toggle-button/index.js +3 -4
  198. package/lib/internal/template/test-utils/dom/toggle-button/index.js.map +1 -1
  199. package/lib/internal/template/test-utils/selectors/button/index.js +4 -5
  200. package/lib/internal/template/test-utils/selectors/button/index.js.map +1 -1
  201. package/lib/internal/template/test-utils/selectors/toggle-button/index.js +2 -2
  202. package/lib/internal/template/test-utils/selectors/toggle-button/index.js.map +1 -1
  203. package/lib/internal/template/text-content/styles.css.js +1 -1
  204. package/lib/internal/template/text-content/styles.scoped.css +66 -66
  205. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  206. package/lib/internal/template/textarea/styles.css.js +5 -5
  207. package/lib/internal/template/textarea/styles.scoped.css +12 -19
  208. package/lib/internal/template/textarea/styles.selectors.js +5 -5
  209. package/lib/internal/template/toggle/styles.css.js +10 -10
  210. package/lib/internal/template/toggle/styles.scoped.css +23 -23
  211. package/lib/internal/template/toggle/styles.selectors.js +10 -10
  212. package/lib/internal/template/toggle-button/internal.d.ts.map +1 -1
  213. package/lib/internal/template/toggle-button/internal.js +3 -2
  214. package/lib/internal/template/toggle-button/internal.js.map +1 -1
  215. package/lib/internal/template/toggle-button/test-classes/styles.css.js +7 -0
  216. package/lib/internal/template/toggle-button/test-classes/styles.scoped.css +8 -0
  217. package/lib/internal/template/toggle-button/test-classes/styles.selectors.js +8 -0
  218. package/package.json +1 -1
  219. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.d.ts +0 -36
  220. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.d.ts.map +0 -1
  221. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.js +0 -89
  222. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.js.map +0 -1
@@ -0,0 +1,8 @@
1
+
2
+ // es-module interop with Babel and Typescript
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ module.exports.default = {
5
+ "root": "awsui_root_1qd09_nztsi_5",
6
+ "pressed": "awsui_pressed_1qd09_nztsi_6"
7
+ };
8
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudscape-design/components-themeable",
3
- "version": "3.0.1087",
3
+ "version": "3.0.1089",
4
4
  "files": [
5
5
  "lib"
6
6
  ],
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
- export type FocusableChangeHandler = (isFocusable: boolean) => void;
3
- export declare const defaultValue: {
4
- navigationActive: boolean;
5
- registerFocusable(focusable: HTMLElement, handler: FocusableChangeHandler): () => void;
6
- };
7
- /**
8
- * Single tab stop navigation context is used together with keyboard navigation that requires a single tab stop.
9
- * It instructs interactive elements to override tab indices for just a single one to remain user-focusable.
10
- */
11
- export declare const SingleTabStopNavigationContext: React.Context<{
12
- navigationActive: boolean;
13
- registerFocusable(focusable: HTMLElement, handler: FocusableChangeHandler): () => void;
14
- }>;
15
- export declare function useSingleTabStopNavigation(focusable: null | React.RefObject<HTMLElement>, options?: {
16
- tabIndex?: number;
17
- }): {
18
- navigationActive: boolean;
19
- tabIndex: number | undefined;
20
- };
21
- interface SingleTabStopNavigationProviderProps {
22
- navigationActive: boolean;
23
- children: React.ReactNode;
24
- getNextFocusTarget: () => null | HTMLElement;
25
- isElementSuppressed?(focusableElement: Element): boolean;
26
- onRegisterFocusable?(focusableElement: Element): void;
27
- onUnregisterActive?(focusableElement: Element): void;
28
- }
29
- export interface SingleTabStopNavigationAPI {
30
- updateFocusTarget(): void;
31
- getFocusTarget(): null | HTMLElement;
32
- isRegistered(element: Element): boolean;
33
- }
34
- export declare const SingleTabStopNavigationProvider: React.ForwardRefExoticComponent<SingleTabStopNavigationProviderProps & React.RefAttributes<SingleTabStopNavigationAPI>>;
35
- export {};
36
- //# sourceMappingURL=single-tab-stop-navigation-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-tab-stop-navigation-context.d.ts","sourceRoot":"","sources":["../../../../src/internal/context/single-tab-stop-navigation-context.tsx"],"names":[],"mappings":"AAGA,OAAO,KAQN,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,sBAAsB,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;AAEpE,eAAO,MAAM,YAAY,EAAE;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,GAAG,MAAM,IAAI,CAAC;CAIxF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B;sBAXvB,OAAO;iCACI,WAAW,WAAW,sBAAsB,GAAG,MAAM,IAAI;EAUf,CAAC;AAE1E,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAC9C,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;;;EAoBhC;AAED,UAAU,oCAAoC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;IAC7C,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC;IACzD,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACtD,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,IAAI,IAAI,CAAC;IAC1B,cAAc,IAAI,IAAI,GAAG,WAAW,CAAC;IACrC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CACzC;AAED,eAAO,MAAM,+BAA+B,yHA8E3C,CAAC"}
@@ -1,89 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import React, { createContext, forwardRef, useContext, useImperativeHandle, useLayoutEffect, useRef, useState, } from 'react';
4
- import { nodeBelongs } from '../utils/node-belongs';
5
- export const defaultValue = {
6
- navigationActive: false,
7
- registerFocusable: () => () => { },
8
- };
9
- /**
10
- * Single tab stop navigation context is used together with keyboard navigation that requires a single tab stop.
11
- * It instructs interactive elements to override tab indices for just a single one to remain user-focusable.
12
- */
13
- export const SingleTabStopNavigationContext = createContext(defaultValue);
14
- export function useSingleTabStopNavigation(focusable, options) {
15
- var _a;
16
- const { navigationActive: contextNavigationActive, registerFocusable } = useContext(SingleTabStopNavigationContext);
17
- const [focusTargetActive, setFocusTargetActive] = useState(false);
18
- const navigationDisabled = (options === null || options === void 0 ? void 0 : options.tabIndex) && (options === null || options === void 0 ? void 0 : options.tabIndex) < 0;
19
- const navigationActive = contextNavigationActive && !navigationDisabled;
20
- useLayoutEffect(() => {
21
- if (navigationActive && focusable && focusable.current) {
22
- const unregister = registerFocusable(focusable.current, isFocusable => setFocusTargetActive(isFocusable));
23
- return () => unregister();
24
- }
25
- });
26
- let tabIndex = options === null || options === void 0 ? void 0 : options.tabIndex;
27
- if (navigationActive) {
28
- tabIndex = !focusTargetActive ? -1 : ((_a = options === null || options === void 0 ? void 0 : options.tabIndex) !== null && _a !== void 0 ? _a : 0);
29
- }
30
- return { navigationActive, tabIndex };
31
- }
32
- export const SingleTabStopNavigationProvider = forwardRef(({ navigationActive, children, getNextFocusTarget, isElementSuppressed, onRegisterFocusable, onUnregisterActive, }, ref) => {
33
- // A set of registered focusable elements that can use keyboard navigation.
34
- const focusables = useRef(new Set());
35
- // A map of registered focusable element handlers to update the respective tab indices.
36
- const focusHandlers = useRef(new Map());
37
- // A map of focusable element states to avoid issuing unnecessary updates to registered elements.
38
- const focusablesState = useRef(new WeakMap());
39
- // A reference to the currently focused element.
40
- const focusTarget = useRef(null);
41
- function onUnregisterFocusable(focusableElement) {
42
- const isUnregisteringFocusedNode = nodeBelongs(focusableElement, document.activeElement);
43
- if (isUnregisteringFocusedNode) {
44
- // Wait for unmounted node to get removed from the DOM.
45
- setTimeout(() => onUnregisterActive === null || onUnregisterActive === void 0 ? void 0 : onUnregisterActive(focusableElement), 0);
46
- }
47
- }
48
- // Register a focusable element to allow navigating into it.
49
- // The focusable element tabIndex is only set to 0 if the element matches the focus target.
50
- function registerFocusable(focusableElement, changeHandler) {
51
- focusables.current.add(focusableElement);
52
- focusHandlers.current.set(focusableElement, changeHandler);
53
- const isFocusable = !!focusablesState.current.get(focusableElement);
54
- const newIsFocusable = focusTarget.current === focusableElement || !!(isElementSuppressed === null || isElementSuppressed === void 0 ? void 0 : isElementSuppressed(focusableElement));
55
- if (newIsFocusable !== isFocusable) {
56
- focusablesState.current.set(focusableElement, newIsFocusable);
57
- changeHandler(newIsFocusable);
58
- }
59
- onRegisterFocusable === null || onRegisterFocusable === void 0 ? void 0 : onRegisterFocusable(focusableElement);
60
- return () => unregisterFocusable(focusableElement);
61
- }
62
- function unregisterFocusable(focusableElement) {
63
- focusables.current.delete(focusableElement);
64
- focusHandlers.current.delete(focusableElement);
65
- onUnregisterFocusable === null || onUnregisterFocusable === void 0 ? void 0 : onUnregisterFocusable(focusableElement);
66
- }
67
- // Update focus target with next single focusable element and notify all registered focusables of a change.
68
- function updateFocusTarget() {
69
- var _a;
70
- focusTarget.current = getNextFocusTarget();
71
- for (const focusableElement of focusables.current) {
72
- const isFocusable = (_a = focusablesState.current.get(focusableElement)) !== null && _a !== void 0 ? _a : false;
73
- const newIsFocusable = focusTarget.current === focusableElement || !!(isElementSuppressed === null || isElementSuppressed === void 0 ? void 0 : isElementSuppressed(focusableElement));
74
- if (newIsFocusable !== isFocusable) {
75
- focusablesState.current.set(focusableElement, newIsFocusable);
76
- focusHandlers.current.get(focusableElement)(newIsFocusable);
77
- }
78
- }
79
- }
80
- function getFocusTarget() {
81
- return focusTarget.current;
82
- }
83
- function isRegistered(element) {
84
- return focusables.current.has(element);
85
- }
86
- useImperativeHandle(ref, () => ({ updateFocusTarget, getFocusTarget, isRegistered }));
87
- return (React.createElement(SingleTabStopNavigationContext.Provider, { value: { navigationActive, registerFocusable } }, children));
88
- });
89
- //# sourceMappingURL=single-tab-stop-navigation-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-tab-stop-navigation-context.js","sourceRoot":"","sources":["../../../../src/internal/context/single-tab-stop-navigation-context.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, {\n createContext,\n forwardRef,\n useContext,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { nodeBelongs } from '../utils/node-belongs';\n\nexport type FocusableChangeHandler = (isFocusable: boolean) => void;\n\nexport const defaultValue: {\n navigationActive: boolean;\n registerFocusable(focusable: HTMLElement, handler: FocusableChangeHandler): () => void;\n} = {\n navigationActive: false,\n registerFocusable: () => () => {},\n};\n\n/**\n * Single tab stop navigation context is used together with keyboard navigation that requires a single tab stop.\n * It instructs interactive elements to override tab indices for just a single one to remain user-focusable.\n */\nexport const SingleTabStopNavigationContext = createContext(defaultValue);\n\nexport function useSingleTabStopNavigation(\n focusable: null | React.RefObject<HTMLElement>,\n options?: { tabIndex?: number }\n) {\n const { navigationActive: contextNavigationActive, registerFocusable } = useContext(SingleTabStopNavigationContext);\n const [focusTargetActive, setFocusTargetActive] = useState(false);\n const navigationDisabled = options?.tabIndex && options?.tabIndex < 0;\n const navigationActive = contextNavigationActive && !navigationDisabled;\n\n useLayoutEffect(() => {\n if (navigationActive && focusable && focusable.current) {\n const unregister = registerFocusable(focusable.current, isFocusable => setFocusTargetActive(isFocusable));\n return () => unregister();\n }\n });\n\n let tabIndex = options?.tabIndex;\n if (navigationActive) {\n tabIndex = !focusTargetActive ? -1 : (options?.tabIndex ?? 0);\n }\n\n return { navigationActive, tabIndex };\n}\n\ninterface SingleTabStopNavigationProviderProps {\n navigationActive: boolean;\n children: React.ReactNode;\n getNextFocusTarget: () => null | HTMLElement;\n isElementSuppressed?(focusableElement: Element): boolean;\n onRegisterFocusable?(focusableElement: Element): void;\n onUnregisterActive?(focusableElement: Element): void;\n}\n\nexport interface SingleTabStopNavigationAPI {\n updateFocusTarget(): void;\n getFocusTarget(): null | HTMLElement;\n isRegistered(element: Element): boolean;\n}\n\nexport const SingleTabStopNavigationProvider = forwardRef(\n (\n {\n navigationActive,\n children,\n getNextFocusTarget,\n isElementSuppressed,\n onRegisterFocusable,\n onUnregisterActive,\n }: SingleTabStopNavigationProviderProps,\n ref: React.Ref<SingleTabStopNavigationAPI>\n ) => {\n // A set of registered focusable elements that can use keyboard navigation.\n const focusables = useRef(new Set<Element>());\n // A map of registered focusable element handlers to update the respective tab indices.\n const focusHandlers = useRef(new Map<Element, FocusableChangeHandler>());\n // A map of focusable element states to avoid issuing unnecessary updates to registered elements.\n const focusablesState = useRef(new WeakMap<Element, boolean>());\n // A reference to the currently focused element.\n const focusTarget = useRef<null | HTMLElement>(null);\n\n function onUnregisterFocusable(focusableElement: Element) {\n const isUnregisteringFocusedNode = nodeBelongs(focusableElement, document.activeElement);\n if (isUnregisteringFocusedNode) {\n // Wait for unmounted node to get removed from the DOM.\n setTimeout(() => onUnregisterActive?.(focusableElement), 0);\n }\n }\n\n // Register a focusable element to allow navigating into it.\n // The focusable element tabIndex is only set to 0 if the element matches the focus target.\n function registerFocusable(focusableElement: Element, changeHandler: FocusableChangeHandler) {\n focusables.current.add(focusableElement);\n focusHandlers.current.set(focusableElement, changeHandler);\n const isFocusable = !!focusablesState.current.get(focusableElement);\n const newIsFocusable = focusTarget.current === focusableElement || !!isElementSuppressed?.(focusableElement);\n if (newIsFocusable !== isFocusable) {\n focusablesState.current.set(focusableElement, newIsFocusable);\n changeHandler(newIsFocusable);\n }\n onRegisterFocusable?.(focusableElement);\n return () => unregisterFocusable(focusableElement);\n }\n function unregisterFocusable(focusableElement: Element) {\n focusables.current.delete(focusableElement);\n focusHandlers.current.delete(focusableElement);\n onUnregisterFocusable?.(focusableElement);\n }\n\n // Update focus target with next single focusable element and notify all registered focusables of a change.\n function updateFocusTarget() {\n focusTarget.current = getNextFocusTarget();\n for (const focusableElement of focusables.current) {\n const isFocusable = focusablesState.current.get(focusableElement) ?? false;\n const newIsFocusable = focusTarget.current === focusableElement || !!isElementSuppressed?.(focusableElement);\n if (newIsFocusable !== isFocusable) {\n focusablesState.current.set(focusableElement, newIsFocusable);\n focusHandlers.current.get(focusableElement)!(newIsFocusable);\n }\n }\n }\n\n function getFocusTarget() {\n return focusTarget.current;\n }\n\n function isRegistered(element: Element) {\n return focusables.current.has(element);\n }\n\n useImperativeHandle(ref, () => ({ updateFocusTarget, getFocusTarget, isRegistered }));\n\n return (\n <SingleTabStopNavigationContext.Provider value={{ navigationActive, registerFocusable }}>\n {children}\n </SingleTabStopNavigationContext.Provider>\n );\n }\n);\n"]}