@boomerang-io/carbon-addons-boomerang-react 4.6.11-beta.3 → 4.6.11-beta.31

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.
@@ -0,0 +1,326 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var reactQuery = require('react-query');
7
+ var react = require('@carbon/react');
8
+ var icons = require('@carbon/react/icons');
9
+ var sortBy = require('lodash.sortby');
10
+ var HeaderMenu = require('./HeaderMenu.js');
11
+ var servicesConfig = require('../../config/servicesConfig.js');
12
+ var settings = require('../../internal/settings.js');
13
+ var UserType = require('../../constants/UserType.js');
14
+
15
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
+
17
+ var React__default = /*#__PURE__*/_interopDefault(React);
18
+ var sortBy__default = /*#__PURE__*/_interopDefault(sortBy);
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 headerDropdownMenuListClassname = `${settings.prefix}--bmrg-header-drop-down`;
30
+ const headerDropdownMenuItemContainerClassname = `${settings.prefix}--header-dropdown-menu-item-container`;
31
+ const headerDropdownMenuItemClassname = `${settings.prefix}--header-dropdown-menu-item`;
32
+ const headerDropdownMenuItemTextIconClassname = `${settings.prefix}--header-dropdown-menu-item-text-icon`;
33
+ const headerDropdownMenuItemTextClassname = `${settings.prefix}--header-dropdown-menu-item-text`;
34
+ const headerDropdownMenuItemIconClassname = `${settings.prefix}--header-dropdown-menu-item-icon`;
35
+ const headerDropdownMenuItemAccountContainerClassname = `${settings.prefix}--header-dropdown-menu-item-account-container`;
36
+ const headerDropdownMenuItemAccountClassname = `${settings.prefix}--header-dropdown-menu-item-account`;
37
+ const headerDropdownMenuItemAccountIconsClassname = `${settings.prefix}--header-dropdown-menu-item-account-icons`;
38
+ const headerDropdownMenuItemAccountGroupIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-group-icon`;
39
+ const headerDropdownMenuItemAccountChevronIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-chevron-icon`;
40
+ const headerDropdownMenuItemAccountSubmenuClassname = `${settings.prefix}--header-dropdown-menu-item-account-submenu`;
41
+ const headerTeamSwitcherCreateTeamButtonContainerClassname = `${settings.prefix}--header-team-switcher-create-team-button-container`;
42
+ const headerTeamSwitcherCreateTeamButtonClassname = `${settings.prefix}--header-team-switcher-create-team-button`;
43
+ const headerTeamSwitcherCreateTeamButtonTextClassname = `${settings.prefix}--header-team-switcher-create-team-button-text`;
44
+ const headerTeamSwitcherCreateTeamButtonIconClassname = `${settings.prefix}--header-team-switcher-create-team-button-icon`;
45
+ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamTrigger, history, isLaunchpad, isLoadingTeamSwitcher, isSuccessTeamSwitcher, setIsSuccessTeamSwitcher, menuAriaLabelRecord, menuButtonId, menuListId, navigationPlatform, teamsQuery, trackEvent, user, userTeams, }) {
46
+ const queryClient = reactQuery.useQueryClient();
47
+ const [selectedTeam, setSelectedTeam] = React.useState();
48
+ const [openAccountSubmenuId, setOpenAccountSubmenuId] = React.useState("");
49
+ const hasUserTeams = Boolean(userTeams);
50
+ const showSelectTeamPurpose = navigationPlatform?.requireTeamPurpose;
51
+ const createTeamButtonText = showSelectTeamPurpose ? "Create Team" : "Create or Join Team";
52
+ const userTeamInstanceSwitcherDefault = user?.teamInstanceSwitcherDefault;
53
+ const profileUrl = servicesConfig.serviceUrl.resourceUserProfile({ baseServicesUrl });
54
+ const teamLink = ({ teamId }) => {
55
+ return `${navigationPlatform.baseEnvUrl}/launchpad/teams/${teamId}`;
56
+ };
57
+ const { mutateAsync: mutateUserProfile, isLoading: mutateUserProfileIsLoading } = reactQuery.useMutation(servicesConfig.resolver.patchUserProfile, {
58
+ onSuccess: () => {
59
+ queryClient.invalidateQueries(profileUrl);
60
+ },
61
+ });
62
+ React__default.default.useEffect(() => {
63
+ let timer;
64
+ if (isSuccessTeamSwitcher && setIsSuccessTeamSwitcher) {
65
+ timer = setTimeout(() => {
66
+ setIsSuccessTeamSwitcher(false);
67
+ }, 3000);
68
+ }
69
+ return () => clearTimeout(timer);
70
+ }, [isSuccessTeamSwitcher, setIsSuccessTeamSwitcher]);
71
+ React.useEffect(() => {
72
+ let accountTeams, standardTeams, personalTeam = [];
73
+ if (hasUserTeams) {
74
+ accountTeams = userTeams?.data?.accountTeams ?? [];
75
+ standardTeams = userTeams?.data?.standardTeams ?? [];
76
+ personalTeam = userTeams?.data?.personalTeam ?? [];
77
+ }
78
+ else {
79
+ accountTeams = teamsQuery?.data?.accountTeams ?? [];
80
+ standardTeams = teamsQuery?.data?.standardTeams ?? [];
81
+ personalTeam = teamsQuery?.data?.personalTeam ?? [];
82
+ }
83
+ const userHasPersonalTeam = personalTeam.length > 0;
84
+ const userHasAccountTeams = accountTeams.length > 0;
85
+ const userHasStandardTeams = standardTeams.length > 0;
86
+ const userHasTeams = userHasPersonalTeam || userHasAccountTeams || userHasStandardTeams;
87
+ const handleSelectTeam = async ({ team }) => {
88
+ setSelectedTeam(team);
89
+ if (!userTeamInstanceSwitcherDefault) {
90
+ const body = {
91
+ teamInstanceSwitcherDefault: team.id,
92
+ };
93
+ await mutateUserProfile({ baseServicesUrl, body });
94
+ }
95
+ };
96
+ if (userHasTeams) {
97
+ if (!userTeamInstanceSwitcherDefault) {
98
+ if (userHasPersonalTeam) {
99
+ handleSelectTeam({ team: personalTeam[0] });
100
+ }
101
+ else if (userHasAccountTeams) {
102
+ const sortedAccounts = sortBy__default.default(accountTeams, [
103
+ (account) => (account.displayName ? account.displayName : account.name),
104
+ ]);
105
+ handleSelectTeam({ team: sortedAccounts[0] });
106
+ }
107
+ else if (userHasStandardTeams) {
108
+ const sortedStandardTeams = sortBy__default.default(standardTeams, [
109
+ (standardTeam) => (standardTeam.displayName ? standardTeam.displayName : standardTeam.name),
110
+ ]);
111
+ handleSelectTeam({ team: sortedStandardTeams[0] });
112
+ }
113
+ }
114
+ else if (selectedTeam?.id !== userTeamInstanceSwitcherDefault) {
115
+ let allProjectTeams = [];
116
+ if (userHasAccountTeams) {
117
+ accountTeams.forEach((team) => {
118
+ if (team.projectTeams && team.projectTeams.length > 0) {
119
+ allProjectTeams = allProjectTeams.concat(team.projectTeams);
120
+ }
121
+ });
122
+ }
123
+ const allTeams = personalTeam.concat(standardTeams, accountTeams, allProjectTeams);
124
+ const newSelectedTeam = allTeams.find((team) => team.id === userTeamInstanceSwitcherDefault);
125
+ handleSelectTeam({ team: newSelectedTeam });
126
+ }
127
+ }
128
+ }, [
129
+ baseServicesUrl,
130
+ hasUserTeams,
131
+ mutateUserProfile,
132
+ selectedTeam,
133
+ teamsQuery?.data?.accountTeams,
134
+ teamsQuery?.data?.personalTeam,
135
+ teamsQuery?.data?.standardTeams,
136
+ userTeamInstanceSwitcherDefault,
137
+ userTeams?.data?.accountTeams,
138
+ userTeams?.data?.personalTeam,
139
+ userTeams?.data?.standardTeams,
140
+ ]);
141
+ const handleHeaderMenuClick = () => {
142
+ setOpenAccountSubmenuId("");
143
+ };
144
+ const handleTeamClick = ({ team, type }) => {
145
+ setOpenAccountSubmenuId("");
146
+ if (analyticsHelpers?.navigateEventHandler && trackEvent) {
147
+ analyticsHelpers.navigateEventHandler({
148
+ action: `Clicked ${team.name} in Team Switcher`,
149
+ category: "Team Switcher",
150
+ destinationPath: teamLink({ teamId: team.id }),
151
+ teamId: team.id,
152
+ teamType: type,
153
+ trackEvent,
154
+ });
155
+ }
156
+ if (isLaunchpad && Boolean(history)) {
157
+ history.push(`/teams/${team.id}`);
158
+ }
159
+ else {
160
+ window.open(teamLink({ teamId: team.id }), "_self");
161
+ }
162
+ };
163
+ const handleCreateJoinTeamClick = (e) => {
164
+ if (analyticsHelpers?.ctaEventHandler && trackEvent) {
165
+ analyticsHelpers.ctaEventHandler({
166
+ category: "Team Switcher",
167
+ CTA: "Create/Join team clicked",
168
+ pageName: "",
169
+ trackEvent,
170
+ });
171
+ }
172
+ if (createJoinTeamTrigger) {
173
+ createJoinTeamTrigger(e);
174
+ }
175
+ else {
176
+ window.open(`${navigationPlatform.baseEnvUrl}/launchpad?createJoinTeam=true`, "_self");
177
+ }
178
+ };
179
+ const handleOpenAccountSubmenu = ({ e, id }) => {
180
+ e.stopPropagation();
181
+ if (openAccountSubmenuId === id) {
182
+ setOpenAccountSubmenuId("");
183
+ }
184
+ else {
185
+ setOpenAccountSubmenuId(id);
186
+ }
187
+ };
188
+ if (userTeams?.isLoading || teamsQuery?.isLoading || mutateUserProfileIsLoading) {
189
+ return (React__default.default.createElement("div", { style: { display: "flex", alignItems: "center" } },
190
+ React__default.default.createElement(react.InlineLoading, null)));
191
+ }
192
+ if (userTeams?.data || teamsQuery?.data) {
193
+ let accountTeams, standardTeams, personalTeam = [];
194
+ if (hasUserTeams) {
195
+ accountTeams = userTeams?.data?.accountTeams ?? [];
196
+ standardTeams = userTeams?.data?.standardTeams ?? [];
197
+ personalTeam = userTeams?.data?.personalTeam ?? [];
198
+ }
199
+ else {
200
+ accountTeams = teamsQuery?.data?.accountTeams ?? [];
201
+ standardTeams = teamsQuery?.data?.standardTeams ?? [];
202
+ personalTeam = teamsQuery?.data?.personalTeam ?? [];
203
+ }
204
+ let sortedAccountTeamsWithNamesToDisplay = [];
205
+ let sortedStandardTeamsWithNamesToDisplay = [];
206
+ if (accountTeams?.length > 0) {
207
+ const newAccountTeams = accountTeams.map((team) => {
208
+ let newProjectTeams = [];
209
+ if (team.projectTeams && team.projectTeams.length > 0) {
210
+ newProjectTeams = team.projectTeams?.map((team) => ({
211
+ ...team,
212
+ nameToDisplay: team.displayName ? team.displayName : team.name,
213
+ }));
214
+ }
215
+ return {
216
+ ...team,
217
+ nameToDisplay: team.displayName ? team.displayName : team.name,
218
+ projectTeams: sortBy__default.default(newProjectTeams, ["nameToDisplay"]),
219
+ };
220
+ });
221
+ sortedAccountTeamsWithNamesToDisplay = sortBy__default.default(newAccountTeams, ["nameToDisplay"]);
222
+ }
223
+ if (standardTeams?.length > 0) {
224
+ const newStandardTeams = standardTeams.map((team) => {
225
+ return {
226
+ ...team,
227
+ nameToDisplay: team.displayName ? team.displayName : team.name,
228
+ };
229
+ });
230
+ sortedStandardTeamsWithNamesToDisplay = sortBy__default.default(newStandardTeams, ["nameToDisplay"]);
231
+ }
232
+ let selectedTeamName = selectedTeam?.displayName ? selectedTeam.displayName : selectedTeam?.name;
233
+ if (selectedTeamName && selectedTeamName.length > 65) {
234
+ selectedTeamName = selectedTeamName.slice(0, 65) + "...";
235
+ }
236
+ const isPartnerUser = Boolean(user?.type === UserType.USER_PLATFORM_ROLE.Partner);
237
+ return (React__default.default.createElement("div", { className: headerDropdownMenuContainerClassname },
238
+ isLoadingTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuLoadingClassname },
239
+ React__default.default.createElement(react.InlineLoading, null))) : isSuccessTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuSuccessClassname },
240
+ React__default.default.createElement(icons.CheckmarkFilled, null))) : null,
241
+ React__default.default.createElement(react.HeaderMenu, { id: "header-team-switcher-menu", "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, menuLinkName: selectedTeamName ? selectedTeamName : "No team selected", onClick: handleHeaderMenuClick, "data-testid": "header-team-switcher-menu" },
242
+ React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
243
+ !isPartnerUser && (React__default.default.createElement(react.HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
244
+ // eslint-disable-next-line no-script-url
245
+ href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
246
+ React__default.default.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
247
+ React__default.default.createElement("span", { className: headerTeamSwitcherCreateTeamButtonTextClassname }, createTeamButtonText),
248
+ React__default.default.createElement(icons.AddAlt, { className: headerTeamSwitcherCreateTeamButtonIconClassname })))),
249
+ personalTeam.length > 0
250
+ ? personalTeam.map((team) => {
251
+ const teamName = team.displayName ? team.displayName : team.name;
252
+ const isTeamSelected = team.id === selectedTeam?.id;
253
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-personal-menu-item-id` },
254
+ React__default.default.createElement(react.HeaderMenuItem, { key: team.id, id: `${team.id}-personal-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
255
+ handleTeamClick({ team, type: "personal" });
256
+ },
257
+ // eslint-disable-next-line no-script-url
258
+ href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-item" },
259
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
260
+ React__default.default.createElement("span", { title: teamName, className: headerDropdownMenuItemTextClassname }, teamName),
261
+ isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
262
+ })
263
+ : null,
264
+ accountTeams.length > 0
265
+ ? sortedAccountTeamsWithNamesToDisplay.map((team) => {
266
+ const isSubmenuOpen = team.id === openAccountSubmenuId;
267
+ const isProjectTeamSelected = team.projectTeams &&
268
+ team.projectTeams.length > 0 &&
269
+ team.projectTeams.some((team) => team.id === selectedTeam?.id);
270
+ const isTeamSelected = team.id === selectedTeam?.id;
271
+ const isMenuSelected = isTeamSelected || isProjectTeamSelected;
272
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-account-menu` },
273
+ React__default.default.createElement(react.HeaderMenuItem, { "aria-expanded": isSubmenuOpen, "aria-selected": isMenuSelected, className: headerDropdownMenuItemAccountContainerClassname, onClick: (e) => handleOpenAccountSubmenu({ e, id: team.id }),
274
+ // eslint-disable-next-line no-script-url
275
+ href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-account-accordion" },
276
+ React__default.default.createElement("div", { className: headerDropdownMenuItemAccountClassname },
277
+ React__default.default.createElement("div", { className: headerDropdownMenuItemTextIconClassname },
278
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
279
+ isMenuSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null),
280
+ React__default.default.createElement("div", { className: headerDropdownMenuItemAccountIconsClassname },
281
+ React__default.default.createElement(icons.GroupAccount, { className: headerDropdownMenuItemAccountGroupIconClassname }),
282
+ React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuItemAccountChevronIconClassname })))),
283
+ React__default.default.createElement("div", { id: `${team.id}-account-submenu`, key: `${team.id}-account-submenu`, "aria-expanded": isSubmenuOpen, className: headerDropdownMenuItemAccountSubmenuClassname },
284
+ React__default.default.createElement(react.HeaderMenuItem, { key: `${team.id}-menu-item`, id: `${team.id}-account-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
285
+ handleTeamClick({ team, type: "account" });
286
+ }, "data-testid": "header-team-switcher-menu-account-accordion-item",
287
+ // eslint-disable-next-line no-script-url
288
+ href: "javascript:void(0)" },
289
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
290
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, "Account Page"),
291
+ isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null)),
292
+ team.projectTeams && team.projectTeams.length > 0
293
+ ? team.projectTeams.map((team) => {
294
+ const isTeamSelected = team.id === selectedTeam?.id;
295
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-project-menu-item` },
296
+ React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
297
+ handleTeamClick({ team, type: "project" });
298
+ }, "data-testid": "header-team-switcher-menu-account-accordion-item",
299
+ // eslint-disable-next-line no-script-url
300
+ href: "javascript:void(0)" },
301
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
302
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
303
+ isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null))));
304
+ })
305
+ : null)));
306
+ })
307
+ : null,
308
+ standardTeams.length > 0
309
+ ? sortedStandardTeamsWithNamesToDisplay.map((team) => {
310
+ const isTeamSelected = team.id === selectedTeam?.id;
311
+ return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-standard-menu-item` },
312
+ React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
313
+ handleTeamClick({ team, type: "standard" });
314
+ }, "data-testid": "header-team-switcher-menu-item",
315
+ // eslint-disable-next-line no-script-url
316
+ href: "javascript:void(0)" },
317
+ React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
318
+ React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
319
+ isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
320
+ })
321
+ : null))));
322
+ }
323
+ return null;
324
+ }
325
+
326
+ exports.default = HeaderTeamSwitcher;
@@ -26,10 +26,11 @@ IBM Confidential
26
26
  694970X, 69497O0
