@boomerang-io/carbon-addons-boomerang-react 4.6.11-beta.25 → 4.6.11-beta.26

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.
@@ -23,9 +23,9 @@ IBM Confidential
23
23
  function AdvantageSideNav(props) {
24
24
  const { app, appLink, regionalTeam, enableChatButton = true, showChatButton = true, showSelectTeamPurpose = false, homeLink, agentAssistantStudioLink, agentAssistantLibraryLink, assistantLink, defaultAssistantLink, documentCollectionsLink, settingsLink, toolsLink, joinCreateTrigger, isLoading, isOpen, teams = [], triggerEvent, accounts = [], baseEnvUrl, className, navLinks, navigation, personalTeams = [], user, showChatTooltip, templateMeteringEvent, tooltipMessage, isLaunchpad = false, history, children, ...rest } = props;
25
25
  const [activeMenu, setActiveMenu] = React__default.default.useState(false);
26
- React__default.default.useState(null);
27
- // const [regionalModalIsOpen, setRegionalModalIsOpen] = React.useState(false);
28
- React__default.default.useState(null);
26
+ const [teamList, setTeamList] = React__default.default.useState(null);
27
+ const [regionalModalIsOpen, setRegionalModalIsOpen] = React__default.default.useState(false);
28
+ const [selectedTeam, setSelectedTeam] = React__default.default.useState(null);
29
29
  const isMenuOpen = isOpen || activeMenu;
30
30
  const windowLocation = window.location;
31
31
  const isPartnerUser = user?.type === UserType.USER_PLATFORM_ROLE.Partner;
@@ -70,6 +70,10 @@ function AdvantageSideNav(props) {
70
70
  destinationPath: homeLink,
71
71
  });
72
72
  };
