@boomerang-io/carbon-addons-boomerang-react 4.6.5-beta.3 → 4.6.5-beta.30

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,9 +54,12 @@ 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 menuOverride = "instanceSwitcherMenuItem";
57
+ const instanceCheckMarkStyle = "instance-checkmark-style";
58
58
  function Header(props) {
59
- 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;
60
+ console.log("platform", platform);
61
+ console.log("enabled", platform?.instanceSwitcherEnabled);
62
+ console.log("instances", platform?.instances);
60
63
  return (React__default.default.createElement(React__default.default.Fragment, null,
61
64
  React__default.default.createElement(react.Theme, { theme: carbonTheme },
62
65
  React__default.default.createElement(react.Header, { "aria-label": "App navigation header", className: className },
@@ -67,9 +70,8 @@ function Header(props) {
67
70
  ? 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)))
68
71
  : null),
69
72
  React__default.default.createElement(react.HeaderGlobalBar, null,
70
- React__default.default.createElement(InstanceSwitcherMenu, { enabled: true,
71
- // enabled={Array.isArray(props.instanceSwitcherMenuItems) && props.instanceSwitcherMenuItems.length > 0}
72
- menuItems: props.instanceSwitcherMenuItems }),
73
+ platform?.instanceSwitcherEnabled &&
74
+ React__default.default.createElement(InstanceSwitcherMenu, { enabled: Boolean(props.instanceSwitcherEnabled), menuItems: platform?.instances }),
73
75
  React__default.default.createElement(RequestsMenu, { baseEnvUrl: baseEnvUrl, enabled: Boolean(props.requestSummary), summary: props.requestSummary }),
74
76
  React__default.default.createElement(NotificationsMenu, { baseEnvUrl: baseEnvUrl, baseServicesUrl: baseServicesUrl, enabled: Boolean(props.enableNotifications), countEnabled: Boolean(props.enableNotificationsCount) }),
75
77
  React__default.default.createElement(SupportMenu, { enabled: Array.isArray(props.supportMenuItems) && props.supportMenuItems.length > 0, menuItems: props.supportMenuItems }),
@@ -79,18 +81,25 @@ function Header(props) {
79
81
  React__default.default.createElement(NotificationsContainer.default, { enableMultiContainer: true, containerId: `${settings.prefix}--bmrg-header-notifications` })));
80
82
  }
81
83
  function InstanceSwitcherMenu(props) {
84
+ // const currentURL= window.location.href;
85
+ const currentURL = "https://canada.ica.ibm.com";
86
+ console.log("currentURL.includes(item.instanceName)-1", currentURL.includes("Canada"));
87
+ console.log("currentURL.includes(item.instanceName)-2", currentURL.includes("canada"));
82
88
  const { isOpen, toggleActive, ref } = useHeaderMenu.default(MenuButtonId.InstanceSwitcher);
83
89
  if (!props.enabled) {
84
90
  return null;
85
91
  }
86
- return (React__default.default.createElement("div", { style: { position: "relative" }, ref: ref },
92
+ return (React__default.default.createElement("div", { className: `${settings.prefix}--bmrg-header-instance-switcher`, style: { position: "relative" }, ref: ref },
87
93
  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 },
88
- React__default.default.createElement(icons.Help, { size: 20 })),
89
- isOpen ? (React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher },
90
- React__default.default.createElement(react.HeaderMenuItem, { className: menuOverride, key: "Global", text: "Global", type: "link", kind: "app", href: "https://servicesessentials.ibm.com/launchpad", target: "_self" },
91
- React__default.default.createElement("div", null, "Global")),
92
- React__default.default.createElement(react.HeaderMenuItem, { key: "Australlia", text: "Australlia", type: "link", kind: "app", href: "https://au.ica.ibm.com", target: "_self" }, "Australlia"),
93
- React__default.default.createElement(react.HeaderMenuItem, { key: "Canada", text: "Australlia", type: "link", kind: "app", href: "https://canada.ica.ibm.com", target: "_self" }, "Canada"))) : null));
94
+ React__default.default.createElement(icons.Wikis, { size: 20 })),
95
+ isOpen ? (React__default.default.createElement(HeaderMenu.default, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher }, Array.isArray(props.menuItems)
96
+ ? 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" },
97
+ React__default.default.createElement("div", null,
98
+ React__default.default.createElement("span", null, item.instanceName),
99
+ currentURL.includes(item.instanceName) ? React__default.default.createElement("span", { className: instanceCheckMarkStyle },
100
+ React__default.default.createElement(icons.Checkmark, null),
101
+ " ") : ""))))
102
+ : null)) : null));
94
103
  }