27
27
  © Copyright IBM Corp. 2022, 2024
28
28
  */
29
- function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformName, productName, profileMenuItems = [], supportMenuItems = [], renderPrivacyRedirect = true, renderPrivacyStatement = true, rightPanel, handleShowTutorial, skipToContentProps, templateMeteringEvent, triggerEvent, tutorialScreenToShow, user, userTeams, enableIcaMacs, }) {
29
+ function UIShell({ analyticsHelpers, baseEnvUrl, carbonTheme = "g10", config, createJoinTeamTrigger, history, isLaunchpad = false, isLoadingTeamSwitcher, isSuccessTeamSwitcher, setIsSuccessTeamSwitcher, leftPanel, platformName, productName, profileMenuItems = [], supportMenuItems = [], renderPrivacyRedirect = true, renderPrivacyStatement = true, rightPanel, handleShowTutorial, skipToContentProps, templateMeteringEvent, trackEvent, triggerEvent, tutorialScreenToShow, user, userTeams, enableIcaMacs, }) {
30
30
  // Support base header .e.g for an error state
31
31
  if (!config) {
32
- return (React__default.default.createElement(Header.default, { baseEnvUrl: baseEnvUrl ?? "", baseServicesUrl: "", carbonTheme: carbonTheme, enableAppSwitcher: false, enableNotifications: false, enableNotificationsCount: false, productName: productName || platformName || "" }));
32
+ return (React__default.default.createElement(reactQuery.QueryClientProvider, { client: servicesConfig.queryClient },
33
+ React__default.default.createElement(Header.default, { baseEnvUrl: baseEnvUrl ?? "", baseServicesUrl: "", carbonTheme: carbonTheme, enableAppSwitcher: false, enableNotifications: false, enableNotificationsCount: false, productName: productName || platformName || "", user: user })));
33
34
  }
34
35
  const { features, navigation, platform, platformMessage } = config;
35
36
  const names = getProductAndPlatformNames({ productName, platformName, platform });
@@ -69,15 +70,19 @@ function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformN
69
70
  */
70
71
  const isPrivacyStatementDisabled = renderPrivacyStatement === false || features?.["consent.enabled"] === false;
71
72
  return (React__default.default.createElement(reactQuery.QueryClientProvider, { client: servicesConfig.queryClient },
72
- React__default.default.createElement(Header.default, { baseEnvUrl: platform.baseEnvUrl, baseServicesUrl: platform.baseServicesUrl, carbonTheme: carbonTheme, enableAppSwitcher: isAppSwitcherEnabled, instanceSwitcherEnabled: instanceSwitcherEnabled, enableNotifications: isNotificationsEnabled, enableNotificationsCount: isNotificationsCountEnabled, leftPanel: leftPanel, navLinks: navigation, platform: platform, platformMessage: platformMessage, prefixName: names.platformName, productName: names.productName, rightPanel: rightPanel, requestSummary: user?.requestSummary, skipToContentProps: skipToContentProps, templateMeteringEvent: templateMeteringEvent, triggerEvent: triggerEvent, profileMenuItems: [
73
+ React__default.default.createElement(Header.default, { analyticsHelpers: analyticsHelpers, baseEnvUrl: platform.baseEnvUrl, baseServicesUrl: platform.baseServicesUrl, carbonTheme: carbonTheme, createJoinTeamTrigger: createJoinTeamTrigger, enableAppSwitcher: isAppSwitcherEnabled, instanceSwitcherEnabled: instanceSwitcherEnabled, enableNotifications: isNotificationsEnabled, enableNotificationsCount: isNotificationsCountEnabled, leftPanel: leftPanel, navLinks: navigation, platform: platform, platformMessage: platformMessage, prefixName: names.platformName, productName: names.productName, rightPanel: rightPanel, requestSummary: user?.requestSummary, skipToContentProps: skipToContentProps, templateMeteringEvent: templateMeteringEvent, triggerEvent: triggerEvent, profileMenuItems: [
73
74
  isUserEnabled && (React__default.default.createElement(ProfileSettings.ProfileSettingsMenuItem, { key: "profile-settings", baseServicesUrl: platform.baseServicesUrl, src: `${platform.baseServicesUrl}/users/image/${user?.email}`, userName: user?.displayName ?? user?.name })),
74
75
  isSendMailEnabled && (React__default.default.createElement(HeaderMenuItem.default, { key: "email-preferences", href: `${platform.baseEnvUrl}/launchpad/email-preferences`, icon: React__default.default.createElement(icons.Email, null), kind: "internal", text: "Email Preferences", type: "link" })),
75
76
  !isPrivacyStatementDisabled && (React__default.default.createElement(PrivacyStatement.PrivacyStatementMenuItem, { key: "privacy-statement", baseServicesUrl: platform.baseServicesUrl, platformEmail: platform?.platformEmail })),
76
77
  ...profileMenuItems,
77
78
  isSignOutEnabled && React__default.default.createElement(SignOut.SignOutMenuItem, { key: "Sign Out", signOutLink: platform.signOutUrl }),
78
79
  ].filter(Boolean), supportMenuItems: [
80
+ !isPartnerUser && (React__default.default.createElement(HeaderMenuItem.default, { key: "docs", href: platform?.docs?.url, icon: React__default.default.createElement(icons.Document, null), "data-testid": "docs", kind: "app", text: "Docs", type: "link" })),
79
81
  isSupportEnabled &&
80
82
  (supportFlagCheck || isPartnerUser ? (React__default.default.createElement(SupportCenter.SupportCenterMenuItem, { key: "support-center", platformName: platform?.platformName, platformOrganization: platform?.platformOrganization, supportLink: supportLink, partnerEmailId: partnerEmailId, enablePartner: isPartnerUser, baseServicesUrl: platform.baseServicesUrl })) : (React__default.default.createElement(HeaderMenuItem.default, { key: "support-center", href: platform?.supportUrl, icon: React__default.default.createElement(icons.HelpDesk, null), kind: "external", text: "Support Center", type: "link" }))),
83
+ React__default.default.createElement(HeaderMenuItem.default, { key: "release-notes", href: platform?.releaseNotesUrl, icon: React__default.default.createElement(icons.CatalogPublish, null), "data-testid": "release-notes", kind: "app", text: "Release Notes", type: "link" }),
84
+ React__default.default.createElement(HeaderMenuItem.default, { key: "legal-terms", href: platform?.legalTermsUrl, icon: React__default.default.createElement(icons.Policy, null), "data-testid": "legal-terms", kind: "app", text: "Legal Terms", type: "link" }),
85
+ React__default.default.createElement("span", { style: { borderBottom: "1px solid #b8c1c1" } }),
81
86
  isCommunityEnabled && (React__default.default.createElement(HeaderMenuItem.default, { key: "community", href: platform?.communityUrl, icon: React__default.default.createElement(icons.Forum, null), kind: "external", text: "Community", type: "link" })),
82
87
  isFeedbackEnabled && (React__default.default.createElement(Feedback.FeedbackMenuItem, { key: "feedback", platformName: platform?.platformName, platformOrganization: platform?.platformOrganization, sendIdeasUrl: sendIdeasUrl })),
83
88
  !isPartnerUser && askICAEnabled ? (React__default.default.createElement(HeaderMenuItem.default, { key: "chat-launch", href: platform?.askICAUrl, icon: React__default.default.createElement(icons.ChatLaunch, null), "data-testid": "askICA-chatlaunch", kind: "external", text: "AskICA", type: "link" })) : null,
@@ -85,7 +90,7 @@ function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformN
85
90
  isAboutPlatformEnabled && (React__default.default.createElement(AboutPlatform.AboutPlatformMenuItem, { key: "about-platform", name: platform.name, baseServicesUrl: platform.baseServicesUrl })),
86
91
  tutorialScreenToShow && handleShowTutorial && (React__default.default.createElement(HeaderMenuItem.default, { key: "launch-tutorial", onClick: handleShowTutorial, icon: React__default.default.createElement(icons.Book, null), "data-testid": "launch-tutorial", text: "Launch Tutorial", type: "button" })),
87
92
  ...supportMenuItems,
88
- ].filter(Boolean), userTeams: userTeams }),
93
+ ].filter(Boolean), history: history, isLaunchpad: isLaunchpad, isLoadingTeamSwitcher: isLoadingTeamSwitcher, isSuccessTeamSwitcher: isSuccessTeamSwitcher, setIsSuccessTeamSwitcher: setIsSuccessTeamSwitcher, trackEvent: trackEvent, user: user, userTeams: userTeams }),
89
94
  isPrivacyModalRendered ? (React__default.default.createElement(PrivacyRedirect.default, { isOpen: true, baseEnvUrl: platform.baseEnvUrl, platformName: platform?.name, user: user })) : null));
90
95
  }
91
96
  /**