73
+ const handleRegionalNewStartNewChat = (team) => {
74
+ const assistantLink = `${appLink?.newChatRedirect()}?teamName=${team.name}&teamId=${team.id}`;
75
+ window.open(assistantLink, "_self", "noopener,noreferrer");
76
+ };
73
77
  const handleToolsClick = () => {
74
78
  triggerEvent &&
75
79
  triggerEvent({
@@ -111,14 +115,19 @@ function AdvantageSideNav(props) {
111
115
  });
112
116
  };
113
117
  const handleAssistantClick = () => {
114
- let redirectLink = `${appLink.newChatRedirect()}?teamName=${teamSwitcherTeam.name}&teamId=${teamSwitcherTeam.id}`;
118
+ if (regionalTeam?.length > 1) {
119
+ setRegionalModalIsOpen(true);
120
+ setTeamList(regionalTeam?.map((team) => ({
121
+ id: team.id,
122
+ name: team.name,
123
+ })));
124
+ }
115
125
  triggerEvent &&
116
126
  triggerEvent({
117
127
  action: "Clicked on SideNav Assistant link",
118
128
  category: "Sidenav",
119
- destinationPath: redirectLink,
129
+ destinationPath: assistantLink,
120
130
  });
121
- window.open(redirectLink, "_self", "noopener,noreferrer");
122
131
  };
123
132
  const handleCreateJoinClick = () => {
124
133
  triggerEvent &&
@@ -150,11 +159,7 @@ function AdvantageSideNav(props) {
150
159
  };
151
160
  const assistantSideNavLink = (
152
161
  // assistantLink &&
153
- React__default.default.createElement(react.SideNavLink, { "data-testid": "sidenav-assistant-link", className: !enableChatButton ? `${settings.prefix}--bmrg-advantage-sidenav__inactive-link` : "", disabled: Boolean(!enableChatButton),
154
- // isActive={assistantLink }
155
- renderIcon: icons.ChatBot,
156
- // href={enableChatButton}
157
- onClick: enableChatButton ? handleAssistantClick : (e) => e.preventDefault() }, "Chat"));
162
+ React__default.default.createElement(react.SideNavLink, { "data-testid": "sidenav-assistant-link", className: !enableChatButton ? `${settings.prefix}--bmrg-advantage-sidenav__inactive-link` : "", disabled: Boolean(!enableChatButton), isActive: assistantLink ? windowLocation.href.includes(assistantLink) : "", renderIcon: icons.ChatBot, href: enableChatButton && assistantLink, onClick: enableChatButton ? handleAssistantClick : (e) => e.preventDefault() }, "Chat"));
158
163
  const catalogNavlink = navigation?.platform?.catalog?.url;
159
164
  const adminNavlink = navigation?.platform?.admin?.url;
160
165
  const showSecondDivider = (!isPartnerUser && showChatButton) ||
@@ -222,7 +227,20 @@ function AdvantageSideNav(props) {
222
227
  settingsLink ? (React__default.default.createElement(react.SideNavLink, { "data-testid": "sidenav-settings-link", renderIcon: icons.Settings, href: settingsLink, onClick: (e) => {
223
228
  handleSettingsClick();
224
229
  } }, "Settings")) : null,
225
- adminNavlink ? (React__default.default.createElement(react.SideNavLink, { href: adminNavlink, renderIcon: icons.LicenseThirdParty }, "Admin")) : null),
230
+ adminNavlink ? (React__default.default.createElement(react.SideNavLink, { href: adminNavlink, renderIcon: icons.LicenseThirdParty }, "Admin")) : null,
231
+ regionalModalIsOpen && (React__default.default.createElement(react.ComposedModal, { className: `${settings.prefix}--teamSelectionModalContainer`, open: regionalModalIsOpen, onClose: () => setRegionalModalIsOpen(false), onKeyDown: (e) => e.stopPropagation(), "data-testid": "select-team-chat-modal" },
232
+ React__default.default.createElement(react.ModalHeader, { title: "Select Team to Start a New Chat", closeModal: () => setRegionalModalIsOpen(false) }),
233
+ React__default.default.createElement(react.ModalBody, { className: `${settings.prefix}--teamSelectModalBody` },
234
+ React__default.default.createElement(react.Dropdown, { items: teamList, disabled: !teamList?.length, id: "select-team-chat-modal-dropdown", selectedItem: selectedTeam, size: "md", "data-testid": "select-team-chat-modal-dropdown", itemToString: (item) => item?.name, label: "Choose a team", onChange: ({ selectedItem }) => setSelectedTeam(selectedItem) })),
235
+ React__default.default.createElement(react.ModalFooter, null,
236
+ React__default.default.createElement(react.Button, { kind: "secondary", "data-testid": "select-team-chat-modal-cancel-button", onClick: () => setRegionalModalIsOpen(false) }, "Cancel"),
237
+ React__default.default.createElement(react.Button, { "data-modal-primary-focus": true, kind: "primary", disabled: !selectedTeam, "data-testid": "select-team-chat-modal-continue-button", onClick: () => {
238
+ if (selectedTeam) {
239
+ handleRegionalNewStartNewChat(selectedTeam);
240
+ setRegionalModalIsOpen(false);
241
+ // closeModal();
242
+ }
243
+ } }, "Continue"))))),
226
244
  children ? (React__default.default.createElement(React__default.default.Fragment, null,
227
245
  React__default.default.createElement(react.SideNavDivider, null),
228
246
  children)) : null)));
@@ -10,6 +10,7 @@ var sortBy = require('lodash.sortby');
10
10
  var HeaderMenu = require('./HeaderMenu.js');
11
11
  var servicesConfig = require('../../config/servicesConfig.js');
12
12
  var settings = require('../../internal/settings.js');
13
+ var UserType = require('../../constants/UserType.js');
13
14
 
14
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
16
 
@@ -232,13 +233,14 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
232
233
  if (selectedTeamName && selectedTeamName.length > 65) {
233
234
  selectedTeamName = selectedTeamName.slice(0, 65) + "...";
234
235
  }
236
+ const isPartnerUser = Boolean(user?.type === UserType.USER_PLATFORM_ROLE.Partner);
235
237
  return (React__default.default.createElement("div", { className: headerDropdownMenuContainerClassname },
236
238
  isLoadingTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuLoadingClassname },
237
239
  React__default.default.createElement(react.InlineLoading, null))) : isSuccessTeamSwitcher ? (React__default.default.createElement("div", { className: headerDropdownMenuSuccessClassname },
238
240
  React__default.default.createElement(icons.CheckmarkFilled, null))) : null,