95
104
  function RequestsMenu(props) {
96
105
  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(features?.["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,9 +46,12 @@ 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 menuOverride = "instanceSwitcherMenuItem";
49
+ const instanceCheckMarkStyle = "instance-checkmark-style";
50
50
  function Header(props) {
51
- 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;
52
+ console.log("platform", platform);
53
+ console.log("enabled", platform?.instanceSwitcherEnabled);
54
+ console.log("instances", platform?.instances);
52
55
  return (React.createElement(React.Fragment, null,
53
56
  React.createElement(Theme, { theme: carbonTheme },
54
57
  React.createElement(Header$1, { "aria-label": "App navigation header", className: className },
@@ -59,9 +62,8 @@ function Header(props) {
59
62
  ? 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)))
60
63
  : null),
61
64
  React.createElement(HeaderGlobalBar, null,
62
- React.createElement(InstanceSwitcherMenu, { enabled: true,
63
- // enabled={Array.isArray(props.instanceSwitcherMenuItems) && props.instanceSwitcherMenuItems.length > 0}
64
- menuItems: props.instanceSwitcherMenuItems }),
65
+ platform?.instanceSwitcherEnabled &&
66
+ React.createElement(InstanceSwitcherMenu, { enabled: Boolean(props.instanceSwitcherEnabled), menuItems: platform?.instances }),
65
67
  React.createElement(RequestsMenu, { baseEnvUrl: baseEnvUrl, enabled: Boolean(props.requestSummary), summary: props.requestSummary }),
66
68
  React.createElement(NotificationsMenu, { baseEnvUrl: baseEnvUrl, baseServicesUrl: baseServicesUrl, enabled: Boolean(props.enableNotifications), countEnabled: Boolean(props.enableNotificationsCount) }),
67
69
  React.createElement(SupportMenu, { enabled: Array.isArray(props.supportMenuItems) && props.supportMenuItems.length > 0, menuItems: props.supportMenuItems }),
@@ -71,18 +73,25 @@ function Header(props) {
71
73
  React.createElement(NotificationsContainer, { enableMultiContainer: true, containerId: `${prefix}--bmrg-header-notifications` })));
72
74
  }
73
75
  function InstanceSwitcherMenu(props) {
76
+ // const currentURL= window.location.href;
77
+ const currentURL = "https://canada.ica.ibm.com";
78
+ console.log("currentURL.includes(item.instanceName)-1", currentURL.includes("Canada"));
79
+ console.log("currentURL.includes(item.instanceName)-2", currentURL.includes("canada"));
74
80
  const { isOpen, toggleActive, ref } = useHeaderMenu(MenuButtonId.InstanceSwitcher);
75
81
  if (!props.enabled) {
76
82
  return null;
77
83
  }
78
- return (React.createElement("div", { style: { position: "relative" }, ref: ref },
84
+ return (React.createElement("div", { className: `${prefix}--bmrg-header-instance-switcher`, style: { position: "relative" }, ref: ref },
79
85
  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 },
80
- React.createElement(Help, { size: 20 })),
81
- isOpen ? (React.createElement(HeaderMenu, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher },
82
- React.createElement(HeaderMenuItem, { className: menuOverride, key: "Global", text: "Global", type: "link", kind: "app", href: "https://servicesessentials.ibm.com/launchpad", target: "_self" },
83
- React.createElement("div", null, "Global")),
84
- React.createElement(HeaderMenuItem, { key: "Australlia", text: "Australlia", type: "link", kind: "app", href: "https://au.ica.ibm.com", target: "_self" }, "Australlia"),
85
- React.createElement(HeaderMenuItem, { key: "Canada", text: "Australlia", type: "link", kind: "app", href: "https://canada.ica.ibm.com", target: "_self" }, "Canada"))) : null));
86
+ React.createElement(Wikis, { size: 20 })),
87
+ isOpen ? (React.createElement(HeaderMenu, { "aria-labelledby": MenuButtonId.InstanceSwitcher, id: MenuListId.instanceSwitcher }, Array.isArray(props.menuItems)
88
+ ? 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" },
89
+ React.createElement("div", null,
90
+ React.createElement("span", null, item.instanceName),
91
+ currentURL.includes(item.instanceName) ? React.createElement("span", { className: instanceCheckMarkStyle },
92
+ React.createElement(Checkmark, null),
93
+ " ") : ""))))
94
+ : null)) : null));
86
95
  }
87
96
  function RequestsMenu(props) {
88
97
  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(features?.["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;
@@ -1354,6 +1356,7 @@ type Props = {
1354
1356
  baseEnvUrl?: string;
1355
1357
  config?: {
1356
1358
  features?: {
1359
+ "instanceSwitcherEnabled"?: boolean;
1357
1360
  "appSwitcher.enabled"?: boolean;
1358
1361
  "consent.enabled"?: boolean;
1359
1362
  "docs.enabled"?: boolean;
@@ -1385,6 +1388,8 @@ type Props = {
1385
1388
  askICAEnabled?: boolean;
1386
1389
  signOutUrl?: string;
1387
1390
  version?: string;
1391
+ instanceSwitcherEnabled?: boolean;
1392
+ instances?: any[];
1388
1393
  assistantVersion?: string;
1389
1394
  agentsVersion?: string;
1390
1395
  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.3",
4
+ "version": "4.6.5-beta.30",
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
- .instanceSwitcherMenuItem
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;