@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.
- package/dist/cjs/core.cjs.js +1 -1
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-top-navigation.cjs.entry.js +12 -8
- package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +33 -9
- package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
- package/dist/collection/components/ic-top-navigation/ic-top-navigation.stories.js +26 -0
- package/dist/components/ic-pagination-bar.js.map +1 -1
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-skeleton.js.map +1 -1
- package/dist/components/ic-top-navigation.js +13 -8
- package/dist/components/ic-top-navigation.js.map +1 -1
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/{p-46e5a58b.entry.js → p-12474095.entry.js} +2 -2
- package/dist/core/p-12474095.entry.js.map +1 -0
- package/dist/core/p-98dee727.entry.js.map +1 -1
- package/dist/esm/core.js +1 -1
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-top-navigation.entry.js +12 -8
- package/dist/esm/ic-top-navigation.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +4 -1
- package/dist/types/components.d.ts +10 -2
- package/hydrate/index.js +13 -8
- package/hydrate/index.mjs +13 -8
- package/package.json +2 -2
- package/vscode-data.json +5 -1
- 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: '
|
|
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: '
|
|
21050
|
-
(
|
|
21051
|
-
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
21046
|
-
(
|
|
21047
|
-
|
|
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: '
|
|
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: '
|
|
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.
|
|
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": "
|
|
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":[]}
|