@boomerang-io/carbon-addons-boomerang-react 4.6.14-beta.0 → 4.6.14-beta.2

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.
@@ -26,6 +26,9 @@ const headerDropdownMenuContainerClassname = `${settings.prefix}--header-dropdow
26
26
  const headerDropdownMenuLoadingClassname = `${settings.prefix}--header-dropdown-menu-loading`;
27
27
  const headerDropdownMenuSuccessClassname = `${settings.prefix}--header-dropdown-menu-success`;
28
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`;
29
32
  const headerDropdownMenuListClassname = `${settings.prefix}--bmrg-header-drop-down`;
30
33
  const headerDropdownMenuItemContainerClassname = `${settings.prefix}--header-dropdown-menu-item-container`;
31
34
  const headerDropdownMenuItemClassname = `${settings.prefix}--header-dropdown-menu-item`;
@@ -94,6 +97,12 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
94
97
  await mutateUserProfile({ baseServicesUrl, body });
95
98
  }
96
99
  };
100
+ const handleNoTeamsToSelect = async () => {
101
+ const body = {
102
+ teamInstanceSwitcherDefault: null,
103
+ };
104
+ await mutateUserProfile({ baseServicesUrl, body });
105
+ };
97
106
  if (userHasTeams) {
98
107
  if (!userTeamInstanceSwitcherDefault) {
99
108
  if (userHasPersonalTeam) {
@@ -125,16 +134,22 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
125
134
  const newSelectedTeam = allTeams.find((team) => team.id === userTeamInstanceSwitcherDefault);
126
135
  handleSelectTeam({ team: newSelectedTeam });
127
136
  }
137
+ // if teams data loaded but there are no teams
138
+ }
139
+ else if (Boolean(userTeams?.data) || Boolean(teamsQuery?.data)) {
140
+ handleNoTeamsToSelect();
128
141
  }
129
142
  }, [
130
143
  baseServicesUrl,
131
144
  hasUserTeams,
132
145
  mutateUserProfile,
133
146
  selectedTeam,
147
+ teamsQuery?.data,
134
148
  teamsQuery?.data?.accountTeams,
135
149
  teamsQuery?.data?.personalTeam,
136
150
  teamsQuery?.data?.standardTeams,
137
151
  userTeamInstanceSwitcherDefault,
152
+ userTeams?.data,
138
153
  userTeams?.data?.accountTeams,
139
154
  userTeams?.data?.personalTeam,
140
155
  userTeams?.data?.standardTeams,
@@ -230,16 +245,19 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
230
245
  });
231
246
  sortedStandardTeamsWithNamesToDisplay = sortBy__default.default(newStandardTeams, ["nameToDisplay"]);
232
247
  }
233
- let selectedTeamName = selectedTeam?.displayName ? selectedTeam.displayName : selectedTeam?.name;
234
- if (selectedTeamName && selectedTeamName.length > 65) {
235
- selectedTeamName = selectedTeamName.slice(0, 65) + "...";
236
- }
248
+ let selectedTeamName = selectedTeam?.displayName
249
+ ? selectedTeam.displayName
250
+ : selectedTeam?.name
251
+ ? selectedTeam?.name
252
+ : "No team selected";
237
253
  const isPartnerUser = Boolean(user?.type === UserType.USER_PLATFORM_ROLE.Partner);
238
254
  return (React__default.default.createElement("div", { className: headerDropdownMenuContainerClassname },
239
255
  isLoadingTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuLoadingClassname },
240
256
  React__default.default.createElement(react.InlineLoading, null))) : isSuccessTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuSuccessClassname },
241
257
  React__default.default.createElement(icons.CheckmarkFilled, null))) : null,
