@gooddata/sdk-ui-pluggable-host 11.42.0-alpha.4 → 11.42.0-alpha.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"HostChrome.d.ts","sourceRoot":"","sources":["../../src/ui/HostChrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuC,KAAK,SAAS,EAAmC,MAAM,OAAO,CAAC;AAE7G,OAAO,EAEH,KAAK,iBAAiB,EAEtB,KAAK,gCAAgC,EACxC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACxB,MAAM,2CAA2C,CAAC;AAgCnD,OAAO,mBAAmB,CAAC;AAK3B,OAAO,0CAA0C,CAAC;AAClD,OAAO,6CAA6C,CAAC;AACrD,OAAO,sDAAsD,CAAC;AAC9D,OAAO,0DAA0D,CAAC;AAIlE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,GAAG,EAAE,gBAAgB,CAAC;IACtB,oBAAoB,EAAE,gCAAgC,EAAE,CAAC;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,oFAAoF;IACpF,YAAY,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC9C,kFAAkF;IAClF,SAAS,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxC,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,EACvB,GAAG,EACH,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,SAAS,EAAE,UAAU,EACrB,aAAa,EACb,YAAmB,EACnB,YAAmB,EACnB,SAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,QAAQ,EACX,EAAE,gBAAgB,2CA6QlB"}
1
+ {"version":3,"file":"HostChrome.d.ts","sourceRoot":"","sources":["../../src/ui/HostChrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuC,KAAK,SAAS,EAAmC,MAAM,OAAO,CAAC;AAE7G,OAAO,EAEH,KAAK,iBAAiB,EAEtB,KAAK,gCAAgC,EACxC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACxB,MAAM,2CAA2C,CAAC;AAgCnD,OAAO,mBAAmB,CAAC;AAK3B,OAAO,0CAA0C,CAAC;AAClD,OAAO,6CAA6C,CAAC;AACrD,OAAO,sDAAsD,CAAC;AAC9D,OAAO,0DAA0D,CAAC;AAYlE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,GAAG,EAAE,gBAAgB,CAAC;IACtB,oBAAoB,EAAE,gCAAgC,EAAE,CAAC;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,oFAAoF;IACpF,YAAY,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC9C,kFAAkF;IAClF,SAAS,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxC,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,EACvB,GAAG,EACH,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,SAAS,EAAE,UAAU,EACrB,aAAa,EACb,YAAmB,EACnB,YAAmB,EACnB,SAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,QAAQ,EACX,EAAE,gBAAgB,2CA+QlB"}
@@ -30,6 +30,12 @@ import "@gooddata/sdk-ui-gen-ai/styles/css/main.css";
30
30
  import "@gooddata/sdk-ui-semantic-search/styles/css/main.css";
31
31
  import "@gooddata/sdk-ui-semantic-search/styles/css/internal.css";
32
32
  const LOGOUT_MENU_ITEM_KEY = "gs.header.logout";
33
+ // The favicon that index.html shipped — resolved to "<cdnurl>/organization/favicon.ico" on the live
34
+ // platform, "/favicon.ico" in dev. Captured once at module load, before DocumentHeader can overwrite
35
+ // the <link rel="icon">, so the host can restore the organization favicon when no custom white-label
36
+ // favicon is configured (see faviconUrl below).
37
+ const initialFaviconUrl = (typeof document !== "undefined" && document.querySelector("link[rel~='icon']")?.getAttribute("href")) ||
38
+ "/favicon.ico";
33
39
  export function HostChrome({ ctx, resolvedApplications, pathname, onNavigate, onReplace: _onReplace, headerOptions, notification = null, aiVisibility = null, aiContext = null, onAiAssistantOpenChange, appPageTitle, children, }) {
34
40
  const locale = resolveLocale(ctx.preferredLocale);
35
41
  const userName = getUserDisplayName(ctx.user);
@@ -148,11 +154,13 @@ export function HostChrome({ ctx, resolvedApplications, pathname, onNavigate, on
148
154
  const logoTitle = ctx.whiteLabeling?.enabled
149
155
  ? ctx.user.organizationName || defaultLogoTitle
150
156
  : defaultLogoTitle;
151
- // White-label icons are applied whenever their URLs are set, independent of the `enabled`
152
- // flag (matching the standalone apps and the Appearance behavior). The favicon falls back to
153
- // the default served at /favicon.ico so a previously applied custom favicon is reset once its
154
- // URL is cleared, instead of leaving the stale icon in place.
155
- const faviconUrl = ctx.whiteLabeling?.faviconUrl || "/favicon.ico";
157
+ // White-label icons are applied whenever their URLs are set, independent of the `enabled` flag
158
+ // (matching the standalone apps and the Appearance behavior). When no custom favicon is set we
159
+ // fall back to the favicon index.html shipped (the organization favicon) instead of a hardcoded
160
+ // "/favicon.ico": on the live platform index.html resolves the icon to
161
+ // "<cdnurl>/organization/favicon.ico", and "/favicon.ico" is not served at the origin root — so
162
+ // hardcoding it removed the favicon once a module mounted (DocumentHeader overwrites the link).
163
+ const faviconUrl = ctx.whiteLabeling?.faviconUrl || initialFaviconUrl;
156
164
  // The host owns the browser tab title as "{page} - {brand}". The page segment defaults to the
157
165
  // active application's manifest title, but an embedded app can override it dynamically by emitting
158
166
  // a document-title-changed event (surfaced here as `appPageTitle`). When white-labeling
@@ -177,6 +185,6 @@ export function HostChrome({ ctx, resolvedApplications, pathname, onNavigate, on
177
185
  , logoTitle: logoTitle, headerColor: headerColor, headerTextColor: headerTextColor, activeColor: activeColor, userName: userName, organizationName: ctx.organization?.title, isAccessibilityCompliant: true, workspacePicker: workspacePicker, menuItemsGroups: menuItemsGroups, helpMenuItems: helpMenuItems, accountMenuItems: accountMenuItems, onMenuItemClick: handleMenuItemClick, showUpsellButton: pricing.isTrial, onUpsellButtonClick: pricing.onUpsellButtonClick, expiredDate: pricing.isTrial ? pricing.expiredDate : undefined, search: search.element, showChatItem: chat.showChatItem, onChatItemClick: chat.toggle, notificationsPanel: ctx.userSettings.enableInPlatformNotifications
178
186
  ? ({ isMobile, closeNotificationsOverlay }) => (_jsx(AppHeaderNotifications, { locale: locale, isMobile: isMobile, closeNotificationsOverlay: closeNotificationsOverlay, useAsOfDateParam: ctx.userSettings.enableExecutionTimestamp ?? false, enableExportToDocumentStorage: ctx.userSettings.enableExportToDocumentStorage ??
179
187
  false }))
180
- : undefined }) })), _jsx("main", { className: e("content"), children: children }), chat.element, pricing.element, _jsx(HostNotificationDispatcher, { notification: notification })
188
+ : undefined }) })), _jsx("main", { className: e("content"), children: children }), hideChrome ? null : chat.element, pricing.element, _jsx(HostNotificationDispatcher, { notification: notification })
181
189
  ] }) }) }) }));
