@sapudex/web-components 2.32.0 → 2.33.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/cypress/fixtures/masthead-shell.ts +281 -0
- package/cypress/specs/Breadcrumbs.cy.tsx +196 -1
- package/cypress/specs/MastheadShell.cy.tsx +645 -0
- package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +289 -95
- package/cypress/specs/SecondaryNavigationMobile.cy.tsx +42 -0
- package/cypress/specs/SelectBox.cy.tsx +35 -0
- package/cypress/specs/StepInput.cy.tsx +507 -0
- package/cypress/specs/TabNavigation.cy.tsx +431 -10
- package/cypress/support/component-imports.instrumented.ts +16 -0
- package/cypress/support/component-imports.src.ts +15 -3
- package/dist/Breadcrumbs.d.ts +12 -0
- package/dist/Breadcrumbs.js +30 -6
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/BreadcrumbsPopoverTemplate.js +10 -1
- package/dist/BreadcrumbsPopoverTemplate.js.map +1 -1
- package/dist/BreadcrumbsTemplate.js +1 -1
- package/dist/BreadcrumbsTemplate.js.map +1 -1
- package/dist/HeroBanner.d.ts +0 -3
- package/dist/HeroBanner.js +0 -5
- package/dist/HeroBanner.js.map +1 -1
- package/dist/HeroBannerTemplate.d.ts +2 -0
- package/dist/HeroBannerTemplate.js +6 -1
- package/dist/HeroBannerTemplate.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +1 -6
- package/dist/SecondaryNavigation.js +6 -59
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.d.ts +5 -12
- package/dist/SecondaryNavigationItem.js +34 -65
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationItemBase.d.ts +0 -1
- package/dist/SecondaryNavigationItemBase.js +0 -4
- package/dist/SecondaryNavigationItemBase.js.map +1 -1
- package/dist/SelectBase.js +2 -1
- package/dist/SelectBase.js.map +1 -1
- package/dist/StepInput.d.ts +3 -0
- package/dist/StepInput.js +17 -0
- package/dist/StepInput.js.map +1 -1
- package/dist/StepInputTemplate.js +1 -1
- package/dist/StepInputTemplate.js.map +1 -1
- package/dist/Tab.d.ts +19 -0
- package/dist/Tab.js +22 -0
- package/dist/Tab.js.map +1 -1
- package/dist/TabNavigation.d.ts +9 -1
- package/dist/TabNavigation.js +25 -7
- package/dist/TabNavigation.js.map +1 -1
- package/dist/assets/{InputSuggestions-CHLLTki3.js → InputSuggestions-B_Dl2L6w.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-vM1eIFe4.js → ListItemStandardExpandableTextTemplate-9Z-aZmJx.js} +1 -1
- package/dist/assets/{bundle-S1uYREqT.css → bundle-DbTEs-Za.css} +1 -1
- package/dist/assets/{bundle.esm-fUZ1I3qm.js → bundle.esm-BlIxH9k1.js} +210 -210
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/BreadcrumbsPopover.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/Modal.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/custom-elements-internal.json +57 -2
- package/dist/custom-elements.json +57 -2
- package/dist/generated/templates/ListItemTemplate.lit.js +4 -4
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +4 -4
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +3 -3
- package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +5 -5
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js +40 -24
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
- package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
- package/dist/generated/themes/FilterMenu.css.js +1 -1
- package/dist/generated/themes/FilterMenu.css.js.map +1 -1
- package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
- package/dist/generated/themes/HeroBanner.css.js +1 -1
- package/dist/generated/themes/HeroBanner.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/Modal.css.d.ts +1 -1
- package/dist/generated/themes/Modal.css.js +1 -1
- package/dist/generated/themes/Modal.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
- package/dist/generated/themes/TabNavigation.css.js +1 -1
- package/dist/generated/themes/TabNavigation.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +16 -1
- package/dist/web-types.json +33 -3
- package/package.json +1 -1
- package/src/Breadcrumbs.ts +26 -7
- package/src/BreadcrumbsPopoverTemplate.tsx +53 -41
- package/src/BreadcrumbsTemplate.tsx +35 -21
- package/src/HeroBanner.ts +0 -5
- package/src/HeroBannerTemplate.tsx +6 -1
- package/src/ListItem.hbs +16 -12
- package/src/SecondaryNavigation.hbs +6 -6
- package/src/SecondaryNavigation.ts +7 -66
- package/src/SecondaryNavigationItem.hbs +4 -6
- package/src/SecondaryNavigationItem.ts +40 -83
- package/src/SecondaryNavigationItemBase.ts +0 -3
- package/src/SecondaryNavigationSubItem.hbs +3 -7
- package/src/SelectBase.ts +2 -1
- package/src/StepInput.ts +20 -0
- package/src/StepInputTemplate.tsx +1 -1
- package/src/Tab.ts +32 -0
- package/src/TabHeader.hbs +40 -19
- package/src/TabNavigation.hbs +5 -9
- package/src/TabNavigation.ts +25 -8
- package/src/generated/templates/ListItemTemplate.lit.ts +4 -4
- package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +4 -4
- package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +3 -3
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +5 -5
- package/src/generated/templates/TabHeaderTemplate.lit.ts +40 -24
- package/src/generated/templates/TabNavigationTemplate.lit.ts +1 -1
- package/src/generated/themes/Breadcrumbs.css.ts +1 -1
- package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
- package/src/generated/themes/FilterMenu.css.ts +1 -1
- package/src/generated/themes/HeroBanner.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/Modal.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/themes/Breadcrumbs.css +6 -0
- package/src/themes/BreadcrumbsPopover.css +12 -2
- package/src/themes/FilterMenu.css +5 -1
- package/src/themes/HeroBanner.css +93 -76
- package/src/themes/ListItem.css +6 -1
- package/src/themes/Modal.css +3 -2
- package/src/themes/SecondaryNavigationItem.css +4 -1
- package/src/themes/TabNavigation.css +58 -73
- package/dist/generated/templates/HeroBannerTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/HeroBannerTemplate.lit.js +0 -15
- package/dist/generated/templates/HeroBannerTemplate.lit.js.map +0 -1
- package/src/HeroBanner.hbs +0 -46
- package/src/generated/templates/HeroBannerTemplate.lit.ts +0 -19
package/dist/Breadcrumbs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../src/Breadcrumbs.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { isTabNext, isTabPrevious, isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type { LinkClickEventDetail } from \"@ui5/webcomponents/dist/Link.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UI5BreadcrumbsCss from \"@ui5/webcomponents/dist/generated/themes/Breadcrumbs.css.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport \"@ui5/webcomponents-icons/dist/home.js\";\nimport BreadcrumbsTemplate from \"./BreadcrumbsTemplate.js\";\nimport UDExBreadcrumbsItem from \"./BreadcrumbsItem.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExLink from \"./Link.js\";\nimport {\n AVAILABLE_VALUES,\n BREADCRUMBS_ARIA_LABEL,\n BREADCRUMBS_OVERFLOW_ARIA_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport BreadcrumbsCss from \"./generated/themes/Breadcrumbs.css.js\";\nimport BreadcrumbsPopoverCss from \"./generated/themes/BreadcrumbsPopover.css.js\";\n\ntype UDExBreadcrumbsItemClickEventDetail = {\n item: UDExBreadcrumbsItem;\n altKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n shiftKey?: boolean;\n source?: UDExBreadcrumbsClickEventSource;\n}\n\nenum UDExBreadcrumbsClickEventSource {\n Main = \"main\",\n Dropdown = \"dropdown\",\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-breadcrumbs</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Breadcrumbs.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-breadcrumbs\",\n renderer: jsxRenderer,\n styles: [UI5BreadcrumbsCss, BreadcrumbsCss, BreadcrumbsPopoverCss],\n template: BreadcrumbsTemplate,\n dependencies: [UDExBreadcrumbsItem, UDExLink, UDExDropdown, UI5Icon],\n})\n/**\n * @public\n * @param { UDExBreadcrumbsItem } item The clicked breadcrumb item\n * @param { boolean } altKey\n * @param { boolean } ctrlKey\n * @param { boolean } metaKey\n * @param { boolean } shiftKey\n * @param { UDExBreadcrumbsClickEventSource } source The source of the click event\n */\n@event(\"item-click\", { cancelable: true, bubbles: true })\n\n/**\n * Fired after the dropdown is opened.\n *\n * @public\n */\n@event(\"open\", { bubbles: true })\n\n/**\n * Fired after the dropdown is closed.\n *\n * @public\n */\n@event(\"close\", { bubbles: true })\n\nclass UDExBreadcrumbs extends UI5Element {\n eventDetails!: {\n \"item-click\": UDExBreadcrumbsItemClickEventDetail,\n \"open\": void,\n \"close\": void,\n };\n /**\n * Defines how many breadcrumb items should be visible\n *\n * @default 3\n * @public\n */\n @property({ type: Number })\n showItems: number = 3;\n\n /**\n * Indicates if dropdown is opened\n *\n * @default false\n * @private\n */\n @property({ noAttribute: true, type: Boolean })\n _dropdownOpened!: boolean;\n\n /**\n * Defines the component items.\n *\n * **Note:** Use the `udex-breadcrumbs-item` component to define the desired items.\n * @public\n */\n @slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n items!: Array<UDExBreadcrumbsItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _responsivePopover?: UDExDropdown;\n _shouldFocusFirstVisibleItem!: boolean;\n _rootClass: string;\n\n constructor() {\n super();\n this._rootClass = \"udex-breadcrumbs\";\n }\n\n onBeforeRendering(): void {\n this._preprocessItems();\n }\n\n onAfterRendering(): void {\n this._responsivePopover = this._getResponsePopover();\n this._dropdownArrowLink.forcedTabIndex = \"0\";\n this._handleOutsideClick();\n\n if (this._shouldFocusFirstVisibleItem) {\n this._getFocusableItems()[1].focus();\n this._shouldFocusFirstVisibleItem = false;\n }\n }\n\n _preprocessItems(): void {\n this.items.forEach(item => {\n item._getRealDomRef = () => this.getDomRef()!.querySelector(`[data-ui5-stable*=${item.stableDomRef}]`)!;\n });\n }\n\n _getResponsePopover(): UDExDropdown {\n return this.shadowRoot!.querySelector<UDExDropdown>(`#udex-${this.__id!}-breadcrumbs__popover`)!;\n }\n\n _getFocusableItems(): Array<UDExLink> {\n const items = this._links;\n items.unshift(this._dropdownArrowLink);\n\n return items;\n }\n\n _getItems(): Array<UDExBreadcrumbsItem> {\n return this.getSlottedNodes<UDExBreadcrumbsItem>(\"items\");\n }\n\n _onDropdownLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const listItem = e.target as HTMLElement,\n items = this._getItems(),\n item = items.find(x => `${x._id}-li` === listItem.id)!;\n\n if (item._isCurrentPageItem) {\n return;\n }\n\n if (this.fireDecoratorEvent(\"item-click\", { item, source: UDExBreadcrumbsClickEventSource.Dropdown })) {\n window.open(item.href, item.target || \"_self\", \"noopener,noreferrer\");\n this._toggleDropdown();\n }\n\n this.setDropdownCloseState();\n }\n\n _onLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const link = e.target as UDExLink,\n items = this._getItems(),\n item = items.find(x => `${x._id}-link` === link.id)!,\n {\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n } = e.detail;\n\n if (!this.fireDecoratorEvent(\"item-click\", {\n item,\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n source: UDExBreadcrumbsClickEventSource.Main,\n })) {\n e.preventDefault();\n }\n\n this.setDropdownCloseState();\n }\n\n _isItemVisible(item: UDExBreadcrumbsItem): boolean {\n return !item.hidden;\n }\n\n _afterDropdownOpen(): void {\n this._dropdownOpened = true;\n this.fireDecoratorEvent(\"open\");\n }\n\n _afterDropdownClose(): void {\n this._dropdownOpened = false;\n this.fireDecoratorEvent(\"close\");\n }\n\n _toggleDropdown(): void {\n if (this._responsivePopover) {\n this._responsivePopover.open = !this._responsivePopover.open;\n this._dropdownOpened = !this._dropdownOpened;\n }\n }\n\n _handleKeydown(e: KeyboardEvent): void {\n const itemIndex = (e.target as HTMLElement).getAttribute(\"data-index\");\n const isLastItem = itemIndex === (this.items.length - 2).toString();\n const isFirstItem = itemIndex === \"0\";\n\n if (isTabNext(e) && isLastItem) {\n this._shouldFocusFirstVisibleItem = true;\n this._toggleDropdown();\n return;\n }\n\n if (isTabPrevious(e) && isFirstItem) {\n e.preventDefault();\n this._dropdownArrowLink.focus();\n this._toggleDropdown();\n return;\n }\n\n if (isEscape(e)) {\n this._toggleDropdown();\n }\n }\n\n _handleOutsideClick(): void {\n document.addEventListener(\"mousedown\", (e: Event) => {\n if (e.target !== this) {\n this.setDropdownCloseState();\n }\n });\n }\n\n setDropdownCloseState(): void {\n if (this._responsivePopover) {\n this._dropdownOpened = false;\n }\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownArrowLink(): UDExLink {\n return this.shadowRoot!.querySelector<UDExLink>(\".udex-breadcrumbs__trigger\")!;\n }\n\n /**\n * Getter for the list of links corresponding to the abstract breadcrumb items\n */\n get _links(): Array<UDExLink> {\n return Array.from(this.shadowRoot!.querySelectorAll<UDExLink>(\".udex-breadcrumbs__link-wrapper [udex-link]\"));\n }\n\n /**\n * Getter for the list of abstract breadcrumb items to be rendered as links outside the overflow\n */\n get _linksData(): Array<UDExBreadcrumbsItem> {\n const items = this._visibleItems;\n const itemsCount = items.length;\n\n return items\n .map((item, index) => {\n item._isCurrentPageItem = index === (itemsCount - 1);\n return item;\n });\n }\n\n get _visibleItems(): Array<UDExBreadcrumbsItem> {\n const items = this._getItems();\n const itemsLength = this.showItems ?? 0;\n\n return this._getItems()\n .slice(Math.max(items.length - itemsLength - 1, 0))\n .filter(i => this._isItemVisible(i));\n }\n\n get _dropdownItems(): Array<UDExBreadcrumbsItem> {\n return this._getItems().filter(i => this._isItemVisible(i));\n }\n\n get _triggerClass(): string {\n const rootClass = \"udex-breadcrumbs\";\n return this._dropdownOpened ? `${rootClass} ${rootClass}__trigger--opened` : rootClass;\n }\n\n get _breadcrumbsAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_ARIA_LABEL);\n }\n\n get _dropdownArrowAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_OVERFLOW_ARIA_LABEL);\n }\n\n get _dropdownAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, AVAILABLE_VALUES);\n }\n}\n\nUDExBreadcrumbs.define();\n\nexport default UDExBreadcrumbs;\nexport type { UDExBreadcrumbsItemClickEventDetail };\n"]}
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../src/Breadcrumbs.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { isTabNext, isTabPrevious } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type { LinkClickEventDetail } from \"@ui5/webcomponents/dist/Link.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UI5BreadcrumbsCss from \"@ui5/webcomponents/dist/generated/themes/Breadcrumbs.css.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport \"@ui5/webcomponents-icons/dist/home.js\";\nimport BreadcrumbsTemplate from \"./BreadcrumbsTemplate.js\";\nimport UDExBreadcrumbsItem from \"./BreadcrumbsItem.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExLink from \"./Link.js\";\nimport {\n AVAILABLE_VALUES,\n BREADCRUMBS_ARIA_LABEL,\n BREADCRUMBS_OVERFLOW_ARIA_LABEL,\n OF,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\nimport type { AccessibilityAttributes } from \"@ui5/webcomponents-base/dist/types.js\";\n\n// Styles\nimport BreadcrumbsCss from \"./generated/themes/Breadcrumbs.css.js\";\nimport BreadcrumbsPopoverCss from \"./generated/themes/BreadcrumbsPopover.css.js\";\n\ntype UDExBreadcrumbsItemClickEventDetail = {\n item: UDExBreadcrumbsItem;\n altKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n shiftKey?: boolean;\n source?: UDExBreadcrumbsClickEventSource;\n}\n\nenum UDExBreadcrumbsClickEventSource {\n Main = \"main\",\n Dropdown = \"dropdown\",\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-breadcrumbs</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Breadcrumbs.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-breadcrumbs\",\n renderer: jsxRenderer,\n styles: [UI5BreadcrumbsCss, BreadcrumbsCss, BreadcrumbsPopoverCss],\n template: BreadcrumbsTemplate,\n dependencies: [UDExBreadcrumbsItem, UDExLink, UDExDropdown, UI5Icon],\n})\n/**\n * @public\n * @param { UDExBreadcrumbsItem } item The clicked breadcrumb item\n * @param { boolean } altKey\n * @param { boolean } ctrlKey\n * @param { boolean } metaKey\n * @param { boolean } shiftKey\n * @param { UDExBreadcrumbsClickEventSource } source The source of the click event\n */\n@event(\"item-click\", { cancelable: true, bubbles: true })\n\n/**\n * Fired after the dropdown is opened.\n *\n * @public\n */\n@event(\"open\", { bubbles: true })\n\n/**\n * Fired after the dropdown is closed.\n *\n * @public\n */\n@event(\"close\", { bubbles: true })\n\nclass UDExBreadcrumbs extends UI5Element {\n eventDetails!: {\n \"item-click\": UDExBreadcrumbsItemClickEventDetail,\n \"open\": void,\n \"close\": void,\n };\n /**\n * Defines how many breadcrumb items should be visible\n *\n * @default 3\n * @public\n */\n @property({ type: Number })\n showItems: number = 3;\n\n /**\n * Defines whether the current page item is displayed in the main navigation path.\n * When set to `true`, the current page is shown as a non-interactive label at the end of the breadcrumb trail.\n * By default, the current page is hidden from the main path and only visible in the dropdown.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showCurrentPage: boolean = false;\n\n /**\n * Indicates if dropdown is opened\n *\n * @default false\n * @private\n */\n @property({ noAttribute: true, type: Boolean })\n _dropdownOpened: boolean = false;\n\n /**\n * Defines the component items.\n *\n * **Note:** Use the `udex-breadcrumbs-item` component to define the desired items.\n * @public\n */\n @slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n items!: Array<UDExBreadcrumbsItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _responsivePopover?: UDExDropdown;\n _shouldFocusFirstVisibleItem!: boolean;\n _rootClass: string;\n\n constructor() {\n super();\n this._rootClass = \"udex-breadcrumbs\";\n }\n\n onBeforeRendering(): void {\n this._preprocessItems();\n }\n\n onAfterRendering(): void {\n this._responsivePopover = this._getResponsePopover();\n this._dropdownArrowLink.forcedTabIndex = \"0\";\n this._handleOutsideClick();\n\n if (this._shouldFocusFirstVisibleItem) {\n this._getFocusableItems()[1].focus();\n this._shouldFocusFirstVisibleItem = false;\n }\n }\n\n _preprocessItems(): void {\n this.items.forEach(item => {\n item._getRealDomRef = () => this.getDomRef()!.querySelector(`[data-ui5-stable*=${item.stableDomRef}]`)!;\n });\n }\n\n _getResponsePopover(): UDExDropdown {\n return this.shadowRoot!.querySelector<UDExDropdown>(`#udex-${this.__id!}-breadcrumbs__popover`)!;\n }\n\n _getFocusableItems(): Array<UDExLink> {\n const items = this._links;\n items.unshift(this._dropdownArrowLink);\n\n return items;\n }\n\n _getItems(): Array<UDExBreadcrumbsItem> {\n return this.getSlottedNodes<UDExBreadcrumbsItem>(\"items\");\n }\n\n _onDropdownLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const listItem = e.target as HTMLElement,\n items = this._getItems(),\n item = items.find(x => `${x._id}-li` === listItem.id)!;\n\n if (item._isCurrentPageItem) {\n return;\n }\n\n if (this.fireDecoratorEvent(\"item-click\", { item, source: UDExBreadcrumbsClickEventSource.Dropdown })) {\n window.open(item.href, item.target || \"_self\", \"noopener,noreferrer\");\n this._toggleDropdown();\n }\n\n this.setDropdownCloseState();\n }\n\n _onLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const link = e.target as UDExLink,\n items = this._getItems(),\n item = items.find(x => `${x._id}-link` === link.id)!,\n {\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n } = e.detail;\n\n if (!this.fireDecoratorEvent(\"item-click\", {\n item,\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n source: UDExBreadcrumbsClickEventSource.Main,\n })) {\n e.preventDefault();\n }\n\n this.setDropdownCloseState();\n }\n\n _isItemVisible(item: UDExBreadcrumbsItem): boolean {\n return !item.hidden;\n }\n\n _afterDropdownOpen(): void {\n this._dropdownOpened = true;\n this.fireDecoratorEvent(\"open\");\n }\n\n _afterDropdownClose(): void {\n this._dropdownOpened = false;\n this.fireDecoratorEvent(\"close\");\n }\n\n _toggleDropdown(): void {\n if (this._responsivePopover) {\n this._responsivePopover.open = !this._responsivePopover.open;\n this._dropdownOpened = !this._dropdownOpened;\n }\n }\n\n _handleKeydown(e: KeyboardEvent): void {\n const itemIndex = (e.target as HTMLElement).getAttribute(\"data-index\");\n const isLastItem = itemIndex === (this.items.length - 2).toString();\n const isFirstItem = itemIndex === \"0\";\n\n if (isTabNext(e) && isLastItem) {\n this._shouldFocusFirstVisibleItem = true;\n this._toggleDropdown();\n return;\n }\n\n if (isTabPrevious(e) && isFirstItem) {\n e.preventDefault();\n this._dropdownArrowLink.focus();\n this._toggleDropdown();\n }\n }\n\n _handleOutsideClick(): void {\n document.addEventListener(\"mousedown\", (e: Event) => {\n if (e.target !== this) {\n this.setDropdownCloseState();\n }\n });\n }\n\n setDropdownCloseState(): void {\n if (this._responsivePopover) {\n this._dropdownOpened = false;\n }\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownArrowLink(): UDExLink {\n return this.shadowRoot!.querySelector<UDExLink>(\".udex-breadcrumbs__trigger\")!;\n }\n\n /**\n * Getter for the list of links corresponding to the abstract breadcrumb items\n */\n get _links(): Array<UDExLink> {\n return Array.from(this.shadowRoot!.querySelectorAll<UDExLink>(\".udex-breadcrumbs__link-wrapper [udex-link]\"));\n }\n\n /**\n * Getter for the list of abstract breadcrumb items to be rendered as links outside the overflow\n */\n get _linksData(): Array<UDExBreadcrumbsItem> {\n const items = this._visibleItems;\n const itemsCount = items.length;\n\n return items\n .map((item, index) => {\n item._isCurrentPageItem = index === (itemsCount - 1);\n return item;\n });\n }\n\n get _visibleItems(): Array<UDExBreadcrumbsItem> {\n const items = this._getItems();\n const itemsLength = this.showItems ?? 0;\n\n return this._getItems()\n .slice(Math.max(items.length - itemsLength - 1, 0))\n .filter(i => this._isItemVisible(i));\n }\n\n get _dropdownItems(): Array<UDExBreadcrumbsItem> {\n return this._getItems().filter(i => this._isItemVisible(i));\n }\n\n get _triggerAccessibilityAttributes(): Pick<AccessibilityAttributes, \"hasPopup\" | \"expanded\"> {\n return {\n hasPopup: \"listbox\" as const,\n expanded: this._dropdownOpened ? \"true\" : \"false\",\n };\n }\n\n get _triggerClass(): string {\n const rootClass = \"udex-breadcrumbs\";\n return this._dropdownOpened ? `${rootClass} ${rootClass}__trigger--opened` : rootClass;\n }\n\n get _breadcrumbsAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_ARIA_LABEL);\n }\n\n get _dropdownArrowAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_OVERFLOW_ARIA_LABEL);\n }\n\n get _dropdownAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, AVAILABLE_VALUES);\n }\n\n get _ofText(): string {\n return translate(UDExBreadcrumbs, OF);\n }\n}\n\nUDExBreadcrumbs.define();\n\nexport default UDExBreadcrumbs;\nexport type { UDExBreadcrumbsItemClickEventDetail };\n"]}
|
|
@@ -3,6 +3,15 @@ import UDExDropdown from "./Dropdown.js";
|
|
|
3
3
|
import UDExLink from "./Link.js";
|
|
4
4
|
import { Placement, HorizontalAlign } from "./types/Dropdown.js";
|
|
5
5
|
export default function BreadcrumbsPopoverTemplate() {
|
|
6
|
-
|
|
6
|
+
const focusableCount = this._dropdownItems.filter(i => !i._isCurrentPageItem).length;
|
|
7
|
+
const ofText = this._ofText;
|
|
8
|
+
let focusablePos = 0;
|
|
9
|
+
return (_jsx(UDExDropdown, { id: `udex-${this._id}-breadcrumbs__popover`, opener: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__popover ui5-breadcrumbs-popover`, accessibleName: this._dropdownAccessibleNameText, placement: Placement.Bottom, horizontalAlign: HorizontalAlign.Start, onKeyDown: this._handleKeydown, onClose: this._afterDropdownClose, onOpen: this._afterDropdownOpen, children: _jsx("nav", { className: `${this._rootClass}__popover-content`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsx("ol", { children: this._dropdownItems.map((item, index) => {
|
|
10
|
+
if (!item._isCurrentPageItem) {
|
|
11
|
+
focusablePos++;
|
|
12
|
+
}
|
|
13
|
+
const posLabel = `${item.accessibleName || item.textContent || ""}, ${focusablePos} ${ofText} ${focusableCount}`;
|
|
14
|
+
return item._isCurrentPageItem ? (_jsx("li", { "aria-hidden": "true", children: _jsx("span", { id: `${item._id}-li`, className: `${this._rootClass}__item ${this._rootClass}__item--current ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`, "aria-current": "page", "accessible-name": item.accessibleName, "data-ui5-stable": item.stableDomRef, children: item.textContent }) }, index)) : (_jsx("li", { children: item.icon ? (_jsx(UDExLink, { "data-index": index, id: `${item._id}-li`, onClick: this._onDropdownLinkPress, href: item.href, target: item.target, class: `${this._rootClass}__item ${this._rootClass}__item--with-icon ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`, icon: item.icon, accessibleName: posLabel, "data-ui5-stable": item.stableDomRef, children: item.textContent })) : (_jsx(UDExLink, { "data-index": index, id: `${item._id}-li`, onClick: this._onDropdownLinkPress, href: item.href, target: item.target, class: `${this._rootClass}__item ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`, accessibleName: posLabel, "data-ui5-stable": item.stableDomRef, children: item.textContent })) }, index));
|
|
15
|
+
}) }) }) }));
|
|
7
16
|
}
|
|
8
17
|
//# sourceMappingURL=BreadcrumbsPopoverTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbsPopoverTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsPopoverTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,0BAA0B;IAChD,OAAO,CACL,KAAC,YAAY,IACX,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,uBAAuB,EAC3C,MAAM,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC9C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,mCAAmC,EAC5D,cAAc,EAAE,IAAI,CAAC,2BAA2B,EAChD,SAAS,EAAE,SAAS,CAAC,MAAM,EAC3B,eAAe,EAAE,eAAe,CAAC,KAAK,EACtC,SAAS,EAAE,IAAI,CAAC,cAAc,EAC9B,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,MAAM,EAAE,IAAI,CAAC,kBAAkB,YAC/B,cAAK,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"BreadcrumbsPopoverTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsPopoverTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Breadcrumbs from \"./Breadcrumbs.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExLink from \"./Link.js\";\nimport { Placement, HorizontalAlign } from \"./types/Dropdown.js\";\n\nexport default function BreadcrumbsPopoverTemplate(this: Breadcrumbs) {\n const focusableCount = this._dropdownItems.filter(i => !i._isCurrentPageItem).length;\n const ofText = this._ofText;\n let focusablePos = 0;\n\n return (\n <UDExDropdown\n id={`udex-${this._id}-breadcrumbs__popover`}\n opener={`udex-${this._id}-breadcrumbs__opener`}\n class={`${this._rootClass}__popover ui5-breadcrumbs-popover`}\n accessibleName={this._dropdownAccessibleNameText}\n placement={Placement.Bottom}\n horizontalAlign={HorizontalAlign.Start}\n onKeyDown={this._handleKeydown}\n onClose={this._afterDropdownClose}\n onOpen={this._afterDropdownOpen}>\n <nav className={`${this._rootClass}__popover-content`} aria-label={this._breadcrumbsAccessibleNameText}>\n <ol>\n {this._dropdownItems.map((item, index) => {\n if (!item._isCurrentPageItem) { focusablePos++; }\n const posLabel = `${item.accessibleName || item.textContent || \"\"}, ${focusablePos} ${ofText} ${focusableCount}`;\n return item._isCurrentPageItem ? (\n <li key={index} aria-hidden=\"true\">\n <span\n id={`${item._id}-li`}\n className={`${this._rootClass}__item ${this._rootClass}__item--current ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}\n aria-current=\"page\"\n accessible-name={item.accessibleName}\n data-ui5-stable={item.stableDomRef}>\n {item.textContent}\n </span>\n </li>\n ) : (\n <li key={index}>\n {item.icon ? (\n <UDExLink\n data-index={index}\n id={`${item._id}-li`}\n onClick={this._onDropdownLinkPress}\n href={item.href}\n target={item.target}\n class={`${this._rootClass}__item ${this._rootClass}__item--with-icon ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}\n icon={item.icon}\n accessibleName={posLabel}\n data-ui5-stable={item.stableDomRef}>\n {item.textContent}\n </UDExLink>\n ) : (\n <UDExLink\n data-index={index}\n id={`${item._id}-li`}\n onClick={this._onDropdownLinkPress}\n href={item.href}\n target={item.target}\n class={`${this._rootClass}__item ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}\n accessibleName={posLabel}\n data-ui5-stable={item.stableDomRef}>\n {item.textContent}\n </UDExLink>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n </UDExDropdown>\n );\n}\n"]}
|
|
@@ -5,6 +5,6 @@ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
|
|
|
5
5
|
import BreadcrumbsPopoverTemplate from "./BreadcrumbsPopoverTemplate.js";
|
|
6
6
|
export default function BreadcrumbsTemplate() {
|
|
7
7
|
const rootClass = "udex-breadcrumbs";
|
|
8
|
-
return (_jsxs(_Fragment, { children: [_jsx("nav", { class: `${this._rootClass} ui5-breadcrumbs-root`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsxs("ol", { children: [_jsx("li", { class: `${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`, children: _jsx(UDExLink, { id: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__trigger ${this._triggerClass}`, onClick: this._toggleDropdown, accessibleName: this._dropdownArrowAccessibleNameText, accessibleRole: UDExButtonAccessibleRole.Button,
|
|
8
|
+
return (_jsxs(_Fragment, { children: [_jsx("nav", { class: `${this._rootClass} ui5-breadcrumbs-root`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsxs("ol", { children: [_jsx("li", { class: `${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`, children: _jsx(UDExLink, { id: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__trigger ${this._triggerClass}`, onClick: this._toggleDropdown, accessibleName: this._dropdownArrowAccessibleNameText, accessibleRole: UDExButtonAccessibleRole.Button, accessibilityAttributes: this._triggerAccessibilityAttributes, icon: slimArrowDown }) }), this._linksData.map(linkData => (linkData._isCurrentPageItem && !this.showCurrentPage ? null : (_jsx("li", { role: linkData._isCurrentPageItem ? "presentation" : undefined, class: `${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`, id: `${linkData._id}-link-wrapper`, children: linkData._isCurrentPageItem ? (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator`, "aria-hidden": "true" }), _jsx("span", { id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`, "aria-current": "page", "data-ui5-stable": linkData.stableDomRef, children: linkData.textContent })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator`, "aria-hidden": "true" }), _jsx(UDExLink, { onClick: this._onLinkPress, id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible`, href: linkData.href, target: linkData.target, accessibleName: linkData._accessibleNameText, "data-ui5-stable": linkData.stableDomRef, children: linkData.textContent })] })) }))))] }) }), BreadcrumbsPopoverTemplate.call(this)] }));
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=BreadcrumbsTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbsTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,wBAAwB,MAAM,iCAAiC,CAAC;AACvE,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,8BACE,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,uBAAuB,gBACpC,IAAI,CAAC,8BAA8B,YAC/C,yBACE,aAAI,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6DAA6D,YACxF,KAAC,QAAQ,IACP,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC1C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,aAAa,EAAE,EAC1D,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,cAAc,EAAE,IAAI,CAAC,gCAAgC,EACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,EAC/C,IAAI,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"BreadcrumbsTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,wBAAwB,MAAM,iCAAiC,CAAC;AACvE,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,8BACE,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,uBAAuB,gBACpC,IAAI,CAAC,8BAA8B,YAC/C,yBACE,aAAI,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6DAA6D,YACxF,KAAC,QAAQ,IACP,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC1C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,aAAa,EAAE,EAC1D,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,cAAc,EAAE,IAAI,CAAC,gCAAgC,EACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,EAC/C,uBAAuB,EAAE,IAAI,CAAC,+BAA+B,EAC7D,IAAI,EAAE,aAAa,GACV,GACR,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC9B,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7D,aACE,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC9D,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6CAA6C,EACtE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,eAAe,YACjC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC7B,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,iBAAc,MAAM,GAAQ,EAC5E,eACE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,mBAAmB,IAAI,CAAC,UAAU,sBAAsB,kBACvF,MAAM,qBACF,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,WAAW,GAChB,IACN,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,iBAAc,MAAM,GAAQ,EAC5E,KAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,iBAAiB,EAC7D,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,cAAc,EAAE,QAAQ,CAAC,mBAAmB,qBAC3B,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,WAAW,GACZ,IACV,CACJ,GACE,CACN,CAAC,CACH,IACE,GACD,EACL,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IACrC,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import type Breadcrumbs from \"./Breadcrumbs.js\";\nimport UDExLink from \"./Link.js\";\nimport UDExButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport slimArrowDown from \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport BreadcrumbsPopoverTemplate from \"./BreadcrumbsPopoverTemplate.js\";\n\nexport default function BreadcrumbsTemplate(this: Breadcrumbs) {\n const rootClass = \"udex-breadcrumbs\";\n\n return (\n <>\n <nav\n class={`${this._rootClass} ui5-breadcrumbs-root`}\n aria-label={this._breadcrumbsAccessibleNameText}>\n <ol>\n <li class={`${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`}>\n <UDExLink\n id={`udex-${this._id}-breadcrumbs__opener`}\n class={`${this._rootClass}__trigger ${this._triggerClass}`}\n onClick={this._toggleDropdown}\n accessibleName={this._dropdownArrowAccessibleNameText}\n accessibleRole={UDExButtonAccessibleRole.Button}\n accessibilityAttributes={this._triggerAccessibilityAttributes}\n icon={slimArrowDown}>\n </UDExLink>\n </li>\n {this._linksData.map(linkData =>\n (linkData._isCurrentPageItem && !this.showCurrentPage ? null : (\n <li\n role={linkData._isCurrentPageItem ? \"presentation\" : undefined}\n class={`${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`}\n id={`${linkData._id}-link-wrapper`}>\n {linkData._isCurrentPageItem ? (\n <>\n <span className={`${this._rootClass}__separator`} aria-hidden=\"true\"></span>\n <span\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`}\n aria-current=\"page\"\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.textContent}\n </span>\n </>\n ) : (\n <>\n <span className={`${this._rootClass}__separator`} aria-hidden=\"true\"></span>\n <UDExLink\n onClick={this._onLinkPress}\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible`}\n href={linkData.href}\n target={linkData.target}\n accessibleName={linkData._accessibleNameText}\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.textContent}\n </UDExLink>\n </>\n )}\n </li>\n ))\n )}\n </ol>\n </nav>\n {BreadcrumbsPopoverTemplate.call(this)}\n </>\n );\n}\n"]}
|
package/dist/HeroBanner.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
-
import "@ui5/webcomponents-icons/dist/media-play.js";
|
|
3
|
-
import "@ui5/webcomponents-icons/dist/media-pause.js";
|
|
4
2
|
export declare enum UDExImageLoadingStrategies {
|
|
5
3
|
Eager = "eager",
|
|
6
4
|
Lazy = "lazy"
|
|
@@ -106,7 +104,6 @@ declare class UDExHeroBanner extends UI5Element {
|
|
|
106
104
|
get hasMediaContent(): boolean;
|
|
107
105
|
get hasAdditionalContent(): boolean;
|
|
108
106
|
get hasCustomBackgroundPicture(): boolean;
|
|
109
|
-
get mediaButtonIconName(): "media-play" | "media-pause";
|
|
110
107
|
get _video(): HTMLVideoElement | null | undefined;
|
|
111
108
|
_toggleMediaButton(): void;
|
|
112
109
|
_calculateMediaButtonState(): void;
|
package/dist/HeroBanner.js
CHANGED
|
@@ -11,8 +11,6 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
|
11
11
|
import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
12
12
|
import { isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
13
13
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
14
|
-
import "@ui5/webcomponents-icons/dist/media-play.js";
|
|
15
|
-
import "@ui5/webcomponents-icons/dist/media-pause.js";
|
|
16
14
|
import HeroBannerTemplate from "./HeroBannerTemplate.js";
|
|
17
15
|
// Styles
|
|
18
16
|
import HeroBannerCss from "./generated/themes/HeroBanner.css.js";
|
|
@@ -76,9 +74,6 @@ let UDExHeroBanner = class UDExHeroBanner extends UI5Element {
|
|
|
76
74
|
get hasCustomBackgroundPicture() {
|
|
77
75
|
return !!this.backgroundPicture?.length;
|
|
78
76
|
}
|
|
79
|
-
get mediaButtonIconName() {
|
|
80
|
-
return this._isVideoRunning ? "media-pause" : "media-play";
|
|
81
|
-
}
|
|
82
77
|
get _video() {
|
|
83
78
|
return this.shadowRoot?.querySelector("video");
|
|
84
79
|
}
|
package/dist/HeroBanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeroBanner.js","sourceRoot":"","sources":["../src/HeroBanner.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,WAAW,MAAM,iDAAiD,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"HeroBanner.js","sourceRoot":"","sources":["../src/HeroBanner.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport { isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport HeroBannerTemplate from \"./HeroBannerTemplate.js\";\n\n// Styles\nimport HeroBannerCss from \"./generated/themes/HeroBanner.css.js\";\n\nexport enum UDExImageLoadingStrategies {\n Eager = \"eager\",\n Lazy = \"lazy\",\n}\n\n/**\n * @class\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-hero-banner\n * @public\n */\n@customElement({\n tag: \"udex-hero-banner\",\n renderer: jsxRenderer,\n styles: HeroBannerCss,\n template: HeroBannerTemplate,\n dependencies: [Icon],\n})\nclass UDExHeroBanner extends UI5Element {\n /**\n * Allows control over the background image source.\n *\n * @public\n */\n @property({ type: String })\n backgroundImage?: string;\n\n /**\n * Allows control over the background image loading strategy.\n *\n * @public\n */\n @property()\n backgroundImageLoadingStrategy: `${UDExImageLoadingStrategies}` = UDExImageLoadingStrategies.Eager;\n\n /**\n * Used as the label for background image.\n *\n * @public\n */\n @property({ type: String })\n backgroundImageLabel?: string;\n\n /**\n * Allows control over the background video source.\n *\n * @public\n */\n @property({ type: String })\n backgroundVideo?: string;\n\n /**\n * Used as the label for background video.\n *\n * @public\n */\n @property({ type: String })\n backgroundVideoLabel?: string;\n\n /**\n * Allows control over the background color.\n * Value provided should be compatible with standard CSS rendering, e.g:\n * - HEX: \"#FFF\", \"#FFFFFF\", \"FFFFFFFF\"\n * - RGB/A: \"rgb(255, 255, 255)\", \"rgba(255, 255, 255, 1)\"\n * - HSL/A: \"hsl(0, 100%, 100%)\", \"hsla(0, 100%, 100%, 1\"\n * - Variables: \"var(--sapShell_Background)\", \"var(--udexColorNeutralWhite)\"\n * - Text values: \"white\", \"red\"\n *\n * @public\n */\n @property({ type: String })\n backgroundColor?: string;\n\n /**\n * Allows control over the background-image to set css gradient.\n * Value provided should be compatible with standard CSS linear-gradient rendering, e.g:\n * linear-gradient(to bottom, #1e5799 0%,#7db9e8 100%);\n * linear-gradient(to bottom, var(--udexColorBlue2) 0%,var(--udexColorBlue4) 100%);\n *\n * @public\n */\n @property({ type: String })\n backgroundGradient?: string;\n\n @property({ type: Boolean, noAttribute: true })\n _isVideoRunning?: boolean;\n\n /**\n * Slot for primary content.\n *\n * @slot\n * @public\n */\n @slot()\n content?: Array<HTMLElement>;\n\n /**\n * Slot for image or video content.\n *\n * @slot\n * @public\n */\n @slot()\n mediaContent?: Array<HTMLElement>;\n\n /**\n * Slot for any additional content.\n *\n * @slot\n * @public\n */\n @slot()\n additionalContent?: Array<HTMLElement>;\n\n /**\n * Slot background picture override.\n *\n * @slot\n * @public\n */\n @slot()\n backgroundPicture?: Array<HTMLElement>;\n\n get hasBackgroundImage(): boolean {\n return !!this.backgroundImage;\n }\n get hasBackgroundVideo(): boolean {\n return !!this.backgroundVideo;\n }\n get wrapperBackgroundColor(): string {\n return this.backgroundColor ? this.backgroundColor : \"transparent\";\n }\n\n get wrapperBackgroundImage(): string {\n return this.backgroundGradient ? this.backgroundGradient : \"\";\n }\n\n /**\n * Determines if the video should autoplay based on the user's global preference.\n */\n get shouldVideoAutoplay() {\n return !window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n }\n\n get heroBannerClasses(): string {\n const heroBannerClasses = [\"udex-hero-banner\"];\n if (this.hasBackgroundVideo) {\n heroBannerClasses.push(\"udex-hero-banner--video\");\n }\n return heroBannerClasses.join(\" \");\n }\n\n get hasMediaContent() {\n return !!this.mediaContent?.length;\n }\n\n get hasAdditionalContent() {\n return !!this.additionalContent?.length;\n }\n\n get hasCustomBackgroundPicture() {\n return !!this.backgroundPicture?.length;\n }\n\n get _video() {\n return this.shadowRoot?.querySelector<HTMLVideoElement>(\"video\");\n }\n\n _toggleMediaButton(): void {\n if (this._video?.paused) {\n this._video?.play();\n } else {\n this._video?.pause();\n }\n this._calculateMediaButtonState();\n }\n\n _calculateMediaButtonState() {\n this._isVideoRunning = this._video ? !this._video.paused : false;\n }\n\n _isHTMLDivElement = (element: HTMLElement): element is HTMLDivElement => {\n return element.tagName === \"DIV\";\n };\n\n _handleKeydown(event: KeyboardEvent): void {\n const target = <HTMLElement>event.target;\n if (this._isHTMLDivElement(target) && isSpace(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._toggleMediaButton();\n }\n }\n\n onEnterDOM() {\n if (this.backgroundVideo) {\n if (this.backgroundColor) {\n this.style.setProperty(\"--udexHeroBannerBackgroundVideoColor\", `${this.wrapperBackgroundColor}`);\n }\n this._video?.addEventListener(\"play\", () => {\n this._calculateMediaButtonState();\n });\n }\n }\n}\nUDExHeroBanner.define();\n\nexport default UDExHeroBanner;\n"]}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
2
|
import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
3
|
+
import "@ui5/webcomponents-icons/dist/play.js";
|
|
4
|
+
import "@ui5/webcomponents-icons/dist/pause.js";
|
|
5
|
+
import playIcon from "@ui5/webcomponents-icons/play.js";
|
|
6
|
+
import pauseIcon from "@ui5/webcomponents-icons/pause.js";
|
|
3
7
|
export default function HeroBannerTemplate() {
|
|
4
8
|
const rootClass = "udex-hero-banner";
|
|
9
|
+
const btnIcon = this._isVideoRunning ? playIcon : pauseIcon;
|
|
5
10
|
return (_jsxs("div", { className: this.heroBannerClasses, part: "wrapper", style: {
|
|
6
11
|
backgroundColor: this.wrapperBackgroundColor,
|
|
7
12
|
...(this.wrapperBackgroundImage ? { backgroundImage: this.wrapperBackgroundImage } : {})
|
|
8
|
-
}, children: [this.hasBackgroundVideo ? (_jsxs("div", { className: `${rootClass}__background-video-wrapper`, tabIndex: 0, onKeyDown: this._handleKeydown, children: [_jsx("video", { autoPlay: this.shouldVideoAutoplay, muted: true, loop: true, playsInline: true, part: "background-video", className: `${rootClass}__background-video`, "aria-label": this.backgroundVideoLabel, children: _jsx("source", { src: this.backgroundVideo, type: "video/mp4" }) }), _jsx("div", { className: `${rootClass}__background-video-overlay` }), this.hasBackgroundImage && (_jsx("picture", { children: _jsx("img", { loading: this.backgroundImageLoadingStrategy, src: this.backgroundImage, part: "background-image", className: `${rootClass}__background-image`, alt: this.backgroundImageLabel }) })), _jsxs("div", { className: `${rootClass}__content-container`, children: [_jsx("slot", { id: `${rootClass}__content`, name: "content", part: "content" }), _jsx("slot", { id: `${rootClass}__additionalContent`, name: "additionalContent", part: "additionalContent" })] }), _jsx("button", { className: `${rootClass}__media-button`, "aria-label": "Play / Pause button", role: "button", onClick: this._toggleMediaButton, children: _jsx(UI5Icon, { name:
|
|
13
|
+
}, children: [this.hasBackgroundVideo ? (_jsxs("div", { className: `${rootClass}__background-video-wrapper`, tabIndex: 0, onKeyDown: this._handleKeydown, children: [_jsx("video", { autoPlay: this.shouldVideoAutoplay, muted: true, loop: true, playsInline: true, part: "background-video", className: `${rootClass}__background-video`, "aria-label": this.backgroundVideoLabel, children: _jsx("source", { src: this.backgroundVideo, type: "video/mp4" }) }), _jsx("div", { className: `${rootClass}__background-video-overlay` }), this.hasBackgroundImage && (_jsx("picture", { children: _jsx("img", { loading: this.backgroundImageLoadingStrategy, src: this.backgroundImage, part: "background-image", className: `${rootClass}__background-image`, alt: this.backgroundImageLabel }) })), _jsxs("div", { className: `${rootClass}__content-container`, children: [_jsx("slot", { id: `${rootClass}__content`, name: "content", part: "content" }), _jsx("slot", { id: `${rootClass}__additionalContent`, name: "additionalContent", part: "additionalContent" })] }), _jsx("button", { className: `${rootClass}__media-button`, "aria-label": "Play / Pause button", role: "button", onClick: this._toggleMediaButton, children: _jsx(UI5Icon, { name: btnIcon }) })] })) : (_jsxs("div", { className: `${rootClass}__container`, children: [this.hasCustomBackgroundPicture ? (_jsx("slot", { name: "backgroundPicture" })) : this.hasBackgroundImage ? (_jsx("picture", { children: _jsx("img", { loading: this.backgroundImageLoadingStrategy, src: this.backgroundImage, part: "background-image", className: `${rootClass}__background-image`, alt: this.backgroundImageLabel }) })) : null, _jsxs("div", { className: `${rootClass}__content-container`, children: [_jsx("slot", { id: `${rootClass}__content`, name: "content", part: "content" }), this.hasAdditionalContent && (_jsx("slot", { id: `${rootClass}__additionalContent`, name: "additionalContent", part: "additionalContent" }))] })] })), this.hasMediaContent && (_jsx("slot", { id: `${rootClass}__mediaContent`, name: "mediaContent", part: "mediaContent" }))] }));
|
|
9
14
|
}
|
|
10
15
|
//# sourceMappingURL=HeroBannerTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeroBannerTemplate.js","sourceRoot":"","sources":["../src/HeroBannerTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"HeroBannerTemplate.js","sourceRoot":"","sources":["../src/HeroBannerTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type HeroBanner from \"./HeroBanner.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/play.js\";\nimport \"@ui5/webcomponents-icons/dist/pause.js\";\nimport playIcon from \"@ui5/webcomponents-icons/play.js\";\nimport pauseIcon from \"@ui5/webcomponents-icons/pause.js\";\n\nexport default function HeroBannerTemplate(this: HeroBanner) {\n const rootClass = \"udex-hero-banner\";\n const btnIcon = this._isVideoRunning ? playIcon : pauseIcon;\n\n return (\n <div\n className={this.heroBannerClasses}\n part=\"wrapper\"\n style={{\n backgroundColor: this.wrapperBackgroundColor,\n ...(this.wrapperBackgroundImage ? { backgroundImage: this.wrapperBackgroundImage } : {})\n }}>\n {this.hasBackgroundVideo ? (\n <div\n className={`${rootClass}__background-video-wrapper`}\n tabIndex={0}\n onKeyDown={this._handleKeydown}>\n <video\n autoPlay={this.shouldVideoAutoplay}\n muted\n loop\n playsInline\n part=\"background-video\"\n className={`${rootClass}__background-video`}\n aria-label={this.backgroundVideoLabel}>\n <source src={this.backgroundVideo} type=\"video/mp4\" />\n </video>\n <div className={`${rootClass}__background-video-overlay`}></div>\n {this.hasBackgroundImage && (\n <picture>\n <img\n loading={this.backgroundImageLoadingStrategy}\n src={this.backgroundImage}\n part=\"background-image\"\n className={`${rootClass}__background-image`}\n alt={this.backgroundImageLabel}/>\n </picture>\n )}\n <div className={`${rootClass}__content-container`}>\n <slot\n id={`${rootClass}__content`}\n name=\"content\"\n part=\"content\">\n </slot>\n <slot\n id={`${rootClass}__additionalContent`}\n name=\"additionalContent\"\n part=\"additionalContent\">\n </slot>\n </div>\n <button\n className={`${rootClass}__media-button`}\n aria-label=\"Play / Pause button\"\n role=\"button\"\n onClick={this._toggleMediaButton}>\n <UI5Icon name={btnIcon}></UI5Icon>\n </button>\n </div>\n ) : (\n <div className={`${rootClass}__container`}>\n {this.hasCustomBackgroundPicture ? (\n <slot name=\"backgroundPicture\"></slot>\n ) : this.hasBackgroundImage ? (\n <picture>\n <img\n loading={this.backgroundImageLoadingStrategy}\n src={this.backgroundImage}\n part=\"background-image\"\n className={`${rootClass}__background-image`}\n alt={this.backgroundImageLabel}\n />\n </picture>\n ) : null}\n <div className={`${rootClass}__content-container`}>\n <slot\n id={`${rootClass}__content`}\n name=\"content\"\n part=\"content\">\n </slot>\n {this.hasAdditionalContent && (\n <slot\n id={`${rootClass}__additionalContent`}\n name=\"additionalContent\"\n part=\"additionalContent\">\n </slot>\n )}\n </div>\n </div>\n )}\n {this.hasMediaContent && (\n <slot\n id={`${rootClass}__mediaContent`}\n name=\"mediaContent\"\n part=\"mediaContent\">\n </slot>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -103,7 +103,6 @@ declare class UDExSecondaryNavigation extends UI5Element {
|
|
|
103
103
|
_mobileBtnExpanded: boolean;
|
|
104
104
|
_navItems: Array<NavItem>;
|
|
105
105
|
_showMoreButton: boolean;
|
|
106
|
-
_shouldFocusFirstItem: boolean;
|
|
107
106
|
_rootHolder: HTMLElement | null | undefined;
|
|
108
107
|
_clickedNavItem: UDExSecondaryNavigationItem;
|
|
109
108
|
_boundReflowItems: () => void;
|
|
@@ -117,12 +116,9 @@ declare class UDExSecondaryNavigation extends UI5Element {
|
|
|
117
116
|
_handleResize(): void;
|
|
118
117
|
reflowItems(): void;
|
|
119
118
|
handleKeyDown(e: KeyboardEvent): void;
|
|
120
|
-
focusPrevNavItem(e: KeyboardEvent): void;
|
|
121
|
-
focusNextNavItem(e: KeyboardEvent): void;
|
|
122
119
|
getItemWidth(item: NavItem): number;
|
|
123
120
|
getMoreButtonWidth(): number;
|
|
124
121
|
getCanvasContext(): CanvasRenderingContext2D;
|
|
125
|
-
getCurrentIndex(item: UDExSecondaryNavigationItem): number;
|
|
126
122
|
handleItemClick(e: CustomEvent<UDExSecondaryNavigationItemClickEventDetail>): void;
|
|
127
123
|
handleSubItemClick(e: CustomEvent<UDExSecondaryNavigationItemSubItemClickEventDetail>): void;
|
|
128
124
|
handleHeadingClick(e: CustomEvent<UDExSecondaryNavigationHeadingClickEventDetail>): void;
|
|
@@ -132,11 +128,10 @@ declare class UDExSecondaryNavigation extends UI5Element {
|
|
|
132
128
|
handleMobileMenuOpenerClick(e: CustomEvent): void;
|
|
133
129
|
handleOutsideClick(): void;
|
|
134
130
|
outsideClickListener: (e: MouseEvent) => void;
|
|
131
|
+
handleMobileButtonsClick(): void;
|
|
135
132
|
closeMobileDropdown(): void;
|
|
136
133
|
handleDesktopDropdown(e: MouseEvent): void;
|
|
137
134
|
closePrevDropdown(clickedItemId: string): void;
|
|
138
|
-
resetTabIndex(): void;
|
|
139
|
-
setTabIndexById(id: string): void;
|
|
140
135
|
get domNavItems(): Array<UDExSecondaryNavigationItem>;
|
|
141
136
|
get rootHolder(): HTMLElement;
|
|
142
137
|
get headingHolder(): HTMLElement;
|
|
@@ -12,7 +12,7 @@ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
|
12
12
|
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
13
13
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
14
14
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
15
|
-
import { isEscape
|
|
15
|
+
import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
16
16
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
17
17
|
import UDExSecondaryNavigationItem from "./SecondaryNavigationItem.js";
|
|
18
18
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
@@ -72,9 +72,8 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
72
72
|
this._requestRender = false;
|
|
73
73
|
this._mobileBtnExpanded = false;
|
|
74
74
|
this._showMoreButton = true;
|
|
75
|
-
this._shouldFocusFirstItem = true;
|
|
76
75
|
this.outsideClickListener = (e) => {
|
|
77
|
-
if (this.isMobileScreen && e.
|
|
76
|
+
if (this.isMobileScreen && !e.composedPath().includes(this)) {
|
|
78
77
|
this.closeMobileDropdown();
|
|
79
78
|
return;
|
|
80
79
|
}
|
|
@@ -103,9 +102,6 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
103
102
|
if (!this._overflowItems.length) {
|
|
104
103
|
this._showMoreButton = true;
|
|
105
104
|
}
|
|
106
|
-
if (this._shouldFocusFirstItem && this.isDesktopScreen) {
|
|
107
|
-
this.domNavItems[0]._tabIndex = "0";
|
|
108
|
-
}
|
|
109
105
|
this.handleOutsideClick();
|
|
110
106
|
}
|
|
111
107
|
refreshRendering() {
|
|
@@ -113,9 +109,6 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
113
109
|
}
|
|
114
110
|
_handleResize() {
|
|
115
111
|
this.reflowItems();
|
|
116
|
-
if (this.isDesktopScreen) {
|
|
117
|
-
this.resetTabIndex();
|
|
118
|
-
}
|
|
119
112
|
if (this._clickedNavItem && this.isDesktopScreen) {
|
|
120
113
|
this._clickedNavItem.closeDropdown();
|
|
121
114
|
}
|
|
@@ -147,43 +140,9 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
147
140
|
handleKeyDown(e) {
|
|
148
141
|
e.stopPropagation();
|
|
149
142
|
const item = e.target;
|
|
150
|
-
if (isLeft(e)) {
|
|
151
|
-
return this.focusPrevNavItem(e);
|
|
152
|
-
}
|
|
153
|
-
if (isRight(e)) {
|
|
154
|
-
return this.focusNextNavItem(e);
|
|
155
|
-
}
|
|
156
143
|
if (isEscape(e) && item.hasNestedItems) {
|
|
157
144
|
return item.closeDropdown();
|
|
158
145
|
}
|
|
159
|
-
if (isDown(e) && item.hasNestedItems) {
|
|
160
|
-
item.openDropdown(e);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
focusPrevNavItem(e) {
|
|
164
|
-
const item = e.target;
|
|
165
|
-
const currentSelectedIndex = this.getCurrentIndex(item);
|
|
166
|
-
const previousSelectIndex = currentSelectedIndex - 1;
|
|
167
|
-
const previousItem = this.domNavItems[previousSelectIndex];
|
|
168
|
-
if (currentSelectedIndex > 0) {
|
|
169
|
-
e.preventDefault();
|
|
170
|
-
this.domNavItems[currentSelectedIndex]._tabIndex = "-1";
|
|
171
|
-
previousItem._tabIndex = "0";
|
|
172
|
-
previousItem?.focus();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
focusNextNavItem(e) {
|
|
176
|
-
const item = e.target;
|
|
177
|
-
const currentSelectedIndex = this.getCurrentIndex(item);
|
|
178
|
-
const lastItemIndex = this.domNavItems.length - 1;
|
|
179
|
-
const nextSelectIndex = currentSelectedIndex + 1;
|
|
180
|
-
const nextItem = this.domNavItems[nextSelectIndex];
|
|
181
|
-
if (nextSelectIndex < lastItemIndex) {
|
|
182
|
-
e.preventDefault();
|
|
183
|
-
this.domNavItems[currentSelectedIndex]._tabIndex = "-1";
|
|
184
|
-
nextItem._tabIndex = "0";
|
|
185
|
-
nextItem.focus();
|
|
186
|
-
}
|
|
187
146
|
}
|
|
188
147
|
getItemWidth(item) {
|
|
189
148
|
const context = this.getCanvasContext();
|
|
@@ -199,9 +158,6 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
199
158
|
const canvas = document.createElement("canvas");
|
|
200
159
|
return canvas.getContext("2d");
|
|
201
160
|
}
|
|
202
|
-
getCurrentIndex(item) {
|
|
203
|
-
return this.domNavItems.indexOf(item);
|
|
204
|
-
}
|
|
205
161
|
handleItemClick(e) {
|
|
206
162
|
const { index, item, originalEvent: actualOriginalEvent } = e.detail;
|
|
207
163
|
const clickedItem = item;
|
|
@@ -219,8 +175,6 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
219
175
|
return;
|
|
220
176
|
}
|
|
221
177
|
this._clickedNavItem = clickedItem;
|
|
222
|
-
this._shouldFocusFirstItem = false;
|
|
223
|
-
this.setTabIndexById(_id);
|
|
224
178
|
this.closePrevDropdown(_id);
|
|
225
179
|
if (!subItems.length) {
|
|
226
180
|
this.setActiveItem(this.parsedItems, clickedItem);
|
|
@@ -323,7 +277,10 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
323
277
|
});
|
|
324
278
|
}
|
|
325
279
|
handleOutsideClick() {
|
|
326
|
-
document.addEventListener("
|
|
280
|
+
document.addEventListener("click", this.outsideClickListener);
|
|
281
|
+
}
|
|
282
|
+
handleMobileButtonsClick() {
|
|
283
|
+
this.closeMobileDropdown();
|
|
327
284
|
}
|
|
328
285
|
closeMobileDropdown() {
|
|
329
286
|
this.mobileNav?.closeDropdown();
|
|
@@ -341,16 +298,6 @@ let UDExSecondaryNavigation = UDExSecondaryNavigation_1 = class UDExSecondaryNav
|
|
|
341
298
|
}
|
|
342
299
|
});
|
|
343
300
|
}
|
|
344
|
-
resetTabIndex() {
|
|
345
|
-
this.domNavItems.forEach((item, index) => {
|
|
346
|
-
item._tabIndex = index === 0 ? "0" : "-1";
|
|
347
|
-
});
|
|
348
|
-
}
|
|
349
|
-
setTabIndexById(id) {
|
|
350
|
-
this.domNavItems.forEach(item => {
|
|
351
|
-
item._tabIndex = id === item._id ? "0" : "-1";
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
301
|
get domNavItems() {
|
|
355
302
|
const items = this.shadowRoot?.querySelectorAll("[udex-secondary-navigation-item]");
|
|
356
303
|
return items ? Array.from(items) : [];
|