242
- 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" },
258
+ React__default.default.createElement(react.HeaderMenu, { id: "header-team-switcher-menu", "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, renderMenuContent: () => (React__default.default.createElement("div", { className: headerDropdownMenuContentClassname },
259
+ React__default.default.createElement("p", { title: selectedTeamName, className: headerDropdownMenuContentTextClassname }, selectedTeamName),
260
+ React__default.default.createElement(icons.ChevronDown, { className: headerDropdownMenuContentIconClassname }))), onClick: handleHeaderMenuClick, "data-testid": "header-team-switcher-menu" },
243
261
  React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
244
262
  !isPartnerUser && (React__default.default.createElement(react.HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
245
263
  // eslint-disable-next-line no-script-url
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { useMutation } from 'react-query';
3
3
  import { InlineLoading, HeaderMenu, HeaderMenuItem } from '@carbon/react';
4
- import { CheckmarkFilled, AddAlt, GroupAccount, ChevronDown } from '@carbon/react/icons';
4
+ import { CheckmarkFilled, ChevronDown, AddAlt, GroupAccount } from '@carbon/react/icons';
5
5
  import sortBy from 'lodash.sortby';
6
6
  import HeaderMenu$1 from './HeaderMenu.js';
7
7
  import { resolver } from '../../config/servicesConfig.js';
@@ -17,6 +17,9 @@ const headerDropdownMenuContainerClassname = `${prefix}--header-dropdown-menu-co
17
17
  const headerDropdownMenuLoadingClassname = `${prefix}--header-dropdown-menu-loading`;
18
18
  const headerDropdownMenuSuccessClassname = `${prefix}--header-dropdown-menu-success`;
19
19
  const headerDropdownMenuClassname = `${prefix}--header-dropdown-menu`;
20
+ const headerDropdownMenuContentClassname = `${prefix}--header-dropdown-menu-content`;
21
+ const headerDropdownMenuContentTextClassname = `${prefix}--header-dropdown-menu-content-text`;
22
+ const headerDropdownMenuContentIconClassname = `${prefix}--header-dropdown-menu-content-icon`;
20
23
  const headerDropdownMenuListClassname = `${prefix}--bmrg-header-drop-down`;
21
24
  const headerDropdownMenuItemContainerClassname = `${prefix}--header-dropdown-menu-item-container`;
22
25
  const headerDropdownMenuItemClassname = `${prefix}--header-dropdown-menu-item`;
@@ -85,6 +88,12 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
85
88
  await mutateUserProfile({ baseServicesUrl, body });
86
89
  }
87
90
  };
91
+ const handleNoTeamsToSelect = async () => {
92
+ const body = {
93
+ teamInstanceSwitcherDefault: null,
94
+ };
95
+ await mutateUserProfile({ baseServicesUrl, body });
96
+ };
88
97
  if (userHasTeams) {
89
98
  if (!userTeamInstanceSwitcherDefault) {
90
99
  if (userHasPersonalTeam) {
@@ -116,16 +125,22 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
116
125
  const newSelectedTeam = allTeams.find((team) => team.id === userTeamInstanceSwitcherDefault);
117
126
  handleSelectTeam({ team: newSelectedTeam });
118
127
  }
128
+ // if teams data loaded but there are no teams
129
+ }
130
+ else if (Boolean(userTeams?.data) || Boolean(teamsQuery?.data)) {
131
+ handleNoTeamsToSelect();
119
132
  }
120
133
  }, [
121
134
  baseServicesUrl,
122
135
  hasUserTeams,
123
136
  mutateUserProfile,
124
137
  selectedTeam,
138
+ teamsQuery?.data,
125
139
  teamsQuery?.data?.accountTeams,
126
140
  teamsQuery?.data?.personalTeam,
127
141
  teamsQuery?.data?.standardTeams,
128
142
  userTeamInstanceSwitcherDefault,
143
+ userTeams?.data,
129
144
  userTeams?.data?.accountTeams,
130
145
  userTeams?.data?.personalTeam,
131
146
  userTeams?.data?.standardTeams,
@@ -221,16 +236,19 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
221
236
  });
222
237
  sortedStandardTeamsWithNamesToDisplay = sortBy(newStandardTeams, ["nameToDisplay"]);
223
238
  }
224
- let selectedTeamName = selectedTeam?.displayName ? selectedTeam.displayName : selectedTeam?.name;
225
- if (selectedTeamName && selectedTeamName.length > 65) {
226
- selectedTeamName = selectedTeamName.slice(0, 65) + "...";
227
- }
239
+ let selectedTeamName = selectedTeam?.displayName
240
+ ? selectedTeam.displayName
241
+ : selectedTeam?.name
242
+ ? selectedTeam?.name
243
+ : "No team selected";
228
244
  const isPartnerUser = Boolean(user?.type === USER_PLATFORM_ROLE.Partner);
229
245
  return (React.createElement("div", { className: headerDropdownMenuContainerClassname },
230
246
  isLoadingTeamSwitcher ? (React.createElement("div", { className: headerDropdownMenuLoadingClassname },
231
247
  React.createElement(InlineLoading, null))) : isSuccessTeamSwitcher ? (React.createElement("div", { className: headerDropdownMenuSuccessClassname },
232
248
  React.createElement(CheckmarkFilled, null))) : null,
233
- React.createElement(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" },
249
+ React.createElement(HeaderMenu, { id: "header-team-switcher-menu", "aria-label": menuAriaLabelRecord, className: headerDropdownMenuClassname, renderMenuContent: () => (React.createElement("div", { className: headerDropdownMenuContentClassname },
250
+ React.createElement("p", { title: selectedTeamName, className: headerDropdownMenuContentTextClassname }, selectedTeamName),
251
+ React.createElement(ChevronDown, { className: headerDropdownMenuContentIconClassname }))), onClick: handleHeaderMenuClick, "data-testid": "header-team-switcher-menu" },
234
252
  React.createElement(HeaderMenu$1, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
235
253
  !isPartnerUser && (React.createElement(HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
236
254
  // eslint-disable-next-line no-script-url
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@boomerang-io/carbon-addons-boomerang-react",
3
3
  "description": "Carbon Addons for Boomerang apps",
4
- "version": "4.6.14-beta.0",
4
+ "version": "4.6.14-beta.2",
5
5
  "author": {
6
6
  "name": "Tim Bula",
7
7
  "email": "timrbula@gmail.com"
@@ -39,13 +39,40 @@ IBM Confidential
39
39
  overflow: hidden;
40
40
  width: 100%;
41
41
 
42
- .#{$prefix}--header__menu-arrow {
42
+ .#{$prefix}--header-dropdown-menu-content {
43
+ align-items: center;
44
+ display: flex;
45
+ }
46
+
47
+ .#{$prefix}--header-dropdown-menu-content-text {
48
+ font-size: 0.875rem;
49
+ font-weight: 600;
50
+ line-height: 1.125rem;
51
+ letter-spacing: 0.01rem;
52
+ max-width: 14.5625rem;
53
+ overflow: hidden;
54
+ text-overflow: ellipsis;
55
+ white-space: nowrap;
56
+ }
57
+
58
+ .#{$prefix}--header-dropdown-menu-content-icon {
59
+ margin-left: 1rem;
43
60
  min-height: 1rem;
44
61
  min-width: 1rem;
62
+ transition: transform 150ms ease-in-out;
63
+ transform: rotate(0deg);
45
64
  }
46
65
 
47
66
  &[aria-expanded="true"] {
48
67
  background-color: var(--cds-layer-hover-01) !important;
68
+
69
+ .#{$prefix}--header-dropdown-menu-content-text {
70
+ width: 14.5625rem;
71
+ }
72
+
73
+ .#{$prefix}--header-dropdown-menu-content-icon {
74
+ transform: rotate(180deg);
75
+ }
49
76
  }
50
77
  }
51
78