@ukic/web-components 3.25.0 → 3.26.0

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.
Files changed (30) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  3. package/dist/cjs/ic-top-navigation.cjs.entry.js +12 -8
  4. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +33 -9
  7. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  8. package/dist/collection/components/ic-top-navigation/ic-top-navigation.stories.js +26 -0
  9. package/dist/components/ic-pagination-bar.js.map +1 -1
  10. package/dist/components/ic-radio-group.js.map +1 -1
  11. package/dist/components/ic-skeleton.js.map +1 -1
  12. package/dist/components/ic-top-navigation.js +13 -8
  13. package/dist/components/ic-top-navigation.js.map +1 -1
  14. package/dist/core/core.esm.js +1 -1
  15. package/dist/core/core.esm.js.map +1 -1
  16. package/dist/core/{p-46e5a58b.entry.js → p-12474095.entry.js} +2 -2
  17. package/dist/core/p-12474095.entry.js.map +1 -0
  18. package/dist/core/p-98dee727.entry.js.map +1 -1
  19. package/dist/esm/core.js +1 -1
  20. package/dist/esm/ic-button_3.entry.js.map +1 -1
  21. package/dist/esm/ic-top-navigation.entry.js +12 -8
  22. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  23. package/dist/esm/loader.js +1 -1
  24. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +4 -1
  25. package/dist/types/components.d.ts +10 -2
  26. package/hydrate/index.js +13 -8
  27. package/hydrate/index.mjs +13 -8
  28. package/package.json +2 -2
  29. package/vscode-data.json +5 -1
  30. package/dist/core/p-46e5a58b.entry.js.map +0 -1