239
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" },
240
242
  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,
243
+ !isPartnerUser && React__default.default.createElement(react.HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
242
244
  // eslint-disable-next-line no-script-url
243
245
  href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
244
246
  React__default.default.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
@@ -77,7 +77,7 @@ function UIShell({ analyticsHelpers, baseEnvUrl, carbonTheme = "g10", config, cr
77
77
  ...profileMenuItems,
78
78
  isSignOutEnabled && React__default.default.createElement(SignOut.SignOutMenuItem, { key: "Sign Out", signOutLink: platform.signOutUrl }),
79
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" }),
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" }),
81
81
  isSupportEnabled &&
82
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
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" }),
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import cx from 'classnames';
3
- import { SideNavLink, SideNav, SideNavItems, SideNavDivider } from '@carbon/react';
3
+ import { SideNavLink, SideNav, SideNavItems, SideNavDivider, ComposedModal, ModalHeader, ModalBody, Dropdown, ModalFooter, Button } from '@carbon/react';
4
4
  import TooltipHover from '../TooltipHover/TooltipHover.js';
5
5
  import { ChatBot, Home, UserMultiple, AddAlt, Api, IntentRequestCreate, Folders, DocumentMultiple_02, Catalog, Settings, LicenseThirdParty } from '@carbon/react/icons';
6
6
  import { USER_PLATFORM_ROLE } from '../../constants/UserType.js';
@@ -14,9 +14,9 @@ IBM Confidential
14
14
  function AdvantageSideNav(props) {
15
15
  const { app, appLink, regionalTeam, enableChatButton = true, showChatButton = true, showSelectTeamPurpose = false, homeLink, agentAssistantStudioLink, agentAssistantLibraryLink, assistantLink, defaultAssistantLink, documentCollectionsLink, settingsLink, toolsLink, joinCreateTrigger, isLoading, isOpen, teams = [], triggerEvent, accounts = [], baseEnvUrl, className, navLinks, navigation, personalTeams = [], user, showChatTooltip, templateMeteringEvent, tooltipMessage, isLaunchpad = false, history, children, ...rest } = props;
16
16
  const [activeMenu, setActiveMenu] = React.useState(false);
17
- React.useState(null);
18
- // const [regionalModalIsOpen, setRegionalModalIsOpen] = React.useState(false);
19
- React.useState(null);
17
+ const [teamList, setTeamList] = React.useState(null);
18
+ const [regionalModalIsOpen, setRegionalModalIsOpen] = React.useState(false);
19
+ const [selectedTeam, setSelectedTeam] = React.useState(null);
20
20
  const isMenuOpen = isOpen || activeMenu;
21
21
  const windowLocation = window.location;
22
22
  const isPartnerUser = user?.type === USER_PLATFORM_ROLE.Partner;
@@ -61,6 +61,10 @@ function AdvantageSideNav(props) {
61
61
  destinationPath: homeLink,
62
62
  });
63
63
  };
64
+ const handleRegionalNewStartNewChat = (team) => {
65
+ const assistantLink = `${appLink?.newChatRedirect()}?teamName=${team.name}&teamId=${team.id}`;
66
+ window.open(assistantLink, "_self", "noopener,noreferrer");
67
+ };
64
68
  const handleToolsClick = () => {
65
69
  triggerEvent &&
66
70
  triggerEvent({
@@ -102,14 +106,19 @@ function AdvantageSideNav(props) {
102
106
  });
103
107
  };
104
108
  const handleAssistantClick = () => {
105
- let redirectLink = `${appLink.newChatRedirect()}?teamName=${teamSwitcherTeam.name}&teamId=${teamSwitcherTeam.id}`;
109
+ if (regionalTeam?.length > 1) {
110
+ setRegionalModalIsOpen(true);
111
+ setTeamList(regionalTeam?.map((team) => ({
112
+ id: team.id,
113
+ name: team.name,
114
+ })));
115
+ }
106
116
  triggerEvent &&
107
117
  triggerEvent({
108
118
  action: "Clicked on SideNav Assistant link",
109
119
  category: "Sidenav",
110
- destinationPath: redirectLink,
120
+ destinationPath: assistantLink,
111
121
  });
112
- window.open(redirectLink, "_self", "noopener,noreferrer");
113
122
  };
114
123
  const handleCreateJoinClick = () => {
115
124
  triggerEvent &&
@@ -141,11 +150,7 @@ function AdvantageSideNav(props) {
141
150
  };
142
151
  const assistantSideNavLink = (
143
152
  // assistantLink &&
144
- React.createElement(SideNavLink, { "data-testid": "sidenav-assistant-link", className: !enableChatButton ? `${prefix}--bmrg-advantage-sidenav__inactive-link` : "", disabled: Boolean(!enableChatButton),
145
- // isActive={assistantLink }
146
- renderIcon: ChatBot,
147
- // href={enableChatButton}
148
- onClick: enableChatButton ? handleAssistantClick : (e) => e.preventDefault() }, "Chat"));
153
+ React.createElement(SideNavLink, { "data-testid": "sidenav-assistant-link", className: !enableChatButton ? `${prefix}--bmrg-advantage-sidenav__inactive-link` : "", disabled: Boolean(!enableChatButton), isActive: assistantLink ? windowLocation.href.includes(assistantLink) : "", renderIcon: ChatBot, href: enableChatButton && assistantLink, onClick: enableChatButton ? handleAssistantClick : (e) => e.preventDefault() }, "Chat"));
149
154
  const catalogNavlink = navigation?.platform?.catalog?.url;
150
155
  const adminNavlink = navigation?.platform?.admin?.url;
151
156
  const showSecondDivider = (!isPartnerUser && showChatButton) ||
@@ -213,7 +218,20 @@ function AdvantageSideNav(props) {
213
218
  settingsLink ? (React.createElement(SideNavLink, { "data-testid": "sidenav-settings-link", renderIcon: Settings, href: settingsLink, onClick: (e) => {
214
219
  handleSettingsClick();
215
220
  } }, "Settings")) : null,
216
- adminNavlink ? (React.createElement(SideNavLink, { href: adminNavlink, renderIcon: LicenseThirdParty }, "Admin")) : null),
221
+ adminNavlink ? (React.createElement(SideNavLink, { href: adminNavlink, renderIcon: LicenseThirdParty }, "Admin")) : null,
222
+ regionalModalIsOpen && (React.createElement(ComposedModal, { className: `${prefix}--teamSelectionModalContainer`, open: regionalModalIsOpen, onClose: () => setRegionalModalIsOpen(false), onKeyDown: (e) => e.stopPropagation(), "data-testid": "select-team-chat-modal" },
223
+ React.createElement(ModalHeader, { title: "Select Team to Start a New Chat", closeModal: () => setRegionalModalIsOpen(false) }),
224
+ React.createElement(ModalBody, { className: `${prefix}--teamSelectModalBody` },
225
+ React.createElement(Dropdown, { items: teamList, disabled: !teamList?.length, id: "select-team-chat-modal-dropdown", selectedItem: selectedTeam, size: "md", "data-testid": "select-team-chat-modal-dropdown", itemToString: (item) => item?.name, label: "Choose a team", onChange: ({ selectedItem }) => setSelectedTeam(selectedItem) })),
226
+ React.createElement(ModalFooter, null,
227
+ React.createElement(Button, { kind: "secondary", "data-testid": "select-team-chat-modal-cancel-button", onClick: () => setRegionalModalIsOpen(false) }, "Cancel"),
228
+ React.createElement(Button, { "data-modal-primary-focus": true, kind: "primary", disabled: !selectedTeam, "data-testid": "select-team-chat-modal-continue-button", onClick: () => {
229
+ if (selectedTeam) {
230
+ handleRegionalNewStartNewChat(selectedTeam);
231
+ setRegionalModalIsOpen(false);
232
+ // closeModal();
233
+ }
234
+ } }, "Continue"))))),
217
235
  children ? (React.createElement(React.Fragment, null,
218
236
  React.createElement(SideNavDivider, null),
219
237
  children)) : null)));