182
190
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-pluggable-host",
3
- "version": "11.42.0-alpha.4",
3
+ "version": "11.42.0-alpha.5",
4
4
  "description": "GoodData SDK runtime for hosting pluggable applications — registry, loader, routing, platform context, default UI chrome",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -29,20 +29,20 @@
29
29
  "dependencies": {
30
30
  "@module-federation/runtime": "2.3.1",
31
31
  "lodash-es": "^4.17.23",
32
- "@gooddata/sdk-backend-base": "11.42.0-alpha.4",
33
- "@gooddata/sdk-backend-spi": "11.42.0-alpha.4",
34
- "@gooddata/sdk-embedding": "11.42.0-alpha.4",
35
- "@gooddata/sdk-backend-tiger": "11.42.0-alpha.4",
36
- "@gooddata/sdk-model": "11.42.0-alpha.4",
37
- "@gooddata/sdk-pluggable-application-model": "11.42.0-alpha.4",
38
- "@gooddata/sdk-ui": "11.42.0-alpha.4",
39
- "@gooddata/sdk-ui-application-header": "11.42.0-alpha.4",
40
- "@gooddata/sdk-ui-ext": "11.42.0-alpha.4",
41
- "@gooddata/sdk-ui-gen-ai": "11.42.0-alpha.4",
42
- "@gooddata/sdk-ui-kit": "11.42.0-alpha.4",
43
- "@gooddata/sdk-ui-semantic-search": "11.42.0-alpha.4",
44
- "@gooddata/sdk-ui-theme-provider": "11.42.0-alpha.4",
45
- "@gooddata/util": "11.42.0-alpha.4"
32
+ "@gooddata/sdk-backend-base": "11.42.0-alpha.5",
33
+ "@gooddata/sdk-backend-spi": "11.42.0-alpha.5",
34
+ "@gooddata/sdk-backend-tiger": "11.42.0-alpha.5",
35
+ "@gooddata/sdk-embedding": "11.42.0-alpha.5",
36
+ "@gooddata/sdk-model": "11.42.0-alpha.5",
37
+ "@gooddata/sdk-ui": "11.42.0-alpha.5",
38
+ "@gooddata/sdk-ui-application-header": "11.42.0-alpha.5",
39
+ "@gooddata/sdk-pluggable-application-model": "11.42.0-alpha.5",
40
+ "@gooddata/sdk-ui-ext": "11.42.0-alpha.5",
41
+ "@gooddata/sdk-ui-gen-ai": "11.42.0-alpha.5",
42
+ "@gooddata/sdk-ui-kit": "11.42.0-alpha.5",
43
+ "@gooddata/sdk-ui-semantic-search": "11.42.0-alpha.5",
44
+ "@gooddata/sdk-ui-theme-provider": "11.42.0-alpha.5",
45
+ "@gooddata/util": "11.42.0-alpha.5"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@microsoft/api-documenter": "^7.17.0",
@@ -85,8 +85,8 @@
85
85
  "vite": "8.0.16",
86
86
  "vitest": "4.1.8",
87
87
  "vitest-dom": "0.1.1",
88
- "@gooddata/eslint-config": "11.42.0-alpha.4",
89
- "@gooddata/oxlint-config": "11.42.0-alpha.4"
88
+ "@gooddata/eslint-config": "11.42.0-alpha.5",
89
+ "@gooddata/oxlint-config": "11.42.0-alpha.5"
90
90
  },
91
91
  "peerDependencies": {
92
92
  "react": ">=18.3.1",