@boomerang-io/carbon-addons-boomerang-react 4.6.8-beta.37 → 4.6.8-beta.38
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.
|
@@ -5,7 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var reactQuery = require('react-query');
|
|
7
7
|
var react = require('@carbon/react');
|
|
8
|
+
var icons = require('@carbon/react/icons');
|
|
9
|
+
var HeaderMenu = require('./HeaderMenu.js');
|
|
8
10
|
var servicesConfig = require('../../config/servicesConfig.js');
|
|
11
|
+
var settings = require('../../internal/settings.js');
|
|
9
12
|
|
|
10
13
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
14
|
|
|
@@ -16,12 +19,30 @@ IBM Confidential
|
|
|
16
19
|
694970X, 69497O0
|
|
17
20
|
© Copyright IBM Corp. 2022, 2025
|
|
18
21
|
*/
|
|
22
|
+
const headerDropdownMenuClassname = `${settings.prefix}--header-dropdown-menu`;
|
|
23
|
+
const headerDropdownMenuListClassname = `${settings.prefix}--bmrg-header-drop-down`;
|
|
24
|
+
const headerDropdownMenuItemContainerClassname = `${settings.prefix}--header-dropdown-menu-item-container`;
|
|
25
|
+
const headerDropdownMenuItemClassname = `${settings.prefix}--header-dropdown-menu-item`;
|
|
26
|
+
const headerDropdownMenuItemTextIconClassname = `${settings.prefix}--header-dropdown-menu-item-text-icon`;
|
|
27
|
+
const headerDropdownMenuItemTextClassname = `${settings.prefix}--header-dropdown-menu-item-text`;
|
|
28
|
+
const headerDropdownMenuItemIconClassname = `${settings.prefix}--header-dropdown-menu-item-icon`;
|
|
29
|
+
const headerDropdownMenuItemAccountContainerClassname = `${settings.prefix}--header-dropdown-menu-item-account-container`;
|
|
30
|
+
const headerDropdownMenuItemAccountClassname = `${settings.prefix}--header-dropdown-menu-item-account`;
|
|
31
|
+
const headerDropdownMenuItemAccountIconsClassname = `${settings.prefix}--header-dropdown-menu-item-account-icons`;
|
|
32
|
+
const headerDropdownMenuItemAccountGroupIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-group-icon`;
|
|
33
|
+
const headerDropdownMenuItemAccountChevronIconClassname = `${settings.prefix}--header-dropdown-menu-item-account-chevron-icon`;
|
|
34
|
+
const headerDropdownMenuItemAccountSubmenuClassname = `${settings.prefix}--header-dropdown-menu-item-account-submenu`;
|
|
35
|
+
const headerTeamSwitcherCreateTeamButtonContainerClassname = `${settings.prefix}--header-team-switcher-create-team-button-container`;
|
|
36
|
+
const headerTeamSwitcherCreateTeamButtonClassname = `${settings.prefix}--header-team-switcher-create-team-button`;
|
|
37
|
+
const headerTeamSwitcherCreateTeamButtonTextClassname = `${settings.prefix}--header-team-switcher-create-team-button-text`;
|
|
38
|
+
const headerTeamSwitcherCreateTeamButtonIconClassname = `${settings.prefix}--header-team-switcher-create-team-button-icon`;
|
|
19
39
|
function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamTrigger, history, isLaunchpad, menuAriaLabelRecord, menuButtonId, menuListId, navigationPlatform, teamsQuery, trackEvent, user, userTeams, }) {
|
|
20
40
|
const queryClient = reactQuery.useQueryClient();
|
|
21
41
|
const [selectedTeam, setSelectedTeam] = React.useState();
|
|
22
|
-
React.useState("");
|
|
42
|
+
const [openAccountSubmenuId, setOpenAccountSubmenuId] = React.useState("");
|
|
23
43
|
const hasUserTeams = Boolean(userTeams);
|
|
24
|
-
navigationPlatform?.requireTeamPurpose;
|
|
44
|
+
const showSelectTeamPurpose = navigationPlatform?.requireTeamPurpose;
|
|
45
|
+
const createTeamButtonText = showSelectTeamPurpose ? "Create Team" : "Create or Join Team";
|
|
25
46
|
const userTeamInstanceSwitcherDefault = user?.teamInstanceSwitcherDefault;
|
|
26
47
|
const profileUrl = servicesConfig.serviceUrl.resourceUserProfile({ baseServicesUrl });
|
|
27
48
|
const { mutateAsync: mutateUserProfile, isLoading: mutateUserProfileIsLoading } = reactQuery.useMutation(servicesConfig.resolver.patchUserProfile, {
|
|
@@ -93,21 +114,67 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
|
|
|
93
114
|
userTeams?.data?.personalTeam,
|
|
94
115
|
userTeams?.data?.standardTeams,
|
|
95
116
|
]);
|
|
117
|
+
const handleTeamClick = ({ team, type }) => {
|
|
118
|
+
if (analyticsHelpers?.navigateEventHandler && trackEvent) {
|
|
119
|
+
analyticsHelpers.navigateEventHandler({
|
|
120
|
+
action: `Clicked ${team.name} in Team Switcher`,
|
|
121
|
+
category: "Team Switcher",
|
|
122
|
+
destinationPath: `${navigationPlatform.baseEnvUrl}/launchpad/teams/${team.id}`,
|
|
123
|
+
teamId: team.id,
|
|
124
|
+
teamType: type,
|
|
125
|
+
trackEvent,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (isLaunchpad && Boolean(history)) {
|
|
129
|
+
history.push(`/teams/${team.id}`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
window.open(`${navigationPlatform.baseEnvUrl}/launchpad/teams/${team.id}`, "_self");
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
const handleCreateJoinTeamClick = (e) => {
|
|
136
|
+
if (analyticsHelpers?.ctaEventHandler && trackEvent) {
|
|
137
|
+
analyticsHelpers.ctaEventHandler({
|
|
138
|
+
category: "Team Switcher",
|
|
139
|
+
CTA: "Create/Join team clicked",
|
|
140
|
+
pageName: "",
|
|
141
|
+
trackEvent,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (createJoinTeamTrigger) {
|
|
145
|
+
createJoinTeamTrigger(e);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
window.open(`${navigationPlatform.baseEnvUrl}/launchpad?createJoinTeam=true`, "_self");
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const handleOpenAccountSubmenu = ({ e, id }) => {
|
|
152
|
+
e.stopPropagation();
|
|
153
|
+
if (openAccountSubmenuId === id) {
|
|
154
|
+
setOpenAccountSubmenuId("");
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
setOpenAccountSubmenuId(id);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
96
160
|
if (userTeams?.isLoading || teamsQuery?.isLoading || mutateUserProfileIsLoading) {
|
|
97
161
|
return (React__default.default.createElement("div", { style: { display: "flex", alignItems: "center" } },
|
|
98
162
|
React__default.default.createElement(react.InlineLoading, null)));
|
|
99
163
|
}
|
|
100
164
|
if (userTeams?.data || teamsQuery?.data) {
|
|
165
|
+
let accountTeams, standardTeams, personalTeam = [];
|
|
101
166
|
if (hasUserTeams) {
|
|
102
|
-
userTeams?.data?.accountTeams ?? [];
|
|
103
|
-
userTeams?.data?.standardTeams ?? [];
|
|
104
|
-
userTeams?.data?.personalTeam ?? [];
|
|
167
|
+
accountTeams = userTeams?.data?.accountTeams ?? [];
|
|
168
|
+
standardTeams = userTeams?.data?.standardTeams ?? [];
|
|
169
|
+
personalTeam = userTeams?.data?.personalTeam ?? [];
|
|
105
170
|
}
|
|
106
171
|
else {
|
|
107
|
-
teamsQuery?.data?.accountTeams ?? [];
|
|
108
|
-
teamsQuery?.data?.standardTeams ?? [];
|
|
109
|
-
teamsQuery?.data?.personalTeam ?? [];
|
|
172
|
+
accountTeams = teamsQuery?.data?.accountTeams ?? [];
|
|
173
|
+
standardTeams = teamsQuery?.data?.standardTeams ?? [];
|
|
174
|
+
personalTeam = teamsQuery?.data?.personalTeam ?? [];
|
|
110
175
|
}
|
|
176
|
+
// let sortedAccountTeamsWithNamesToDisplay = [];
|
|
177
|
+
// let sortedStandardTeamsWithNamesToDisplay = [];
|
|
111
178
|
// if (accountTeams?.length > 0) {
|
|
112
179
|
// sortedAccountTeamsWithNamesToDisplay = orderBy(
|
|
113
180
|
// accountTeams.map((team: UserTeam) => {
|
|
@@ -142,7 +209,76 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
|
|
|
142
209
|
if (selectedTeamName && selectedTeamName.length > 42) {
|
|
143
210
|
selectedTeamName = selectedTeamName.slice(0, 42) + "...";
|
|
144
211
|
}
|
|
145
|
-
return (React__default.default.createElement(
|
|
212
|
+
return (React__default.default.createElement(react.HeaderMenu, { "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, menuLinkName: selectedTeamName ? selectedTeamName : "No team selected", "data-testid": "header-team-switcher-menu" },
|
|
213
|
+
React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
|
|
214
|
+
React__default.default.createElement(react.HeaderMenuItem, { className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
|
|
215
|
+
// eslint-disable-next-line no-script-url
|
|
216
|
+
href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
|
|
217
|
+
React__default.default.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
|
|
218
|
+
React__default.default.createElement("span", { className: headerTeamSwitcherCreateTeamButtonTextClassname }, createTeamButtonText),
|
|
219
|
+
React__default.default.createElement(icons.AddAlt, { className: headerTeamSwitcherCreateTeamButtonIconClassname }))),
|
|
220
|
+
personalTeam.length > 0
|
|
221
|
+
? personalTeam.map((team) => {
|
|
222
|
+
const teamName = team.displayName ? team.displayName : team.name;
|
|
223
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
224
|
+
return (React__default.default.createElement(react.HeaderMenuItem, { key: team.id, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "personal" }),
|
|
225
|
+
// eslint-disable-next-line no-script-url
|
|
226
|
+
href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-item" },
|
|
227
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
|
|
228
|
+
React__default.default.createElement("span", { title: teamName, className: headerDropdownMenuItemTextClassname }, teamName),
|
|
229
|
+
isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null)));
|
|
230
|
+
})
|
|
231
|
+
: null,
|
|
232
|
+
accountTeams.length > 0
|
|
233
|
+
? accountTeams.map((team) => {
|
|
234
|
+
const isSubmenuOpen = team.id === openAccountSubmenuId;
|
|
235
|
+
const isProjectTeamSelected = team.projectTeams &&
|
|
236
|
+
team.projectTeams.length > 0 &&
|
|
237
|
+
team.projectTeams.some((team) => team.id === selectedTeam?.id);
|
|
238
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
239
|
+
const isMenuSelected = isTeamSelected || isProjectTeamSelected;
|
|
240
|
+
return (React__default.default.createElement(React__default.default.Fragment, null,
|
|
241
|
+
React__default.default.createElement(react.HeaderMenuItem, { "aria-expanded": isSubmenuOpen, "aria-selected": isMenuSelected, className: headerDropdownMenuItemAccountContainerClassname, onClick: (e) => handleOpenAccountSubmenu({ e, id: team.id }),
|
|
242
|
+
// eslint-disable-next-line no-script-url
|
|
243
|
+
href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-account-accordion" },
|
|
244
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemAccountClassname },
|
|
245
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemTextIconClassname },
|
|
246
|
+
React__default.default.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, team.name),
|
|
247
|
+
isMenuSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null),
|
|
248
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemAccountIconsClassname },
|
|
249
|
+
React__default.default.createElement(icons.GroupAccount, { className: headerDropdownMenuItemAccountGroupIconClassname }),
|
|
250
|
+
React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuItemAccountChevronIconClassname })))),
|
|
251
|
+
React__default.default.createElement("div", { "aria-expanded": isSubmenuOpen, className: headerDropdownMenuItemAccountSubmenuClassname },
|
|
252
|
+
React__default.default.createElement(react.HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "account" }), "data-testid": "header-team-switcher-menu-account-accordion-item",
|
|
253
|
+
// eslint-disable-next-line no-script-url
|
|
254
|
+
href: "javascript:void(0)" },
|
|
255
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
|
|
256
|
+
React__default.default.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, "Account Page"),
|
|
257
|
+
isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null)),
|
|
258
|
+
team.projectTeams && team.projectTeams.length > 0
|
|
259
|
+
? team.projectTeams.map((team) => {
|
|
260
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
261
|
+
return (React__default.default.createElement(react.HeaderMenuItem, { key: team.id, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "project" }), "data-testid": "header-team-switcher-menu-account-accordion-item",
|
|
262
|
+
// eslint-disable-next-line no-script-url
|
|
263
|
+
href: "javascript:void(0)" },
|
|
264
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
|
|
265
|
+
React__default.default.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, team.name),
|
|
266
|
+
isTeamSelected ? (React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null)));
|
|
267
|
+
})
|
|
268
|
+
: null)));
|
|
269
|
+
})
|
|
270
|
+
: null,
|
|
271
|
+
standardTeams.length > 0
|
|
272
|
+
? standardTeams.map((team) => {
|
|
273
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
274
|
+
return (React__default.default.createElement(react.HeaderMenuItem, { key: team.id, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "standard" }), "data-testid": "header-team-switcher-menu-item",
|
|
275
|
+
// eslint-disable-next-line no-script-url
|
|
276
|
+
href: "javascript:void(0)" },
|
|
277
|
+
React__default.default.createElement("div", { className: headerDropdownMenuItemClassname },
|
|
278
|
+
React__default.default.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, team.name),
|
|
279
|
+
isTeamSelected ? React__default.default.createElement(icons.CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null)));
|
|
280
|
+
})
|
|
281
|
+
: null)));
|
|
146
282
|
}
|
|
147
283
|
return null;
|
|
148
284
|
}
|
|
@@ -1,19 +1,40 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { useQueryClient, useMutation } from 'react-query';
|
|
3
|
-
import { InlineLoading } from '@carbon/react';
|
|
3
|
+
import { InlineLoading, HeaderMenu, HeaderMenuItem } from '@carbon/react';
|
|
4
|
+
import { AddAlt, CheckmarkFilled, GroupAccount, ChevronDown } from '@carbon/react/icons';
|
|
5
|
+
import HeaderMenu$1 from './HeaderMenu.js';
|
|
4
6
|
import { resolver, serviceUrl } from '../../config/servicesConfig.js';
|
|
7
|
+
import { prefix } from '../../internal/settings.js';
|
|
5
8
|
|
|
6
9
|
/*
|
|
7
10
|
IBM Confidential
|
|
8
11
|
694970X, 69497O0
|
|
9
12
|
© Copyright IBM Corp. 2022, 2025
|
|
10
13
|
*/
|
|
14
|
+
const headerDropdownMenuClassname = `${prefix}--header-dropdown-menu`;
|
|
15
|
+
const headerDropdownMenuListClassname = `${prefix}--bmrg-header-drop-down`;
|
|
16
|
+
const headerDropdownMenuItemContainerClassname = `${prefix}--header-dropdown-menu-item-container`;
|
|
17
|
+
const headerDropdownMenuItemClassname = `${prefix}--header-dropdown-menu-item`;
|
|
18
|
+
const headerDropdownMenuItemTextIconClassname = `${prefix}--header-dropdown-menu-item-text-icon`;
|
|
19
|
+
const headerDropdownMenuItemTextClassname = `${prefix}--header-dropdown-menu-item-text`;
|
|
20
|
+
const headerDropdownMenuItemIconClassname = `${prefix}--header-dropdown-menu-item-icon`;
|
|
21
|
+
const headerDropdownMenuItemAccountContainerClassname = `${prefix}--header-dropdown-menu-item-account-container`;
|
|
22
|
+
const headerDropdownMenuItemAccountClassname = `${prefix}--header-dropdown-menu-item-account`;
|
|
23
|
+
const headerDropdownMenuItemAccountIconsClassname = `${prefix}--header-dropdown-menu-item-account-icons`;
|
|
24
|
+
const headerDropdownMenuItemAccountGroupIconClassname = `${prefix}--header-dropdown-menu-item-account-group-icon`;
|
|
25
|
+
const headerDropdownMenuItemAccountChevronIconClassname = `${prefix}--header-dropdown-menu-item-account-chevron-icon`;
|
|
26
|
+
const headerDropdownMenuItemAccountSubmenuClassname = `${prefix}--header-dropdown-menu-item-account-submenu`;
|
|
27
|
+
const headerTeamSwitcherCreateTeamButtonContainerClassname = `${prefix}--header-team-switcher-create-team-button-container`;
|
|
28
|
+
const headerTeamSwitcherCreateTeamButtonClassname = `${prefix}--header-team-switcher-create-team-button`;
|
|
29
|
+
const headerTeamSwitcherCreateTeamButtonTextClassname = `${prefix}--header-team-switcher-create-team-button-text`;
|
|
30
|
+
const headerTeamSwitcherCreateTeamButtonIconClassname = `${prefix}--header-team-switcher-create-team-button-icon`;
|
|
11
31
|
function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamTrigger, history, isLaunchpad, menuAriaLabelRecord, menuButtonId, menuListId, navigationPlatform, teamsQuery, trackEvent, user, userTeams, }) {
|
|
12
32
|
const queryClient = useQueryClient();
|
|
13
33
|
const [selectedTeam, setSelectedTeam] = useState();
|
|
14
|
-
useState("");
|
|
34
|
+
const [openAccountSubmenuId, setOpenAccountSubmenuId] = useState("");
|
|
15
35
|
const hasUserTeams = Boolean(userTeams);
|
|
16
|
-
navigationPlatform?.requireTeamPurpose;
|
|
36
|
+
const showSelectTeamPurpose = navigationPlatform?.requireTeamPurpose;
|
|
37
|
+
const createTeamButtonText = showSelectTeamPurpose ? "Create Team" : "Create or Join Team";
|
|
17
38
|
const userTeamInstanceSwitcherDefault = user?.teamInstanceSwitcherDefault;
|
|
18
39
|
const profileUrl = serviceUrl.resourceUserProfile({ baseServicesUrl });
|
|
19
40
|
const { mutateAsync: mutateUserProfile, isLoading: mutateUserProfileIsLoading } = useMutation(resolver.patchUserProfile, {
|
|
@@ -85,21 +106,67 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
|
|
|
85
106
|
userTeams?.data?.personalTeam,
|
|
86
107
|
userTeams?.data?.standardTeams,
|
|
87
108
|
]);
|
|
109
|
+
const handleTeamClick = ({ team, type }) => {
|
|
110
|
+
if (analyticsHelpers?.navigateEventHandler && trackEvent) {
|
|
111
|
+
analyticsHelpers.navigateEventHandler({
|
|
112
|
+
action: `Clicked ${team.name} in Team Switcher`,
|
|
113
|
+
category: "Team Switcher",
|
|
114
|
+
destinationPath: `${navigationPlatform.baseEnvUrl}/launchpad/teams/${team.id}`,
|
|
115
|
+
teamId: team.id,
|
|
116
|
+
teamType: type,
|
|
117
|
+
trackEvent,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (isLaunchpad && Boolean(history)) {
|
|
121
|
+
history.push(`/teams/${team.id}`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
window.open(`${navigationPlatform.baseEnvUrl}/launchpad/teams/${team.id}`, "_self");
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const handleCreateJoinTeamClick = (e) => {
|
|
128
|
+
if (analyticsHelpers?.ctaEventHandler && trackEvent) {
|
|
129
|
+
analyticsHelpers.ctaEventHandler({
|
|
130
|
+
category: "Team Switcher",
|
|
131
|
+
CTA: "Create/Join team clicked",
|
|
132
|
+
pageName: "",
|
|
133
|
+
trackEvent,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (createJoinTeamTrigger) {
|
|
137
|
+
createJoinTeamTrigger(e);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
window.open(`${navigationPlatform.baseEnvUrl}/launchpad?createJoinTeam=true`, "_self");
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const handleOpenAccountSubmenu = ({ e, id }) => {
|
|
144
|
+
e.stopPropagation();
|
|
145
|
+
if (openAccountSubmenuId === id) {
|
|
146
|
+
setOpenAccountSubmenuId("");
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
setOpenAccountSubmenuId(id);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
88
152
|
if (userTeams?.isLoading || teamsQuery?.isLoading || mutateUserProfileIsLoading) {
|
|
89
153
|
return (React.createElement("div", { style: { display: "flex", alignItems: "center" } },
|
|
90
154
|
React.createElement(InlineLoading, null)));
|
|
91
155
|
}
|
|
92
156
|
if (userTeams?.data || teamsQuery?.data) {
|
|
157
|
+
let accountTeams, standardTeams, personalTeam = [];
|
|
93
158
|
if (hasUserTeams) {
|
|
94
|
-
userTeams?.data?.accountTeams ?? [];
|
|
95
|
-
userTeams?.data?.standardTeams ?? [];
|
|
96
|
-
userTeams?.data?.personalTeam ?? [];
|
|
159
|
+
accountTeams = userTeams?.data?.accountTeams ?? [];
|
|
160
|
+
standardTeams = userTeams?.data?.standardTeams ?? [];
|
|
161
|
+
personalTeam = userTeams?.data?.personalTeam ?? [];
|
|
97
162
|
}
|
|
98
163
|
else {
|
|
99
|
-
teamsQuery?.data?.accountTeams ?? [];
|
|
100
|
-
teamsQuery?.data?.standardTeams ?? [];
|
|
101
|
-
teamsQuery?.data?.personalTeam ?? [];
|
|
164
|
+
accountTeams = teamsQuery?.data?.accountTeams ?? [];
|
|
165
|
+
standardTeams = teamsQuery?.data?.standardTeams ?? [];
|
|
166
|
+
personalTeam = teamsQuery?.data?.personalTeam ?? [];
|
|
102
167
|
}
|
|
168
|
+
// let sortedAccountTeamsWithNamesToDisplay = [];
|
|
169
|
+
// let sortedStandardTeamsWithNamesToDisplay = [];
|
|
103
170
|
// if (accountTeams?.length > 0) {
|
|
104
171
|
// sortedAccountTeamsWithNamesToDisplay = orderBy(
|
|
105
172
|
// accountTeams.map((team: UserTeam) => {
|
|
@@ -134,7 +201,76 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
|
|
|
134
201
|
if (selectedTeamName && selectedTeamName.length > 42) {
|
|
135
202
|
selectedTeamName = selectedTeamName.slice(0, 42) + "...";
|
|
136
203
|
}
|
|
137
|
-
return (React.createElement(
|
|
204
|
+
return (React.createElement(HeaderMenu, { "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, menuLinkName: selectedTeamName ? selectedTeamName : "No team selected", "data-testid": "header-team-switcher-menu" },
|
|
205
|
+
React.createElement(HeaderMenu$1, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
|
|
206
|
+
React.createElement(HeaderMenuItem, { className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
|
|
207
|
+
// eslint-disable-next-line no-script-url
|
|
208
|
+
href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
|
|
209
|
+
React.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
|
|
210
|
+
React.createElement("span", { className: headerTeamSwitcherCreateTeamButtonTextClassname }, createTeamButtonText),
|
|
211
|
+
React.createElement(AddAlt, { className: headerTeamSwitcherCreateTeamButtonIconClassname }))),
|
|
212
|
+
personalTeam.length > 0
|
|
213
|
+
? personalTeam.map((team) => {
|
|
214
|
+
const teamName = team.displayName ? team.displayName : team.name;
|
|
215
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
216
|
+
return (React.createElement(HeaderMenuItem, { key: team.id, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "personal" }),
|
|
217
|
+
// eslint-disable-next-line no-script-url
|
|
218
|
+
href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-item" },
|
|
219
|
+
React.createElement("div", { className: headerDropdownMenuItemClassname },
|
|
220
|
+
React.createElement("span", { title: teamName, className: headerDropdownMenuItemTextClassname }, teamName),
|
|
221
|
+
isTeamSelected ? React.createElement(CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null)));
|
|
222
|
+
})
|
|
223
|
+
: null,
|
|
224
|
+
accountTeams.length > 0
|
|
225
|
+
? accountTeams.map((team) => {
|
|
226
|
+
const isSubmenuOpen = team.id === openAccountSubmenuId;
|
|
227
|
+
const isProjectTeamSelected = team.projectTeams &&
|
|
228
|
+
team.projectTeams.length > 0 &&
|
|
229
|
+
team.projectTeams.some((team) => team.id === selectedTeam?.id);
|
|
230
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
231
|
+
const isMenuSelected = isTeamSelected || isProjectTeamSelected;
|
|
232
|
+
return (React.createElement(React.Fragment, null,
|
|
233
|
+
React.createElement(HeaderMenuItem, { "aria-expanded": isSubmenuOpen, "aria-selected": isMenuSelected, className: headerDropdownMenuItemAccountContainerClassname, onClick: (e) => handleOpenAccountSubmenu({ e, id: team.id }),
|
|
234
|
+
// eslint-disable-next-line no-script-url
|
|
235
|
+
href: "javascript:void(0)", "data-testid": "header-team-switcher-menu-account-accordion" },
|
|
236
|
+
React.createElement("div", { className: headerDropdownMenuItemAccountClassname },
|
|
237
|
+
React.createElement("div", { className: headerDropdownMenuItemTextIconClassname },
|
|
238
|
+
React.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, team.name),
|
|
239
|
+
isMenuSelected ? React.createElement(CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null),
|
|
240
|
+
React.createElement("div", { className: headerDropdownMenuItemAccountIconsClassname },
|
|
241
|
+
React.createElement(GroupAccount, { className: headerDropdownMenuItemAccountGroupIconClassname }),
|
|
242
|
+
React.createElement(ChevronDown, { className: headerDropdownMenuItemAccountChevronIconClassname })))),
|
|
243
|
+
React.createElement("div", { "aria-expanded": isSubmenuOpen, className: headerDropdownMenuItemAccountSubmenuClassname },
|
|
244
|
+
React.createElement(HeaderMenuItem, { "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "account" }), "data-testid": "header-team-switcher-menu-account-accordion-item",
|
|
245
|
+
// eslint-disable-next-line no-script-url
|
|
246
|
+
href: "javascript:void(0)" },
|
|
247
|
+
React.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
|
|
248
|
+
React.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, "Account Page"),
|
|
249
|
+
isTeamSelected ? React.createElement(CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null)),
|
|
250
|
+
team.projectTeams && team.projectTeams.length > 0
|
|
251
|
+
? team.projectTeams.map((team) => {
|
|
252
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
253
|
+
return (React.createElement(HeaderMenuItem, { key: team.id, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "project" }), "data-testid": "header-team-switcher-menu-account-accordion-item",
|
|
254
|
+
// eslint-disable-next-line no-script-url
|
|
255
|
+
href: "javascript:void(0)" },
|
|
256
|
+
React.createElement("div", { className: headerDropdownMenuItemClassname, style: { paddingLeft: "1rem" } },
|
|
257
|
+
React.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, team.name),
|
|
258
|
+
isTeamSelected ? (React.createElement(CheckmarkFilled, { className: headerDropdownMenuItemIconClassname })) : null)));
|
|
259
|
+
})
|
|
260
|
+
: null)));
|
|
261
|
+
})
|
|
262
|
+
: null,
|
|
263
|
+
standardTeams.length > 0
|
|
264
|
+
? standardTeams.map((team) => {
|
|
265
|
+
const isTeamSelected = team.id === selectedTeam?.id;
|
|
266
|
+
return (React.createElement(HeaderMenuItem, { key: team.id, "aria-selected": isTeamSelected, className: headerDropdownMenuItemContainerClassname, onClick: () => handleTeamClick({ team, type: "standard" }), "data-testid": "header-team-switcher-menu-item",
|
|
267
|
+
// eslint-disable-next-line no-script-url
|
|
268
|
+
href: "javascript:void(0)" },
|
|
269
|
+
React.createElement("div", { className: headerDropdownMenuItemClassname },
|
|
270
|
+
React.createElement("span", { title: team.name, className: headerDropdownMenuItemTextClassname }, team.name),
|
|
271
|
+
isTeamSelected ? React.createElement(CheckmarkFilled, { className: headerDropdownMenuItemIconClassname }) : null)));
|
|
272
|
+
})
|
|
273
|
+
: null)));
|
|
138
274
|
}
|
|
139
275
|
return null;
|
|
140
276
|
}
|
package/package.json
CHANGED