@boomerang-io/carbon-addons-boomerang-react 4.6.14-beta.9 → 4.6.15-beta.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 (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 +221 -221
  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 +38 -38
  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 +187 -187
  44. package/dist/cjs/components/Header/HeaderAppSwitcher.js +94 -94
  45. package/dist/cjs/components/Header/HeaderMenu.js +7 -7
  46. package/dist/cjs/components/Header/HeaderMenuItem.js +51 -51
  47. package/dist/cjs/components/Header/HeaderTeamSwitcher.js +329 -332
  48. package/dist/cjs/components/Header/UserRequests.js +29 -29
  49. package/dist/cjs/components/ImageModal/ImageModal.js +17 -17
  50. package/dist/cjs/components/Loading/Loading.js +8 -8
  51. package/dist/cjs/components/MemberBar/MemberBar.js +20 -20
  52. package/dist/cjs/components/Modal/Modal.js +20 -20
  53. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmArray.js +14 -14
  54. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmDetails.js +11 -11
  55. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmEdit.js +17 -17
  56. package/dist/cjs/components/ModalForm/ModalForm.js +9 -9
  57. package/dist/cjs/components/Notifications/NotificationsContainer.js +22 -22
  58. package/dist/cjs/components/Notifications/ToastNotification.js +21 -21
  59. package/dist/cjs/components/Notifications/notify.js +17 -17
  60. package/dist/cjs/components/PlatformBanner/PlatformBanner.js +8 -8
  61. package/dist/cjs/components/PlatformNotifications/PlatformNotification.js +17 -17
  62. package/dist/cjs/components/PlatformNotifications/PlatformNotificationsContainer.js +136 -136
  63. package/dist/cjs/components/Portal/Portal.js +14 -14
  64. package/dist/cjs/components/PrivacyRedirect/PrivacyRedirect.js +30 -30
  65. package/dist/cjs/components/PrivacyStatement/PrivacyStatement.js +90 -90
  66. package/dist/cjs/components/ProfileSettings/ProfileSettings.js +124 -142
  67. package/dist/cjs/components/ProtectedRoute/ProtectedRoute.js +13 -13
  68. package/dist/cjs/components/RadioGroup/RadioGroup.js +33 -33
  69. package/dist/cjs/components/RichTextArea/RichTextArea.js +142 -142
  70. package/dist/cjs/components/SignOut/SignOut.js +27 -27
  71. package/dist/cjs/components/SupportCenter/SupportCenter.js +65 -65
  72. package/dist/cjs/components/TextArea/TextArea.js +16 -16
  73. package/dist/cjs/components/TextInput/TextInput.js +13 -13
  74. package/dist/cjs/components/Toggle/Toggle.js +22 -22
  75. package/dist/cjs/components/TooltipHover/TooltipHover.js +39 -39
  76. package/dist/cjs/components/UIShell/UIShell.js +95 -95
  77. package/dist/cjs/config/servicesConfig.js +22 -22
  78. package/dist/cjs/constants/DataDrivenInputTypes.js +74 -74
  79. package/dist/cjs/constants/UserType.js +13 -13
  80. package/dist/cjs/hooks/useHeaderMenu.js +49 -49
  81. package/dist/cjs/hooks/usePortal.js +74 -74
  82. package/dist/cjs/hooks/useWindowSize.js +33 -33
  83. package/dist/cjs/internal/ListBox/ListBox.js +41 -41
  84. package/dist/cjs/internal/ListBox/ListBoxField.js +19 -19
  85. package/dist/cjs/internal/ListBox/ListBoxMenu.js +19 -19
  86. package/dist/cjs/internal/ListBox/ListBoxMenuIcon.js +31 -31
  87. package/dist/cjs/internal/ListBox/ListBoxMenuItem.js +38 -38
  88. package/dist/cjs/internal/ListBox/ListBoxSelection.js +64 -64
  89. package/dist/cjs/internal/ListBox/index.js +10 -10
  90. package/dist/cjs/internal/keyboard/keys.js +16 -16
  91. package/dist/cjs/internal/keyboard/match.js +67 -67
  92. package/dist/cjs/internal/settings.js +5 -5
  93. package/dist/cjs/tools/accessibility.js +13 -13
  94. package/dist/cjs/tools/createPropAdapter.js +44 -44
  95. package/dist/cjs/tools/isUrl.js +39 -39
  96. package/dist/cjs/tools/setupGetInstanceId.js +20 -20
  97. package/dist/cjs/tools/useSetState.js +12 -12
  98. package/dist/cjs/tools/yupAst/astGenerator.js +212 -212
  99. package/dist/cjs/tools/yupAst/customValidators.js +17 -17
  100. package/dist/esm/components/AboutPlatform/AboutPlatform.js +50 -50
  101. package/dist/esm/components/AdvantageSideNav/AdvantageSideNav.js +221 -221
  102. package/dist/esm/components/AutoSuggest/AutoSuggest.js +101 -101
  103. package/dist/esm/components/Avatar/Avatar.js +18 -18
  104. package/dist/esm/components/CheckboxList/CheckboxList.js +34 -34
  105. package/dist/esm/components/ComboBox/ComboBox.js +103 -103
  106. package/dist/esm/components/ComboBoxMultiSelect/ComboBoxMultiSelect.js +32 -32
  107. package/dist/esm/components/ComboBoxMultiSelect/MultiSelect.js +208 -208
  108. package/dist/esm/components/ComposedModal/ComposedModal.js +80 -80
  109. package/dist/esm/components/ConfirmModal/ConfirmModal.js +43 -43
  110. package/dist/esm/components/Creatable/Creatable.js +137 -137
  111. package/dist/esm/components/DataDrivenInput/DataDrivenInput.js +226 -226
  112. package/dist/esm/components/DateInput/DateInput.js +35 -35
  113. package/dist/esm/components/DecisionButtons/DecisionButtons.js +61 -61
  114. package/dist/esm/components/DelayedRender/DelayedRender.js +17 -17
  115. package/dist/esm/components/DynamicFormik/DynamicFormik.js +578 -578
  116. package/dist/esm/components/Error403/Error403.js +13 -13
  117. package/dist/esm/components/Error403/ForbiddenErrorBackground.js +113 -113
  118. package/dist/esm/components/Error403/GraphicWrangler/GraphicWrangler.js +62 -62
  119. package/dist/esm/components/Error404/Error404.js +13 -13
  120. package/dist/esm/components/Error404/GraphicLoch/GraphicLoch.js +17 -17
  121. package/dist/esm/components/Error404/NotFoundErrorBackground.js +129 -129
  122. package/dist/esm/components/ErrorBoundary/ErrorBoundary.js +32 -32
  123. package/dist/esm/components/ErrorDragon/ErrorDragon.js +13 -13
  124. package/dist/esm/components/ErrorDragon/assets/ErrorGraphic.js +35 -35
  125. package/dist/esm/components/ErrorFullPage/ErrorFullPage.js +10 -10
  126. package/dist/esm/components/ErrorMessage/ErrorMessage.js +22 -22
  127. package/dist/esm/components/ErrorPage/ErrorPage.js +11 -11
  128. package/dist/esm/components/ErrorPageCore/ErrorPageCore.js +15 -15
  129. package/dist/esm/components/ErrorPageCore/GenericErrorBackground.js +124 -124
  130. package/dist/esm/components/FeatureHeader/FeatureHeader.js +29 -29
  131. package/dist/esm/components/FeatureNavTab/FeatureNavTab.js +12 -12
  132. package/dist/esm/components/FeatureNavTabs/FeatureNavTabs.js +12 -12
  133. package/dist/esm/components/FeatureSideNav/FeatureSideNav.js +12 -12
  134. package/dist/esm/components/FeatureSideNav/FeatureSideNavFooter.js +8 -8
  135. package/dist/esm/components/FeatureSideNav/FeatureSideNavHeader.js +8 -8
  136. package/dist/esm/components/FeatureSideNav/FeatureSideNavLinks.js +14 -14
  137. package/dist/esm/components/FeatureSideNavLink/FeatureSideNavLink.js +12 -12
  138. package/dist/esm/components/Feedback/Feedback.js +38 -38
  139. package/dist/esm/components/FlowModal/FlowModal.js +141 -141
  140. package/dist/esm/components/FlowModal/FlowModalForm.js +12 -12
  141. package/dist/esm/components/Header/Header.js +187 -187
  142. package/dist/esm/components/Header/HeaderAppSwitcher.js +94 -94
  143. package/dist/esm/components/Header/HeaderMenu.js +7 -7
  144. package/dist/esm/components/Header/HeaderMenuItem.js +51 -51
  145. package/dist/esm/components/Header/HeaderTeamSwitcher.js +329 -332
  146. package/dist/esm/components/Header/UserRequests.js +29 -29
  147. package/dist/esm/components/ImageModal/ImageModal.js +17 -17
  148. package/dist/esm/components/Loading/Loading.js +8 -8
  149. package/dist/esm/components/MemberBar/MemberBar.js +20 -20
  150. package/dist/esm/components/Modal/Modal.js +20 -20
  151. package/dist/esm/components/ModalConfirmEdit/ModalConfirmArray.js +14 -14
  152. package/dist/esm/components/ModalConfirmEdit/ModalConfirmDetails.js +11 -11
  153. package/dist/esm/components/ModalConfirmEdit/ModalConfirmEdit.js +17 -17
  154. package/dist/esm/components/ModalForm/ModalForm.js +9 -9
  155. package/dist/esm/components/Notifications/NotificationsContainer.js +22 -22
  156. package/dist/esm/components/Notifications/ToastNotification.js +21 -21
  157. package/dist/esm/components/Notifications/notify.js +17 -17
  158. package/dist/esm/components/PlatformBanner/PlatformBanner.js +8 -8
  159. package/dist/esm/components/PlatformNotifications/PlatformNotification.js +17 -17
  160. package/dist/esm/components/PlatformNotifications/PlatformNotificationsContainer.js +136 -136
  161. package/dist/esm/components/Portal/Portal.js +14 -14
  162. package/dist/esm/components/PrivacyRedirect/PrivacyRedirect.js +30 -30
  163. package/dist/esm/components/PrivacyStatement/PrivacyStatement.js +90 -90
  164. package/dist/esm/components/ProfileSettings/ProfileSettings.js +124 -142
  165. package/dist/esm/components/ProtectedRoute/ProtectedRoute.js +13 -13
  166. package/dist/esm/components/RadioGroup/RadioGroup.js +33 -33
  167. package/dist/esm/components/RichTextArea/RichTextArea.js +142 -142
  168. package/dist/esm/components/SignOut/SignOut.js +27 -27
  169. package/dist/esm/components/SupportCenter/SupportCenter.js +65 -65
  170. package/dist/esm/components/TextArea/TextArea.js +16 -16
  171. package/dist/esm/components/TextInput/TextInput.js +13 -13
  172. package/dist/esm/components/Toggle/Toggle.js +22 -22
  173. package/dist/esm/components/TooltipHover/TooltipHover.js +39 -39
  174. package/dist/esm/components/UIShell/UIShell.js +95 -95
  175. package/dist/esm/config/servicesConfig.js +22 -22
  176. package/dist/esm/constants/DataDrivenInputTypes.js +74 -74
  177. package/dist/esm/constants/UserType.js +13 -13
  178. package/dist/esm/hooks/useHeaderMenu.js +49 -49
  179. package/dist/esm/hooks/usePortal.js +74 -74
  180. package/dist/esm/hooks/useWindowSize.js +33 -33
  181. package/dist/esm/internal/ListBox/ListBox.js +41 -41
  182. package/dist/esm/internal/ListBox/ListBoxField.js +19 -19
  183. package/dist/esm/internal/ListBox/ListBoxMenu.js +19 -19
  184. package/dist/esm/internal/ListBox/ListBoxMenuIcon.js +31 -31
  185. package/dist/esm/internal/ListBox/ListBoxMenuItem.js +38 -38
  186. package/dist/esm/internal/ListBox/ListBoxSelection.js +64 -64
  187. package/dist/esm/internal/ListBox/index.js +10 -10
  188. package/dist/esm/internal/keyboard/keys.js +16 -16
  189. package/dist/esm/internal/keyboard/match.js +67 -67
  190. package/dist/esm/internal/settings.js +5 -5
  191. package/dist/esm/tools/accessibility.js +13 -13
  192. package/dist/esm/tools/createPropAdapter.js +44 -44
  193. package/dist/esm/tools/isUrl.js +39 -39
  194. package/dist/esm/tools/setupGetInstanceId.js +20 -20
  195. package/dist/esm/tools/useSetState.js +12 -12
  196. package/dist/esm/tools/yupAst/astGenerator.js +212 -212
  197. package/dist/esm/tools/yupAst/customValidators.js +17 -17
  198. package/dist/types/index.d.ts +1359 -1360
  199. package/package.json +167 -167
  200. package/scss/components/AboutPlatform/_aboutPlatform.scss +139 -139
  201. package/scss/components/AdvantageSideNav/_advantageSideNav.scss +272 -272
  202. package/scss/components/AutoSuggest/_autoSuggest.scss +62 -62
  203. package/scss/components/Avatar/_avatar.scss +32 -32
  204. package/scss/components/CheckboxList/_checkboxList.scss +26 -26
  205. package/scss/components/ComboBox/_combobox.scss +23 -23
  206. package/scss/components/ComboBoxMultiSelect/_comboBoxMultiSelect.scss +53 -53
  207. package/scss/components/ConfirmModal/_confirmModal.scss +12 -12
  208. package/scss/components/Creatable/_creatable.scss +48 -48
  209. package/scss/components/DateInput/_dateInput.scss +36 -36
  210. package/scss/components/DecisionButtons/_decisionButtons.scss +132 -132
  211. package/scss/components/DynamicFormik/_dynamicFormik.scss +17 -17
  212. package/scss/components/ErrorBoundary/_errorBoundary.scss +12 -12
  213. package/scss/components/ErrorDragon/_errorDragon.scss +55 -55
  214. package/scss/components/ErrorMessage/_errorMessage.scss +43 -43
  215. package/scss/components/ErrorPage/_errorPage.scss +66 -66
  216. package/scss/components/ErrorPageCore/_errorPageCore.scss +73 -73
  217. package/scss/components/FeatureHeader/_featureHeader.scss +67 -67
  218. package/scss/components/FeatureNavTab/_featureNavTab.scss +27 -27
  219. package/scss/components/FeatureSideNav/_featureSideNav.scss +76 -76
  220. package/scss/components/FeatureSideNavLink/_featureSideNavLink.scss +49 -49
  221. package/scss/components/Feedback/_feedback.scss +50 -50
  222. package/scss/components/Header/_header.scss +179 -179
  223. package/scss/components/Header/_headerAppSwitcher.scss +117 -117
  224. package/scss/components/Header/_headerMenu.scss +30 -30
  225. package/scss/components/Header/_headerMenuItem.scss +65 -65
  226. package/scss/components/Header/_headerTeamSwitcher.scss +222 -222
  227. package/scss/components/Header/_userRequests.scss +36 -36
  228. package/scss/components/ImageModal/_imageModal.scss +51 -51
  229. package/scss/components/MemberBar/_memberBar.scss +99 -99
  230. package/scss/components/Modal/_modal.scss +163 -163
  231. package/scss/components/ModalConfirmEdit/_modalConfirmEdit.scss +113 -113
  232. package/scss/components/Notifications/_notifications.scss +57 -57
  233. package/scss/components/PlatformBanner/_platformBanner.scss +30 -30
  234. package/scss/components/PlatformNotifications/_platformNotifications.scss +230 -230
  235. package/scss/components/PrivacyRedirect/_privacyRedirect.scss +43 -43
  236. package/scss/components/PrivacyStatement/_privacyStatement.scss +137 -137
  237. package/scss/components/ProfileSettings/_profileSettings.scss +117 -117
  238. package/scss/components/ProtectedRoute/_protectedRoute.scss +32 -32
  239. package/scss/components/RadioGroup/_radioGroup.scss +46 -46
  240. package/scss/components/RichTextArea/_richTextArea.scss +82 -82
  241. package/scss/components/SignOut/_signOut.scss +51 -51
  242. package/scss/components/SupportCenter/_supportCenter.scss +16 -16
  243. package/scss/components/TextArea/_textArea.scss +19 -19
  244. package/scss/components/TextInput/_textInput.scss +26 -26
  245. package/scss/components/Toggle/_toggle.scss +80 -80
  246. package/scss/components/TooltipHover/_tooltip.scss +48 -48
  247. package/scss/global/_config.scss +14 -14
  248. package/scss/global/_tippy.scss +49 -49
  249. package/scss/global/index.scss +401 -401
  250. package/scss/global/themes/_boomerang.scss +184 -184
  251. package/scss/global/themes/_default.scss +79 -79
  252. package/scss/global/themes/_shell-tokens.scss +42 -42
  253. package/scss/global/utils/_animations.scss +15 -15
  254. package/scss/global/utils/_mixins.scss +67 -67
  255. package/scss/global/utils/index.scss +10 -10
@@ -17,338 +17,335 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
  var React__default = /*#__PURE__*/_interopDefault(React);
18
18
  var sortBy__default = /*#__PURE__*/_interopDefault(sortBy);
19
19
 
20
- /*
21
- IBM Confidential
22
- 694970X, 69497O0
23
- © Copyright IBM Corp. 2022, 2025
24
- */
25
- const headerDropdownMenuContainerClassname = `${settings.prefix}--header-dropdown-menu-container`;
26
- const headerDropdownMenuLoadingClassname = `${settings.prefix}--header-dropdown-menu-loading`;
27
- const headerDropdownMenuSuccessClassname = `${settings.prefix}--header-dropdown-menu-success`;
28
- const headerDropdownMenuClassname = `${settings.prefix}--header-dropdown-menu`;
29
- const headerDropdownMenuContentClassname = `${settings.prefix}--header-dropdown-menu-content`;
30
- const headerDropdownMenuContentTextClassname = `${settings.prefix}--header-dropdown-menu-content-text`;
31
- const headerDropdownMenuContentIconClassname = `${settings.prefix}--header-dropdown-menu-content-icon`;
32
- const headerDropdownMenuListClassname = `${settings.prefix}--bmrg-header-drop-down`;
33
- const headerDropdownMenuItemContainerClassname = `${settings.prefix}--header-dropdown-menu-item-container`;
34
- const headerDropdownMenuItemClassname = `${settings.prefix}--header-dropdown-menu-item`;
35
- const headerDropdownMenuItemTextIconClassname = `${settings.prefix}--header-dropdown-menu-item-text-icon`;
36
- const headerDropdownMenuItemTextClassname = `${settings.prefix}--header-dropdown-menu-item-text`;
37
- const headerDropdownMenuItemIconClassname = `${settings.prefix}--header-dropdown-menu-item-icon`;
38
- const headerDropdownMenuItemAccountContainerClassname = `${settings.prefix}--header-dropdown-menu-item-account-container`;
39
- const headerDropdownMenuItemAccountClassname = `${settings.prefix}--header-dropdown-menu-item-account`;
40
- const headerDropdownMenuItemAccountIconsClassname = `${settings.prefix}--header-dropdown-menu-item-account-icons`;
41
- const headerDropdownMenuItemAccountGroupIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-group-icon`;
42
- const headerDropdownMenuItemAccountChevronIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-chevron-icon`;
43
- const headerDropdownMenuItemAccountSubmenuClassname = `${settings.prefix}--header-dropdown-menu-item-account-submenu`;
44
- const headerTeamSwitcherCreateTeamButtonContainerClassname = `${settings.prefix}--header-team-switcher-create-team-button-container`;
45
- const headerTeamSwitcherCreateTeamButtonClassname = `${settings.prefix}--header-team-switcher-create-team-button`;
46
- const headerTeamSwitcherCreateTeamButtonTextClassname = `${settings.prefix}--header-team-switcher-create-team-button-text`;
47
- const headerTeamSwitcherCreateTeamButtonIconClassname = `${settings.prefix}--header-team-switcher-create-team-button-icon`;
48
- function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamTrigger, history, isLaunchpad, isLoadingTeamSwitcher, isSuccessTeamSwitcher, setIsSuccessTeamSwitcher, menuAriaLabelRecord, menuButtonId, menuListId, navigationPlatform, refetchUser, refetchNavigation, teamsQuery, trackEvent, user, userTeams, }) {
49
- const [selectedTeam, setSelectedTeam] = React.useState();
50
- const [openAccountSubmenuId, setOpenAccountSubmenuId] = React.useState("");
51
- const hasUserTeams = Boolean(userTeams);
52
- const showSelectTeamPurpose = navigationPlatform?.requireTeamPurpose;
53
- const createTeamButtonText = showSelectTeamPurpose ? "Create Team" : "Create or Join Team";
54
- const userTeamInstanceSwitcherDefault = user?.teamInstanceSwitcherDefault;
55
- const teamLink = ({ teamId }) => {
56
- return `${navigationPlatform.baseEnvUrl}/launchpad/teams/${teamId}`;
57
- };
58
- const { mutateAsync: mutateUserProfile, isLoading: mutateUserProfileIsLoading } = reactQuery.useMutation(servicesConfig.resolver.patchUserProfile, {
59
- onSuccess: () => {
60
- if (refetchUser)
61
- refetchUser();
62
- if (refetchNavigation)
63
- refetchNavigation();
64
- },
65
- });
66
- React__default.default.useEffect(() => {
67
- let timer;
68
- if (isSuccessTeamSwitcher && setIsSuccessTeamSwitcher) {
69
- timer = setTimeout(() => {
70
- setIsSuccessTeamSwitcher(false);
71
- }, 3000);
72
- }
73
- return () => clearTimeout(timer);
74
- }, [isSuccessTeamSwitcher, setIsSuccessTeamSwitcher]);
75
- React.useEffect(() => {
76
- let accountTeams, standardTeams, personalTeam = [];
77
- if (hasUserTeams) {
78
- accountTeams = userTeams?.data?.accountTeams ?? [];
79
- standardTeams = userTeams?.data?.standardTeams ?? [];
80
- personalTeam = userTeams?.data?.personalTeam ?? [];
81
- }
82
- else {
83
- accountTeams = teamsQuery?.data?.accountTeams ?? [];
84
- standardTeams = teamsQuery?.data?.standardTeams ?? [];
85
- personalTeam = teamsQuery?.data?.personalTeam ?? [];
86
- }
87
- const userHasPersonalTeam = personalTeam.length > 0;
88
- const userHasAccountTeams = accountTeams.length > 0;
89
- const userHasStandardTeams = standardTeams.length > 0;
90
- const userHasTeams = userHasPersonalTeam || userHasAccountTeams || userHasStandardTeams;
91
- const handleSelectTeam = async ({ team }) => {
92
- setSelectedTeam(team);
93
- if (!userTeamInstanceSwitcherDefault) {
94
- const body = {
95
- teamInstanceSwitcherDefault: team.id,
96
- };
97
- await mutateUserProfile({ baseServicesUrl, body });
98
- }
99
- };
100
- const handleNoTeamsToSelect = async () => {
101
- const body = {
102
- teamInstanceSwitcherDefault: null,
103
- };
104
- await mutateUserProfile({ baseServicesUrl, body });
105
- };
106
- if (userHasTeams) {
107
- if (!userTeamInstanceSwitcherDefault) {
108
- if (userHasPersonalTeam) {
109
- handleSelectTeam({ team: personalTeam[0] });
110
- }
111
- else if (userHasAccountTeams) {
112
- const sortedAccounts = sortBy__default.default(accountTeams, [
113
- (account) => (account.displayName ? account.displayName : account.name),
114
- ]);
115
- handleSelectTeam({ team: sortedAccounts[0] });
116
- }
117
- else if (userHasStandardTeams) {
118
- const sortedStandardTeams = sortBy__default.default(standardTeams, [
119
- (standardTeam) => (standardTeam.displayName ? standardTeam.displayName : standardTeam.name),
120
- ]);
121
- handleSelectTeam({ team: sortedStandardTeams[0] });
122
- }
123
- }
124
- else if (selectedTeam?.id !== userTeamInstanceSwitcherDefault) {
125
- let allProjectTeams = [];
126
- if (userHasAccountTeams) {
127
- accountTeams.forEach((team) => {
128
- if (team.projectTeams && team.projectTeams.length > 0) {
129
- allProjectTeams = allProjectTeams.concat(team.projectTeams);
130
- }
131
- });
132
- }
133
- const allTeams = personalTeam.concat(standardTeams, accountTeams, allProjectTeams);
134
- const newSelectedTeam = allTeams.find((team) => team.id === userTeamInstanceSwitcherDefault);
135
- handleSelectTeam({ team: newSelectedTeam });
136
- }
137
- // if teams data loaded but there are no teams
138
- }
139
- else if (Boolean(userTeamInstanceSwitcherDefault) &&
140
- ((hasUserTeams &&
141
- userTeams?.data?.accountTeams?.length === 0 &&
142
- userTeams?.data?.standardTeams?.length === 0 &&
143
- userTeams?.data?.personalTeam?.length === 0) ||
144
- (!hasUserTeams &&
145
- teamsQuery?.data?.accountTeams?.length === 0 &&
146
- teamsQuery?.data?.standardTeams?.length === 0 &&
147
- teamsQuery?.data?.personalTeam?.length === 0))) {
148
- handleNoTeamsToSelect();
149
- }
150
- else if (userTeamInstanceSwitcherDefault === null) {
151
- setSelectedTeam(null);
152
- }
153
- }, [
154
- baseServicesUrl,
155
- hasUserTeams,
156
- mutateUserProfile,
157
- selectedTeam,
158
- teamsQuery?.data?.accountTeams,
159
- teamsQuery?.data?.personalTeam,
160
- teamsQuery?.data?.standardTeams,
161
- userTeamInstanceSwitcherDefault,
162
- userTeams?.data?.accountTeams,
163
- userTeams?.data?.personalTeam,
164
- userTeams?.data?.standardTeams,
165
- ]);
166
- const handleHeaderMenuClick = () => {
167
- setOpenAccountSubmenuId("");
168
- };
169
- const handleTeamClick = ({ team, type }) => {
170
- setOpenAccountSubmenuId("");
171
- if (analyticsHelpers?.navigateEventHandler && trackEvent) {
172
- analyticsHelpers.navigateEventHandler({
173
- action: `Clicked ${team.name} in Team Switcher`,
174
- category: "Team Switcher",
175
- destinationPath: teamLink({ teamId: team.id }),
176
- teamId: team.id,
177
- teamType: type,
178
- trackEvent,
179
- });
180
- }
181
- if (isLaunchpad && Boolean(history)) {
182
- history.push(`/teams/${team.id}`);
183
- }
184
- else {
185
- window.open(teamLink({ teamId: team.id }), "_self");
186
- }
187
- };
188
- const handleCreateJoinTeamClick = (e) => {
189
- if (analyticsHelpers?.ctaEventHandler && trackEvent) {
190
- analyticsHelpers.ctaEventHandler({
191
- category: "Team Switcher",
192
- CTA: "Create/Join team clicked",
193
- pageName: "",
194
- trackEvent,
195
- });
196
- }
197
- if (createJoinTeamTrigger) {
198
- createJoinTeamTrigger(e);
199
- }
200
- else {
201
- window.open(`${navigationPlatform.baseEnvUrl}/launchpad?createJoinTeam=true`, "_self");
202
- }
203
- };
204
- const handleOpenAccountSubmenu = ({ e, id }) => {
205
- e.stopPropagation();
206
- if (openAccountSubmenuId === id) {
207
- setOpenAccountSubmenuId("");
208
- }
209
- else {
210
- setOpenAccountSubmenuId(id);
211
- }
212
- };
213
- if (userTeams?.isLoading || teamsQuery?.isLoading || mutateUserProfileIsLoading) {
214
- return (React__default.default.createElement("div", { style: { display: "flex", alignItems: "center" } },
215
- React__default.default.createElement(react.InlineLoading, null)));
216
- }
217
- if (userTeams?.data || teamsQuery?.data) {
218
- let accountTeams, standardTeams, personalTeam = [];
219
- if (hasUserTeams) {
220
- accountTeams = userTeams?.data?.accountTeams ?? [];
221
- standardTeams = userTeams?.data?.standardTeams ?? [];
222
- personalTeam = userTeams?.data?.personalTeam ?? [];
223
- }
224
- else {
225
- accountTeams = teamsQuery?.data?.accountTeams ?? [];
226
- standardTeams = teamsQuery?.data?.standardTeams ?? [];
227
- personalTeam = teamsQuery?.data?.personalTeam ?? [];
228
- }
229
- let sortedAccountTeamsWithNamesToDisplay = [];
230
- let sortedStandardTeamsWithNamesToDisplay = [];
231
- if (accountTeams?.length > 0) {
232
- const newAccountTeams = accountTeams.map((team) => {
233
- let newProjectTeams = [];
234
- if (team.projectTeams && team.projectTeams.length > 0) {
235
- newProjectTeams = team.projectTeams?.map((team) => ({
236
- ...team,
237
- nameToDisplay: team.displayName ? team.displayName : team.name,
238
- }));
239
- }
240
- return {
241
- ...team,
242
- nameToDisplay: team.displayName ? team.displayName : team.name,
243
- projectTeams: sortBy__default.default(newProjectTeams, ["nameToDisplay"]),
244
- };
245
- });
246
- sortedAccountTeamsWithNamesToDisplay = sortBy__default.default(newAccountTeams, ["nameToDisplay"]);
247
- }
248
- if (standardTeams?.length > 0) {
249
- const newStandardTeams = standardTeams.map((team) => {
250
- return {
251
- ...team,
252
- nameToDisplay: team.displayName ? team.displayName : team.name,
253
- };
254
- });
255
- sortedStandardTeamsWithNamesToDisplay = sortBy__default.default(newStandardTeams, ["nameToDisplay"]);
256
- }
257
- let selectedTeamName = selectedTeam?.displayName
258
- ? selectedTeam.displayName
259
- : selectedTeam?.name
260
- ? selectedTeam?.name
261
- : "No team selected";
262
- const isPartnerUser = Boolean(user?.type === UserType.USER_PLATFORM_ROLE.Partner);
263
- return (React__default.default.createElement("div", { className: headerDropdownMenuContainerClassname },
264
- isLoadingTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuLoadingClassname },
265
- React__default.default.createElement(react.InlineLoading, null))) : isSuccessTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuSuccessClassname },
266
- React__default.default.createElement(icons.CheckmarkFilled, null))) : null,
267
- React__default.default.createElement(react.HeaderMenu, { id: "header-team-switcher-menu", "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, renderMenuContent: () => (React__default.default.createElement("div", { className: headerDropdownMenuContentClassname },
268
- React__default.default.createElement("p", { title: selectedTeamName, className: headerDropdownMenuContentTextClassname }, selectedTeamName),
269
- React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuContentIconClassname }))), onClick: handleHeaderMenuClick, "data-testid": "header-team-switcher-menu" },
270
- React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
271
- !isPartnerUser && (React__default.default.createElement(react.HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
272
- // eslint-disable-next-line no-script-url
273
- href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
274
- React__default.default.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
275
- React__default.default.createElement("span", { className: headerTeamSwitcherCreateTeamButtonTextClassname }, createTeamButtonText),
276
- React__default.default.createElement(icons.AddAlt, { className: headerTeamSwitcherCreateTeamButtonIconClassname })))),
277
- personalTeam.length > 0
278
- ? personalTeam.map((team) => {
279
- const teamName = team.displayName ? team.displayName : team.name;
280
- const isTeamSelected = team.id === selectedTeam?.id;
281
- return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-personal-menu-item-id` },
282
- React__default.default.createElement(react.HeaderMenuItem, { key: team.id, id: `${team.id}-personal-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
283
- handleTeamClick({ team, type: "personal" });
284
- },
285
- // eslint-disable-next-line no-script-url
286
- href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-item" },
287
- React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
288
- React__default.default.createElement("span", { title: teamName, className: headerDropdownMenuItemTextClassname }, teamName),
289
- isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
290
- })
291
- : null,
292
- accountTeams.length > 0
293
- ? sortedAccountTeamsWithNamesToDisplay.map((team) => {
294
- const isSubmenuOpen = team.id === openAccountSubmenuId;
295
- const isProjectTeamSelected = team.projectTeams &&
296
- team.projectTeams.length > 0 &&
297
- team.projectTeams.some((team) => team.id === selectedTeam?.id);
298
- const isTeamSelected = team.id === selectedTeam?.id;
299
- const isMenuSelected = isTeamSelected || isProjectTeamSelected;
300
- return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-account-menu` },
301
- React__default.default.createElement(react.HeaderMenuItem, { "aria-expanded": isSubmenuOpen, "aria-selected": isMenuSelected, className: headerDropdownMenuItemAccountContainerClassname, onClick: (e) => handleOpenAccountSubmenu({ e, id: team.id }),
302
- // eslint-disable-next-line no-script-url
303
- href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-account-accordion" },
304
- React__default.default.createElement("div", { className: headerDropdownMenuItemAccountClassname },
305
- React__default.default.createElement("div", { className: headerDropdownMenuItemTextIconClassname },
306
- React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
307
- isMenuSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null),
308
- React__default.default.createElement("div", { className: headerDropdownMenuItemAccountIconsClassname },
309
- React__default.default.createElement(icons.GroupAccount, { className: headerDropdownMenuItemAccountGroupIconClassname }),
310
- React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuItemAccountChevronIconClassname })))),
311
- React__default.default.createElement("div", { id: `${team.id}-account-submenu`, key: `${team.id}-account-submenu`, "aria-expanded": isSubmenuOpen, className: headerDropdownMenuItemAccountSubmenuClassname },
312
- React__default.default.createElement(react.HeaderMenuItem, { key: `${team.id}-menu-item`, id: `${team.id}-account-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
313
- handleTeamClick({ team, type: "account" });
314
- }, "data-testid": "header-team-switcher-menu-account-accordion-item",
315
- // eslint-disable-next-line no-script-url
316
- href: "javascript:void(0)" },
317
- React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
318
- React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, "Account Page"),
319
- isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null)),
320
- team.projectTeams && team.projectTeams.length > 0
321
- ? team.projectTeams.map((team) => {
322
- const isTeamSelected = team.id === selectedTeam?.id;
323
- return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-project-menu-item` },
324
- React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
325
- handleTeamClick({ team, type: "project" });
326
- }, "data-testid": "header-team-switcher-menu-account-accordion-item",
327
- // eslint-disable-next-line no-script-url
328
- href: "javascript:void(0)" },
329
- React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
330
- React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
331
- isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null))));
332
- })
333
- : null)));
334
- })
335
- : null,
336
- standardTeams.length > 0
337
- ? sortedStandardTeamsWithNamesToDisplay.map((team) => {
338
- const isTeamSelected = team.id === selectedTeam?.id;
339
- return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-standard-menu-item` },
340
- React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
341
- handleTeamClick({ team, type: "standard" });
342
- }, "data-testid": "header-team-switcher-menu-item",
343
- // eslint-disable-next-line no-script-url
344
- href: "javascript:void(0)" },
345
- React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
346
- React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
347
- isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
348
- })
349
- : null))));
350
- }
351
- return null;
20
+ /*
21
+ IBM Confidential
22
+ 694970X, 69497O0
23
+ © Copyright IBM Corp. 2022, 2025
24
+ */
25
+ const headerDropdownMenuContainerClassname = `${settings.prefix}--header-dropdown-menu-container`;
26
+ const headerDropdownMenuLoadingClassname = `${settings.prefix}--header-dropdown-menu-loading`;
27
+ const headerDropdownMenuSuccessClassname = `${settings.prefix}--header-dropdown-menu-success`;
28
+ const headerDropdownMenuClassname = `${settings.prefix}--header-dropdown-menu`;
29
+ const headerDropdownMenuContentClassname = `${settings.prefix}--header-dropdown-menu-content`;
30
+ const headerDropdownMenuContentTextClassname = `${settings.prefix}--header-dropdown-menu-content-text`;
31
+ const headerDropdownMenuContentIconClassname = `${settings.prefix}--header-dropdown-menu-content-icon`;
32
+ const headerDropdownMenuListClassname = `${settings.prefix}--bmrg-header-drop-down`;
33
+ const headerDropdownMenuItemContainerClassname = `${settings.prefix}--header-dropdown-menu-item-container`;
34
+ const headerDropdownMenuItemClassname = `${settings.prefix}--header-dropdown-menu-item`;
35
+ const headerDropdownMenuItemTextIconClassname = `${settings.prefix}--header-dropdown-menu-item-text-icon`;
36
+ const headerDropdownMenuItemTextClassname = `${settings.prefix}--header-dropdown-menu-item-text`;
37
+ const headerDropdownMenuItemIconClassname = `${settings.prefix}--header-dropdown-menu-item-icon`;
38
+ const headerDropdownMenuItemAccountContainerClassname = `${settings.prefix}--header-dropdown-menu-item-account-container`;
39
+ const headerDropdownMenuItemAccountClassname = `${settings.prefix}--header-dropdown-menu-item-account`;
40
+ const headerDropdownMenuItemAccountIconsClassname = `${settings.prefix}--header-dropdown-menu-item-account-icons`;
41
+ const headerDropdownMenuItemAccountGroupIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-group-icon`;
42
+ const headerDropdownMenuItemAccountChevronIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-chevron-icon`;
43
+ const headerDropdownMenuItemAccountSubmenuClassname = `${settings.prefix}--header-dropdown-menu-item-account-submenu`;
44
+ const headerTeamSwitcherCreateTeamButtonContainerClassname = `${settings.prefix}--header-team-switcher-create-team-button-container`;
45
+ const headerTeamSwitcherCreateTeamButtonClassname = `${settings.prefix}--header-team-switcher-create-team-button`;
46
+ const headerTeamSwitcherCreateTeamButtonTextClassname = `${settings.prefix}--header-team-switcher-create-team-button-text`;
47
+ const headerTeamSwitcherCreateTeamButtonIconClassname = `${settings.prefix}--header-team-switcher-create-team-button-icon`;
48
+ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamTrigger, history, isLaunchpad, isLoadingTeamSwitcher, isSuccessTeamSwitcher, setIsSuccessTeamSwitcher, menuAriaLabelRecord, menuButtonId, menuListId, navigationPlatform, refetchUser, refetchNavigation, teamsQuery, trackEvent, user, userTeams, }) {
49
+ const [selectedTeam, setSelectedTeam] = React.useState();
50
+ const [openAccountSubmenuId, setOpenAccountSubmenuId] = React.useState("");
51
+ const hasUserTeams = Boolean(userTeams);
52
+ const showSelectTeamPurpose = navigationPlatform?.requireTeamPurpose;
53
+ const createTeamButtonText = showSelectTeamPurpose ? "Create Team" : "Create or Join Team";
54
+ const userTeamInstanceSwitcherDefault = user?.teamInstanceSwitcherDefault;
55
+ const teamLink = ({ teamId }) => {
56
+ return `${navigationPlatform.baseEnvUrl}/launchpad/teams/${teamId}`;
57
+ };
58
+ const { mutateAsync: mutateUserProfile, isLoading: mutateUserProfileIsLoading } = reactQuery.useMutation(servicesConfig.resolver.patchUserProfile, {
59
+ onSuccess: () => {
60
+ if (refetchUser)
61
+ refetchUser();
62
+ if (refetchNavigation)
63
+ refetchNavigation();
64
+ },
65
+ });
66
+ React__default.default.useEffect(() => {
67
+ let timer;
68
+ if (isSuccessTeamSwitcher && setIsSuccessTeamSwitcher) {
69
+ timer = setTimeout(() => {
70
+ setIsSuccessTeamSwitcher(false);
71
+ }, 3000);
72
+ }
73
+ return () => clearTimeout(timer);
74
+ }, [isSuccessTeamSwitcher, setIsSuccessTeamSwitcher]);
75
+ React.useEffect(() => {
76
+ let accountTeams, standardTeams, personalTeam = [];
77
+ if (hasUserTeams) {
78
+ accountTeams = userTeams?.data?.accountTeams ?? [];
79
+ standardTeams = userTeams?.data?.standardTeams ?? [];
80
+ personalTeam = userTeams?.data?.personalTeam ?? [];
81
+ }
82
+ else {
83
+ accountTeams = teamsQuery?.data?.accountTeams ?? [];
84
+ standardTeams = teamsQuery?.data?.standardTeams ?? [];
85
+ personalTeam = teamsQuery?.data?.personalTeam ?? [];
86
+ }
87
+ const userHasPersonalTeam = personalTeam.length > 0;
88
+ const userHasAccountTeams = accountTeams.length > 0;
89
+ const userHasStandardTeams = standardTeams.length > 0;
90
+ const userHasTeams = userHasPersonalTeam || userHasAccountTeams || userHasStandardTeams;
91
+ const handleSelectTeam = async ({ team }) => {
92
+ setSelectedTeam(team);
93
+ if (!userTeamInstanceSwitcherDefault) {
94
+ const body = {
95
+ teamInstanceSwitcherDefault: team.id,
96
+ };
97
+ await mutateUserProfile({ baseServicesUrl, body });
98
+ }
99
+ };
100
+ const handleNoTeamsToSelect = async () => {
101
+ const body = {
102
+ teamInstanceSwitcherDefault: null,
103
+ };
104
+ await mutateUserProfile({ baseServicesUrl, body });
105
+ };
106
+ if (userHasTeams) {
107
+ if (!userTeamInstanceSwitcherDefault) {
108
+ if (userHasPersonalTeam) {
109
+ handleSelectTeam({ team: personalTeam[0] });
110
+ }
111
+ else if (userHasAccountTeams) {
112
+ const sortedAccounts = sortBy__default.default(accountTeams, [
113
+ (account) => (account.displayName ? account.displayName : account.name),
114
+ ]);
115
+ handleSelectTeam({ team: sortedAccounts[0] });
116
+ }
117
+ else if (userHasStandardTeams) {
118
+ const sortedStandardTeams = sortBy__default.default(standardTeams, [
119
+ (standardTeam) => (standardTeam.displayName ? standardTeam.displayName : standardTeam.name),
120
+ ]);
121
+ handleSelectTeam({ team: sortedStandardTeams[0] });
122
+ }
123
+ }
124
+ else if (selectedTeam?.id !== userTeamInstanceSwitcherDefault) {
125
+ let allProjectTeams = [];
126
+ if (userHasAccountTeams) {
127
+ accountTeams.forEach((team) => {
128
+ if (team.projectTeams && team.projectTeams.length > 0) {
129
+ allProjectTeams = allProjectTeams.concat(team.projectTeams);
130
+ }
131
+ });
132
+ }
133
+ const allTeams = personalTeam.concat(standardTeams, accountTeams, allProjectTeams);
134
+ const newSelectedTeam = allTeams.find((team) => team.id === userTeamInstanceSwitcherDefault);
135
+ handleSelectTeam({ team: newSelectedTeam });
136
+ }
137
+ // if teams data loaded but there are no teams
138
+ }
139
+ else if (Boolean(userTeamInstanceSwitcherDefault) &&
140
+ ((hasUserTeams &&
141
+ userTeams?.data?.accountTeams?.length === 0 &&
142
+ userTeams?.data?.standardTeams?.length === 0 &&
143
+ userTeams?.data?.personalTeam?.length === 0) ||
144
+ (!hasUserTeams &&
145
+ teamsQuery?.data?.accountTeams?.length === 0 &&
146
+ teamsQuery?.data?.standardTeams?.length === 0 &&
147
+ teamsQuery?.data?.personalTeam?.length === 0))) {
148
+ handleNoTeamsToSelect();
149
+ }
150
+ }, [
151
+ baseServicesUrl,
152
+ hasUserTeams,
153
+ mutateUserProfile,
154
+ selectedTeam,
155
+ teamsQuery?.data?.accountTeams,
156
+ teamsQuery?.data?.personalTeam,
157
+ teamsQuery?.data?.standardTeams,
158
+ userTeamInstanceSwitcherDefault,
159
+ userTeams?.data?.accountTeams,
160
+ userTeams?.data?.personalTeam,
161
+ userTeams?.data?.standardTeams,
162
+ ]);
163
+ const handleHeaderMenuClick = () => {
164
+ setOpenAccountSubmenuId("");
165
+ };
166
+ const handleTeamClick = ({ team, type }) => {
167
+ setOpenAccountSubmenuId("");
168
+ if (analyticsHelpers?.navigateEventHandler && trackEvent) {
169
+ analyticsHelpers.navigateEventHandler({
170
+ action: `Clicked ${team.name} in Team Switcher`,
171
+ category: "Team Switcher",
172
+ destinationPath: teamLink({ teamId: team.id }),
173
+ teamId: team.id,
174
+ teamType: type,
175
+ trackEvent,
176
+ });
177
+ }
178
+ if (isLaunchpad && Boolean(history)) {
179
+ history.push(`/teams/${team.id}`);
180
+ }
181
+ else {
182
+ window.open(teamLink({ teamId: team.id }), "_self");
183
+ }
184
+ };
185
+ const handleCreateJoinTeamClick = (e) => {
186
+ if (analyticsHelpers?.ctaEventHandler && trackEvent) {
187
+ analyticsHelpers.ctaEventHandler({
188
+ category: "Team Switcher",
189
+ CTA: "Create/Join team clicked",
190
+ pageName: "",
191
+ trackEvent,
192
+ });
193
+ }
194
+ if (createJoinTeamTrigger) {
195
+ createJoinTeamTrigger(e);
196
+ }
197
+ else {
198
+ window.open(`${navigationPlatform.baseEnvUrl}/launchpad?createJoinTeam=true`, "_self");
199
+ }
200
+ };
201
+ const handleOpenAccountSubmenu = ({ e, id }) => {
202
+ e.stopPropagation();
203
+ if (openAccountSubmenuId === id) {
204
+ setOpenAccountSubmenuId("");
205
+ }
206
+ else {
207
+ setOpenAccountSubmenuId(id);
208
+ }
209
+ };
210
+ if (userTeams?.isLoading || teamsQuery?.isLoading || mutateUserProfileIsLoading) {
211
+ return (React__default.default.createElement("div", { style: { display: "flex", alignItems: "center" } },
212
+ React__default.default.createElement(react.InlineLoading, null)));
213
+ }
214
+ if (userTeams?.data || teamsQuery?.data) {
215
+ let accountTeams, standardTeams, personalTeam = [];
216
+ if (hasUserTeams) {
217
+ accountTeams = userTeams?.data?.accountTeams ?? [];
218
+ standardTeams = userTeams?.data?.standardTeams ?? [];
219
+ personalTeam = userTeams?.data?.personalTeam ?? [];
220
+ }
221
+ else {
222
+ accountTeams = teamsQuery?.data?.accountTeams ?? [];
223
+ standardTeams = teamsQuery?.data?.standardTeams ?? [];
224
+ personalTeam = teamsQuery?.data?.personalTeam ?? [];
225
+ }
226
+ let sortedAccountTeamsWithNamesToDisplay = [];
227
+ let sortedStandardTeamsWithNamesToDisplay = [];
228
+ if (accountTeams?.length > 0) {
229
+ const newAccountTeams = accountTeams.map((team) => {
230
+ let newProjectTeams = [];
231
+ if (team.projectTeams && team.projectTeams.length > 0) {
232
+ newProjectTeams = team.projectTeams?.map((team) => ({
233
+ ...team,
234
+ nameToDisplay: team.displayName ? team.displayName : team.name,
235
+ }));
236
+ }
237
+ return {
238
+ ...team,
239
+ nameToDisplay: team.displayName ? team.displayName : team.name,
240
+ projectTeams: sortBy__default.default(newProjectTeams, ["nameToDisplay"]),
241
+ };
242
+ });
243
+ sortedAccountTeamsWithNamesToDisplay = sortBy__default.default(newAccountTeams, ["nameToDisplay"]);
244
+ }
245
+ if (standardTeams?.length > 0) {
246
+ const newStandardTeams = standardTeams.map((team) => {
247
+ return {
248
+ ...team,
249
+ nameToDisplay: team.displayName ? team.displayName : team.name,
250
+ };
251
+ });
252
+ sortedStandardTeamsWithNamesToDisplay = sortBy__default.default(newStandardTeams, ["nameToDisplay"]);
253
+ }
254
+ let selectedTeamName = selectedTeam?.displayName
255
+ ? selectedTeam.displayName
256
+ : selectedTeam?.name
257
+ ? selectedTeam?.name
258
+ : "No team selected";
259
+ const isPartnerUser = Boolean(user?.type === UserType.USER_PLATFORM_ROLE.Partner);
260
+ return (React__default.default.createElement("div", { className: headerDropdownMenuContainerClassname },
261
+ isLoadingTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuLoadingClassname },
262
+ React__default.default.createElement(react.InlineLoading, null))) : isSuccessTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuSuccessClassname },
263
+ React__default.default.createElement(icons.CheckmarkFilled, null))) : null,
264
+ React__default.default.createElement(react.HeaderMenu, { id: "header-team-switcher-menu", "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, renderMenuContent: () => (React__default.default.createElement("div", { className: headerDropdownMenuContentClassname },
265
+ React__default.default.createElement("p", { title: selectedTeamName, className: headerDropdownMenuContentTextClassname }, selectedTeamName),
266
+ React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuContentIconClassname }))), onClick: handleHeaderMenuClick, "data-testid": "header-team-switcher-menu" },
267
+ React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
268
+ !isPartnerUser && (React__default.default.createElement(react.HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
269
+ // eslint-disable-next-line no-script-url
270
+ href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
271
+ React__default.default.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
272
+ React__default.default.createElement("span", { className: headerTeamSwitcherCreateTeamButtonTextClassname }, createTeamButtonText),
273
+ React__default.default.createElement(icons.AddAlt, { className: headerTeamSwitcherCreateTeamButtonIconClassname })))),
274
+ personalTeam.length > 0
275
+ ? personalTeam.map((team) => {
276
+ const teamName = team.displayName ? team.displayName : team.name;
277
+ const isTeamSelected = team.id === selectedTeam?.id;
278
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-personal-menu-item-id` },
279
+ React__default.default.createElement(react.HeaderMenuItem, { key: team.id, id: `${team.id}-personal-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
280
+ handleTeamClick({ team, type: "personal" });
281
+ },
282
+ // eslint-disable-next-line no-script-url
283
+ href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-item" },
284
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
285
+ React__default.default.createElement("span", { title: teamName, className: headerDropdownMenuItemTextClassname }, teamName),
286
+ isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
287
+ })
288
+ : null,
289
+ accountTeams.length > 0
290
+ ? sortedAccountTeamsWithNamesToDisplay.map((team) => {
291
+ const isSubmenuOpen = team.id === openAccountSubmenuId;
292
+ const isProjectTeamSelected = team.projectTeams &&
293
+ team.projectTeams.length > 0 &&
294
+ team.projectTeams.some((team) => team.id === selectedTeam?.id);
295
+ const isTeamSelected = team.id === selectedTeam?.id;
296
+ const isMenuSelected = isTeamSelected || isProjectTeamSelected;
297
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-account-menu` },
298
+ React__default.default.createElement(react.HeaderMenuItem, { "aria-expanded": isSubmenuOpen, "aria-selected": isMenuSelected, className: headerDropdownMenuItemAccountContainerClassname, onClick: (e) => handleOpenAccountSubmenu({ e, id: team.id }),
299
+ // eslint-disable-next-line no-script-url
300
+ href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-account-accordion" },
301
+ React__default.default.createElement("div", { className: headerDropdownMenuItemAccountClassname },
302
+ React__default.default.createElement("div", { className: headerDropdownMenuItemTextIconClassname },
303
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
304
+ isMenuSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null),
305
+ React__default.default.createElement("div", { className: headerDropdownMenuItemAccountIconsClassname },
306
+ React__default.default.createElement(icons.GroupAccount, { className: headerDropdownMenuItemAccountGroupIconClassname }),
307
+ React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuItemAccountChevronIconClassname })))),
308
+ React__default.default.createElement("div", { id: `${team.id}-account-submenu`, key: `${team.id}-account-submenu`, "aria-expanded": isSubmenuOpen, className: headerDropdownMenuItemAccountSubmenuClassname },
309
+ React__default.default.createElement(react.HeaderMenuItem, { key: `${team.id}-menu-item`, id: `${team.id}-account-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
310
+ handleTeamClick({ team, type: "account" });
311
+ }, "data-testid": "header-team-switcher-menu-account-accordion-item",
312
+ // eslint-disable-next-line no-script-url
313
+ href: "javascript:void(0)" },
314
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
315
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, "Account Page"),
316
+ isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null)),
317
+ team.projectTeams && team.projectTeams.length > 0
318
+ ? team.projectTeams.map((team) => {
319
+ const isTeamSelected = team.id === selectedTeam?.id;
320
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-project-menu-item` },
321
+ React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
322
+ handleTeamClick({ team, type: "project" });
323
+ }, "data-testid": "header-team-switcher-menu-account-accordion-item",
324
+ // eslint-disable-next-line no-script-url
325
+ href: "javascript:void(0)" },
326
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
327
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
328
+ isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null))));
329
+ })
330
+ : null)));
331
+ })
332
+ : null,
333
+ standardTeams.length > 0
334
+ ? sortedStandardTeamsWithNamesToDisplay.map((team) => {
335
+ const isTeamSelected = team.id === selectedTeam?.id;
336
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-standard-menu-item` },
337
+ React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
338
+ handleTeamClick({ team, type: "standard" });
339
+ }, "data-testid": "header-team-switcher-menu-item",
340
+ // eslint-disable-next-line no-script-url
341
+ href: "javascript:void(0)" },
342
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
343
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
344
+ isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
345
+ })
346
+ : null))));
347
+ }
348
+ return null;
352
349
  }
353
350
 
354
351
  exports.default = HeaderTeamSwitcher;