@boomerang-io/carbon-addons-boomerang-react 4.6.10-beta.6 → 4.6.11-beta.1

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 (255) hide show
  1. package/README.md +162 -162
  2. package/dist/cjs/components/AboutPlatform/AboutPlatform.js +50 -50
  3. package/dist/cjs/components/AdvantageSideNav/AdvantageSideNav.js +242 -224
  4. package/dist/cjs/components/AutoSuggest/AutoSuggest.js +101 -101
  5. package/dist/cjs/components/Avatar/Avatar.js +18 -18
  6. package/dist/cjs/components/CheckboxList/CheckboxList.js +34 -34
  7. package/dist/cjs/components/ComboBox/ComboBox.js +103 -103
  8. package/dist/cjs/components/ComboBoxMultiSelect/ComboBoxMultiSelect.js +32 -32
  9. package/dist/cjs/components/ComboBoxMultiSelect/MultiSelect.js +208 -208
  10. package/dist/cjs/components/ComposedModal/ComposedModal.js +80 -80
  11. package/dist/cjs/components/ConfirmModal/ConfirmModal.js +43 -43
  12. package/dist/cjs/components/Creatable/Creatable.js +137 -137
  13. package/dist/cjs/components/DataDrivenInput/DataDrivenInput.js +226 -226
  14. package/dist/cjs/components/DateInput/DateInput.js +35 -35
  15. package/dist/cjs/components/DecisionButtons/DecisionButtons.js +61 -61
  16. package/dist/cjs/components/DelayedRender/DelayedRender.js +17 -17
  17. package/dist/cjs/components/DynamicFormik/DynamicFormik.js +578 -578
  18. package/dist/cjs/components/Error403/Error403.js +13 -13
  19. package/dist/cjs/components/Error403/ForbiddenErrorBackground.js +113 -113
  20. package/dist/cjs/components/Error403/GraphicWrangler/GraphicWrangler.js +62 -62
  21. package/dist/cjs/components/Error404/Error404.js +13 -13
  22. package/dist/cjs/components/Error404/GraphicLoch/GraphicLoch.js +17 -17
  23. package/dist/cjs/components/Error404/NotFoundErrorBackground.js +129 -129
  24. package/dist/cjs/components/ErrorBoundary/ErrorBoundary.js +32 -32
  25. package/dist/cjs/components/ErrorDragon/ErrorDragon.js +13 -13
  26. package/dist/cjs/components/ErrorDragon/assets/ErrorGraphic.js +35 -35
  27. package/dist/cjs/components/ErrorFullPage/ErrorFullPage.js +10 -10
  28. package/dist/cjs/components/ErrorMessage/ErrorMessage.js +22 -22
  29. package/dist/cjs/components/ErrorPage/ErrorPage.js +11 -11
  30. package/dist/cjs/components/ErrorPageCore/ErrorPageCore.js +15 -15
  31. package/dist/cjs/components/ErrorPageCore/GenericErrorBackground.js +124 -124
  32. package/dist/cjs/components/FeatureHeader/FeatureHeader.js +29 -29
  33. package/dist/cjs/components/FeatureNavTab/FeatureNavTab.js +12 -12
  34. package/dist/cjs/components/FeatureNavTabs/FeatureNavTabs.js +12 -12
  35. package/dist/cjs/components/FeatureSideNav/FeatureSideNav.js +12 -12
  36. package/dist/cjs/components/FeatureSideNav/FeatureSideNavFooter.js +8 -8
  37. package/dist/cjs/components/FeatureSideNav/FeatureSideNavHeader.js +8 -8
  38. package/dist/cjs/components/FeatureSideNav/FeatureSideNavLinks.js +14 -14
  39. package/dist/cjs/components/FeatureSideNavLink/FeatureSideNavLink.js +12 -12
  40. package/dist/cjs/components/Feedback/Feedback.js +40 -40
  41. package/dist/cjs/components/FlowModal/FlowModal.js +141 -141
  42. package/dist/cjs/components/FlowModal/FlowModalForm.js +12 -12
  43. package/dist/cjs/components/Header/Header.js +168 -182
  44. package/dist/cjs/components/Header/HeaderAppSwitcher.js +102 -94
  45. package/dist/cjs/components/Header/HeaderMenu.js +7 -7
  46. package/dist/cjs/components/Header/HeaderMenuItem.js +52 -52
  47. package/dist/cjs/components/Header/UserRequests.js +29 -29
  48. package/dist/cjs/components/ImageModal/ImageModal.js +17 -17
  49. package/dist/cjs/components/Loading/Loading.js +8 -8
  50. package/dist/cjs/components/MemberBar/MemberBar.js +20 -20
  51. package/dist/cjs/components/Modal/Modal.js +20 -20
  52. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmArray.js +14 -14
  53. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmDetails.js +11 -11
  54. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmEdit.js +17 -17
  55. package/dist/cjs/components/ModalForm/ModalForm.js +9 -9
  56. package/dist/cjs/components/Notifications/NotificationsContainer.js +22 -22
  57. package/dist/cjs/components/Notifications/ToastNotification.js +21 -21
  58. package/dist/cjs/components/Notifications/notify.js +17 -17
  59. package/dist/cjs/components/PlatformBanner/PlatformBanner.js +8 -8
  60. package/dist/cjs/components/PlatformNotifications/PlatformNotification.js +17 -17
  61. package/dist/cjs/components/PlatformNotifications/PlatformNotificationsContainer.js +136 -136
  62. package/dist/cjs/components/Portal/Portal.js +14 -14
  63. package/dist/cjs/components/PrivacyRedirect/PrivacyRedirect.js +30 -30
  64. package/dist/cjs/components/PrivacyStatement/PrivacyStatement.js +90 -90
  65. package/dist/cjs/components/ProfileSettings/ProfileSettings.js +124 -124
  66. package/dist/cjs/components/ProtectedRoute/ProtectedRoute.js +13 -13
  67. package/dist/cjs/components/RadioGroup/RadioGroup.js +33 -33
  68. package/dist/cjs/components/RichTextArea/RichTextArea.js +142 -142
  69. package/dist/cjs/components/SignOut/SignOut.js +27 -27
  70. package/dist/cjs/components/SupportCenter/SupportCenter.js +65 -65
  71. package/dist/cjs/components/TextArea/TextArea.js +16 -16
  72. package/dist/cjs/components/TextInput/TextInput.js +13 -13
  73. package/dist/cjs/components/Toggle/Toggle.js +22 -22
  74. package/dist/cjs/components/TooltipHover/TooltipHover.js +39 -39
  75. package/dist/cjs/components/UIShell/UIShell.js +89 -90
  76. package/dist/cjs/config/servicesConfig.js +21 -21
  77. package/dist/cjs/constants/DataDrivenInputTypes.js +74 -74
  78. package/dist/cjs/constants/UserType.js +13 -13
  79. package/dist/cjs/hooks/useHeaderMenu.js +49 -49
  80. package/dist/cjs/hooks/usePortal.js +74 -74
  81. package/dist/cjs/hooks/useWindowSize.js +33 -33
  82. package/dist/cjs/internal/ListBox/ListBox.js +41 -41
  83. package/dist/cjs/internal/ListBox/ListBoxField.js +19 -19
  84. package/dist/cjs/internal/ListBox/ListBoxMenu.js +19 -19
  85. package/dist/cjs/internal/ListBox/ListBoxMenuIcon.js +31 -31
  86. package/dist/cjs/internal/ListBox/ListBoxMenuItem.js +38 -38
  87. package/dist/cjs/internal/ListBox/ListBoxSelection.js +64 -64
  88. package/dist/cjs/internal/ListBox/index.js +10 -10
  89. package/dist/cjs/internal/keyboard/keys.js +16 -16
  90. package/dist/cjs/internal/keyboard/match.js +67 -67
  91. package/dist/cjs/internal/settings.js +5 -5
  92. package/dist/cjs/tools/accessibility.js +13 -13
  93. package/dist/cjs/tools/createPropAdapter.js +44 -44
  94. package/dist/cjs/tools/isUrl.js +39 -39
  95. package/dist/cjs/tools/setupGetInstanceId.js +20 -20
  96. package/dist/cjs/tools/useSetState.js +12 -12
  97. package/dist/cjs/tools/yupAst/astGenerator.js +212 -212
  98. package/dist/cjs/tools/yupAst/customValidators.js +17 -17
  99. package/dist/esm/components/AboutPlatform/AboutPlatform.js +50 -50
  100. package/dist/esm/components/AdvantageSideNav/AdvantageSideNav.js +244 -226
  101. package/dist/esm/components/AutoSuggest/AutoSuggest.js +101 -101
  102. package/dist/esm/components/Avatar/Avatar.js +18 -18
  103. package/dist/esm/components/CheckboxList/CheckboxList.js +34 -34
  104. package/dist/esm/components/ComboBox/ComboBox.js +103 -103
  105. package/dist/esm/components/ComboBoxMultiSelect/ComboBoxMultiSelect.js +32 -32
  106. package/dist/esm/components/ComboBoxMultiSelect/MultiSelect.js +208 -208
  107. package/dist/esm/components/ComposedModal/ComposedModal.js +80 -80
  108. package/dist/esm/components/ConfirmModal/ConfirmModal.js +43 -43
  109. package/dist/esm/components/Creatable/Creatable.js +137 -137
  110. package/dist/esm/components/DataDrivenInput/DataDrivenInput.js +226 -226
  111. package/dist/esm/components/DateInput/DateInput.js +35 -35
  112. package/dist/esm/components/DecisionButtons/DecisionButtons.js +61 -61
  113. package/dist/esm/components/DelayedRender/DelayedRender.js +17 -17
  114. package/dist/esm/components/DynamicFormik/DynamicFormik.js +578 -578
  115. package/dist/esm/components/Error403/Error403.js +13 -13
  116. package/dist/esm/components/Error403/ForbiddenErrorBackground.js +113 -113
  117. package/dist/esm/components/Error403/GraphicWrangler/GraphicWrangler.js +62 -62
  118. package/dist/esm/components/Error404/Error404.js +13 -13
  119. package/dist/esm/components/Error404/GraphicLoch/GraphicLoch.js +17 -17
  120. package/dist/esm/components/Error404/NotFoundErrorBackground.js +129 -129
  121. package/dist/esm/components/ErrorBoundary/ErrorBoundary.js +32 -32
  122. package/dist/esm/components/ErrorDragon/ErrorDragon.js +13 -13
  123. package/dist/esm/components/ErrorDragon/assets/ErrorGraphic.js +35 -35
  124. package/dist/esm/components/ErrorFullPage/ErrorFullPage.js +10 -10
  125. package/dist/esm/components/ErrorMessage/ErrorMessage.js +22 -22
  126. package/dist/esm/components/ErrorPage/ErrorPage.js +11 -11
  127. package/dist/esm/components/ErrorPageCore/ErrorPageCore.js +15 -15
  128. package/dist/esm/components/ErrorPageCore/GenericErrorBackground.js +124 -124
  129. package/dist/esm/components/FeatureHeader/FeatureHeader.js +29 -29
  130. package/dist/esm/components/FeatureNavTab/FeatureNavTab.js +12 -12
  131. package/dist/esm/components/FeatureNavTabs/FeatureNavTabs.js +12 -12
  132. package/dist/esm/components/FeatureSideNav/FeatureSideNav.js +12 -12
  133. package/dist/esm/components/FeatureSideNav/FeatureSideNavFooter.js +8 -8
  134. package/dist/esm/components/FeatureSideNav/FeatureSideNavHeader.js +8 -8
  135. package/dist/esm/components/FeatureSideNav/FeatureSideNavLinks.js +14 -14
  136. package/dist/esm/components/FeatureSideNavLink/FeatureSideNavLink.js +12 -12
  137. package/dist/esm/components/Feedback/Feedback.js +40 -40
  138. package/dist/esm/components/FlowModal/FlowModal.js +141 -141
  139. package/dist/esm/components/FlowModal/FlowModalForm.js +12 -12
  140. package/dist/esm/components/Header/Header.js +168 -182
  141. package/dist/esm/components/Header/HeaderAppSwitcher.js +102 -94
  142. package/dist/esm/components/Header/HeaderMenu.js +7 -7
  143. package/dist/esm/components/Header/HeaderMenuItem.js +52 -52
  144. package/dist/esm/components/Header/UserRequests.js +29 -29
  145. package/dist/esm/components/ImageModal/ImageModal.js +17 -17
  146. package/dist/esm/components/Loading/Loading.js +8 -8
  147. package/dist/esm/components/MemberBar/MemberBar.js +20 -20
  148. package/dist/esm/components/Modal/Modal.js +20 -20
  149. package/dist/esm/components/ModalConfirmEdit/ModalConfirmArray.js +14 -14
  150. package/dist/esm/components/ModalConfirmEdit/ModalConfirmDetails.js +11 -11
  151. package/dist/esm/components/ModalConfirmEdit/ModalConfirmEdit.js +17 -17
  152. package/dist/esm/components/ModalForm/ModalForm.js +9 -9
  153. package/dist/esm/components/Notifications/NotificationsContainer.js +22 -22
  154. package/dist/esm/components/Notifications/ToastNotification.js +21 -21
  155. package/dist/esm/components/Notifications/notify.js +17 -17
  156. package/dist/esm/components/PlatformBanner/PlatformBanner.js +8 -8
  157. package/dist/esm/components/PlatformNotifications/PlatformNotification.js +17 -17
  158. package/dist/esm/components/PlatformNotifications/PlatformNotificationsContainer.js +136 -136
  159. package/dist/esm/components/Portal/Portal.js +14 -14
  160. package/dist/esm/components/PrivacyRedirect/PrivacyRedirect.js +30 -30
  161. package/dist/esm/components/PrivacyStatement/PrivacyStatement.js +90 -90
  162. package/dist/esm/components/ProfileSettings/ProfileSettings.js +124 -124
  163. package/dist/esm/components/ProtectedRoute/ProtectedRoute.js +13 -13
  164. package/dist/esm/components/RadioGroup/RadioGroup.js +33 -33
  165. package/dist/esm/components/RichTextArea/RichTextArea.js +142 -142
  166. package/dist/esm/components/SignOut/SignOut.js +27 -27
  167. package/dist/esm/components/SupportCenter/SupportCenter.js +65 -65
  168. package/dist/esm/components/TextArea/TextArea.js +16 -16
  169. package/dist/esm/components/TextInput/TextInput.js +13 -13
  170. package/dist/esm/components/Toggle/Toggle.js +22 -22
  171. package/dist/esm/components/TooltipHover/TooltipHover.js +39 -39
  172. package/dist/esm/components/UIShell/UIShell.js +89 -90
  173. package/dist/esm/config/servicesConfig.js +21 -21
  174. package/dist/esm/constants/DataDrivenInputTypes.js +74 -74
  175. package/dist/esm/constants/UserType.js +13 -13
  176. package/dist/esm/hooks/useHeaderMenu.js +49 -49
  177. package/dist/esm/hooks/usePortal.js +74 -74
  178. package/dist/esm/hooks/useWindowSize.js +33 -33
  179. package/dist/esm/internal/ListBox/ListBox.js +41 -41
  180. package/dist/esm/internal/ListBox/ListBoxField.js +19 -19
  181. package/dist/esm/internal/ListBox/ListBoxMenu.js +19 -19
  182. package/dist/esm/internal/ListBox/ListBoxMenuIcon.js +31 -31
  183. package/dist/esm/internal/ListBox/ListBoxMenuItem.js +38 -38
  184. package/dist/esm/internal/ListBox/ListBoxSelection.js +64 -64
  185. package/dist/esm/internal/ListBox/index.js +10 -10
  186. package/dist/esm/internal/keyboard/keys.js +16 -16
  187. package/dist/esm/internal/keyboard/match.js +67 -67
  188. package/dist/esm/internal/settings.js +5 -5
  189. package/dist/esm/tools/accessibility.js +13 -13
  190. package/dist/esm/tools/createPropAdapter.js +44 -44
  191. package/dist/esm/tools/isUrl.js +39 -39
  192. package/dist/esm/tools/setupGetInstanceId.js +20 -20
  193. package/dist/esm/tools/useSetState.js +12 -12
  194. package/dist/esm/tools/yupAst/astGenerator.js +212 -212
  195. package/dist/esm/tools/yupAst/customValidators.js +17 -17
  196. package/dist/types/index.d.ts +1309 -1407
  197. package/package.json +167 -167
  198. package/scss/components/AboutPlatform/_aboutPlatform.scss +139 -139
  199. package/scss/components/AdvantageSideNav/_advantageSideNav.scss +267 -261
  200. package/scss/components/AutoSuggest/_autoSuggest.scss +62 -62
  201. package/scss/components/Avatar/_avatar.scss +32 -32
  202. package/scss/components/CheckboxList/_checkboxList.scss +26 -26
  203. package/scss/components/ComboBox/_combobox.scss +23 -23
  204. package/scss/components/ComboBoxMultiSelect/_comboBoxMultiSelect.scss +53 -53
  205. package/scss/components/ConfirmModal/_confirmModal.scss +12 -12
  206. package/scss/components/Creatable/_creatable.scss +48 -48
  207. package/scss/components/DateInput/_dateInput.scss +36 -36
  208. package/scss/components/DecisionButtons/_decisionButtons.scss +132 -132
  209. package/scss/components/DynamicFormik/_dynamicFormik.scss +17 -17
  210. package/scss/components/ErrorBoundary/_errorBoundary.scss +12 -12
  211. package/scss/components/ErrorDragon/_errorDragon.scss +55 -55
  212. package/scss/components/ErrorMessage/_errorMessage.scss +43 -43
  213. package/scss/components/ErrorPage/_errorPage.scss +66 -66
  214. package/scss/components/ErrorPageCore/_errorPageCore.scss +73 -73
  215. package/scss/components/FeatureHeader/_featureHeader.scss +67 -67
  216. package/scss/components/FeatureNavTab/_featureNavTab.scss +27 -27
  217. package/scss/components/FeatureSideNav/_featureSideNav.scss +76 -76
  218. package/scss/components/FeatureSideNavLink/_featureSideNavLink.scss +49 -49
  219. package/scss/components/Feedback/_feedback.scss +46 -46
  220. package/scss/components/Header/_header.scss +179 -179
  221. package/scss/components/Header/_headerAppSwitcher.scss +117 -117
  222. package/scss/components/Header/_headerMenu.scss +30 -30
  223. package/scss/components/Header/_headerMenuItem.scss +65 -65
  224. package/scss/components/Header/_userRequests.scss +36 -36
  225. package/scss/components/ImageModal/_imageModal.scss +51 -51
  226. package/scss/components/MemberBar/_memberBar.scss +99 -99
  227. package/scss/components/Modal/_modal.scss +163 -163
  228. package/scss/components/ModalConfirmEdit/_modalConfirmEdit.scss +113 -113
  229. package/scss/components/Notifications/_notifications.scss +57 -57
  230. package/scss/components/PlatformBanner/_platformBanner.scss +30 -30
  231. package/scss/components/PlatformNotifications/_platformNotifications.scss +230 -230
  232. package/scss/components/PrivacyRedirect/_privacyRedirect.scss +43 -43
  233. package/scss/components/PrivacyStatement/_privacyStatement.scss +137 -137
  234. package/scss/components/ProfileSettings/_profileSettings.scss +117 -117
  235. package/scss/components/ProtectedRoute/_protectedRoute.scss +32 -32
  236. package/scss/components/RadioGroup/_radioGroup.scss +46 -46
  237. package/scss/components/RichTextArea/_richTextArea.scss +82 -82
  238. package/scss/components/SignOut/_signOut.scss +51 -51
  239. package/scss/components/SupportCenter/_supportCenter.scss +16 -16
  240. package/scss/components/TextArea/_textArea.scss +19 -19
  241. package/scss/components/TextInput/_textInput.scss +26 -26
  242. package/scss/components/Toggle/_toggle.scss +80 -80
  243. package/scss/components/TooltipHover/_tooltip.scss +48 -48
  244. package/scss/global/_config.scss +14 -14
  245. package/scss/global/_tippy.scss +49 -49
  246. package/scss/global/index.scss +402 -401
  247. package/scss/global/themes/_boomerang.scss +184 -184
  248. package/scss/global/themes/_default.scss +79 -79
  249. package/scss/global/themes/_shell-tokens.scss +42 -42
  250. package/scss/global/utils/_animations.scss +15 -15
  251. package/scss/global/utils/_mixins.scss +67 -67
  252. package/scss/global/utils/index.scss +10 -10
  253. package/dist/cjs/components/Header/HeaderTeamSwitcher.js +0 -324
  254. package/dist/esm/components/Header/HeaderTeamSwitcher.js +0 -315
  255. package/scss/components/Header/_headerTeamSwitcher.scss +0 -195