package/hydrate/index.js CHANGED
@@ -20867,7 +20867,7 @@ class TopNavigation {
20867
20867
  */
20868
20868
  this.customMobileBreakpoint = DEVICE_SIZES.L;
20869
20869
  /**
20870
- * The URL to navigate to when the app title is clicked.
20870
+ * The URL to navigate to when the app title or app icon is clicked.
20871
20871
  */
20872
20872
  this.href = "/";
20873
20873
  /**
@@ -20890,6 +20890,9 @@ class TopNavigation {
20890
20890
  * The version info to be displayed.
20891
20891
  */
20892
20892
  this.version = "";
20893
+ /** If `true`, the app title will be hidden, but still accessible to screen readers.
20894
+ */
20895
+ this.hideAppTitle = false;
20893
20896
  this.checkSlots = () => {
20894
20897
  this.hasAppIcon = isSlotUsed(this.el, "app-icon");
20895
20898
  this.hasAppTitleSlot = isSlotUsed(this.el, "app-title");
@@ -21021,7 +21024,7 @@ class TopNavigation {
21021
21024
  this.foregroundColor = detail.mode;
21022
21025
  }
21023
21026
  render() {
21024
- const { appTitle, contentAligned, customMobileBreakpoint, deviceSize, el, foregroundColor, hasAppIcon, hasAppTitleSlot, hasFullWidthSearchBar, hasIconButtons, hasNavigation, hasSearchSlotContent, href, inline, menuButtonClick, mobileSearchBarVisible, navMenuVisible, searchButtonClickHandler, searchButtonMouseDownHandler, shortAppTitle, status, version, theme, } = this;
21027
+ const { appTitle, hideAppTitle, contentAligned, customMobileBreakpoint, deviceSize, el, foregroundColor, hasAppIcon, hasAppTitleSlot, hasFullWidthSearchBar, hasIconButtons, hasNavigation, hasSearchSlotContent, href, inline, menuButtonClick, mobileSearchBarVisible, navMenuVisible, searchButtonClickHandler, searchButtonMouseDownHandler, shortAppTitle, status, version, theme, } = this;
21025
21028
  const hasStatus = status !== "";
21026
21029
  const hasVersion = version !== "";
21027
21030
  const hasMenuContent = hasNavigation || hasIconButtons || hasStatus || hasVersion;
@@ -21041,19 +21044,20 @@ class TopNavigation {
21041
21044
  const attrs = Component == "a" && {
21042
21045
  href: href,
21043
21046
  };
21044
- return (hAsync(Host, { key: 'c0c457a694891bb06ad49c6601fb57d83e6ac6c6', class: {
21047
+ return (hAsync(Host, { key: 'dbb0dd3377419a8b10ada09db89524fadafc2af8', class: {
21045
21048
  "fullwidth-searchbar": hasFullWidthSearchBar,
21046
21049
  "mobile-mode": overMobileBreakpoint,
21047
21050
  [IcBrandForegroundEnum.Dark]: foregroundColor === IcBrandForegroundEnum.Dark,
21048
21051
  [`ic-theme-${theme}`]: theme !== "inherit",
21049
- } }, hAsync("div", { key: 'fd5f04cfce660e81024b45ebee521d73d42a448d', class: "top-navigation" }, hAsync("ic-section-container", { key: '028947110e4a66cccc58659ca164b2938cd7e533', aligned: contentAligned, "full-height": true }, hAsync("header", { key: 'f528842ca7c9fe6a127e53cf7ea0c5af9aeebe79', role: "banner" }, hAsync("div", { key: 'e23371a5539f686060f624053e8b04a2cef1f860', class: "top-panel-container" }, hAsync("div", { key: '25ede4b34cb30ba1d25d3fb06a3f44e48ad4a4c9', class: "app-details-container" }, (hasTitle || hasAppTitleSlot) && (hAsync(Component, Object.assign({ key: '666eddef4b8be110a1796083432cd754cda18152', class: "title-link" }, attrs), hasAppIcon && (hAsync("div", { key: 'cb7c5cdf6ccc28c5dc5d7699e0332770aa5246f9', class: "app-icon-container" }, hAsync("slot", { key: 'cd21e969e6fd23594aeb2b31468e81d1d68de7f7', name: "app-icon" }))), isSmallDeviceSize &&
21050
- (!isEmptyString(shortAppTitle) || shortAppTitleSlot) ? (hAsync("ic-typography", { variant: "subtitle-small", "aria-label": (!hasAppTitleSlot || !shortAppTitleSlot) &&
21051
- `${appTitle} (${shortAppTitle})` }, hAsync("h1", null, shortAppTitleSlot ? (hAsync("slot", { name: "short-app-title" })) : (shortAppTitle)))) : (hAsync("ic-typography", { variant: appTitleVariant }, hAsync("h1", { class: "title-wrap" }, hasAppTitleSlot ? (hAsync("slot", { name: "app-title" })) : (appTitle)))))), hasStatus && (hAsync("div", { key: '938a6e6d13bfd92a87baf43934342fb426802d65', class: "app-status" }, hAsync("ic-typography", { key: 'e3e8e83984ead5be2e4869e67640762af42f5f32', "aria-label": "app tag", variant: "label-uppercase", class: "app-status-text" }, status))), hasVersion && (hAsync("div", { key: '1129e504a1db3af56d2c931e08bd15f992b5721f', class: "app-version" }, hAsync("ic-typography", { key: 'c6f56458fc5f565055fdb0bde408e6078216d51b', variant: "label", class: "app-version-text", "aria-label": "app version" }, version)))), (hasSearchSlotContent || hasMenuContent) && (hAsync("div", { key: '4523603a02eeb22eca466afc1d2cfa44755b8f17', class: "search-menu-container" }, hAsync("div", { key: '77ff191542abaa41c8610418d54922e91268d364', class: "search-actions-container" }, !overMobileBreakpoint ? (hAsync(Fragment, null, hAsync("slot", { name: "search" }), hasIconButtons && (hAsync("div", { class: "icon-buttons-container" }, hAsync("slot", { name: "buttons" }))))) : (hAsync(Fragment, null, hasSearchSlotContent && (hAsync("ic-button", { id: "search-toggle-button", ref: (el) => (this.mobileSearchButtonEl = el), onMouseDown: searchButtonMouseDownHandler, variant: "icon-tertiary", monochrome: true, size: searchButtonSize, "aria-label": mobileSearchButtonTitle, theme: foregroundColor, onClick: searchButtonClickHandler }, hAsync("slot", { name: "toggle-icon" }, hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#ffffff" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" }))))), hasMenuContent && (hAsync("div", { class: "menu-button-container" }, hAsync("span", { id: "navigation-landmark-button-text", class: "navigation-landmark-button-text", "aria-hidden": "true" }, "Main navigation button"), hAsync("nav", { "aria-labelledby": "navigation-landmark-button-text", "aria-hidden": `${navMenuVisible}` }, hAsync("ic-button", { id: "menu-button", ref: (el) => (this.menuButtonEl = el), theme: foregroundColor, variant: "secondary", monochrome: true, "aria-expanded": "false", "aria-haspopup": "true", "aria-label": `Open ${hasNavigation ? "navigation" : "app"} menu`, size: menuSize, onClick: menuButtonClick }, "Menu", hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#ffffff", slot: "left-icon" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" })))))))))))), mobileSearchBarVisible && (hAsync("div", { key: 'e18aab12917ebdfead1c16c9d508c7feaf7797cb', class: "search-bar-container" }, hAsync("slot", { key: '4bf9ae342c58629ea76dc7de395128afd695dc8b', name: "search" }))), hasNavigation && !overMobileBreakpoint && (hAsync("div", { key: '30401c56949e21a33b18166da0ba2b07ad91c3f0', class: "navigation-tabs" }, hAsync("span", { key: '72561ee2554f09e0ff33b29fb257e7dde0a99a0f', id: "navigation-landmark-text", class: "navigation-landmark-text", "aria-hidden": "true" }, "Main pages"), hAsync("nav", { key: '411b215af2ef320d415af6e189a60dce1b730cdf', "aria-labelledby": "navigation-landmark-text", class: "nav-panel-container" }, hAsync("ic-horizontal-scroll", { key: 'fac1019061aeaea2ea8197cc0100a23f0cd1a69d',
21052
+ } }, hAsync("div", { key: '2c1e4277d92bd9954765b50b3f78669aa1af8390', class: "top-navigation" }, hAsync("ic-section-container", { key: 'f667d16e1693cd8bf3c45cbddee6777a3f50e21f', aligned: contentAligned, "full-height": true }, hAsync("header", { key: '0b4e0c2a117f54395045cd8b36b1be11da00c1c5', role: "banner" }, hAsync("div", { key: '09614426ebe2917000f92339784df56a9470d3d8', class: "top-panel-container" }, hAsync("div", { key: 'bff8f5c059015150a6aed52717ddc454fb050ccb', class: "app-details-container" }, (hasTitle || hasAppTitleSlot) && (hAsync(Component, Object.assign({ key: 'fcd00d5a3dec584f9eb5e3fc89eb66fb1405f1f5', class: "title-link" }, attrs, { "aria-label": hideAppTitle ? `${appTitle}` : undefined }), hasAppIcon && (hAsync("div", { key: '68385821513eca595805f502519f8c11185f1be0', class: "app-icon-container", "aria-hidden": "true" }, hAsync("slot", { key: '9e69b0b4d827ca7b85c39f9a4697a463a51ea6d0', name: "app-icon" }))), !hideAppTitle &&
21053
+ (isSmallDeviceSize &&
21054
+ (!isEmptyString(shortAppTitle) || shortAppTitleSlot) ? (hAsync("ic-typography", { variant: "subtitle-small", "aria-label": (!hasAppTitleSlot || !shortAppTitleSlot) &&
21055
+ `${appTitle} (${shortAppTitle})` }, hAsync("h1", null, shortAppTitleSlot ? (hAsync("slot", { name: "short-app-title" })) : (shortAppTitle)))) : (hAsync("ic-typography", { variant: appTitleVariant }, hAsync("h1", { class: "title-wrap" }, hasAppTitleSlot ? (hAsync("slot", { name: "app-title" })) : (appTitle))))))), hasStatus && (hAsync("div", { key: 'c1f5c9745ff525f8fe55b339592cffed6c94fe59', class: "app-status" }, hAsync("ic-typography", { key: '3eb8bb15698aaca7e4653674238f1f8481f56cd6', "aria-label": "app tag", variant: "label-uppercase", class: "app-status-text" }, status))), hasVersion && (hAsync("div", { key: 'd87b68713d46e53679c98c9dffc31ba4c669472c', class: "app-version" }, hAsync("ic-typography", { key: 'e04e0521c929bb988c227d6c81569e09c47fae45', variant: "label", class: "app-version-text", "aria-label": "app version" }, version)))), (hasSearchSlotContent || hasMenuContent) && (hAsync("div", { key: '3a276b4d6bf6a27d420febf654f48fd5a54365b7', class: "search-menu-container" }, hAsync("div", { key: '34415f5be77023b8e4cfcb54bc04db4aefe62f9a', class: "search-actions-container" }, !overMobileBreakpoint ? (hAsync(Fragment, null, hAsync("slot", { name: "search" }), hasIconButtons && (hAsync("div", { class: "icon-buttons-container" }, hAsync("slot", { name: "buttons" }))))) : (hAsync(Fragment, null, hasSearchSlotContent && (hAsync("ic-button", { id: "search-toggle-button", ref: (el) => (this.mobileSearchButtonEl = el), onMouseDown: searchButtonMouseDownHandler, variant: "icon-tertiary", monochrome: true, size: searchButtonSize, "aria-label": mobileSearchButtonTitle, theme: foregroundColor, onClick: searchButtonClickHandler }, hAsync("slot", { name: "toggle-icon" }, hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#ffffff" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" }))))), hasMenuContent && (hAsync("div", { class: "menu-button-container" }, hAsync("span", { id: "navigation-landmark-button-text", class: "navigation-landmark-button-text", "aria-hidden": "true" }, "Main navigation button"), hAsync("nav", { "aria-labelledby": "navigation-landmark-button-text", "aria-hidden": `${navMenuVisible}` }, hAsync("ic-button", { id: "menu-button", ref: (el) => (this.menuButtonEl = el), theme: foregroundColor, variant: "secondary", monochrome: true, "aria-expanded": "false", "aria-haspopup": "true", "aria-label": `Open ${hasNavigation ? "navigation" : "app"} menu`, size: menuSize, onClick: menuButtonClick }, "Menu", hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#ffffff", slot: "left-icon" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" })))))))))))), mobileSearchBarVisible && (hAsync("div", { key: '8df188fb2b2c5f9ad4b83f775ac003c42c586c28', class: "search-bar-container" }, hAsync("slot", { key: '87c51c5a988a1666fabf77c0c322e24c38da06f7', name: "search" }))), hasNavigation && !overMobileBreakpoint && (hAsync("div", { key: '5e9a297d0d55c7668caef0381acea624c1730766', class: "navigation-tabs" }, hAsync("span", { key: '2711b4990964661e5aaf13217dfb4b59837ec56a', id: "navigation-landmark-text", class: "navigation-landmark-text", "aria-hidden": "true" }, "Main pages"), hAsync("nav", { key: 'f14341830688b0ec95b81f5c0a031d586b6737ea', "aria-labelledby": "navigation-landmark-text", class: "nav-panel-container" }, hAsync("ic-horizontal-scroll", { key: '1a018cab4bae42d13f8fe0e31ec1c94295e2e5bd',
21052
21056
  // eslint-disable-next-line
21053
21057
  // @ts-ignore
21054
- monochrome: true, appearance: foregroundColor }, hAsync("ul", { key: 'b85234906c34f1fa03b56903656d6f18eb20829d', class: "navigation-item-list", tabindex: "-1" }, hAsync("slot", { key: 'd8ef04882230955d8faba63b13edffeeb969e6e6', name: "navigation" }))))))))), navMenuVisible && (hAsync("ic-navigation-menu", { key: '46b00abe99e079c940d24d4e9693c5445ebcbafa', version: version, status: status, class: {
21058
+ monochrome: true, appearance: foregroundColor }, hAsync("ul", { key: 'c1afc90848573f75bb7091bfdaed21dd463b1964', class: "navigation-item-list", tabindex: "-1" }, hAsync("slot", { key: '7aae45b91ff85d637a13eacd96c4881a8f7d0366', name: "navigation" }))))))))), navMenuVisible && (hAsync("ic-navigation-menu", { key: '4281b4e7974114e4d9c99c977bcce5721426e915', version: version, status: status, class: {
21055
21059
  inline,
21056
- } }, hasIconButtons && (hAsync("div", { key: '29a9b4e6ba1733b2e96ad9b886bb879ade662d41', class: "menu-buttons-slot", slot: "buttons" }, hAsync("slot", { key: '748b40fd29aedee029a4fa27e999cf9844483613', name: "buttons" }))), hAsync("ul", { key: '20b81216ba0c01470673678a14d873fe8cbcaaae', slot: "navigation" }, hAsync("slot", { key: 'fb9e239a48344888b970e865e103b1ee2f9156ed', name: "navigation" }))))));
21060
+ } }, hasIconButtons && (hAsync("div", { key: '2895ff0177e5d71c36e1f2370667f8f97ab2a39b', class: "menu-buttons-slot", slot: "buttons" }, hAsync("slot", { key: '4ed99d20ae4afabc99c550d806932c5d6ea6411d', name: "buttons" }))), hAsync("ul", { key: '4446ad338421b13df915faee66bf960e325da631', slot: "navigation" }, hAsync("slot", { key: 'f67ac2fb347130bf0752ab27cd46ffcc14ef78fb', name: "navigation" }))))));
21057
21061
  }
21058
21062
  get el() { return getElement(this); }
21059
21063
  static get watchers() { return {
@@ -21072,6 +21076,7 @@ class TopNavigation {
21072
21076
  "status": [1],
21073
21077
  "theme": [1],
21074
21078
  "version": [1],
21079
+ "hideAppTitle": [4, "hide-app-title"],
21075
21080
  "appTitle": [1, "app-title"],
21076
21081
  "deviceSize": [32],
21077
21082
  "foregroundColor": [32],
package/hydrate/index.mjs CHANGED
@@ -20863,7 +20863,7 @@ class TopNavigation {
20863
20863
  */
20864
20864
  this.customMobileBreakpoint = DEVICE_SIZES.L;
20865
20865
  /**
20866
- * The URL to navigate to when the app title is clicked.
20866
+ * The URL to navigate to when the app title or app icon is clicked.
20867
20867
  */
20868
20868
  this.href = "/";
20869
20869
  /**
@@ -20886,6 +20886,9 @@ class TopNavigation {
20886
20886
  * The version info to be displayed.
20887
20887
  */
20888
20888
  this.version = "";
20889
+ /** If `true`, the app title will be hidden, but still accessible to screen readers.
20890
+ */
20891
+ this.hideAppTitle = false;
20889
20892
  this.checkSlots = () => {
20890
20893
  this.hasAppIcon = isSlotUsed(this.el, "app-icon");
20891
20894
  this.hasAppTitleSlot = isSlotUsed(this.el, "app-title");
@@ -21017,7 +21020,7 @@ class TopNavigation {
21017
21020
  this.foregroundColor = detail.mode;
21018
21021
  }
21019
21022
  render() {
21020
- const { appTitle, contentAligned, customMobileBreakpoint, deviceSize, el, foregroundColor, hasAppIcon, hasAppTitleSlot, hasFullWidthSearchBar, hasIconButtons, hasNavigation, hasSearchSlotContent, href, inline, menuButtonClick, mobileSearchBarVisible, navMenuVisible, searchButtonClickHandler, searchButtonMouseDownHandler, shortAppTitle, status, version, theme, } = this;
21023
+ const { appTitle, hideAppTitle, contentAligned, customMobileBreakpoint, deviceSize, el, foregroundColor, hasAppIcon, hasAppTitleSlot, hasFullWidthSearchBar, hasIconButtons, hasNavigation, hasSearchSlotContent, href, inline, menuButtonClick, mobileSearchBarVisible, navMenuVisible, searchButtonClickHandler, searchButtonMouseDownHandler, shortAppTitle, status, version, theme, } = this;
21021
21024
  const hasStatus = status !== "";
21022
21025
  const hasVersion = version !== "";
21023
21026
  const hasMenuContent = hasNavigation || hasIconButtons || hasStatus || hasVersion;
@@ -21037,19 +21040,20 @@ class TopNavigation {
21037
21040
  const attrs = Component == "a" && {
21038
21041
  href: href,
21039
21042
  };
21040
- return (hAsync(Host, { key: 'c0c457a694891bb06ad49c6601fb57d83e6ac6c6', class: {
21043
+ return (hAsync(Host, { key: 'dbb0dd3377419a8b10ada09db89524fadafc2af8', class: {
21041
21044
  "fullwidth-searchbar": hasFullWidthSearchBar,
21042
21045
  "mobile-mode": overMobileBreakpoint,
21043
21046
  [IcBrandForegroundEnum.Dark]: foregroundColor === IcBrandForegroundEnum.Dark,
21044
21047
  [`ic-theme-${theme}`]: theme !== "inherit",
21045
- } }, hAsync("div", { key: 'fd5f04cfce660e81024b45ebee521d73d42a448d', class: "top-navigation" }, hAsync("ic-section-container", { key: '028947110e4a66cccc58659ca164b2938cd7e533', aligned: contentAligned, "full-height": true }, hAsync("header", { key: 'f528842ca7c9fe6a127e53cf7ea0c5af9aeebe79', role: "banner" }, hAsync("div", { key: 'e23371a5539f686060f624053e8b04a2cef1f860', class: "top-panel-container" }, hAsync("div", { key: '25ede4b34cb30ba1d25d3fb06a3f44e48ad4a4c9', class: "app-details-container" }, (hasTitle || hasAppTitleSlot) && (hAsync(Component, Object.assign({ key: '666eddef4b8be110a1796083432cd754cda18152', class: "title-link" }, attrs), hasAppIcon && (hAsync("div", { key: 'cb7c5cdf6ccc28c5dc5d7699e0332770aa5246f9', class: "app-icon-container" }, hAsync("slot", { key: 'cd21e969e6fd23594aeb2b31468e81d1d68de7f7', name: "app-icon" }))), isSmallDeviceSize &&
21046
- (!isEmptyString(shortAppTitle) || shortAppTitleSlot) ? (hAsync("ic-typography", { variant: "subtitle-small", "aria-label": (!hasAppTitleSlot || !shortAppTitleSlot) &&
21047
- `${appTitle} (${shortAppTitle})` }, hAsync("h1", null, shortAppTitleSlot ? (hAsync("slot", { name: "short-app-title" })) : (shortAppTitle)))) : (hAsync("ic-typography", { variant: appTitleVariant }, hAsync("h1", { class: "title-wrap" }, hasAppTitleSlot ? (hAsync("slot", { name: "app-title" })) : (appTitle)))))), hasStatus && (hAsync("div", { key: '938a6e6d13bfd92a87baf43934342fb426802d65', class: "app-status" }, hAsync("ic-typography", { key: 'e3e8e83984ead5be2e4869e67640762af42f5f32', "aria-label": "app tag", variant: "label-uppercase", class: "app-status-text" }, status))), hasVersion && (hAsync("div", { key: '1129e504a1db3af56d2c931e08bd15f992b5721f', class: "app-version" }, hAsync("ic-typography", { key: 'c6f56458fc5f565055fdb0bde408e6078216d51b', variant: "label", class: "app-version-text", "aria-label": "app version" }, version)))), (hasSearchSlotContent || hasMenuContent) && (hAsync("div", { key: '4523603a02eeb22eca466afc1d2cfa44755b8f17', class: "search-menu-container" }, hAsync("div", { key: '77ff191542abaa41c8610418d54922e91268d364', class: "search-actions-container" }, !overMobileBreakpoint ? (hAsync(Fragment, null, hAsync("slot", { name: "search" }), hasIconButtons && (hAsync("div", { class: "icon-buttons-container" }, hAsync("slot", { name: "buttons" }))))) : (hAsync(Fragment, null, hasSearchSlotContent && (hAsync("ic-button", { id: "search-toggle-button", ref: (el) => (this.mobileSearchButtonEl = el), onMouseDown: searchButtonMouseDownHandler, variant: "icon-tertiary", monochrome: true, size: searchButtonSize, "aria-label": mobileSearchButtonTitle, theme: foregroundColor, onClick: searchButtonClickHandler }, hAsync("slot", { name: "toggle-icon" }, hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#ffffff" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" }))))), hasMenuContent && (hAsync("div", { class: "menu-button-container" }, hAsync("span", { id: "navigation-landmark-button-text", class: "navigation-landmark-button-text", "aria-hidden": "true" }, "Main navigation button"), hAsync("nav", { "aria-labelledby": "navigation-landmark-button-text", "aria-hidden": `${navMenuVisible}` }, hAsync("ic-button", { id: "menu-button", ref: (el) => (this.menuButtonEl = el), theme: foregroundColor, variant: "secondary", monochrome: true, "aria-expanded": "false", "aria-haspopup": "true", "aria-label": `Open ${hasNavigation ? "navigation" : "app"} menu`, size: menuSize, onClick: menuButtonClick }, "Menu", hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#ffffff", slot: "left-icon" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" })))))))))))), mobileSearchBarVisible && (hAsync("div", { key: 'e18aab12917ebdfead1c16c9d508c7feaf7797cb', class: "search-bar-container" }, hAsync("slot", { key: '4bf9ae342c58629ea76dc7de395128afd695dc8b', name: "search" }))), hasNavigation && !overMobileBreakpoint && (hAsync("div", { key: '30401c56949e21a33b18166da0ba2b07ad91c3f0', class: "navigation-tabs" }, hAsync("span", { key: '72561ee2554f09e0ff33b29fb257e7dde0a99a0f', id: "navigation-landmark-text", class: "navigation-landmark-text", "aria-hidden": "true" }, "Main pages"), hAsync("nav", { key: '411b215af2ef320d415af6e189a60dce1b730cdf', "aria-labelledby": "navigation-landmark-text", class: "nav-panel-container" }, hAsync("ic-horizontal-scroll", { key: 'fac1019061aeaea2ea8197cc0100a23f0cd1a69d',
21048
+ } }, hAsync("div", { key: '2c1e4277d92bd9954765b50b3f78669aa1af8390', class: "top-navigation" }, hAsync("ic-section-container", { key: 'f667d16e1693cd8bf3c45cbddee6777a3f50e21f', aligned: contentAligned, "full-height": true }, hAsync("header", { key: '0b4e0c2a117f54395045cd8b36b1be11da00c1c5', role: "banner" }, hAsync("div", { key: '09614426ebe2917000f92339784df56a9470d3d8', class: "top-panel-container" }, hAsync("div", { key: 'bff8f5c059015150a6aed52717ddc454fb050ccb', class: "app-details-container" }, (hasTitle || hasAppTitleSlot) && (hAsync(Component, Object.assign({ key: 'fcd00d5a3dec584f9eb5e3fc89eb66fb1405f1f5', class: "title-link" }, attrs, { "aria-label": hideAppTitle ? `${appTitle}` : undefined }), hasAppIcon && (hAsync("div", { key: '68385821513eca595805f502519f8c11185f1be0', class: "app-icon-container", "aria-hidden": "true" }, hAsync("slot", { key: '9e69b0b4d827ca7b85c39f9a4697a463a51ea6d0', name: "app-icon" }))), !hideAppTitle &&
21049
+ (isSmallDeviceSize &&
21050
+ (!isEmptyString(shortAppTitle) || shortAppTitleSlot) ? (hAsync("ic-typography", { variant: "subtitle-small", "aria-label": (!hasAppTitleSlot || !shortAppTitleSlot) &&
21051
+ `${appTitle} (${shortAppTitle})` }, hAsync("h1", null, shortAppTitleSlot ? (hAsync("slot", { name: "short-app-title" })) : (shortAppTitle)))) : (hAsync("ic-typography", { variant: appTitleVariant }, hAsync("h1", { class: "title-wrap" }, hasAppTitleSlot ? (hAsync("slot", { name: "app-title" })) : (appTitle))))))), hasStatus && (hAsync("div", { key: 'c1f5c9745ff525f8fe55b339592cffed6c94fe59', class: "app-status" }, hAsync("ic-typography", { key: '3eb8bb15698aaca7e4653674238f1f8481f56cd6', "aria-label": "app tag", variant: "label-uppercase", class: "app-status-text" }, status))), hasVersion && (hAsync("div", { key: 'd87b68713d46e53679c98c9dffc31ba4c669472c', class: "app-version" }, hAsync("ic-typography", { key: 'e04e0521c929bb988c227d6c81569e09c47fae45', variant: "label", class: "app-version-text", "aria-label": "app version" }, version)))), (hasSearchSlotContent || hasMenuContent) && (hAsync("div", { key: '3a276b4d6bf6a27d420febf654f48fd5a54365b7', class: "search-menu-container" }, hAsync("div", { key: '34415f5be77023b8e4cfcb54bc04db4aefe62f9a', class: "search-actions-container" }, !overMobileBreakpoint ? (hAsync(Fragment, null, hAsync("slot", { name: "search" }), hasIconButtons && (hAsync("div", { class: "icon-buttons-container" }, hAsync("slot", { name: "buttons" }))))) : (hAsync(Fragment, null, hasSearchSlotContent && (hAsync("ic-button", { id: "search-toggle-button", ref: (el) => (this.mobileSearchButtonEl = el), onMouseDown: searchButtonMouseDownHandler, variant: "icon-tertiary", monochrome: true, size: searchButtonSize, "aria-label": mobileSearchButtonTitle, theme: foregroundColor, onClick: searchButtonClickHandler }, hAsync("slot", { name: "toggle-icon" }, hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#ffffff" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" }))))), hasMenuContent && (hAsync("div", { class: "menu-button-container" }, hAsync("span", { id: "navigation-landmark-button-text", class: "navigation-landmark-button-text", "aria-hidden": "true" }, "Main navigation button"), hAsync("nav", { "aria-labelledby": "navigation-landmark-button-text", "aria-hidden": `${navMenuVisible}` }, hAsync("ic-button", { id: "menu-button", ref: (el) => (this.menuButtonEl = el), theme: foregroundColor, variant: "secondary", monochrome: true, "aria-expanded": "false", "aria-haspopup": "true", "aria-label": `Open ${hasNavigation ? "navigation" : "app"} menu`, size: menuSize, onClick: menuButtonClick }, "Menu", hAsync("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24px", viewBox: "0 0 24 24", width: "24px", fill: "#ffffff", slot: "left-icon" }, hAsync("path", { d: "M0 0h24v24H0V0z", fill: "none" }), hAsync("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" })))))))))))), mobileSearchBarVisible && (hAsync("div", { key: '8df188fb2b2c5f9ad4b83f775ac003c42c586c28', class: "search-bar-container" }, hAsync("slot", { key: '87c51c5a988a1666fabf77c0c322e24c38da06f7', name: "search" }))), hasNavigation && !overMobileBreakpoint && (hAsync("div", { key: '5e9a297d0d55c7668caef0381acea624c1730766', class: "navigation-tabs" }, hAsync("span", { key: '2711b4990964661e5aaf13217dfb4b59837ec56a', id: "navigation-landmark-text", class: "navigation-landmark-text", "aria-hidden": "true" }, "Main pages"), hAsync("nav", { key: 'f14341830688b0ec95b81f5c0a031d586b6737ea', "aria-labelledby": "navigation-landmark-text", class: "nav-panel-container" }, hAsync("ic-horizontal-scroll", { key: '1a018cab4bae42d13f8fe0e31ec1c94295e2e5bd',
21048
21052
  // eslint-disable-next-line
21049
21053
  // @ts-ignore
21050
- monochrome: true, appearance: foregroundColor }, hAsync("ul", { key: 'b85234906c34f1fa03b56903656d6f18eb20829d', class: "navigation-item-list", tabindex: "-1" }, hAsync("slot", { key: 'd8ef04882230955d8faba63b13edffeeb969e6e6', name: "navigation" }))))))))), navMenuVisible && (hAsync("ic-navigation-menu", { key: '46b00abe99e079c940d24d4e9693c5445ebcbafa', version: version, status: status, class: {
21054
+ monochrome: true, appearance: foregroundColor }, hAsync("ul", { key: 'c1afc90848573f75bb7091bfdaed21dd463b1964', class: "navigation-item-list", tabindex: "-1" }, hAsync("slot", { key: '7aae45b91ff85d637a13eacd96c4881a8f7d0366', name: "navigation" }))))))))), navMenuVisible && (hAsync("ic-navigation-menu", { key: '4281b4e7974114e4d9c99c977bcce5721426e915', version: version, status: status, class: {
21051
21055
  inline,
21052
- } }, hasIconButtons && (hAsync("div", { key: '29a9b4e6ba1733b2e96ad9b886bb879ade662d41', class: "menu-buttons-slot", slot: "buttons" }, hAsync("slot", { key: '748b40fd29aedee029a4fa27e999cf9844483613', name: "buttons" }))), hAsync("ul", { key: '20b81216ba0c01470673678a14d873fe8cbcaaae', slot: "navigation" }, hAsync("slot", { key: 'fb9e239a48344888b970e865e103b1ee2f9156ed', name: "navigation" }))))));
21056
+ } }, hasIconButtons && (hAsync("div", { key: '2895ff0177e5d71c36e1f2370667f8f97ab2a39b', class: "menu-buttons-slot", slot: "buttons" }, hAsync("slot", { key: '4ed99d20ae4afabc99c550d806932c5d6ea6411d', name: "buttons" }))), hAsync("ul", { key: '4446ad338421b13df915faee66bf960e325da631', slot: "navigation" }, hAsync("slot", { key: 'f67ac2fb347130bf0752ab27cd46ffcc14ef78fb', name: "navigation" }))))));
21053
21057
  }
21054
21058
  get el() { return getElement(this); }
21055
21059
  static get watchers() { return {
@@ -21068,6 +21072,7 @@ class TopNavigation {
21068
21072
  "status": [1],
21069
21073
  "theme": [1],
21070
21074
  "version": [1],
21075
+ "hideAppTitle": [4, "hide-app-title"],
21071
21076
  "appTitle": [1, "app-title"],
21072
21077
  "deviceSize": [32],
21073
21078
  "foregroundColor": [32],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukic/web-components",
3
- "version": "3.25.0",
3
+ "version": "3.26.0",
4
4
  "description": "A web component UI library compiled with StencilJS",
5
5
  "bugs": {
6
6
  "url": "https://github.com/mi6/ic-ui-kit",
@@ -91,5 +91,5 @@
91
91
  "collection:main": "dist/collection/index.js",
92
92
  "es2015": "dist/esm/index.mjs",
93
93
  "es2017": "dist/esm/index.mjs",
94
- "gitHead": "14a2f9ee56ef57b93e9a746eb0b1f120573ae9f9"
94
+ "gitHead": "4c27a0eb03169a660444539c4a824d23239683a0"
95
95
  }
package/vscode-data.json CHANGED
@@ -5091,9 +5091,13 @@
5091
5091
  "name": "custom-mobile-breakpoint",
5092
5092
  "description": "Can set a custom breakpoint for the top navigation to switch to mobile mode.\nMust be one of our specified breakpoints in px: `0`, `576`, `768`, `992`, `1200`."
5093
5093
  },
5094
+ {
5095
+ "name": "hide-app-title",
5096
+ "description": "If `true`, the app title will be hidden, but still accessible to screen readers."
5097
+ },
5094
5098
  {
5095
5099
  "name": "href",
5096
- "description": "The URL to navigate to when the app title is clicked."
5100
+ "description": "The URL to navigate to when the app title or app icon is clicked."
5097
5101
  },
5098
5102
  {
5099
5103
  "name": "inline",
@@ -1 +0,0 @@
1
- {"version":3,"names":["icTopNavigationCss","IcTopNavigationStyle0","TopNavigation","constructor","hostRef","this","hasAppIcon","hasAppTitleSlot","hasIconButtons","hasNavigation","hasSearchSlotContent","resizeObserver","searchBar","deviceSize","DEVICE_SIZES","XL","foregroundColor","getBrandForegroundAppearance","hasFullWidthSearchBar","mobileSearchBarVisible","mobileSearchHiddenOnBlur","navMenuVisible","searchButtonClick","searchValue","contentAligned","customMobileBreakpoint","L","href","inline","shortAppTitle","status","theme","version","checkSlots","isSlotUsed","el","slottedAppIcon","querySelector","tagName","tabIndex","initialiseSearchBar","slot","getSlot","hideLabel","toggleSearchBar","_a","mobileSearchButtonEl","setAttribute","fullWidth","setTimeout","focus","menuButtonClick","showNavMenu","show","icNavigationMenuOpened","icNavigationMenuClosed","emit","document","body","style","height","overflow","searchButtonMouseDownHandler","searchButtonClickHandler","resizeObserverCallback","currSize","icTopNavResized","size","activeElement","removeAttribute","runResizeObserver","ResizeObserver","getCurrentDeviceSize","observe","watchPropHandler","newValue","oldValue","onComponentPropUndefinedChange","disconnectedCallback","disconnect","componentWillLoad","componentDidLoad","checkResizeObserver","onComponentRequiredPropUndefined","prop","appTitle","propName","componentWillRender","navBarMenuCloseHandler","menuButtonEl","setFocus","searchInputBlurHandler","detail","value","searchValueChangeHandler","brandChangeHandler","mode","render","hasStatus","hasVersion","hasMenuContent","isSmallDeviceSize","S","searchButtonSize","hasTitle","isPropDefined","overMobileBreakpoint","appTitleVariant","mobileSearchButtonTitle","menuSize","shortAppTitleSlot","Component","attrs","h","Host","key","class","IcBrandForegroundEnum","Dark","aligned","role","Object","assign","name","isEmptyString","variant","Fragment","id","ref","onMouseDown","monochrome","onClick","xmlns","viewBox","fill","d","width","appearance","tabindex"],"sources":["src/components/ic-top-navigation/ic-top-navigation.css?tag=ic-top-navigation&encapsulation=shadow","src/components/ic-top-navigation/ic-top-navigation.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n color: var(--ic-top-navigation-text);\n width: 100%;\n position: relative;\n\n --ic-typography-color: var(--ic-top-navigation-text);\n --ic-button-secondary-text-monochrome: var(--ic-brand-text-color);\n --ic-button-secondary-border-monochrome: var(--ic-brand-text-color);\n --navigation-link-colour: var(--ic-top-navigation-text);\n --ic-top-navigation-status-tag-text: var(--ic-color-text-primary-light);\n --ic-top-navigation-status-tag-secondary: var(--ic-state-layer-lighten-20);\n}\n\n:host(.dark) {\n --ic-top-navigation-status-tag-text: var(--ic-color-text-primary-dark);\n --ic-top-navigation-status-tag-secondary: var(--ic-state-layer-darken-10);\n --ic-top-navigation-title-hover: var(--ic-action-dark-bg-hover);\n --ic-top-navigation-title-pressed: var(--ic-action-dark-bg-pressed);\n}\n\n:host(.dark) ::slotted(ic-navigation-button) {\n --ic-button-icon-monochrome: var(--ic-color-text-primary-light);\n}\n\n::slotted(ic-navigation-button) {\n --ic-button-icon-monochrome: white;\n}\n\n:host .top-navigation {\n background-color: var(--ic-top-navigation-background);\n height: max-content;\n}\n\n:host(.fullwidth-searchbar) slot[name=\"search\"]::slotted(form) {\n width: 100%;\n}\n\n:host .title-link {\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n padding: var(--ic-space-xxs);\n transition: var(--ic-easing-transition-fast);\n}\n\n:host .title-link,\n:host .title-link:visited,\n:host .title-link:active,\n:host .title-link ::slotted(a),\n:host .title-link:visited ::slotted(a),\n:host .title-link:active ::slotted(a) {\n color: var(--ic-top-navigation-icon-and-label);\n text-decoration: none;\n outline: none;\n\n --ic-typography-color: var(--ic-top-navigation-icon-and-label);\n}\n\n:host .title-link:hover:not(:focus) {\n background-color: var(--ic-top-navigation-title-hover);\n}\n\n:host .title-link:active:not(:focus) {\n background-color: var(--ic-top-navigation-title-pressed);\n}\n\n:host .title-link:hover {\n border-radius: var(--ic-border-radius);\n}\n\n:host .menu-button-container {\n --ic-button-secondary-text-monochrome: var(--ic-brand-text-color);\n --ic-button-secondary-border-monochrome: var(--ic-brand-text-color);\n}\n\n:host .title-link:focus,\n:host .title-link:focus-within {\n border-radius: var(--ic-border-radius);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host .title-link ic-typography {\n font-weight: 600;\n}\n\n:host .nav-panel-container {\n border-top: var(--ic-space-1px) solid var(--ic-top-navigation-keyline);\n padding: 0 var(--ic-space-lg);\n margin-left: calc(-1 * var(--section-container-margin));\n margin-right: calc(-1 * var(--section-container-margin));\n display: flex;\n}\n\n:host(.dark) .nav-panel-container {\n border-top: var(--ic-border-keyline-darken);\n}\n\n.top-panel-container {\n display: flex;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navigation-tabs {\n margin-top: calc(-1 * var(--ic-space-1px));\n}\n\n.app-details-container {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n margin-right: var(--ic-space-md);\n}\n\n.app-icon-container {\n display: flex;\n padding-right: var(--ic-space-xs);\n}\n\n.icon-buttons-container {\n display: flex;\n margin-left: var(--ic-space-md);\n}\n\n.icon-buttons-container ::slotted(nav) {\n display: flex;\n}\n\n.title-wrap {\n overflow-wrap: break-word;\n word-wrap: break-word;\n -ms-word-break: break-all;\n word-break: break-word;\n hyphens: auto;\n}\n\n:host .app-status {\n border-radius: var(--ic-space-md);\n background-color: var(--ic-top-navigation-status-tag);\n color: var(--ic-top-navigation-status-tag-text);\n\n --ic-typography-color: var(--ic-top-navigation-status-tag-text);\n\n padding: var(--ic-space-xxs) var(--ic-space-lg);\n margin-left: var(--ic-space-md);\n flex: 1 1 0;\n max-width: fit-content;\n}\n\n:host .app-version {\n border-radius: var(--ic-space-md);\n background-color: var(--ic-top-navigation-status-tag-secondary);\n color: var(--ic-top-navigation-status-tag);\n padding: var(--ic-space-xxs) var(--ic-space-sm);\n margin-left: var(--ic-space-xs);\n flex: 1 1 0;\n max-width: fit-content;\n\n --ic-typography-color: var(--ic-top-navigation-status-tag);\n}\n\nslot[name=\"app-icon\"]::slotted(*) {\n fill: var(--ic-top-navigation-logo);\n width: 2em;\n height: 2em;\n cursor: pointer;\n}\n\nslot[name=\"toggle-icon\"] svg {\n fill: var(--ic-top-navigation-icon);\n}\n\n.search-menu-container {\n justify-content: right;\n display: flex;\n align-items: center;\n}\n\n.menu-button-container {\n margin-left: var(--ic-space-md);\n}\n\n.menu-button-container .navigation-landmark-button-text {\n position: absolute;\n left: -9999px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n color: var(--ic-brand-text-color);\n}\n\n.menu-button-container .navigation-landmark-button-text:dir(rtl) {\n right: -9999px;\n}\n\n.search-actions-container {\n display: flex;\n}\n\n.menu-buttons-slot {\n display: flex;\n flex-direction: column;\n}\n\n.navigation-landmark-text {\n position: absolute;\n width: var(--ic-space-1px);\n height: var(--ic-space-1px);\n padding: 0;\n margin: calc(-1 * var(--ic-space-1px));\n overflow: hidden;\n}\n\n.navigation-item-list {\n display: flex;\n list-style: none;\n height: 2.75rem;\n}\n\n.navigation-item-list::-webkit-scrollbar {\n display: none;\n}\n\n:host ic-section-container {\n padding-bottom: 0 !important;\n padding-top: 0 !important;\n}\n\n@media screen and (min-width: 993px) {\n .app-details-container {\n margin-right: var(--ic-space-lg);\n }\n}\n\n/* large */\n@media screen and (max-width: 1200px) {\n :host .nav-panel-container {\n padding: 0 var(--ic-space-md);\n }\n}\n\n/** Mobile styling **/\n:host(.mobile-mode) .app-status,\n:host(.mobile-mode) .app-version {\n display: none;\n}\n\n:host(.mobile-mode) .title-link {\n margin-right: var(--ic-space-xs);\n}\n\n:host(.mobile-mode) .search-menu-container {\n max-width: 10rem;\n}\n\n:host(.mobile-mode) .search-bar-container {\n display: flex;\n justify-content: center;\n align-items: center;\n border-top: var(--ic-border-keyline-darken);\n height: 4rem;\n padding-left: var(--ic-space-md);\n padding-right: var(--ic-space-md);\n margin-left: calc(-1 * var(--section-container-margin));\n margin-right: calc(-1 * var(--section-container-margin));\n}\n\n/* x small */\n@media screen and (max-width: 576px) {\n :host .title-link {\n margin-right: var(--ic-space-xxxs);\n word-break: break-word;\n hyphens: none;\n }\n\n .top-panel-container {\n min-height: 2.5rem;\n }\n\n .search-bar-container {\n margin-top: 0;\n height: 3.5rem;\n padding-left: var(--ic-space-xs);\n padding-right: var(--ic-space-xs);\n }\n\n .menu-button-container {\n margin-left: var(--ic-space-sm);\n }\n\n slot[name=\"app-icon\"]::slotted(*) {\n width: 1.5em;\n height: 1.5em;\n }\n\n slot[name=\"toggle-icon\"] svg {\n width: 1.5em;\n height: 1.5em;\n }\n}\n\n@media (forced-colors: active) {\n :host .top-navigation {\n border-bottom: var(--ic-border-hc);\n }\n\n .app-status,\n .app-version {\n border: var(--ic-border-hc);\n }\n\n slot[name=\"app-icon\"]::slotted(*) {\n fill: currentcolor;\n }\n\n slot[name=\"toggle-icon\"] svg {\n fill: currentcolor;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host .title-link {\n transition: none;\n }\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n State,\n Listen,\n Event,\n EventEmitter,\n Watch,\n Fragment,\n} from \"@stencil/core\";\n\nimport {\n IcTypographyVariants,\n IcAlignment,\n IcBrandForeground,\n IcBrandForegroundEnum,\n IcBrand,\n IcDeviceSizes,\n IcValueEventDetail,\n IcThemeMode,\n} from \"../../utils/types\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n getBrandForegroundAppearance,\n getSlot,\n onComponentPropUndefinedChange,\n onComponentRequiredPropUndefined,\n isSlotUsed,\n isEmptyString,\n isPropDefined,\n} from \"../../utils/helpers\";\nimport { IcSearchBarBlurEventDetail } from \"../ic-search-bar/ic-search-bar.types\";\n\n/**\n * @slot app-icon - Content will be rendered to left of app title. Anything that is slotted here will be hidden from screen readers.\n * @slot app-title - Handle routing by nesting a route in the app title.\n * @slot short-app-title - Handle routing by nesting a route in the short app title (to be displayed in place of app title on small screen sizes).\n * @slot search - Content will be rendered in search area to left of buttons.\n * @slot toggle-icon - Icon to be displayed on the button to toggle search slot content on smaller devices\n * @slot navigation - Content will be rendered in navigation panel.\n * @slot buttons - Content will be rendered to right of search bar.\n */\n@Component({\n tag: \"ic-top-navigation\",\n styleUrl: \"ic-top-navigation.css\",\n shadow: true,\n})\nexport class TopNavigation {\n private hasAppIcon = false;\n private hasAppTitleSlot = false;\n private hasIconButtons = false;\n private hasNavigation = false;\n private hasSearchSlotContent = false;\n private mobileSearchButtonEl?: HTMLIcButtonElement;\n private resizeObserver: ResizeObserver | null = null;\n private searchBar: HTMLIcSearchBarElement | null = null;\n private menuButtonEl?: HTMLIcButtonElement;\n\n @Element() el: HTMLIcTopNavigationElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() foregroundColor: IcBrandForeground = getBrandForegroundAppearance();\n @State() hasFullWidthSearchBar = false;\n @State() mobileSearchBarVisible = false;\n @State() mobileSearchHiddenOnBlur = false;\n @State() navMenuVisible = false;\n @State() searchButtonClick = false;\n @State() searchValue = \"\";\n\n /**\n * The alignment of the top navigation content.\n */\n @Prop() contentAligned: IcAlignment = \"full-width\";\n /**\n * Can set a custom breakpoint for the top navigation to switch to mobile mode.\n * Must be one of our specified breakpoints in px: `0`, `576`, `768`, `992`, `1200`.\n */\n @Prop() customMobileBreakpoint: IcDeviceSizes = DEVICE_SIZES.L;\n /**\n * The URL to navigate to when the app title is clicked.\n */\n @Prop() href = \"/\";\n\n /**\n * If `true`, the flyout navigation menu on small devices will be contained by the parent element.\n */\n @Prop() inline = false;\n\n /**\n * The short title of the app to be displayed at small screen sizes in place of the app title.\n */\n @Prop() shortAppTitle = \"\";\n\n /**\n * The status info to be displayed.\n */\n @Prop() status = \"\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The version info to be displayed.\n */\n @Prop() version = \"\";\n\n /**\n * The app title to be displayed. This is required, unless a slotted app title link is used.\n */\n @Prop() appTitle?: string;\n @Watch(\"appTitle\")\n watchPropHandler(newValue: string, oldValue: string): void {\n //added for Gatsby rehydration issue where prop is initially undefined but then changes to actual value\n //this watch can be removed once Gatsby hydration issue is resolved\n onComponentPropUndefinedChange(\n oldValue,\n newValue,\n this.initialiseSearchBar\n );\n }\n\n /**\n * @internal - Emitted when the menu is closed.\n */\n @Event() icNavigationMenuClosed: EventEmitter<void>;\n\n /**\n * @internal - Emitted when the menu is opened.\n */\n @Event() icNavigationMenuOpened: EventEmitter<void>;\n\n /**\n * Emitted when the top navigation is resized.\n */\n @Event() icTopNavResized: EventEmitter<{ size: number }>;\n\n disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.checkSlots();\n this.deviceSize = getCurrentDeviceSize();\n this.initialiseSearchBar();\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n if (!this.hasAppTitleSlot) {\n onComponentRequiredPropUndefined(\n [{ prop: this.appTitle, propName: \"app-title\" }],\n \"Top Navigation\"\n );\n }\n }\n\n componentWillRender(): void {\n this.checkSlots();\n }\n\n @Listen(\"icNavigationMenuClose\", {})\n navBarMenuCloseHandler(): void {\n this.showNavMenu(false);\n this.menuButtonEl?.setFocus();\n }\n\n @Listen(\"icSearchBarBlur\", {})\n searchInputBlurHandler({\n detail,\n }: CustomEvent<IcSearchBarBlurEventDetail>): void {\n if (detail !== null) {\n if (this.mobileSearchBarVisible && !this.searchButtonClick) {\n //don't hide if blur was triggered by click on search button - let the click handler toggle the state\n this.toggleSearchBar();\n }\n this.searchValue = detail.value as string;\n }\n }\n\n @Listen(\"icChange\", {})\n searchValueChangeHandler({ detail }: CustomEvent<IcValueEventDetail>): void {\n this.searchValue = detail.value;\n }\n\n @Listen(\"brandChange\", { target: \"document\" })\n brandChangeHandler({ detail }: CustomEvent<IcBrand>): void {\n this.foregroundColor = detail.mode;\n }\n\n private checkSlots = () => {\n this.hasAppIcon = isSlotUsed(this.el, \"app-icon\");\n this.hasAppTitleSlot = isSlotUsed(this.el, \"app-title\");\n this.hasNavigation = isSlotUsed(this.el, \"navigation\");\n this.hasIconButtons = isSlotUsed(this.el, \"buttons\");\n this.hasSearchSlotContent = isSlotUsed(this.el, \"search\");\n\n if (this.hasAppIcon) {\n const slottedAppIcon =\n this.el.querySelector<HTMLElement>('[slot=\"app-icon\"]');\n if (slottedAppIcon && slottedAppIcon.tagName === \"A\")\n slottedAppIcon.tabIndex = -1;\n }\n };\n\n private initialiseSearchBar = () => {\n if (!this.hasSearchSlotContent) return;\n\n const slot = getSlot(this.el, \"search\");\n if (slot?.tagName === \"IC-SEARCH-BAR\") {\n this.searchBar = slot as HTMLIcSearchBarElement;\n } else if (slot?.tagName === \"FORM\") {\n this.searchBar = slot.querySelector(\"ic-search-bar\");\n }\n\n if (this.searchBar !== null) {\n this.searchBar.hideLabel = true;\n }\n };\n\n private toggleSearchBar = () => {\n this.mobileSearchBarVisible = !this.mobileSearchBarVisible;\n\n if (!this.searchBar) return;\n\n this.mobileSearchButtonEl?.setAttribute(\n \"aria-label\",\n `${this.mobileSearchBarVisible ? \"Hide\" : \"Show\"} search`\n );\n this.hasFullWidthSearchBar = this.mobileSearchBarVisible;\n this.searchBar.fullWidth = this.mobileSearchBarVisible;\n if (this.mobileSearchBarVisible) {\n setTimeout(() => {\n this.searchBar?.focus();\n }, 100);\n }\n };\n\n private menuButtonClick = () => {\n this.showNavMenu(true);\n };\n\n private showNavMenu = (show: boolean) => {\n this.navMenuVisible = show;\n (show ? this.icNavigationMenuOpened : this.icNavigationMenuClosed).emit();\n document.body.style.height = show ? \"100%\" : \"auto\";\n document.body.style.overflow = show ? \"hidden\" : \"auto\";\n };\n\n private searchButtonMouseDownHandler = () => {\n this.searchButtonClick = true;\n };\n\n private searchButtonClickHandler = () => {\n this.toggleSearchBar();\n this.searchButtonClick = false;\n };\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize === this.deviceSize) return;\n\n this.deviceSize = currSize;\n if (currSize > this.customMobileBreakpoint) {\n this.showNavMenu(false);\n if (this.mobileSearchBarVisible) {\n this.toggleSearchBar();\n }\n }\n this.icTopNavResized.emit({\n size: currSize,\n });\n if (this.searchBar && document.activeElement === this.searchBar) {\n this.searchBar.setAttribute(\"hidden\", \"true\");\n //remove attribute again as this trigger a redraw & applies css\n this.searchBar.removeAttribute(\"hidden\");\n setTimeout(() => {\n this.searchBar?.focus();\n }, 100);\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback(getCurrentDeviceSize());\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n const {\n appTitle,\n contentAligned,\n customMobileBreakpoint,\n deviceSize,\n el,\n foregroundColor,\n hasAppIcon,\n hasAppTitleSlot,\n hasFullWidthSearchBar,\n hasIconButtons,\n hasNavigation,\n hasSearchSlotContent,\n href,\n inline,\n menuButtonClick,\n mobileSearchBarVisible,\n navMenuVisible,\n searchButtonClickHandler,\n searchButtonMouseDownHandler,\n shortAppTitle,\n status,\n version,\n theme,\n } = this;\n\n const hasStatus = status !== \"\";\n const hasVersion = version !== \"\";\n const hasMenuContent =\n hasNavigation || hasIconButtons || hasStatus || hasVersion;\n\n const isSmallDeviceSize = deviceSize <= DEVICE_SIZES.S;\n\n const searchButtonSize = isSmallDeviceSize ? \"medium\" : \"large\";\n const hasTitle = appTitle !== \"\" && isPropDefined(appTitle);\n const overMobileBreakpoint = deviceSize <= customMobileBreakpoint;\n\n const appTitleVariant: IcTypographyVariants = overMobileBreakpoint\n ? isSmallDeviceSize\n ? \"subtitle-small\"\n : \"h4\"\n : \"h3\";\n\n const mobileSearchButtonTitle = `${\n mobileSearchBarVisible ? \"Hide\" : \"Show\"\n } search`;\n const menuSize = isSmallDeviceSize ? \"small\" : \"medium\";\n\n const shortAppTitleSlot = isSlotUsed(el, \"short-app-title\");\n const Component = hasAppTitleSlot ? \"div\" : \"a\";\n const attrs = Component == \"a\" && {\n href: href,\n };\n\n return (\n <Host\n class={{\n \"fullwidth-searchbar\": hasFullWidthSearchBar,\n \"mobile-mode\": overMobileBreakpoint,\n [IcBrandForegroundEnum.Dark]:\n foregroundColor === IcBrandForegroundEnum.Dark,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <div class=\"top-navigation\">\n <ic-section-container aligned={contentAligned} full-height>\n <header role=\"banner\">\n <div class=\"top-panel-container\">\n <div class=\"app-details-container\">\n {(hasTitle || hasAppTitleSlot) && (\n <Component class=\"title-link\" {...attrs}>\n {hasAppIcon && (\n <div class=\"app-icon-container\">\n <slot name=\"app-icon\" />\n </div>\n )}\n {isSmallDeviceSize &&\n (!isEmptyString(shortAppTitle) || shortAppTitleSlot) ? (\n <ic-typography\n variant=\"subtitle-small\"\n aria-label={\n (!hasAppTitleSlot || !shortAppTitleSlot) &&\n `${appTitle} (${shortAppTitle})`\n }\n >\n <h1>\n {shortAppTitleSlot ? (\n <slot name=\"short-app-title\"></slot>\n ) : (\n shortAppTitle\n )}\n </h1>\n </ic-typography>\n ) : (\n <ic-typography variant={appTitleVariant}>\n <h1 class=\"title-wrap\">\n {hasAppTitleSlot ? (\n <slot name=\"app-title\"></slot>\n ) : (\n appTitle\n )}\n </h1>\n </ic-typography>\n )}\n </Component>\n )}\n {hasStatus && (\n <div class=\"app-status\">\n <ic-typography\n aria-label=\"app tag\"\n variant=\"label-uppercase\"\n class=\"app-status-text\"\n >\n {status}\n </ic-typography>\n </div>\n )}\n {hasVersion && (\n <div class=\"app-version\">\n <ic-typography\n variant=\"label\"\n class=\"app-version-text\"\n aria-label=\"app version\"\n >\n {version}\n </ic-typography>\n </div>\n )}\n </div>\n\n {(hasSearchSlotContent || hasMenuContent) && (\n <div class=\"search-menu-container\">\n <div class=\"search-actions-container\">\n {!overMobileBreakpoint ? (\n <Fragment>\n <slot name=\"search\"></slot>\n {hasIconButtons && (\n <div class=\"icon-buttons-container\">\n <slot name=\"buttons\"></slot>\n </div>\n )}\n </Fragment>\n ) : (\n <Fragment>\n {hasSearchSlotContent && (\n <ic-button\n id=\"search-toggle-button\"\n ref={(el) => (this.mobileSearchButtonEl = el)}\n onMouseDown={searchButtonMouseDownHandler}\n variant=\"icon-tertiary\"\n monochrome\n size={searchButtonSize}\n aria-label={mobileSearchButtonTitle}\n theme={foregroundColor as IcThemeMode}\n onClick={searchButtonClickHandler}\n >\n <slot name=\"toggle-icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"#ffffff\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </svg>\n </slot>\n </ic-button>\n )}\n {hasMenuContent && (\n <div class=\"menu-button-container\">\n <span\n id=\"navigation-landmark-button-text\"\n class=\"navigation-landmark-button-text\"\n aria-hidden=\"true\"\n >\n Main navigation button\n </span>\n <nav\n aria-labelledby=\"navigation-landmark-button-text\"\n aria-hidden={`${navMenuVisible}`}\n >\n <ic-button\n id=\"menu-button\"\n ref={(el) => (this.menuButtonEl = el)}\n theme={foregroundColor as IcThemeMode}\n variant=\"secondary\"\n monochrome\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n aria-label={`Open ${\n hasNavigation ? \"navigation\" : \"app\"\n } menu`}\n size={menuSize}\n onClick={menuButtonClick}\n >\n Menu\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#ffffff\"\n slot=\"left-icon\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </svg>\n </ic-button>\n </nav>\n </div>\n )}\n </Fragment>\n )}\n </div>\n </div>\n )}\n </div>\n\n {mobileSearchBarVisible && (\n <div class=\"search-bar-container\">\n <slot name=\"search\"></slot>\n </div>\n )}\n\n {hasNavigation && !overMobileBreakpoint && (\n <div class=\"navigation-tabs\">\n <span\n id=\"navigation-landmark-text\"\n class=\"navigation-landmark-text\"\n aria-hidden=\"true\"\n >\n Main pages\n </span>\n <nav\n aria-labelledby=\"navigation-landmark-text\"\n class=\"nav-panel-container\"\n >\n <ic-horizontal-scroll\n // eslint-disable-next-line\n // @ts-ignore\n monochrome\n appearance={foregroundColor}\n >\n <ul class=\"navigation-item-list\" tabindex=\"-1\">\n <slot name=\"navigation\"></slot>\n </ul>\n </ic-horizontal-scroll>\n </nav>\n </div>\n )}\n </header>\n </ic-section-container>\n </div>\n {navMenuVisible && (\n <ic-navigation-menu\n version={version}\n status={status}\n class={{\n inline,\n }}\n >\n {hasIconButtons && (\n <div class=\"menu-buttons-slot\" slot=\"buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n )}\n <ul slot=\"navigation\">\n <slot name=\"navigation\"></slot>\n </ul>\n </ic-navigation-menu>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}