@boomerang-io/carbon-addons-boomerang-react 4.6.5-beta.4 → 4.6.5-beta.40

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.
@@ -54,8 +54,9 @@ const MenuAriaLabelRecord = {
54
54
  Switcher: "Switcher menu",
55
55
  };
56
56
  const headerButtonClassNames = "cds--btn--icon-only cds--header__action cds--btn cds--btn--primary cds--btn--icon-only cds--btn cds--btn--primary";
57
+ const instanceCheckMarkStyle = "instance-checkmark-style";
57
58
  function Header(props) {
58
- const { productName, baseEnvUrl, baseServicesUrl, carbonTheme = "g10", className, navLinks, prefixName = "", rightPanel, skipToContentProps, templateMeteringEvent, triggerEvent, userTeams, } = props;
59
+ const { productName, baseEnvUrl, baseServicesUrl, carbonTheme = "g10", className, navLinks, platform, prefixName = "", rightPanel, skipToContentProps, templateMeteringEvent, triggerEvent, userTeams, } = props;
59
60
  return (React__default.default.createElement(React__default.default.Fragment, null,
60
61
  React__default.default.createElement(react.Theme, { theme: carbonTheme },
61
62
  React__default.default.createElement(react.Header, { "aria-label": "App navigation header", className: className },
@@ -66,9 +67,8 @@ function Header(props) {
66
67
  ? navLinks.map((link) => (React__default.default.createElement(react.HeaderMenuItem, { "aria-label": `Link for ${link.name}`, "data-testid": "header-menu-link", href: link.url, isCurrentPage: window?.location?.href && link.url ? window.location.href.startsWith(link.url) : false, key: link.name, target: link.isExternal ? "_blank" : undefined, rel: link.isExternal ? "noopener noreferrer" : undefined }, link.name)))
67
68
  : null),
68
69
  React__default.default.createElement(react.HeaderGlobalBar, null,
69
- React__default.default.createElement(InstanceSwitcherMenu, { enabled: true,
70
- // enabled={Array.isArray(props.instanceSwitcherMenuItems) && props.instanceSwitcherMenuItems.length > 0}
71
- menuItems: props.instanceSwitcherMenuItems }),
70
+ props?.instanceSwitcherEnabled &&
71
+ React__default.default.createElement(InstanceSwitcherMenu, { enabled: Boolean(props.instanceSwitcherEnabled), menuItems: platform?.instances }),
72
72
  React__default.default.createElement(RequestsMenu, { baseEnvUrl: baseEnvUrl, enabled: Boolean(props.requestSummary), summary: props.requestSummary }),
73
73
  React__default.default.createElement(NotificationsMenu, { baseEnvUrl: baseEnvUrl, baseServicesUrl: baseServicesUrl, enabled: Boolean(props.enableNotifications), countEnabled: Boolean(props.enableNotificationsCount) }),
74
74
  React__default.default.createElement(SupportMenu, { enabled: Array.isArray(props.supportMenuItems) && props.supportMenuItems.length > 0, menuItems: props.supportMenuItems }),
@@ -78,18 +78,22 @@ function Header(props) {
78
78
  React__default.default.createElement(NotificationsContainer.default, { enableMultiContainer: true, containerId: `${settings.prefix}--bmrg-header-notifications` })));
79
79
  }
80
80
  function InstanceSwitcherMenu(props) {
81
+ const currentURL = "https://au.ica.ibm.com";
81
82
  const { isOpen, toggleActive, ref } = useHeaderMenu.default(MenuButtonId.InstanceSwitcher);
82
83
  if (!props.enabled) {
83
84
  return null;
84
85
  }
85
- return (React__default.default.createElement("div", { style: { position: "relative" }, ref: ref },
86
+ return (React__default.default.createElement("div", { className: `${settings.prefix}--bmrg-header-instance-switcher`, style: { position: "relative" }, ref: ref },
86
87
  React__default.default.createElement("button", { "aria-controls": MenuListId.instanceSwitcher, "aria-expanded": isOpen, "aria-haspopup": "menu", "aria-label": MenuAriaLabelRecord.instanceSwitcher, className: headerButtonClassNames, "data-testid": "header-instanceSwitcher-link", id: MenuButtonId.InstanceSwitcher, onClick: toggleActive },
87
- React__default.default.createElement(icons.Help, { size: 20 })),
88
- isOpen ? (React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher },
89
- React__default.default.createElement(react.HeaderMenuItem, { key: "Global", text: "Global", type: "link", kind: "app", href: "https://servicesessentials.ibm.com/launchpad", target: "_self" },
90
- React__default.default.createElement("div", null, "Global")),
91
- React__default.default.createElement(react.HeaderMenuItem, { key: "Australlia", text: "Australlia", type: "link", kind: "app", href: "https://au.ica.ibm.com", target: "_self" }, "Australlia"),
92
- React__default.default.createElement(react.HeaderMenuItem, { key: "Canada", text: "Australlia", type: "link", kind: "app", href: "https://canada.ica.ibm.com", target: "_self" }, "Canada"))) : null));
88
+ React__default.default.createElement(icons.Wikis, { size: 20 })),
89
+ isOpen ? (React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher }, Array.isArray(props.menuItems)
90
+ ? props.menuItems.map((item) => (React__default.default.createElement(react.HeaderMenuItem, { "aria-label": `Instance Switcher for ${item.instanceName}`, "data-testid": "header-menu-instance-switcher", href: item.url, isCurrentPage: window?.location?.href && item.url ? window.location.href.startsWith(item.url) : false, key: item.instanceName, target: "_self", rel: "noopener noreferrer" },
91
+ React__default.default.createElement("div", null,
92
+ React__default.default.createElement("span", null, "AU"),
93
+ currentURL.includes((item.instanceName).toLowerCase()) ? React__default.default.createElement("span", { className: instanceCheckMarkStyle },
94
+ React__default.default.createElement(icons.Checkmark, null),
95
+ " ") : ""))))
96
+ : null)) : null));
93
97
  }
