@boomerang-io/carbon-addons-boomerang-react 4.6.11-beta.2 → 4.6.11-beta.21
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.
- package/dist/cjs/components/AdvantageSideNav/AdvantageSideNav.js +136 -169
- package/dist/cjs/components/Header/Header.js +18 -4
- package/dist/cjs/components/Header/HeaderAppSwitcher.js +2 -10
- package/dist/cjs/components/Header/HeaderTeamSwitcher.js +324 -0
- package/dist/cjs/components/UIShell/UIShell.js +9 -4
- package/dist/esm/components/AdvantageSideNav/AdvantageSideNav.js +138 -171
- package/dist/esm/components/Header/Header.js +18 -4
- package/dist/esm/components/Header/HeaderAppSwitcher.js +2 -10
- package/dist/esm/components/Header/HeaderTeamSwitcher.js +315 -0
- package/dist/esm/components/UIShell/UIShell.js +10 -5
- package/dist/types/index.d.ts +113 -1
- package/package.json +2 -2
- package/scss/components/AdvantageSideNav/_advantageSideNav.scss +0 -6
- package/scss/components/Header/_headerTeamSwitcher.scss +195 -0
- package/scss/global/index.scss +7 -8
|
@@ -0,0 +1,324 @@
|
|
|
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
|
+
|
|
14
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
|
|
16
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
17
|
+
var sortBy__default = /*#__PURE__*/_interopDefault(sortBy);
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
IBM Confidential
|
|
21
|
+
694970X, 69497O0
|
|
22
|
+
© Copyright IBM Corp. 2022, 2025
|
|
23
|
+
*/
|
|
24
|
+
const headerDropdownMenuContainerClassname = `${settings.prefix}--header-dropdown-menu-container`;
|
|
25
|
+
const headerDropdownMenuLoadingClassname = `${settings.prefix}--header-dropdown-menu-loading`;
|
|
26
|
+
const headerDropdownMenuSuccessClassname = `${settings.prefix}--header-dropdown-menu-success`;
|
|
27
|
+
const headerDropdownMenuClassname = `${settings.prefix}--header-dropdown-menu`;
|
|
28
|
+
const headerDropdownMenuListClassname = `${settings.prefix}--bmrg-header-drop-down`;
|
|
29
|
+
const headerDropdownMenuItemContainerClassname = `${settings.prefix}--header-dropdown-menu-item-container`;
|
|
30
|
+
const headerDropdownMenuItemClassname = `${settings.prefix}--header-dropdown-menu-item`;
|
|
31
|
+
const headerDropdownMenuItemTextIconClassname = `${settings.prefix}--header-dropdown-menu-item-text-icon`;
|
|
32
|
+
const headerDropdownMenuItemTextClassname = `${settings.prefix}--header-dropdown-menu-item-text`;
|
|
33
|
+
const headerDropdownMenuItemIconClassname = `${settings.prefix}--header-dropdown-menu-item-icon`;
|
|
34
|
+
const headerDropdownMenuItemAccountContainerClassname = `${settings.prefix}--header-dropdown-menu-item-account-container`;
|
|
35
|
+
const headerDropdownMenuItemAccountClassname = `${settings.prefix}--header-dropdown-menu-item-account`;
|
|
36
|
+
const headerDropdownMenuItemAccountIconsClassname = `${settings.prefix}--header-dropdown-menu-item-account-icons`;
|
|
37
|
+
const headerDropdownMenuItemAccountGroupIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-group-icon`;
|
|
38
|
+
const headerDropdownMenuItemAccountChevronIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-chevron-icon`;
|
|
39
|
+
const headerDropdownMenuItemAccountSubmenuClassname = `${settings.prefix}--header-dropdown-menu-item-account-submenu`;
|
|
40
|
+
const headerTeamSwitcherCreateTeamButtonContainerClassname = `${settings.prefix}--header-team-switcher-create-team-button-container`;
|
|
41
|
+
const headerTeamSwitcherCreateTeamButtonClassname = `${settings.prefix}--header-team-switcher-create-team-button`;
|
|
42
|
+
const headerTeamSwitcherCreateTeamButtonTextClassname = `${settings.prefix}--header-team-switcher-create-team-button-text`;
|
|
43
|
+
const headerTeamSwitcherCreateTeamButtonIconClassname = `${settings.prefix}--header-team-switcher-create-team-button-icon`;
|
|
44
|
+
function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamTrigger, history, isLaunchpad, isLoadingTeamSwitcher, isSuccessTeamSwitcher, setIsSuccessTeamSwitcher, menuAriaLabelRecord, menuButtonId, menuListId, navigationPlatform, teamsQuery, trackEvent, user, userTeams, }) {
|
|
45
|
+
const queryClient = reactQuery.useQueryClient();
|
|
46
|
+
const [selectedTeam, setSelectedTeam] = React.useState();
|
|
47
|
+
const [openAccountSubmenuId, setOpenAccountSubmenuId] = React.useState("");
|
|
48
|
+
const hasUserTeams = Boolean(userTeams);
|
|
49
|
+
const showSelectTeamPurpose = navigationPlatform?.requireTeamPurpose;
|
|
50
|
+
const createTeamButtonText = showSelectTeamPurpose ? "Create Team" : "Create or Join Team";
|
|
51
|
+
const userTeamInstanceSwitcherDefault = user?.teamInstanceSwitcherDefault;
|
|
52
|
+
const profileUrl = servicesConfig.serviceUrl.resourceUserProfile({ baseServicesUrl });
|
|
53
|
+
const teamLink = ({ teamId }) => {
|
|
54
|
+
return `${navigationPlatform.baseEnvUrl}/launchpad/teams/${teamId}`;
|
|
55
|
+
};
|
|
56
|
+
const { mutateAsync: mutateUserProfile, isLoading: mutateUserProfileIsLoading } = reactQuery.useMutation(servicesConfig.resolver.patchUserProfile, {
|
|
57
|
+
onSuccess: () => {
|
|
58
|
+
queryClient.invalidateQueries(profileUrl);
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
React__default.default.useEffect(() => {
|
|
62
|
+
let timer;
|
|
63
|
+
if (isSuccessTeamSwitcher && setIsSuccessTeamSwitcher) {
|
|
64
|
+
timer = setTimeout(() => {
|
|
65
|
+
setIsSuccessTeamSwitcher(false);
|
|
66
|
+
}, 3000);
|
|
67
|
+
}
|
|
68
|
+
return () => clearTimeout(timer);
|
|
69
|
+
}, [isSuccessTeamSwitcher, setIsSuccessTeamSwitcher]);
|
|
70
|
+
React.useEffect(() => {
|
|
71
|
+
let accountTeams, standardTeams, personalTeam = [];
|
|
72
|
+
if (hasUserTeams) {
|
|
73
|
+
accountTeams = userTeams?.data?.accountTeams ?? [];
|
|
74
|
+
standardTeams = userTeams?.data?.standardTeams ?? [];
|
|
75
|
+
personalTeam = userTeams?.data?.personalTeam ?? [];
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
accountTeams = teamsQuery?.data?.accountTeams ?? [];
|
|
79
|
+
standardTeams = teamsQuery?.data?.standardTeams ?? [];
|
|
80
|
+
personalTeam = teamsQuery?.data?.personalTeam ?? [];
|
|
81
|
+
}
|
|
82
|
+
const userHasPersonalTeam = personalTeam.length > 0;
|
|
83
|
+
const userHasAccountTeams = accountTeams.length > 0;
|
|
84
|
+
const userHasStandardTeams = standardTeams.length > 0;
|
|
85
|
+
const userHasTeams = userHasPersonalTeam || userHasAccountTeams || userHasStandardTeams;
|
|
86
|
+
const handleSelectTeam = async ({ team }) => {
|
|
87
|
+
setSelectedTeam(team);
|
|
88
|
+
if (!userTeamInstanceSwitcherDefault) {
|
|
89
|
+
const body = {
|
|
90
|
+
teamInstanceSwitcherDefault: team.id,
|
|
91
|
+
};
|
|
92
|
+
await mutateUserProfile({ baseServicesUrl, body });
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
if (userHasTeams) {
|
|
96
|
+
if (!userTeamInstanceSwitcherDefault) {
|
|
97
|
+
if (userHasPersonalTeam) {
|
|
98
|
+
handleSelectTeam({ team: personalTeam[0] });
|
|
99
|
+
}
|
|
100
|
+
else if (userHasAccountTeams) {
|
|
101
|
+
const sortedAccounts = sortBy__default.default(accountTeams, [
|
|
102
|
+
(account) => (account.displayName ? account.displayName : account.name),
|
|
103
|
+
]);
|
|
104
|
+
handleSelectTeam({ team: sortedAccounts[0] });
|
|
105
|
+
}
|
|
106
|
+
else if (userHasStandardTeams) {
|
|
107
|
+
const sortedStandardTeams = sortBy__default.default(standardTeams, [
|
|
108
|
+
(standardTeam) => (standardTeam.displayName ? standardTeam.displayName : standardTeam.name),
|
|
109
|
+
]);
|
|
110
|
+
handleSelectTeam({ team: sortedStandardTeams[0] });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (selectedTeam?.id !== userTeamInstanceSwitcherDefault) {
|
|
114
|
+
let allProjectTeams = [];
|
|
115
|
+
if (userHasAccountTeams) {
|
|
116
|
+
accountTeams.forEach((team) => {
|
|
117
|
+
if (team.projectTeams && team.projectTeams.length > 0) {
|
|
118
|
+
allProjectTeams = allProjectTeams.concat(team.projectTeams);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const allTeams = personalTeam.concat(standardTeams, accountTeams, allProjectTeams);
|
|
123
|
+
const newSelectedTeam = allTeams.find((team) => team.id === userTeamInstanceSwitcherDefault);
|
|
124
|
+
handleSelectTeam({ team: newSelectedTeam });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}, [
|
|
128
|
+
baseServicesUrl,
|
|
129
|
+
hasUserTeams,
|
|
130
|
+
mutateUserProfile,
|
|
131
|
+
selectedTeam,
|
|
132
|
+
teamsQuery?.data?.accountTeams,
|
|
133
|
+
teamsQuery?.data?.personalTeam,
|
|
134
|
+
teamsQuery?.data?.standardTeams,
|
|
135
|
+
userTeamInstanceSwitcherDefault,
|
|
136
|
+
userTeams?.data?.accountTeams,
|
|
137
|
+
userTeams?.data?.personalTeam,
|
|
138
|
+
userTeams?.data?.standardTeams,
|
|
139
|
+
]);
|
|
140
|
+
const handleHeaderMenuClick = () => {
|
|
141
|
+
setOpenAccountSubmenuId("");
|
|
142
|
+
};
|
|
143
|
+
const handleTeamClick = ({ team, type }) => {
|
|
144
|
+
setOpenAccountSubmenuId("");
|
|
145
|
+
if (analyticsHelpers?.navigateEventHandler && trackEvent) {
|
|
146
|
+
analyticsHelpers.navigateEventHandler({
|
|
147
|
+
action: `Clicked ${team.name} in Team Switcher`,
|
|
148
|
+
category: "Team Switcher",
|
|
149
|
+
destinationPath: teamLink({ teamId: team.id }),
|
|
150
|
+
teamId: team.id,
|
|
151
|
+
teamType: type,
|
|
152
|
+
trackEvent,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
if (isLaunchpad && Boolean(history)) {
|
|
156
|
+
history.push(`/teams/${team.id}`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
window.open(teamLink({ teamId: team.id }), "_self");
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const handleCreateJoinTeamClick = (e) => {
|
|
163
|
+
if (analyticsHelpers?.ctaEventHandler && trackEvent) {
|
|
164
|
+
analyticsHelpers.ctaEventHandler({
|
|
165
|
+
category: "Team Switcher",
|
|
166
|
+
CTA: "Create/Join team clicked",
|
|
167
|
+
pageName: "",
|
|
168
|
+
trackEvent,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
if (createJoinTeamTrigger) {
|
|
172
|
+
createJoinTeamTrigger(e);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
window.open(`${navigationPlatform.baseEnvUrl}/launchpad?createJoinTeam=true`, "_self");
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const handleOpenAccountSubmenu = ({ e, id }) => {
|
|
179
|
+
e.stopPropagation();
|
|
180
|
+
if (openAccountSubmenuId === id) {
|
|
181
|
+
setOpenAccountSubmenuId("");
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
setOpenAccountSubmenuId(id);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
if (userTeams?.isLoading || teamsQuery?.isLoading || mutateUserProfileIsLoading) {
|
|
188
|
+
return (React__default.default.createElement("div", { style: { display: "flex", alignItems: "center" } },
|
|
189
|
+
React__default.default.createElement(react.InlineLoading, null)));
|
|
190
|
+
}
|
|
191
|
+
if (userTeams?.data || teamsQuery?.data) {
|
|
192
|
+
let accountTeams, standardTeams, personalTeam = [];
|
|
193
|
+
if (hasUserTeams) {
|
|
194
|
+
accountTeams = userTeams?.data?.accountTeams ?? [];
|
|
195
|
+
standardTeams = userTeams?.data?.standardTeams ?? [];
|
|
196
|
+
personalTeam = userTeams?.data?.personalTeam ?? [];
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
accountTeams = teamsQuery?.data?.accountTeams ?? [];
|
|
200
|
+
standardTeams = teamsQuery?.data?.standardTeams ?? [];
|
|
201
|
+
personalTeam = teamsQuery?.data?.personalTeam ?? [];
|
|
202
|
+
}
|
|
203
|
+
let sortedAccountTeamsWithNamesToDisplay = [];
|
|
204
|
+
let sortedStandardTeamsWithNamesToDisplay = [];
|
|
205
|
+
if (accountTeams?.length > 0) {
|
|
206
|
+
const newAccountTeams = accountTeams.map((team) => {
|
|
207
|
+
let newProjectTeams = [];
|
|
208
|
+
if (team.projectTeams && team.projectTeams.length > 0) {
|
|
209
|
+
newProjectTeams = team.projectTeams?.map((team) => ({
|
|
210
|
+
...team,
|
|
211
|
+
nameToDisplay: team.displayName ? team.displayName : team.name,
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
...team,
|
|
216
|
+
nameToDisplay: team.displayName ? team.displayName : team.name,
|
|
217
|
+
projectTeams: sortBy__default.default(newProjectTeams, ["nameToDisplay"]),
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
sortedAccountTeamsWithNamesToDisplay = sortBy__default.default(newAccountTeams, ["nameToDisplay"]);
|
|
221
|
+
}
|
|
222
|
+
if (standardTeams?.length > 0) {
|
|
223
|
+
const newStandardTeams = standardTeams.map((team) => {
|
|
224
|
+
return {
|
|
225
|
+
...team,
|
|
226
|
+
nameToDisplay: team.displayName ? team.displayName : team.name,
|
|
227
|
+
};
|
|
228
|
+
});
|
|
229
|
+
sortedStandardTeamsWithNamesToDisplay = sortBy__default.default(newStandardTeams, ["nameToDisplay"]);
|
|
230
|
+
}
|
|
231
|
+
let selectedTeamName = selectedTeam?.displayName ? selectedTeam.displayName : selectedTeam?.name;
|
|
232
|
+
if (selectedTeamName && selectedTeamName.length > 65) {
|
|
233
|
+
selectedTeamName = selectedTeamName.slice(0, 65) + "...";
|
|
234
|
+
}
|
|
235
|
+
return (React__default.default.createElement("div", { className: headerDropdownMenuContainerClassname },
|
|
236
|
+
isLoadingTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuLoadingClassname },
|
|
237
|
+
React__default.default.createElement(react.InlineLoading, null))) : isSuccessTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuSuccessClassname },
|
|
238
|
+
React__default.default.createElement(icons.CheckmarkFilled, null))) : null,
|
|
239
|
+
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" },
|
|
240
|
+
React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
|
|
241
|
+
React__default.default.createElement(react.HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
|
|
242
|
+
// eslint-disable-next-line no-script-url
|
|
243
|
+
href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
|
|
244
|
+
React__default.default.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
|
|
245
|
+
React__default.default.createElement("span", { className: headerTeamSwitcherCreateTeamButtonTextClassname }, createTeamButtonText),
|
|
246
|
+
React__default.default.createElement(icons.AddAlt, { className: headerTeamSwitcherCreateTeamButtonIconClassname }))),
|
|
247
|
+
personalTeam.length > 0
|
|
248
|
+
? personalTeam.map((team) => {
|
|
249
|
+
const teamName = team.displayName ? team.displayName : team.name;
|
|
250
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
251
|
+
return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-personal-menu-item-id` },
|
|
252
|
+
React__default.default.createElement(react.HeaderMenuItem, { key: team.id, id: `${team.id}-personal-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
|
|
253
|
+
handleTeamClick({ team, type: "personal" });
|
|
254
|
+
},
|
|
255
|
+
// eslint-disable-next-line no-script-url
|
|
256
|
+
href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-item" },
|
|
257
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
|
|
258
|
+
React__default.default.createElement("span", { title: teamName, className: headerDropdownMenuItemTextClassname }, teamName),
|
|
259
|
+
isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
|
|
260
|
+
})
|
|
261
|
+
: null,
|
|
262
|
+
accountTeams.length > 0
|
|
263
|
+
? sortedAccountTeamsWithNamesToDisplay.map((team) => {
|
|
264
|
+
const isSubmenuOpen = team.id === openAccountSubmenuId;
|
|
265
|
+
const isProjectTeamSelected = team.projectTeams &&
|
|
266
|
+
team.projectTeams.length > 0 &&
|
|
267
|
+
team.projectTeams.some((team) => team.id === selectedTeam?.id);
|
|
268
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
269
|
+
const isMenuSelected = isTeamSelected || isProjectTeamSelected;
|
|
270
|
+
return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-account-menu` },
|
|
271
|
+
React__default.default.createElement(react.HeaderMenuItem, { "aria-expanded": isSubmenuOpen, "aria-selected": isMenuSelected, className: headerDropdownMenuItemAccountContainerClassname, onClick: (e) => handleOpenAccountSubmenu({ e, id: team.id }),
|
|
272
|
+
// eslint-disable-next-line no-script-url
|
|
273
|
+
href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-account-accordion" },
|
|
274
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemAccountClassname },
|
|
275
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemTextIconClassname },
|
|
276
|
+
React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
|
|
277
|
+
isMenuSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null),
|
|
278
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemAccountIconsClassname },
|
|
279
|
+
React__default.default.createElement(icons.GroupAccount, { className: headerDropdownMenuItemAccountGroupIconClassname }),
|
|
280
|
+
React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuItemAccountChevronIconClassname })))),
|
|
281
|
+
React__default.default.createElement("div", { id: `${team.id}-account-submenu`, key: `${team.id}-account-submenu`, "aria-expanded": isSubmenuOpen, className: headerDropdownMenuItemAccountSubmenuClassname },
|
|
282
|
+
React__default.default.createElement(react.HeaderMenuItem, { key: `${team.id}-menu-item`, id: `${team.id}-account-menu-item`, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
|
|
283
|
+
handleTeamClick({ team, type: "account" });
|
|
284
|
+
}, "data-testid": "header-team-switcher-menu-account-accordion-item",
|
|
285
|
+
// eslint-disable-next-line no-script-url
|
|
286
|
+
href: "javascript:void(0)" },
|
|
287
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
|
|
288
|
+
React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, "Account Page"),
|
|
289
|
+
isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null)),
|
|
290
|
+
team.projectTeams && team.projectTeams.length > 0
|
|
291
|
+
? team.projectTeams.map((team) => {
|
|
292
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
293
|
+
return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-project-menu-item` },
|
|
294
|
+
React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
|
|
295
|
+
handleTeamClick({ team, type: "project" });
|
|
296
|
+
}, "data-testid": "header-team-switcher-menu-account-accordion-item",
|
|
297
|
+
// eslint-disable-next-line no-script-url
|
|
298
|
+
href: "javascript:void(0)" },
|
|
299
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
|
|
300
|
+
React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
|
|
301
|
+
isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null))));
|
|
302
|
+
})
|
|
303
|
+
: null)));
|
|
304
|
+
})
|
|
305
|
+
: null,
|
|
306
|
+
standardTeams.length > 0
|
|
307
|
+
? sortedStandardTeamsWithNamesToDisplay.map((team) => {
|
|
308
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
309
|
+
return (React__default.default.createElement("div", { key: team.id, id: `${team.id}-standard-menu-item` },
|
|
310
|
+
React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => {
|
|
311
|
+
handleTeamClick({ team, type: "standard" });
|
|
312
|
+
}, "data-testid": "header-team-switcher-menu-item",
|
|
313
|
+
// eslint-disable-next-line no-script-url
|
|
314
|
+
href: "javascript:void(0)" },
|
|
315
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
|
|
316
|
+
React__default.default.createElement("span", { title: team.nameToDisplay, className: headerDropdownMenuItemTextClassname }, team.nameToDisplay),
|
|
317
|
+
isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null))));
|
|
318
|
+
})
|
|
319
|
+
: null))));
|
|
320
|
+
}
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
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(
|
|
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
|
+
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
|
/**
|