@@ -6,6 +6,7 @@ import sortBy from 'lodash.sortby';
6
6
  import HeaderMenu$1 from './HeaderMenu.js';
7
7
  import { resolver, serviceUrl } from '../../config/servicesConfig.js';
8
8
  import { prefix } from '../../internal/settings.js';
9
+ import { USER_PLATFORM_ROLE } from '../../constants/UserType.js';
9
10
 
10
11
  /*
11
12
  IBM Confidential
@@ -223,13 +224,14 @@ function HeaderTeamSwitcher({ analyticsHelpers, baseServicesUrl, createJoinTeamT
223
224
  if (selectedTeamName && selectedTeamName.length > 65) {
224
225
  selectedTeamName = selectedTeamName.slice(0, 65) + "...";
225
226
  }
227
+ const isPartnerUser = Boolean(user?.type === USER_PLATFORM_ROLE.Partner);
226
228
  return (React.createElement("div", { className: headerDropdownMenuContainerClassname },
227
229
  isLoadingTeamSwitcher ? (React.createElement("div", { className: headerDropdownMenuLoadingClassname },
228
230
  React.createElement(InlineLoading, null))) : isSuccessTeamSwitcher ? (React.createElement("div", { className: headerDropdownMenuSuccessClassname },
229
231
  React.createElement(CheckmarkFilled, null))) : null,
230
232
  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" },
231
233
  React.createElement(HeaderMenu$1, { "aria-labelledby": menuButtonId, className: headerDropdownMenuListClassname, id: menuListId },
232
- React.createElement(HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
234
+ !isPartnerUser && React.createElement(HeaderMenuItem, { id: "header-team-switcher-create-join-team-button", className: headerTeamSwitcherCreateTeamButtonContainerClassname, onClick: handleCreateJoinTeamClick,
233
235
  // eslint-disable-next-line no-script-url
234
236
  href: "javascript:void(0)", role: "menuitem", "data-testid": "header-team-switcher-create-join-team-button" },
235
237
  React.createElement("div", { className: headerTeamSwitcherCreateTeamButtonClassname },
@@ -69,7 +69,7 @@ function UIShell({ analyticsHelpers, baseEnvUrl, carbonTheme = "g10", config, cr
69
69
  ...profileMenuItems,
70
70
  isSignOutEnabled && React.createElement(SignOutMenuItem, { key: "Sign Out", signOutLink: platform.signOutUrl }),
71
71
  ].filter(Boolean), supportMenuItems: [
72
- React.createElement(HeaderMenuItem, { key: "docs", href: platform?.docs?.url, icon: React.createElement(Document, null), "data-testid": "docs", kind: "app", text: "Docs", type: "link" }),
72
+ !isPartnerUser && React.createElement(HeaderMenuItem, { key: "docs", href: platform?.docs?.url, icon: React.createElement(Document, null), "data-testid": "docs", kind: "app", text: "Docs", type: "link" }),
73
73
  isSupportEnabled &&
74
74
  (supportFlagCheck || isPartnerUser ? (React.createElement(SupportCenterMenuItem, { key: "support-center", platformName: platform?.platformName, platformOrganization: platform?.platformOrganization, supportLink: supportLink, partnerEmailId: partnerEmailId, enablePartner: isPartnerUser, baseServicesUrl: platform.baseServicesUrl })) : (React.createElement(HeaderMenuItem, { key: "support-center", href: platform?.supportUrl, icon: React.createElement(HelpDesk, null), kind: "external", text: "Support Center", type: "link" }))),
75
75
  React.createElement(HeaderMenuItem, { key: "release-notes", href: platform?.releaseNotesUrl, icon: React.createElement(CatalogPublish, null), "data-testid": "release-notes", kind: "app", text: "Release Notes", type: "link" }),
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@boomerang-io/carbon-addons-boomerang-react",
3
3
  "description": "Carbon Addons for Boomerang apps",
4
- "version": "4.6.11-beta.25",
4
+ "version": "4.6.11-beta.26",
5
5
  "author": {
6
6
  "name": "Tim Bula",
7
7
  "email": "timrbula@gmail.com"
8
8
  },
9
9
  "license": "Apache-2",
10
- "repository": {
10
+ "repository": {
11
11
  "type": "git",
12
12
  "url": "git@github.com:boomerang-io/carbon-addons-boomerang-react"
13
13
  },