94
98
  function RequestsMenu(props) {
95
99
  const { isOpen, toggleActive, ref } = useHeaderMenu.default(MenuButtonId.Requests);
@@ -40,6 +40,7 @@ function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformN
40
40
  * Check feature enablement via explicit feature flags
41
41
  */
42
42
  const isAppSwitcherEnabled = Boolean(features?.["appSwitcher.enabled"]);
43
+ const instanceSwitcherEnabled = Boolean(platform?.["instanceSwitcherEnabled"]);
43
44
  const isFeedbackEnabled = Boolean(features?.["feedback.enabled"]);
44
45
  const isNotificationsEnabled = Boolean(features?.["notifications.enabled"]);
45
46
  const isNotificationsCountEnabled = Boolean(features?.["notificationsCount.enabled"]);
@@ -68,7 +69,7 @@ function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformN
68
69
  */
69
70
  const isPrivacyStatementDisabled = renderPrivacyStatement === false || features?.["consent.enabled"] === false;
70
71
  return (React__default.default.createElement(reactQuery.QueryClientProvider, { client: servicesConfig.queryClient },
71
- React__default.default.createElement(Header.default, { baseEnvUrl: platform.baseEnvUrl, baseServicesUrl: platform.baseServicesUrl, carbonTheme: carbonTheme, enableAppSwitcher: isAppSwitcherEnabled, enableNotifications: isNotificationsEnabled, enableNotificationsCount: isNotificationsCountEnabled, leftPanel: leftPanel, navLinks: navigation, platformMessage: platformMessage, prefixName: names.platformName, productName: names.productName, rightPanel: rightPanel, requestSummary: user?.requestSummary, skipToContentProps: skipToContentProps, templateMeteringEvent: templateMeteringEvent, triggerEvent: triggerEvent, profileMenuItems: [
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: [
72
73
  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 })),
73
74
  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" })),
74
75
  !isPrivacyStatementDisabled && (React__default.default.createElement(PrivacyStatement.PrivacyStatementMenuItem, { key: "privacy-statement", baseServicesUrl: platform.baseServicesUrl, platformEmail: platform?.platformEmail })),
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Theme, Header as Header$1, SkipToContent, HeaderName, HeaderNavigation, HeaderMenuItem, HeaderGlobalBar, HeaderPanel, HeaderMenuButton, SideNav, SideNavItems, SideNavLink } from '@carbon/react';
3
- import { Help, Collaborate, NotificationNew, Notification, UserAvatar, Close, Switcher, OpenPanelFilledRight } from '@carbon/react/icons';
3
+ import { Wikis, Checkmark, Collaborate, NotificationNew, Notification, Help, UserAvatar, Close, Switcher, OpenPanelFilledRight } from '@carbon/react/icons';
4
4
  import HeaderAppSwitcher from './HeaderAppSwitcher.js';
5
5
  import HeaderMenu from './HeaderMenu.js';
6
6
  import NotificationsContainer from '../Notifications/NotificationsContainer.js';
@@ -46,8 +46,9 @@ const MenuAriaLabelRecord = {
46
46
  Switcher: "Switcher menu",
47
47
  };
48
48
  const headerButtonClassNames = "cds--btn--icon-only cds--header__action cds--btn cds--btn--primary cds--btn--icon-only cds--btn cds--btn--primary";
49
+ const instanceCheckMarkStyle = "instance-checkmark-style";
49
50
  function Header(props) {
50
- const { productName, baseEnvUrl, baseServicesUrl, carbonTheme = "g10", className, navLinks, prefixName = "", rightPanel, skipToContentProps, templateMeteringEvent, triggerEvent, userTeams, } = props;
51
+ const { productName, baseEnvUrl, baseServicesUrl, carbonTheme = "g10", className, navLinks, platform, prefixName = "", rightPanel, skipToContentProps, templateMeteringEvent, triggerEvent, userTeams, } = props;
51
52
  return (React.createElement(React.Fragment, null,
52
53
  React.createElement(Theme, { theme: carbonTheme },
53
54
  React.createElement(Header$1, { "aria-label": "App navigation header", className: className },
@@ -58,9 +59,8 @@ function Header(props) {
58
59
  ? navLinks.map((link) => (React.createElement(HeaderMenuItem, { "aria-label": `Link for ${link.name}`, "data-testid": "header-menu-link", href: link.url, isCurrentPage: window?.location?.href && link.url ? window.location.href.startsWith(link.url) : false, key: link.name, target: link.isExternal ? "_blank" : undefined, rel: link.isExternal ? "noopener noreferrer" : undefined }, link.name)))
59
60
  : null),
60
61
  React.createElement(HeaderGlobalBar, null,
61
- React.createElement(InstanceSwitcherMenu, { enabled: true,
62
- // enabled={Array.isArray(props.instanceSwitcherMenuItems) && props.instanceSwitcherMenuItems.length > 0}
63
- menuItems: props.instanceSwitcherMenuItems }),
62
+ props?.instanceSwitcherEnabled &&
63
+ React.createElement(InstanceSwitcherMenu, { enabled: Boolean(props.instanceSwitcherEnabled), menuItems: platform?.instances }),
64
64
  React.createElement(RequestsMenu, { baseEnvUrl: baseEnvUrl, enabled: Boolean(props.requestSummary), summary: props.requestSummary }),
65
65
  React.createElement(NotificationsMenu, { baseEnvUrl: baseEnvUrl, baseServicesUrl: baseServicesUrl, enabled: Boolean(props.enableNotifications), countEnabled: Boolean(props.enableNotificationsCount) }),
66
66
  React.createElement(SupportMenu, { enabled: Array.isArray(props.supportMenuItems) && props.supportMenuItems.length > 0, menuItems: props.supportMenuItems }),
@@ -70,18 +70,22 @@ function Header(props) {
70
70
  React.createElement(NotificationsContainer, { enableMultiContainer: true, containerId: `${prefix}--bmrg-header-notifications` })));
71
71
  }
72
72
  function InstanceSwitcherMenu(props) {
73
+ const currentURL = "https://au.ica.ibm.com";
73
74
  const { isOpen, toggleActive, ref } = useHeaderMenu(MenuButtonId.InstanceSwitcher);
74
75
  if (!props.enabled) {
75
76
  return null;
76
77
  }
77
- return (React.createElement("div", { style: { position: "relative" }, ref: ref },
78
+ return (React.createElement("div", { className: `${prefix}--bmrg-header-instance-switcher`, style: { position: "relative" }, ref: ref },
78
79
  React.createElement("button", { "aria-controls": MenuListId.instanceSwitcher, "aria-expanded": isOpen, "aria-haspopup": "menu", "aria-label": MenuAriaLabelRecord.instanceSwitcher, className: headerButtonClassNames, "data-testid": "header-instanceSwitcher-link", id: MenuButtonId.InstanceSwitcher, onClick: toggleActive },
79
- React.createElement(Help, { size: 20 })),
80
- isOpen ? (React.createElement(HeaderMenu, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher },
81
- React.createElement(HeaderMenuItem, { key: "Global", text: "Global", type: "link", kind: "app", href: "https://servicesessentials.ibm.com/launchpad", target: "_self" },
82
- React.createElement("div", null, "Global")),
83
- React.createElement(HeaderMenuItem, { key: "Australlia", text: "Australlia", type: "link", kind: "app", href: "https://au.ica.ibm.com", target: "_self" }, "Australlia"),
84
- React.createElement(HeaderMenuItem, { key: "Canada", text: "Australlia", type: "link", kind: "app", href: "https://canada.ica.ibm.com", target: "_self" }, "Canada"))) : null));
80
+ React.createElement(Wikis, { size: 20 })),
81
+ isOpen ? (React.createElement(HeaderMenu, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher }, Array.isArray(props.menuItems)
82
+ ? props.menuItems.map((item) => (React.createElement(HeaderMenuItem, { "aria-label": `Instance Switcher for ${item.instanceName}`, "data-testid": "header-menu-instance-switcher", href: item.url, isCurrentPage: window?.location?.href && item.url ? window.location.href.startsWith(item.url) : false, key: item.instanceName, target: "_self", rel: "noopener noreferrer" },
83
+ React.createElement("div", null,
84
+ React.createElement("span", null, "AU"),
85
+ currentURL.includes((item.instanceName).toLowerCase()) ? React.createElement("span", { className: instanceCheckMarkStyle },
86
+ React.createElement(Checkmark, null),
87
+ " ") : ""))))
88
+ : null)) : null));
85
89
  }
86
90
  function RequestsMenu(props) {
87
91
  const { isOpen, toggleActive, ref } = useHeaderMenu(MenuButtonId.Requests);
@@ -32,6 +32,7 @@ function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformN
32
32
  * Check feature enablement via explicit feature flags
33
33
  */
34
34
  const isAppSwitcherEnabled = Boolean(features?.["appSwitcher.enabled"]);
35
+ const instanceSwitcherEnabled = Boolean(platform?.["instanceSwitcherEnabled"]);
35
36
  const isFeedbackEnabled = Boolean(features?.["feedback.enabled"]);
36
37
  const isNotificationsEnabled = Boolean(features?.["notifications.enabled"]);
37
38
  const isNotificationsCountEnabled = Boolean(features?.["notificationsCount.enabled"]);
@@ -60,7 +61,7 @@ function UIShell({ baseEnvUrl, carbonTheme = "g10", config, leftPanel, platformN
60
61
  */
61
62
  const isPrivacyStatementDisabled = renderPrivacyStatement === false || features?.["consent.enabled"] === false;
62
63
  return (React.createElement(QueryClientProvider, { client: queryClient },
63
- React.createElement(Header, { baseEnvUrl: platform.baseEnvUrl, baseServicesUrl: platform.baseServicesUrl, carbonTheme: carbonTheme, enableAppSwitcher: isAppSwitcherEnabled, enableNotifications: isNotificationsEnabled, enableNotificationsCount: isNotificationsCountEnabled, leftPanel: leftPanel, navLinks: navigation, platformMessage: platformMessage, prefixName: names.platformName, productName: names.productName, rightPanel: rightPanel, requestSummary: user?.requestSummary, skipToContentProps: skipToContentProps, templateMeteringEvent: templateMeteringEvent, triggerEvent: triggerEvent, profileMenuItems: [
64
+ React.createElement(Header, { 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: [
64
65
  isUserEnabled && (React.createElement(ProfileSettingsMenuItem, { key: "profile-settings", baseServicesUrl: platform.baseServicesUrl, src: `${platform.baseServicesUrl}/users/image/${user?.email}`, userName: user?.displayName ?? user?.name })),
65
66
  isSendMailEnabled && (React.createElement(HeaderMenuItem, { key: "email-preferences", href: `${platform.baseEnvUrl}/launchpad/email-preferences`, icon: React.createElement(Email, null), kind: "internal", text: "Email Preferences", type: "link" })),
66
67
  !isPrivacyStatementDisabled && (React.createElement(PrivacyStatementMenuItem, { key: "privacy-statement", baseServicesUrl: platform.baseServicesUrl, platformEmail: platform?.platformEmail })),
@@ -349,6 +349,7 @@ type Props$G = {
349
349
  carbonTheme?: "white" | "g10" | "g90" | "g100";
350
350
  className?: string;
351
351
  enableAppSwitcher?: boolean;
352
+ instanceSwitcherEnabled?: boolean;
352
353
  enableNotifications?: boolean;
353
354
  enableNotificationsCount?: boolean;
354
355
  leftPanel?: (args: {
@@ -357,6 +358,7 @@ type Props$G = {
357
358
  navLinks?: NavLink[];
358
359
  }) => React.ReactNode;
359
360
  navLinks?: NavLink[];
361
+ platform?: any;
360
362
  platformMessage?: string;
361
363
  prefixName?: string;
362
364
  productName: string;
@@ -1385,6 +1387,8 @@ type Props = {
1385
1387
  askICAEnabled?: boolean;
1386
1388
  signOutUrl?: string;
1387
1389
  version?: string;
1390
+ instanceSwitcherEnabled?: boolean;
1391
+ instances?: any[];
1388
1392
  assistantVersion?: string;
1389
1393
  agentsVersion?: string;
1390
1394
  scribeFlowVersion?: string;
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.5-beta.4",
4
+ "version": "4.6.5-beta.40",
5
5
  "author": {
6
6
  "name": "Tim Bula",
7
7
  "email": "timrbula@gmail.com"
@@ -115,7 +115,15 @@ IBM Confidential
115
115
  align-items: center;
116
116
  font-size: 10px;
117
117
  }
118
-
118
+ .#{$prefix}--bmrg-header-instance-switcher .cds--bmrg-header-drop-down a.cds--header__menu-item
119
+ {
120
+ padding: 10px 15px !important;
121
+ border-bottom: 1px solid lightgrey !important;
122
+ }
123
+ .instance-checkmark-style
124
+ {
125
+ padding-left: 8rem;
126
+ }
119
127
  // span, p, a, div {
120
128
  // color: shell.$bmrg-theme-primary;
121
129
  // &:hover {
@@ -142,11 +150,7 @@ a.#{$prefix}--header__menu-item {
142
150
  color: shell.$bmrg-theme-primary !important;
143
151
  background-color: shell.$bmrg-theme-active !important;
144
152
  }
145
- }
146
- #InstanceSwitcher .cds--header .cds--bmrg-header-drop-down a.cds--header__menu-item
147
- {
148
- padding: 10px 15px;
149
- border-bottom: 1px solid lightgrey;
153
+
150
154
  }
151
155
  a.#{$prefix}--side-nav__link {
152
156
  color: shell.$bmrg-theme-secondary;