@@ -1,79 +1,79 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
 
3
- /*
4
- IBM Confidential
5
- 694970X, 69497O0
6
- © Copyright IBM Corp. 2022, 2024
7
- */
8
- /**
9
- * Creates DOM element to be used as React root.
10
- */
11
- function createRootElement(id) {
12
- const rootContainer = document.createElement("div");
13
- rootContainer.setAttribute("id", id);
14
- return rootContainer;
15
- }
16
- /**
17
- * Appends element as last child of body.
18
- * @param {HTMLElement} rootElem
19
- */
20
- function addRootElement(rootElem) {
21
- if (document.body.lastElementChild) {
22
- document.body.insertBefore(rootElem, document.body.lastElementChild.nextElementSibling);
23
- }
24
- }
25
- /**
26
- * Hook to create a React Portal.
27
- * Automatically handles creating and tearing-down the root elements (no SRR
28
- * makes this trivial), so there is no need to ensure the parent target already
29
- * exists.
30
- * @example
31
- * const target = usePortal(id, [id]);
32
- * return createPortal(children, target);
33
- * @param {String} id The id of the target container, e.g 'modal' or 'spotlight'
34
- * @returns {HTMLElement} The DOM node to use as the Portal target.
35
- */
36
- function usePortal(id) {
37
- const rootElemRef = useRef(null);
38
- useEffect(function setupElement() {
39
- // Look for existing target dom element to append to
40
- const existingParent = document.querySelector(`#${id}`);
41
- // Parent is either a new root or the existing dom element
42
- const parentElem = existingParent || createRootElement(id);
43
- // If there is no existing DOM element, add a new one.
44
- if (!existingParent) {
45
- addRootElement(parentElem);
46
- }
47
- // Add the detached element to the parent
48
- if (rootElemRef.current) {
49
- parentElem.appendChild(rootElemRef.current);
50
- }
51
- return function removeElement() {
52
- if (rootElemRef.current) {
53
- rootElemRef.current.remove();
54
- if (parentElem.childNodes.length === -1) {
55
- parentElem.remove();
56
- }
57
- }
58
- };
59
- }, [id]);
60
- /**
61
- * It's important we evaluate this lazily:
62
- * - We need first render to contain the DOM element, so it shouldn't happen
63
- * in useEffect. We would normally put this in the constructor().
64
- * - We can't do 'const rootElemRef = useRef(document.createElement('div))',
65
- * since this will run every single render (that's a lot).
66
- * - We want the ref to consistently point to the same DOM element and only
67
- * ever run once.
68
- * @link https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily
69
- */
70
- function getRootElem() {
71
- if (!rootElemRef.current) {
72
- rootElemRef.current = document.createElement("div");
73
- }
74
- return rootElemRef.current;
75
- }
76
- return getRootElem();
3
+ /*
4
+ IBM Confidential
5
+ 694970X, 69497O0
6
+ © Copyright IBM Corp. 2022, 2024
7
+ */
8
+ /**
9
+ * Creates DOM element to be used as React root.
10
+ */
11
+ function createRootElement(id) {
12
+ const rootContainer = document.createElement("div");
13
+ rootContainer.setAttribute("id", id);
14
+ return rootContainer;
15
+ }
16
+ /**
17
+ * Appends element as last child of body.
18
+ * @param {HTMLElement} rootElem
19
+ */
20
+ function addRootElement(rootElem) {
21
+ if (document.body.lastElementChild) {
22
+ document.body.insertBefore(rootElem, document.body.lastElementChild.nextElementSibling);
23
+ }
24
+ }
25
+ /**
26
+ * Hook to create a React Portal.
27
+ * Automatically handles creating and tearing-down the root elements (no SRR
28
+ * makes this trivial), so there is no need to ensure the parent target already
29
+ * exists.
30
+ * @example
31
+ * const target = usePortal(id, [id]);
32
+ * return createPortal(children, target);
33
+ * @param {String} id The id of the target container, e.g 'modal' or 'spotlight'
34
+ * @returns {HTMLElement} The DOM node to use as the Portal target.
35
+ */
36
+ function usePortal(id) {
37
+ const rootElemRef = useRef(null);
38
+ useEffect(function setupElement() {
39
+ // Look for existing target dom element to append to
40
+ const existingParent = document.querySelector(`#${id}`);
41
+ // Parent is either a new root or the existing dom element
42
+ const parentElem = existingParent || createRootElement(id);
43
+ // If there is no existing DOM element, add a new one.
44
+ if (!existingParent) {
45
+ addRootElement(parentElem);
46
+ }
47
+ // Add the detached element to the parent
48
+ if (rootElemRef.current) {
49
+ parentElem.appendChild(rootElemRef.current);
50
+ }
51
+ return function removeElement() {
52
+ if (rootElemRef.current) {
53
+ rootElemRef.current.remove();
54
+ if (parentElem.childNodes.length === -1) {
55
+ parentElem.remove();
56
+ }
57
+ }
58
+ };
59
+ }, [id]);
60
+ /**
61
+ * It's important we evaluate this lazily:
62
+ * - We need first render to contain the DOM element, so it shouldn't happen
63
+ * in useEffect. We would normally put this in the constructor().
64
+ * - We can't do 'const rootElemRef = useRef(document.createElement('div))',
65
+ * since this will run every single render (that's a lot).
66
+ * - We want the ref to consistently point to the same DOM element and only
67
+ * ever run once.
68
+ * @link https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily
69
+ */
70
+ function getRootElem() {
71
+ if (!rootElemRef.current) {
72
+ rootElemRef.current = document.createElement("div");
73
+ }
74
+ return rootElemRef.current;
75
+ }
76
+ return getRootElem();
77
77
  }
78
78
 
79
79
  export { usePortal as default };
@@ -1,38 +1,38 @@
1
1
  import { useState, useEffect } from 'react';
2
2
 
3
- /*
4
- IBM Confidential
5
- 694970X, 69497O0
6
- © Copyright IBM Corp. 2022, 2024
7
- */
8
- // https://usehooks.com/useWindowSize/
9
- /**
10
- * Gets the dimensions of the window
11
- */
12
- function useWindowSize() {
13
- // Initialize state with undefined width/height so server and client renders match
14
- // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/
15
- const [windowSize, setWindowSize] = useState({
16
- width: undefined,
17
- height: undefined,
18
- });
19
- useEffect(() => {
20
- // Handler to call on window resize
21
- function handleResize() {
22
- // Set window width/height to state
23
- setWindowSize({
24
- width: window.innerWidth,
25
- height: window.innerHeight,
26
- });
27
- }
28
- // Add event listener
29
- window.addEventListener("resize", handleResize);
30
- // Call handler right away so state gets updated with initial window size
31
- handleResize();
32
- // Remove event listener on cleanup
33
- return () => window.removeEventListener("resize", handleResize);
34
- }, []); // Empty array ensures that effect is only run on mount
35
- return windowSize;
3
+ /*
4
+ IBM Confidential
5
+ 694970X, 69497O0
6
+ © Copyright IBM Corp. 2022, 2024
7
+ */
8
+ // https://usehooks.com/useWindowSize/
9
+ /**
10
+ * Gets the dimensions of the window
11
+ */
12
+ function useWindowSize() {
13
+ // Initialize state with undefined width/height so server and client renders match
14
+ // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/
15
+ const [windowSize, setWindowSize] = useState({
16
+ width: undefined,
17
+ height: undefined,
18
+ });
19
+ useEffect(() => {
20
+ // Handler to call on window resize
21
+ function handleResize() {
22
+ // Set window width/height to state
23
+ setWindowSize({
24
+ width: window.innerWidth,
25
+ height: window.innerHeight,
26
+ });
27
+ }
28
+ // Add event listener
29
+ window.addEventListener("resize", handleResize);
30
+ // Call handler right away so state gets updated with initial window size
31
+ handleResize();
32
+ // Remove event listener on cleanup
33
+ return () => window.removeEventListener("resize", handleResize);
34
+ }, []); // Empty array ensures that effect is only run on mount
35
+ return windowSize;
36
36
  }
37
37
 
38
38
  export { useWindowSize as default };
@@ -2,47 +2,47 @@ import React from 'react';
2
2
  import cx from 'classnames';
3
3
  import { prefix } from '../settings.js';
4
4
 
5
- /*
6
- IBM Confidential
7
- 694970X, 69497O0
8
- © Copyright IBM Corp. 2022, 2024
9
- */
10
- /**
11
- * Copyright IBM Corp. 2016, 2018
12
- *
13
- * This source code is licensed under the Apache-2.0 license found in the
14
- * LICENSE file in the root directory of this source tree.
15
- */
16
- const handleOnKeyDown = (event) => {
17
- if (event.keyCode === 27) {
18
- event.stopPropagation();
19
- }
20
- };
21
- const handleClick = (event) => {
22
- event.preventDefault();
23
- event.stopPropagation();
24
- };
25
- /**
26
- * `ListBox` is a generic container component that handles creating the
27
- * container class name in response to certain props.
28
- */
29
- const ListBox = React.forwardRef(function ListBox({ children, className: containerClassName, disabled = false, type = "default", size, invalid, invalidText, warn, warnText, light, isOpen, ...rest }, ref) {
30
- const showWarning = !invalid && warn;
31
- const className = cx({
32
- [containerClassName]: !!containerClassName,
33
- [`${prefix}--list-box`]: true,
34
- [`${prefix}--list-box--${size}`]: size,
35
- [`${prefix}--list-box--inline`]: type === "inline",
36
- [`${prefix}--list-box--disabled`]: disabled,
37
- [`${prefix}--list-box--light`]: light,
38
- [`${prefix}--list-box--expanded`]: isOpen,
39
- [`${prefix}--list-box--warning`]: showWarning,
40
- });
41
- return (React.createElement(React.Fragment, null,
42
- React.createElement("div", { ...rest, className: className, ref: ref, onKeyDown: handleOnKeyDown, onClick: handleClick, "data-invalid": invalid || undefined }, children),
43
- invalid ? React.createElement("div", { className: `${prefix}--form-requirement` }, invalidText) : null,
44
- showWarning ? React.createElement("div", { className: `${prefix}--form-requirement` }, warnText) : null));
45
- });
5
+ /*
6
+ IBM Confidential
7
+ 694970X, 69497O0
8
+ © Copyright IBM Corp. 2022, 2024
9
+ */
10
+ /**
11
+ * Copyright IBM Corp. 2016, 2018
12
+ *
13
+ * This source code is licensed under the Apache-2.0 license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */
16
+ const handleOnKeyDown = (event) => {
17
+ if (event.keyCode === 27) {
18
+ event.stopPropagation();
19
+ }
20
+ };
21
+ const handleClick = (event) => {
22
+ event.preventDefault();
23
+ event.stopPropagation();
24
+ };
25
+ /**
26
+ * `ListBox` is a generic container component that handles creating the
27
+ * container class name in response to certain props.
28
+ */
29
+ const ListBox = React.forwardRef(function ListBox({ children, className: containerClassName, disabled = false, type = "default", size, invalid, invalidText, warn, warnText, light, isOpen, ...rest }, ref) {
30
+ const showWarning = !invalid && warn;
31
+ const className = cx({
32
+ [containerClassName]: !!containerClassName,
33
+ [`${prefix}--list-box`]: true,
34
+ [`${prefix}--list-box--${size}`]: size,
35
+ [`${prefix}--list-box--inline`]: type === "inline",
36
+ [`${prefix}--list-box--disabled`]: disabled,
37
+ [`${prefix}--list-box--light`]: light,
38
+ [`${prefix}--list-box--expanded`]: isOpen,
39
+ [`${prefix}--list-box--warning`]: showWarning,
40
+ });
41
+ return (React.createElement(React.Fragment, null,
42
+ React.createElement("div", { ...rest, className: className, ref: ref, onKeyDown: handleOnKeyDown, onClick: handleClick, "data-invalid": invalid || undefined }, children),
43
+ invalid ? React.createElement("div", { className: `${prefix}--form-requirement` }, invalidText) : null,
44
+ showWarning ? React.createElement("div", { className: `${prefix}--form-requirement` }, warnText) : null));
45
+ });
46
46
  ListBox.displayName = "ListBox";
47
47
 
48
48
  export { ListBox as default };
@@ -1,25 +1,25 @@
1
1
  import React from 'react';
2
2
  import { prefix } from '../settings.js';
3
3
 
4
- /*
5
- IBM Confidential
6
- 694970X, 69497O0
7
- © Copyright IBM Corp. 2022, 2024
8
- */
9
- /**
10
- * Copyright IBM Corp. 2016, 2018
11
- *
12
- * This source code is licensed under the Apache-2.0 license found in the
13
- * LICENSE file in the root directory of this source tree.
14
- */
15
- /**
16
- * `ListBoxField` is responsible for creating the containing node for valid
17
- * elements inside of a field. It also provides a11y-related attributes like
18
- * `role` to make sure a user can focus the given field.
19
- */
20
- function ListBoxField({ children, disabled, tabIndex, ...rest }) {
21
- const numTabIndex = typeof tabIndex === "string" ? parseInt(tabIndex) : tabIndex;
22
- return (React.createElement("div", { className: `${prefix}--list-box__field`, tabIndex: (!disabled && numTabIndex) || -1, ...rest }, children));
4
+ /*
5
+ IBM Confidential
6
+ 694970X, 69497O0
7
+ © Copyright IBM Corp. 2022, 2024
8
+ */
9
+ /**
10
+ * Copyright IBM Corp. 2016, 2018
11
+ *
12
+ * This source code is licensed under the Apache-2.0 license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */
15
+ /**
16
+ * `ListBoxField` is responsible for creating the containing node for valid
17
+ * elements inside of a field. It also provides a11y-related attributes like
18
+ * `role` to make sure a user can focus the given field.
19
+ */
20
+ function ListBoxField({ children, disabled, tabIndex, ...rest }) {
21
+ const numTabIndex = typeof tabIndex === "string" ? parseInt(tabIndex) : tabIndex;
22
+ return (React.createElement("div", { className: `${prefix}--list-box__field`, tabIndex: (!disabled && numTabIndex) || -1, ...rest }, children));
23
23
  }
24
24
 
25
25
  export { ListBoxField as default };
@@ -1,25 +1,25 @@
1
1
  import React from 'react';
2
2
  import { prefix } from '../settings.js';
3
3
 
4
- /*
5
- IBM Confidential
6
- 694970X, 69497O0
7
- © Copyright IBM Corp. 2022, 2024
8
- */
9
- /**
10
- * Copyright IBM Corp. 2016, 2018
11
- *
12
- * This source code is licensed under the Apache-2.0 license found in the
13
- * LICENSE file in the root directory of this source tree.
14
- */
15
- /**
16
- * `ListBoxMenu` is a simple container node that isolates the `list-box__menu`
17
- * class into a single component. It is also being used to validate given
18
- * `children` components.
19
- */
20
- const ListBoxMenu = React.forwardRef(function ListBoxMenu({ children, id, ...rest }, ref) {
21
- return (React.createElement("div", { ref: ref, id: id, className: `${prefix}--list-box__menu`, role: "listbox", ...rest }, children));
22
- });
4
+ /*
5
+ IBM Confidential
6
+ 694970X, 69497O0
7
+ © Copyright IBM Corp. 2022, 2024
8
+ */
9
+ /**
10
+ * Copyright IBM Corp. 2016, 2018
11
+ *
12
+ * This source code is licensed under the Apache-2.0 license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */
15
+ /**
16
+ * `ListBoxMenu` is a simple container node that isolates the `list-box__menu`
17
+ * class into a single component. It is also being used to validate given
18
+ * `children` components.
19
+ */
20
+ const ListBoxMenu = React.forwardRef(function ListBoxMenu({ children, id, ...rest }, ref) {
21
+ return (React.createElement("div", { ref: ref, id: id, className: `${prefix}--list-box__menu`, role: "listbox", ...rest }, children));
22
+ });
23
23
  ListBoxMenu.displayName = "ListBoxMenu";
24
24
 
25
25
  export { ListBoxMenu as default };
@@ -3,37 +3,37 @@ import cx from 'classnames';
3
3
  import { ChevronDown } from '@carbon/react/icons';
4
4
  import { prefix } from '../settings.js';
5
5
 
6
- /*
7
- IBM Confidential
8
- 694970X, 69497O0
9
- © Copyright IBM Corp. 2022, 2024
10
- */
11
- /**
12
- * Copyright IBM Corp. 2016, 2018
13
- *
14
- * This source code is licensed under the Apache-2.0 license found in the
15
- * LICENSE file in the root directory of this source tree.
16
- */
17
- const translationIds = {
18
- "close.menu": "close.menu",
19
- "open.menu": "open.menu",
20
- };
21
- const defaultTranslations = {
22
- [translationIds["close.menu"]]: "Close menu",
23
- [translationIds["open.menu"]]: "Open menu",
24
- };
25
- /**
26
- * `ListBoxMenuIcon` is used to orient the icon up or down depending on the
27
- * state of the menu for a given `ListBox`
28
- */
29
- const ListBoxMenuIcon = ({ isOpen, translateWithId: t = (id) => defaultTranslations[id] }) => {
30
- const className = cx(`${prefix}--list-box__menu-icon`, {
31
- [`${prefix}--list-box__menu-icon--open`]: isOpen,
32
- });
33
- const description = isOpen ? t("close.menu") : t("open.menu");
34
- return (React.createElement("div", { className: className },
35
- React.createElement(ChevronDown, { name: "chevron--down", "aria-label": description },
36
- React.createElement("title", null, description))));
6
+ /*
7
+ IBM Confidential
8
+ 694970X, 69497O0
9
+ © Copyright IBM Corp. 2022, 2024
10
+ */
11
+ /**
12
+ * Copyright IBM Corp. 2016, 2018
13
+ *
14
+ * This source code is licensed under the Apache-2.0 license found in the
15
+ * LICENSE file in the root directory of this source tree.
16
+ */
17
+ const translationIds = {
18
+ "close.menu": "close.menu",
19
+ "open.menu": "open.menu",
20
+ };
21
+ const defaultTranslations = {
22
+ [translationIds["close.menu"]]: "Close menu",
23
+ [translationIds["open.menu"]]: "Open menu",
24
+ };
25
+ /**
26
+ * `ListBoxMenuIcon` is used to orient the icon up or down depending on the
27
+ * state of the menu for a given `ListBox`
28
+ */
29
+ const ListBoxMenuIcon = ({ isOpen, translateWithId: t = (id) => defaultTranslations[id] }) => {
30
+ const className = cx(`${prefix}--list-box__menu-icon`, {
31
+ [`${prefix}--list-box__menu-icon--open`]: isOpen,
32
+ });
33
+ const description = isOpen ? t("close.menu") : t("open.menu");
34
+ return (React.createElement("div", { className: className },
35
+ React.createElement(ChevronDown, { name: "chevron--down", "aria-label": description },
36
+ React.createElement("title", null, description))));
37
37
  };
38
38
 
39
39
  export { ListBoxMenuIcon as default, translationIds };
@@ -2,44 +2,44 @@ import React, { useRef, useState, useEffect } from 'react';
2
2
  import cx from 'classnames';
3
3
  import { prefix } from '../settings.js';
4
4
 
5
- /*
6
- IBM Confidential
7
- 694970X, 69497O0
8
- © Copyright IBM Corp. 2022, 2024
9
- */
10
- /**
11
- * Copyright IBM Corp. 2016, 2018
12
- *
13
- * This source code is licensed under the Apache-2.0 license found in the
14
- * LICENSE file in the root directory of this source tree.
15
- */
16
- function useIsTruncated(ref) {
17
- const [isTruncated, setIsTruncated] = useState(false);
18
- useEffect(() => {
19
- const { offsetWidth, scrollWidth } = ref.current;
20
- setIsTruncated(offsetWidth < scrollWidth);
21
- }, [ref, setIsTruncated]);
22
- return isTruncated;
23
- }
24
- /**
25
- * `ListBoxMenuItem` is a helper component for managing the container class
26
- * name, alongside any classes for any corresponding states, for a generic list
27
- * box menu item.
28
- */
29
- const ListBoxMenuItem = React.forwardRef(function ListBoxMenuItem({ children, isActive, isHighlighted, title, ...rest }, forwardedRef) {
30
- const ref = useRef(null);
31
- const isTruncated = useIsTruncated(forwardedRef?.menuItemOptionRef || ref);
32
- const className = cx(`${prefix}--list-box__menu-item`, {
33
- [`${prefix}--list-box__menu-item--active`]: isActive,
34
- [`${prefix}--list-box__menu-item--highlighted`]: isHighlighted,
35
- });
36
- return (React.createElement("div", { ...rest, className: className, title: isTruncated ? title : undefined },
37
- React.createElement("div", { className: `${prefix}--list-box__menu-item__option`, ref: forwardedRef?.menuItemOptionRef || ref }, children)));
38
- });
39
- ListBoxMenuItem.displayName = "ListBoxMenuItem";
40
- ListBoxMenuItem.defaultProps = {
41
- isActive: false,
42
- isHighlighted: false,
5
+ /*
6
+ IBM Confidential
7
+ 694970X, 69497O0
8
+ © Copyright IBM Corp. 2022, 2024
9
+ */
10
+ /**
11
+ * Copyright IBM Corp. 2016, 2018
12
+ *
13
+ * This source code is licensed under the Apache-2.0 license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */
16
+ function useIsTruncated(ref) {
17
+ const [isTruncated, setIsTruncated] = useState(false);
18
+ useEffect(() => {
19
+ const { offsetWidth, scrollWidth } = ref.current;
20
+ setIsTruncated(offsetWidth < scrollWidth);
21
+ }, [ref, setIsTruncated]);
22
+ return isTruncated;
23
+ }
24
+ /**
25
+ * `ListBoxMenuItem` is a helper component for managing the container class
26
+ * name, alongside any classes for any corresponding states, for a generic list
27
+ * box menu item.
28
+ */
29
+ const ListBoxMenuItem = React.forwardRef(function ListBoxMenuItem({ children, isActive, isHighlighted, title, ...rest }, forwardedRef) {
30
+ const ref = useRef(null);
31
+ const isTruncated = useIsTruncated(forwardedRef?.menuItemOptionRef || ref);
32
+ const className = cx(`${prefix}--list-box__menu-item`, {
33
+ [`${prefix}--list-box__menu-item--active`]: isActive,
34
+ [`${prefix}--list-box__menu-item--highlighted`]: isHighlighted,
35
+ });
36
+ return (React.createElement("div", { ...rest, className: className, title: isTruncated ? title : undefined },
37
+ React.createElement("div", { className: `${prefix}--list-box__menu-item__option`, ref: forwardedRef?.menuItemOptionRef || ref }, children)));
38
+ });
39
+ ListBoxMenuItem.displayName = "ListBoxMenuItem";
40
+ ListBoxMenuItem.defaultProps = {
41
+ isActive: false,
42
+ isHighlighted: false,
43
43
  };
44
44
 
45
45
  export { ListBoxMenuItem as default };