@sapudex/web-components 2.57.0 → 2.58.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/specs/FilterMenu.cy.tsx +209 -19
- package/cypress/specs/List.cy.tsx +67 -4
- package/cypress/specs/ListItem.cy.tsx +35 -9
- package/cypress/specs/SelectBox.cy.tsx +100 -0
- package/cypress/specs/TabNavigation.cy.tsx +297 -21
- package/dist/List.d.ts +15 -1
- package/dist/List.js +23 -2
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeaderBase.d.ts +13 -0
- package/dist/ListGroupHeaderBase.js +43 -2
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListGroupHeaderTemplate.js +26 -7
- package/dist/ListGroupHeaderTemplate.js.map +1 -1
- package/dist/ListItem.d.ts +0 -3
- package/dist/ListItem.js +18 -12
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +17 -0
- package/dist/ListItemBase.js +15 -0
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListItemTemplate.js +2 -2
- package/dist/ListItemTemplate.js.map +1 -1
- package/dist/MastheadCountrySelector.js +5 -5
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/MastheadCountrySelectorTemplate.d.ts +2 -0
- package/dist/MastheadCountrySelectorTemplate.js +15 -0
- package/dist/MastheadCountrySelectorTemplate.js.map +1 -0
- package/dist/MastheadItem.d.ts +0 -3
- package/dist/MastheadItem.js +3 -6
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadItemTemplate.d.ts +2 -0
- package/dist/MastheadItemTemplate.js +41 -0
- package/dist/MastheadItemTemplate.js.map +1 -0
- package/dist/MastheadMenu.d.ts +1 -0
- package/dist/MastheadMenu.js +4 -6
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +0 -3
- package/dist/MastheadMenuItem.js +3 -6
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMenuItemTemplate.d.ts +2 -0
- package/dist/MastheadMenuItemTemplate.js +36 -0
- package/dist/MastheadMenuItemTemplate.js.map +1 -0
- package/dist/MastheadMenuTemplate.d.ts +2 -0
- package/dist/MastheadMenuTemplate.js +13 -0
- package/dist/MastheadMenuTemplate.js.map +1 -0
- package/dist/MastheadMobileMenu.js +3 -3
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadMobileMenuTemplate.d.ts +2 -0
- package/dist/MastheadMobileMenuTemplate.js +33 -0
- package/dist/MastheadMobileMenuTemplate.js.map +1 -0
- package/dist/MastheadProfileMenu.d.ts +2 -4
- package/dist/MastheadProfileMenu.js +5 -20
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadProfileMenuTemplate.d.ts +2 -0
- package/dist/MastheadProfileMenuTemplate.js +24 -0
- package/dist/MastheadProfileMenuTemplate.js.map +1 -0
- package/dist/MastheadShell.js +3 -5
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MastheadShellTemplate.d.ts +2 -0
- package/dist/MastheadShellTemplate.js +20 -0
- package/dist/MastheadShellTemplate.js.map +1 -0
- package/dist/SearchableListBase.d.ts +10 -0
- package/dist/SearchableListBase.js +34 -1
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SearchableListBaseTemplate.js +35 -4
- package/dist/SearchableListBaseTemplate.js.map +1 -1
- package/dist/SecondaryNavigation.d.ts +1 -0
- package/dist/SecondaryNavigation.js +20 -6
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SelectBase.js +8 -3
- package/dist/SelectBase.js.map +1 -1
- package/dist/Tab.d.ts +0 -7
- package/dist/Tab.js +4 -19
- package/dist/Tab.js.map +1 -1
- package/dist/TabHeaderTemplate.d.ts +2 -0
- package/dist/TabHeaderTemplate.js +15 -0
- package/dist/TabHeaderTemplate.js.map +1 -0
- package/dist/TabInOverflowTemplate.d.ts +2 -0
- package/dist/TabInOverflowTemplate.js +7 -0
- package/dist/TabInOverflowTemplate.js.map +1 -0
- package/dist/TabNavigation.d.ts +3 -4
- package/dist/TabNavigation.js +53 -40
- package/dist/TabNavigation.js.map +1 -1
- package/dist/TabNavigationPopoverTemplate.d.ts +2 -0
- package/dist/TabNavigationPopoverTemplate.js +9 -0
- package/dist/TabNavigationPopoverTemplate.js.map +1 -0
- package/dist/TabNavigationTemplate.d.ts +2 -0
- package/dist/TabNavigationTemplate.js +10 -0
- package/dist/TabNavigationTemplate.js.map +1 -0
- package/dist/TabTemplate.d.ts +2 -0
- package/dist/TabTemplate.js +5 -0
- package/dist/TabTemplate.js.map +1 -0
- package/dist/assets/{InputSuggestions-C8grDr_8.js → InputSuggestions-CMYjJsHw.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-BQtSr7yg.js → ListItemStandardExpandableTextTemplate-D2i8wWuR.js} +1 -1
- package/dist/assets/{bundle.esm-GvPkDyXP.js → bundle.esm-BjN47C_y.js} +242 -242
- package/dist/assets/messagebundle_en-B7YJOdQz.js +1 -0
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/ListGroupHeader.css +1 -1
- package/dist/css/themes/PromoTile.css +1 -1
- package/dist/css/themes/TabInOverflow.css +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
- package/dist/generated/i18n/i18n-defaults.js +3 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/PromoTile.css.d.ts +1 -1
- package/dist/generated/themes/PromoTile.css.js +1 -1
- package/dist/generated/themes/PromoTile.css.js.map +1 -1
- package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
- package/dist/messagebundle.properties +4 -0
- package/dist/messagebundle_en.properties +2 -0
- package/dist/web-types.json +1 -1
- package/package.json +1 -1
- package/src/List.ts +24 -2
- package/src/ListGroupHeaderBase.ts +44 -2
- package/src/ListGroupHeaderTemplate.tsx +74 -23
- package/src/ListItem.ts +18 -15
- package/src/ListItemBase.ts +30 -0
- package/src/ListItemTemplate.tsx +4 -4
- package/src/MastheadCountrySelector.ts +5 -5
- package/src/MastheadCountrySelectorTemplate.tsx +98 -0
- package/src/MastheadItem.ts +3 -6
- package/src/MastheadItemTemplate.tsx +178 -0
- package/src/MastheadMenu.ts +5 -6
- package/src/MastheadMenuItem.ts +3 -7
- package/src/MastheadMenuItemTemplate.tsx +123 -0
- package/src/MastheadMenuTemplate.tsx +142 -0
- package/src/MastheadMobileMenu.ts +3 -3
- package/src/MastheadMobileMenuTemplate.tsx +274 -0
- package/src/MastheadProfileMenu.ts +10 -23
- package/src/MastheadProfileMenuTemplate.tsx +143 -0
- package/src/MastheadShell.ts +3 -5
- package/src/MastheadShellTemplate.tsx +228 -0
- package/src/SearchableListBase.ts +37 -1
- package/src/SearchableListBaseTemplate.tsx +38 -2
- package/src/SecondaryNavigation.ts +21 -6
- package/src/SelectBase.ts +8 -3
- package/src/Tab.ts +4 -24
- package/src/TabHeaderTemplate.tsx +153 -0
- package/src/TabInOverflowTemplate.tsx +68 -0
- package/src/TabNavigation.ts +61 -44
- package/src/TabNavigationPopoverTemplate.tsx +27 -0
- package/src/TabNavigationTemplate.tsx +98 -0
- package/src/TabTemplate.tsx +7 -0
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/ListGroupHeader.css.ts +1 -1
- package/src/generated/themes/PromoTile.css.ts +1 -1
- package/src/generated/themes/TabInOverflow.css.ts +1 -1
- package/src/i18n/messagebundle.properties +4 -0
- package/src/i18n/messagebundle_en.properties +2 -0
- package/src/themes/Button.css +2 -1
- package/src/themes/ListGroupHeader.css +50 -7
- package/src/themes/PromoTile.css +1 -0
- package/src/themes/TabInOverflow.css +9 -4
- package/dist/assets/messagebundle_en-DBpf5Il2.js +0 -1
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +0 -13
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadItemTemplate.lit.js +0 -43
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +0 -21
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadMenuTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadMenuTemplate.lit.js +0 -25
- package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +0 -37
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +0 -18
- package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +0 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/MastheadShellTemplate.lit.js +0 -28
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabHeaderTemplate.lit.js +0 -52
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabInOverflowTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabInOverflowTemplate.lit.js +0 -15
- package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabNavigationPopoverTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +0 -8
- package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabNavigationTemplate.lit.js +0 -16
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TabTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TabTemplate.lit.js +0 -7
- package/dist/generated/templates/TabTemplate.lit.js.map +0 -1
- package/src/MastheadCountrySelector.hbs +0 -76
- package/src/MastheadItem.hbs +0 -136
- package/src/MastheadMenu.hbs +0 -131
- package/src/MastheadMenuItem.hbs +0 -102
- package/src/MastheadMobileMenu.hbs +0 -253
- package/src/MastheadProfileMenu.hbs +0 -121
- package/src/MastheadShell.hbs +0 -223
- package/src/Tab.hbs +0 -1
- package/src/TabHeader.hbs +0 -141
- package/src/TabInOverflow.hbs +0 -59
- package/src/TabNavigation.hbs +0 -88
- package/src/TabNavigationPopover.hbs +0 -18
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +0 -17
- package/src/generated/templates/MastheadItemTemplate.lit.ts +0 -47
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +0 -25
- package/src/generated/templates/MastheadMenuTemplate.lit.ts +0 -29
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +0 -41
- package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +0 -22
- package/src/generated/templates/MastheadShellTemplate.lit.ts +0 -32
- package/src/generated/templates/TabHeaderTemplate.lit.ts +0 -56
- package/src/generated/templates/TabInOverflowTemplate.lit.ts +0 -19
- package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +0 -12
- package/src/generated/templates/TabNavigationTemplate.lit.ts +0 -20
- package/src/generated/templates/TabTemplate.lit.ts +0 -11
package/dist/Tab.js
CHANGED
|
@@ -9,19 +9,16 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
9
9
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
10
10
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
11
11
|
import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
12
|
-
import
|
|
13
|
-
import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
|
|
12
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
14
13
|
import TabNavigation from "./TabNavigation.js";
|
|
15
14
|
import UDExBadge from "./Badge.js";
|
|
16
15
|
import { UDExTarget } from "./types/common.js";
|
|
17
|
-
import TabTemplate from "./
|
|
18
|
-
import TabHeaderTemplate from "./generated/templates/TabHeaderTemplate.lit.js";
|
|
19
|
-
import TabInOverflowTemplate from "./generated/templates/TabInOverflowTemplate.lit.js";
|
|
16
|
+
import TabTemplate from "./TabTemplate.js";
|
|
20
17
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
21
18
|
import { ATTENTION_BADGE } from "./generated/i18n/i18n-defaults.js";
|
|
19
|
+
import translate from "./utils/translate.js";
|
|
22
20
|
// Styles
|
|
23
21
|
import TabInOverflowCss from "./generated/themes/TabInOverflow.css.js";
|
|
24
|
-
import translate from "./utils/translate.js";
|
|
25
22
|
/**
|
|
26
23
|
* @class
|
|
27
24
|
*
|
|
@@ -177,18 +174,6 @@ let UDExTab = UDExTab_1 = class UDExTab extends UI5Element {
|
|
|
177
174
|
}
|
|
178
175
|
return "";
|
|
179
176
|
}
|
|
180
|
-
get tabNavigation() {
|
|
181
|
-
return executeTemplate(UDExTab_1.headerTemplate, this);
|
|
182
|
-
}
|
|
183
|
-
get tabInOverflow() {
|
|
184
|
-
return executeTemplate(UDExTab_1.overflowTemplate, this);
|
|
185
|
-
}
|
|
186
|
-
static get headerTemplate() {
|
|
187
|
-
return TabHeaderTemplate;
|
|
188
|
-
}
|
|
189
|
-
static get overflowTemplate() {
|
|
190
|
-
return TabInOverflowTemplate;
|
|
191
|
-
}
|
|
192
177
|
};
|
|
193
178
|
__decorate([
|
|
194
179
|
property({ type: String })
|
|
@@ -259,7 +244,7 @@ __decorate([
|
|
|
259
244
|
UDExTab = UDExTab_1 = __decorate([
|
|
260
245
|
customElement({
|
|
261
246
|
tag: "udex-tab",
|
|
262
|
-
renderer:
|
|
247
|
+
renderer: jsxRenderer,
|
|
263
248
|
template: TabTemplate,
|
|
264
249
|
dependencies: [UDExBadge],
|
|
265
250
|
})
|
package/dist/Tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../src/Tab.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot, Slot } 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-strict.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport TabNavigation from \"./TabNavigation.js\";\nimport UDExBadge from \"./Badge.js\";\nimport { UDExTarget } from \"./types/common.js\";\nimport TabTemplate from \"./generated/templates/TabTemplate.lit.js\";\nimport TabHeaderTemplate from \"./generated/templates/TabHeaderTemplate.lit.js\";\nimport TabInOverflowTemplate from \"./generated/templates/TabInOverflowTemplate.lit.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { ATTENTION_BADGE } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport TabInOverflowCss from \"./generated/themes/TabInOverflow.css.js\";\nimport translate from \"./utils/translate.js\";\n\nexport interface ITab extends UI5Element {\n getTabInHeaderDomRef: () => ITab | null;\n disabled?: boolean;\n icon?: string;\n selected?: boolean;\n numberBadge?: string;\n text?: string;\n bodyText?: string;\n itemCountText?: string;\n showAttentionBadge?: boolean;\n accessibleName?: string;\n href?: string;\n content?: Array<Node>;\n link?: Array<HTMLElement>;\n hasIcon: boolean;\n isMobile: boolean;\n isOnSelectedTab: boolean;\n hasNotIcon: boolean;\n hasNotHref: boolean;\n hasLinkSlot: boolean;\n selectedClass: string;\n tabNavigation: any;\n _individualSlot: string;\n _effectiveSlotName: string;\n _slotName: string;\n _selected?: boolean;\n _tabIndex: string;\n _isMobile: boolean;\n _isVertical: boolean;\n _isProcessTab: boolean;\n _iconWithoutBackground: boolean;\n _posinset?: number;\n _setsize?: number;\n _contentId?: string;\n getElementInHeader?: () => ITab | null;\n _realTab?: UDExTab;\n _width?: string;\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-tab</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Tab.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-tab\n * @public\n */\n@customElement({\n tag: \"udex-tab\",\n renderer: litRender,\n template: TabTemplate,\n dependencies: [UDExBadge],\n})\n\nclass UDExTab extends UI5Element implements ITab {\n /**\n * Defines the Badge at the end of the Tab item.\n *\n * @public\n */\n @property({ type: String })\n numberBadge?: string;\n\n /**\n * Defines the text of tab.\n *\n * @public\n */\n @property({ type: String })\n text!: string;\n\n /**\n * Defines the body text (supplementary description) of the tab.\n * Optional text to provide additional context or explanation.\n *\n * @public\n */\n @property({ type: String })\n bodyText?: string;\n\n /**\n * Accessible name for tab.\n *\n * @public\n */\n @property({ type: String })\n accessibleName!: string;\n\n /**\n * Defines the selected tab.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n selected!: boolean;\n\n /**\n * Defines the displaying attention badge.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n showAttentionBadge!: boolean;\n\n /**\n * Defines the icon in the tab.\n *\n * @public\n */\n @property({ type: String })\n icon!: string;\n\n /**\n * Defines if the tab is disabled. A disabled tab is not clickable or focusable,\n * but remains reachable by screen readers via aria-disabled.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines the href of the tab.\n *\n * @public\n */\n @property({ type: String })\n href!: string;\n\n /**\n * Define the target of the tab\n *\n * @public\n */\n @property()\n target: `${UDExTarget}` = UDExTarget._self;\n\n /**\n * Defines the tab.\n *\n * @private\n */\n @property({ type: Object })\n _realTab!: UDExTab;\n\n /**\n * Defines the selected tab for private use.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean })\n _selected!: boolean;\n\n /**\n * Defines the tabindex of the tab.\n *\n * @private\n * @default false\n */\n @property({ type: String })\n _tabIndex!: string;\n\n /**\n * Defines if the viewport is mobile size.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean, noAttribute: true })\n _isMobile: boolean = false;\n\n /**\n * Defines if the tab navigation is in vertical orientation.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean, noAttribute: true })\n _isVertical: boolean = false;\n\n /**\n * Defines the width of the tab.\n *\n * @private\n */\n @property({ type: String, noAttribute: true })\n _width?: string;\n\n /**\n * Defines the item count text displayed above the tab label in Process Tab variant.\n * Only rendered when the tab navigation uses the Process Tab variant.\n *\n * @public\n */\n @property({ type: String })\n itemCountText?: string;\n\n /**\n * Defines the background color of the component.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean })\n _iconWithoutBackground!: boolean;\n\n /**\n * Defines if the tab navigation is in process-tab variant.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean, noAttribute: true })\n _isProcessTab: boolean = false;\n\n /**\n * Defines the content of the tab.\n *\n * @slot content\n * @public\n */\n @slot({ type: Node, \"default\": true })\n content!: DefaultSlot<Node>;\n\n /**\n * Defines the link(s) to be displayed in the tab header (vertical orientation only).\n * Use this slot to add one or more udex-link elements to the tab button.\n *\n * @slot link\n * @public\n */\n @slot({ type: HTMLElement })\n link!: Slot<HTMLElement>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n getElementInHeader?: () => ITab | null;\n _individualSlot!: string;\n\n getTabInHeaderDomRef(): ITab | null {\n if (this.getElementInHeader) {\n return this.getElementInHeader();\n }\n\n return null;\n }\n\n get ariaDisabled(): string | null {\n return this.disabled ? \"true\" : null;\n }\n\n get hasItemCountText(): boolean {\n return this._isProcessTab && !!this.itemCountText;\n }\n\n get effectiveItemCountText(): string {\n return this.itemCountText || \"0\";\n }\n\n get processTabClass(): string {\n return this._isProcessTab ? \" udex-tab-navigation__button-tab--process\" : \"\";\n }\n\n get isOnSelectedTab(): boolean {\n return this._realTab === this;\n }\n\n get _effectiveSlotName(): string {\n return this.isOnSelectedTab ? this._individualSlot : `disabled-${this._individualSlot}`;\n }\n\n get hasIcon(): boolean {\n return !!this.icon;\n }\n\n get classWithIcon(): string {\n return this.hasIcon ? \"udex-tab-navigation__button-text--icon\" : \"\";\n }\n\n get buttonClassWithIcon(): string {\n return this.hasIcon ? \" udex-tab-navigation__button-tab--icon\" : \"\";\n }\n\n get isMobile(): boolean {\n return this._isMobile;\n }\n\n get isMobileVertical(): boolean {\n return this._isMobile && this._isVertical;\n }\n\n get hasNotIcon(): boolean {\n return !this.icon && this.showAttentionBadge;\n }\n\n get hasNotHref(): boolean {\n return !this.href;\n }\n\n get hasBodyText(): boolean {\n return !!this.bodyText;\n }\n\n /**\n * Returns true if aria-describedby should point to bodyText.\n * Only applies to selected tabs with bodyText in vertical orientation.\n */\n get ariaDescribedByBodyText(): boolean {\n return this.effectiveSelected && this.hasBodyText && this._isVertical;\n }\n\n get hasBodyTextOrLink(): boolean {\n return this._isVertical && (this.hasBodyText || this.hasLinkSlot);\n }\n\n get hasLinkSlot(): boolean {\n return this.link && this.link.length > 0;\n }\n\n /**\n * Returns the HTML content of the link slot elements.\n * This is used to render the links in the TabHeader template.\n */\n get linkSlotHtml(): string {\n if (!this.link || this.link.length === 0) {\n return \"\";\n }\n return this.link.map(l => l.outerHTML).join(\"\");\n }\n\n get effectiveSelected(): boolean {\n return this.selected || this._selected;\n }\n\n get selectedClass(): string {\n return this.effectiveSelected ? \"udex-tab-navigation__button-tab--active\" : \"\";\n }\n\n get classWithIconWithoutBackground(): string {\n return this.hasIcon && !this._iconWithoutBackground ? \" udex-tab-navigation__button-tab--icon-tab\" : \"\";\n }\n\n get _slotName(): string {\n return this.isOnSelectedTab ? this._individualSlot : `disabled-${this._individualSlot}`;\n }\n\n get ariaLabelledBy(): string {\n const labels = [];\n\n if (this.text) {\n labels.push(`${this.__id!}-text`);\n }\n\n if (this.icon) {\n labels.push(`${this.__id!}-icon`);\n }\n\n return labels.join(\" \");\n }\n\n get accessibleNameText(): string {\n return this.accessibleName || (this.showAttentionBadge ? `, ${translate(UDExTab, ATTENTION_BADGE)}` : \"\");\n }\n\n get linkTabIndex(): string {\n return this.href && this.effectiveSelected ? \"1\" : \"-1\";\n }\n\n get widthStyle(): string {\n if (this._width && this._width !== \"auto\") {\n return `width: ${this._width};`;\n }\n return \"\";\n }\n\n get tabNavigation() {\n return executeTemplate(UDExTab.headerTemplate, this);\n }\n\n get tabInOverflow() {\n return executeTemplate(UDExTab.overflowTemplate, this);\n }\n\n static get headerTemplate() {\n return TabHeaderTemplate;\n }\n\n static get overflowTemplate() {\n return TabInOverflowTemplate;\n }\n}\n\nUDExTab.define();\n\nTabNavigation.registerStaticAreaTabStyles(TabInOverflowCss);\n\nexport default UDExTab;\n"]}
|
|
1
|
+
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../src/Tab.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot, Slot } 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-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport TabNavigation from \"./TabNavigation.js\";\nimport UDExBadge from \"./Badge.js\";\nimport { UDExTarget } from \"./types/common.js\";\nimport TabTemplate from \"./TabTemplate.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { ATTENTION_BADGE } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport TabInOverflowCss from \"./generated/themes/TabInOverflow.css.js\";\n\nexport interface ITab extends UI5Element {\n getTabInHeaderDomRef: () => ITab | null;\n disabled?: boolean;\n icon?: string;\n selected?: boolean;\n numberBadge?: string;\n text?: string;\n bodyText?: string;\n itemCountText?: string;\n showAttentionBadge?: boolean;\n accessibleName?: string;\n href?: string;\n content?: Array<Node>;\n link?: Array<HTMLElement>;\n hasIcon: boolean;\n isMobile: boolean;\n isOnSelectedTab: boolean;\n hasNotIcon: boolean;\n hasNotHref: boolean;\n hasLinkSlot: boolean;\n selectedClass: string;\n _individualSlot: string;\n _effectiveSlotName: string;\n _slotName: string;\n _selected?: boolean;\n _tabIndex: string;\n _isMobile: boolean;\n _isVertical: boolean;\n _isProcessTab: boolean;\n _iconWithoutBackground: boolean;\n _posinset?: number;\n _setsize?: number;\n _contentId?: string;\n getElementInHeader?: () => ITab | null;\n _realTab?: UDExTab;\n _width?: string;\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-tab</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Tab.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-tab\n * @public\n */\n@customElement({\n tag: \"udex-tab\",\n renderer: jsxRenderer,\n template: TabTemplate,\n dependencies: [UDExBadge],\n})\n\nclass UDExTab extends UI5Element implements ITab {\n /**\n * Defines the Badge at the end of the Tab item.\n *\n * @public\n */\n @property({ type: String })\n numberBadge?: string;\n\n /**\n * Defines the text of tab.\n *\n * @public\n */\n @property({ type: String })\n text!: string;\n\n /**\n * Defines the body text (supplementary description) of the tab.\n * Optional text to provide additional context or explanation.\n *\n * @public\n */\n @property({ type: String })\n bodyText?: string;\n\n /**\n * Accessible name for tab.\n *\n * @public\n */\n @property({ type: String })\n accessibleName!: string;\n\n /**\n * Defines the selected tab.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n selected!: boolean;\n\n /**\n * Defines the displaying attention badge.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n showAttentionBadge!: boolean;\n\n /**\n * Defines the icon in the tab.\n *\n * @public\n */\n @property({ type: String })\n icon!: string;\n\n /**\n * Defines if the tab is disabled. A disabled tab is not clickable or focusable,\n * but remains reachable by screen readers via aria-disabled.\n *\n * @public\n * @default false\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines the href of the tab.\n *\n * @public\n */\n @property({ type: String })\n href!: string;\n\n /**\n * Define the target of the tab\n *\n * @public\n */\n @property()\n target: `${UDExTarget}` = UDExTarget._self;\n\n /**\n * Defines the tab.\n *\n * @private\n */\n @property({ type: Object })\n _realTab!: UDExTab;\n\n /**\n * Defines the selected tab for private use.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean })\n _selected!: boolean;\n\n /**\n * Defines the tabindex of the tab.\n *\n * @private\n * @default false\n */\n @property({ type: String })\n _tabIndex!: string;\n\n /**\n * Defines if the viewport is mobile size.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean, noAttribute: true })\n _isMobile: boolean = false;\n\n /**\n * Defines if the tab navigation is in vertical orientation.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean, noAttribute: true })\n _isVertical: boolean = false;\n\n /**\n * Defines the width of the tab.\n *\n * @private\n */\n @property({ type: String, noAttribute: true })\n _width?: string;\n\n /**\n * Defines the item count text displayed above the tab label in Process Tab variant.\n * Only rendered when the tab navigation uses the Process Tab variant.\n *\n * @public\n */\n @property({ type: String })\n itemCountText?: string;\n\n /**\n * Defines the background color of the component.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean })\n _iconWithoutBackground!: boolean;\n\n /**\n * Defines if the tab navigation is in process-tab variant.\n *\n * @private\n * @default false\n */\n @property({ type: Boolean, noAttribute: true })\n _isProcessTab: boolean = false;\n\n /**\n * Defines the content of the tab.\n *\n * @slot content\n * @public\n */\n @slot({ type: Node, \"default\": true })\n content!: DefaultSlot<Node>;\n\n /**\n * Defines the link(s) to be displayed in the tab header (vertical orientation only).\n * Use this slot to add one or more udex-link elements to the tab button.\n *\n * @slot link\n * @public\n */\n @slot({ type: HTMLElement })\n link!: Slot<HTMLElement>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n getElementInHeader?: () => ITab | null;\n _individualSlot!: string;\n\n getTabInHeaderDomRef(): ITab | null {\n if (this.getElementInHeader) {\n return this.getElementInHeader();\n }\n\n return null;\n }\n\n get ariaDisabled(): string | null {\n return this.disabled ? \"true\" : null;\n }\n\n get hasItemCountText(): boolean {\n return this._isProcessTab && !!this.itemCountText;\n }\n\n get effectiveItemCountText(): string {\n return this.itemCountText || \"0\";\n }\n\n get processTabClass(): string {\n return this._isProcessTab ? \" udex-tab-navigation__button-tab--process\" : \"\";\n }\n\n get isOnSelectedTab(): boolean {\n return this._realTab === this;\n }\n\n get _effectiveSlotName(): string {\n return this.isOnSelectedTab ? this._individualSlot : `disabled-${this._individualSlot}`;\n }\n\n get hasIcon(): boolean {\n return !!this.icon;\n }\n\n get classWithIcon(): string {\n return this.hasIcon ? \"udex-tab-navigation__button-text--icon\" : \"\";\n }\n\n get buttonClassWithIcon(): string {\n return this.hasIcon ? \" udex-tab-navigation__button-tab--icon\" : \"\";\n }\n\n get isMobile(): boolean {\n return this._isMobile;\n }\n\n get isMobileVertical(): boolean {\n return this._isMobile && this._isVertical;\n }\n\n get hasNotIcon(): boolean {\n return !this.icon && this.showAttentionBadge;\n }\n\n get hasNotHref(): boolean {\n return !this.href;\n }\n\n get hasBodyText(): boolean {\n return !!this.bodyText;\n }\n\n /**\n * Returns true if aria-describedby should point to bodyText.\n * Only applies to selected tabs with bodyText in vertical orientation.\n */\n get ariaDescribedByBodyText(): boolean {\n return this.effectiveSelected && this.hasBodyText && this._isVertical;\n }\n\n get hasBodyTextOrLink(): boolean {\n return this._isVertical && (this.hasBodyText || this.hasLinkSlot);\n }\n\n get hasLinkSlot(): boolean {\n return this.link && this.link.length > 0;\n }\n\n /**\n * Returns the HTML content of the link slot elements.\n * This is used to render the links in the TabHeader template.\n */\n get linkSlotHtml(): string {\n if (!this.link || this.link.length === 0) {\n return \"\";\n }\n return this.link.map(l => l.outerHTML).join(\"\");\n }\n\n get effectiveSelected(): boolean {\n return this.selected || this._selected;\n }\n\n get selectedClass(): string {\n return this.effectiveSelected ? \"udex-tab-navigation__button-tab--active\" : \"\";\n }\n\n get classWithIconWithoutBackground(): string {\n return this.hasIcon && !this._iconWithoutBackground ? \" udex-tab-navigation__button-tab--icon-tab\" : \"\";\n }\n\n get _slotName(): string {\n return this.isOnSelectedTab ? this._individualSlot : `disabled-${this._individualSlot}`;\n }\n\n get ariaLabelledBy(): string {\n const labels = [];\n\n if (this.text) {\n labels.push(`${this.__id!}-text`);\n }\n\n if (this.icon) {\n labels.push(`${this.__id!}-icon`);\n }\n\n return labels.join(\" \");\n }\n\n get accessibleNameText(): string {\n return this.accessibleName || (this.showAttentionBadge ? `, ${translate(UDExTab, ATTENTION_BADGE)}` : \"\");\n }\n\n get linkTabIndex(): string {\n return this.href && this.effectiveSelected ? \"1\" : \"-1\";\n }\n\n get widthStyle(): string {\n if (this._width && this._width !== \"auto\") {\n return `width: ${this._width};`;\n }\n return \"\";\n }\n}\n\nUDExTab.define();\n\nTabNavigation.registerStaticAreaTabStyles(TabInOverflowCss);\n\nexport default UDExTab;\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
3
|
+
import UDExBadge from "./Badge.js";
|
|
4
|
+
import { UDExNumberBadgeDesign, UDExSizeBadgeDesign, UDExTypeBadgeDesign } from "./types/BadgeDesign.js";
|
|
5
|
+
export default function TabHeaderTemplate() {
|
|
6
|
+
const tab = this;
|
|
7
|
+
if (this.hasBodyTextOrLink) {
|
|
8
|
+
return (_jsxs("div", { class: "udex-tab-navigation__tab-wrapper", role: "presentation", style: this.widthStyle || undefined, children: [this.hasNotHref ? (_jsxs("button", { id: this._id, type: "button", role: "tab", class: `udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`, tabindex: Number(this._tabIndex), "aria-posinset": tab._posinset, "aria-setsize": tab._setsize, "aria-controls": tab._contentId, "aria-selected": this.effectiveSelected, "aria-disabled": this.ariaDisabled ? "true" : undefined, children: [tabContent.call(this), this.ariaDescribedByBodyText && (_jsx("span", { class: "visually-hidden", children: this.bodyText }))] })) : (_jsxs("a", { id: this._id, role: "tab", class: `udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`, href: this.href, target: this.target, tabindex: Number(this.linkTabIndex), "aria-posinset": tab._posinset, "aria-setsize": tab._setsize, "aria-disabled": this.ariaDisabled ? "true" : undefined, children: [tabContent.call(this), this.ariaDescribedByBodyText && (_jsx("span", { class: "visually-hidden", children: this.bodyText }))] })), this.hasBodyText && (_jsx("p", { class: "udex-tab-navigation__button-body-text", children: this.bodyText })), this.hasLinkSlot && (_jsx("div", { class: "udex-tab-navigation__button-links", ...{ innerHTML: this.linkSlotHtml } }))] }));
|
|
9
|
+
}
|
|
10
|
+
return this.hasNotHref ? (_jsx("button", { id: this._id, type: "button", role: "tab", class: `udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`, tabindex: Number(this._tabIndex), "aria-describedby": `udex-tab-navigation__${this._id}__accessible-name`, "aria-posinset": tab._posinset, "aria-setsize": tab._setsize, "aria-controls": tab._contentId, "aria-selected": this.effectiveSelected, "aria-disabled": this.ariaDisabled ? "true" : undefined, style: this.widthStyle || undefined, children: tabContent.call(this) })) : (_jsx("a", { id: this._id, role: "tab", class: `udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`, tabindex: Number(this.linkTabIndex), "aria-posinset": tab._posinset, "aria-setsize": tab._setsize, href: this.href, target: this.target, "aria-disabled": this.ariaDisabled ? "true" : undefined, style: this.widthStyle || undefined, children: tabContent.call(this) }));
|
|
11
|
+
}
|
|
12
|
+
function tabContent() {
|
|
13
|
+
return (_jsxs(_Fragment, { children: [this.hasIcon && (_jsxs("span", { class: "udex-tab-navigation__button-icon-outer", role: "presentation", "aria-hidden": "true", children: [_jsx(Icon, { class: "udex-tab-navigation__button-icon", name: this.icon }), this.showAttentionBadge && (_jsx("span", { class: "udex-tab-navigation__button-badge" }))] })), this._isProcessTab ? (_jsxs("span", { class: "udex-tab-navigation__button-text-block", children: [_jsx("span", { class: "udex-tab-navigation__button-item-count", children: this.effectiveItemCountText }), _jsxs("p", { class: `udex-tab-navigation__button-text ${this.classWithIcon}`, children: [this.text, this.numberBadge && (_jsx(UDExBadge, { class: "udex-tab-navigation__badge", type: UDExTypeBadgeDesign.Number, "number-design": UDExNumberBadgeDesign.Blue, size: UDExSizeBadgeDesign.Medium, children: this.numberBadge })), this.hasNotIcon && (_jsx("span", { class: "udex-tab-navigation__button-badge" }))] })] })) : (_jsxs("p", { class: `udex-tab-navigation__button-text ${this.classWithIcon}`, children: [this.text, this.numberBadge && (_jsx(UDExBadge, { class: "udex-tab-navigation__badge", type: UDExTypeBadgeDesign.Number, "number-design": UDExNumberBadgeDesign.Blue, size: UDExSizeBadgeDesign.Medium, children: this.numberBadge })), this.hasNotIcon && (_jsx("span", { class: "udex-tab-navigation__button-badge" }))] })), _jsx("span", { class: "visually-hidden", id: `udex-tab-navigation__${this._id}__accessible-name`, children: this.accessibleNameText })] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=TabHeaderTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabHeaderTemplate.js","sourceRoot":"","sources":["../src/TabHeaderTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type UDExTab from \"./Tab.js\";\nimport type { ITab } from \"./Tab.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport UDExBadge from \"./Badge.js\";\nimport { UDExNumberBadgeDesign, UDExSizeBadgeDesign, UDExTypeBadgeDesign } from \"./types/BadgeDesign.js\";\n\nexport default function TabHeaderTemplate(this: UDExTab) {\n const tab = this as unknown as ITab;\n\n if (this.hasBodyTextOrLink) {\n return (\n <div\n class=\"udex-tab-navigation__tab-wrapper\"\n role=\"presentation\"\n style={this.widthStyle || undefined}>\n {this.hasNotHref ? (\n <button\n id={this._id}\n type=\"button\"\n role=\"tab\"\n class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}\n tabindex={Number(this._tabIndex)}\n aria-posinset={tab._posinset}\n aria-setsize={tab._setsize}\n aria-controls={tab._contentId}\n aria-selected={this.effectiveSelected}\n aria-disabled={this.ariaDisabled ? \"true\" : undefined}>\n {tabContent.call(this)}\n {this.ariaDescribedByBodyText && (\n <span class=\"visually-hidden\">{this.bodyText}</span>\n )}\n </button>\n ) : (\n <a\n id={this._id}\n role=\"tab\"\n class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}\n href={this.href}\n target={this.target}\n tabindex={Number(this.linkTabIndex)}\n aria-posinset={tab._posinset}\n aria-setsize={tab._setsize}\n aria-disabled={this.ariaDisabled ? \"true\" : undefined}>\n {tabContent.call(this)}\n {this.ariaDescribedByBodyText && (\n <span class=\"visually-hidden\">{this.bodyText}</span>\n )}\n </a>\n )}\n {this.hasBodyText && (\n <p class=\"udex-tab-navigation__button-body-text\">{this.bodyText}</p>\n )}\n {this.hasLinkSlot && (\n <div class=\"udex-tab-navigation__button-links\" {...({ innerHTML: this.linkSlotHtml } as object)}></div>\n )}\n </div>\n );\n }\n\n return this.hasNotHref ? (\n <button\n id={this._id}\n type=\"button\"\n role=\"tab\"\n class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}\n tabindex={Number(this._tabIndex)}\n aria-describedby={`udex-tab-navigation__${this._id}__accessible-name`}\n aria-posinset={tab._posinset}\n aria-setsize={tab._setsize}\n aria-controls={tab._contentId}\n aria-selected={this.effectiveSelected}\n aria-disabled={this.ariaDisabled ? \"true\" : undefined}\n style={this.widthStyle || undefined}>\n {tabContent.call(this)}\n </button>\n ) : (\n <a\n id={this._id}\n role=\"tab\"\n class={`udex-tab-navigation__button-tab ${this.selectedClass} ${this.classWithIconWithoutBackground} ${this.buttonClassWithIcon} ${this.processTabClass}`}\n tabindex={Number(this.linkTabIndex)}\n aria-posinset={tab._posinset}\n aria-setsize={tab._setsize}\n href={this.href}\n target={this.target}\n aria-disabled={this.ariaDisabled ? \"true\" : undefined}\n style={this.widthStyle || undefined}>\n {tabContent.call(this)}\n </a>\n );\n}\n\nfunction tabContent(this: UDExTab) {\n return (\n <>\n {this.hasIcon && (\n <span\n class=\"udex-tab-navigation__button-icon-outer\"\n role=\"presentation\"\n aria-hidden=\"true\">\n <Icon\n class=\"udex-tab-navigation__button-icon\"\n name={this.icon}>\n </Icon>\n {this.showAttentionBadge && (\n <span class=\"udex-tab-navigation__button-badge\"></span>\n )}\n </span>\n )}\n {this._isProcessTab ? (\n <span class=\"udex-tab-navigation__button-text-block\">\n <span class=\"udex-tab-navigation__button-item-count\">{this.effectiveItemCountText}</span>\n <p class={`udex-tab-navigation__button-text ${this.classWithIcon}`}>\n {this.text}\n {this.numberBadge && (\n <UDExBadge\n class=\"udex-tab-navigation__badge\"\n type={UDExTypeBadgeDesign.Number}\n number-design={UDExNumberBadgeDesign.Blue}\n size={UDExSizeBadgeDesign.Medium}>\n {this.numberBadge}\n </UDExBadge>\n )}\n {this.hasNotIcon && (\n <span class=\"udex-tab-navigation__button-badge\"></span>\n )}\n </p>\n </span>\n ) : (\n <p class={`udex-tab-navigation__button-text ${this.classWithIcon}`}>\n {this.text}\n {this.numberBadge && (\n <UDExBadge\n class=\"udex-tab-navigation__badge\"\n type={UDExTypeBadgeDesign.Number}\n number-design={UDExNumberBadgeDesign.Blue}\n size={UDExSizeBadgeDesign.Medium}>\n {this.numberBadge}\n </UDExBadge>\n )}\n {this.hasNotIcon && (\n <span class=\"udex-tab-navigation__button-badge\"></span>\n )}\n </p>\n )}\n <span\n class=\"visually-hidden\"\n id={`udex-tab-navigation__${this._id}__accessible-name`}>\n {this.accessibleNameText}\n </span>\n </>\n );\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
3
|
+
export default function TabInOverflowTemplate() {
|
|
4
|
+
const tab = this;
|
|
5
|
+
return this.hasNotHref ? (_jsxs("button", { id: this._id, class: "udex-tab-overflow__button", role: "tab", "aria-selected": this.effectiveSelected, "aria-disabled": this.ariaDisabled ? "true" : undefined, disabled: !!this.ariaDisabled, tabindex: Number(tab._tabIndex), children: [this.hasIcon && (_jsxs("span", { class: "udex-tab-overflow__button-icon", role: "presentation", "aria-hidden": "true", children: [_jsx(Icon, { name: this.icon }), this.showAttentionBadge && (_jsx("span", { class: "udex-tab-overflow__button-badge" }))] })), this.text, this.hasNotIcon && (_jsx("span", { class: "udex-tab-overflow__button-badge", role: "presentation", "aria-hidden": "true" }))] })) : (_jsxs("a", { id: this._id, href: this.ariaDisabled ? undefined : this.href, target: this.target, class: "udex-tab-overflow__button", role: "tab", "aria-selected": this.effectiveSelected, "aria-disabled": this.ariaDisabled ? "true" : undefined, tabindex: Number(tab._tabIndex), children: [this.hasIcon && (_jsxs("span", { class: "udex-tab-overflow__button-icon", role: "presentation", "aria-hidden": "true", children: [_jsx(Icon, { name: this.icon }), this.showAttentionBadge && (_jsx("span", { class: "udex-tab-overflow__button-badge" }))] })), this.text, this.hasNotIcon && (_jsx("span", { class: "udex-tab-overflow__button-badge", role: "presentation", "aria-hidden": "true" }))] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=TabInOverflowTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabInOverflowTemplate.js","sourceRoot":"","sources":["../src/TabInOverflowTemplate.tsx"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,qBAAqB;IAC3C,MAAM,GAAG,GAAG,IAAuB,CAAC;IAEpC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACvB,kBACE,EAAE,EAAE,IAAI,CAAC,GAAG,EACZ,KAAK,EAAC,2BAA2B,EACjC,IAAI,EAAC,KAAK,mBACK,IAAI,CAAC,iBAAiB,mBACtB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACrD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAC7B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,aAC9B,IAAI,CAAC,OAAO,IAAI,CACf,gBACE,KAAK,EAAC,gCAAgC,EACtC,IAAI,EAAC,cAAc,iBACP,MAAM,aAClB,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAS,EAC7B,IAAI,CAAC,kBAAkB,IAAI,CAC1B,eAAM,KAAK,EAAC,iCAAiC,GAAQ,CACtD,IACI,CACR,EACA,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,IAAI,CAClB,eACE,KAAK,EAAC,iCAAiC,EACvC,IAAI,EAAC,cAAc,iBACP,MAAM,GACb,CACR,IACM,CACV,CAAC,CAAC,CAAC,CACF,aACE,EAAE,EAAE,IAAI,CAAC,GAAG,EACZ,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,KAAK,EAAC,2BAA2B,EACjC,IAAI,EAAC,KAAK,mBACK,IAAI,CAAC,iBAAiB,mBACtB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACrD,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,aAC9B,IAAI,CAAC,OAAO,IAAI,CACf,gBACE,KAAK,EAAC,gCAAgC,EACtC,IAAI,EAAC,cAAc,iBACP,MAAM,aAClB,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAS,EAC7B,IAAI,CAAC,kBAAkB,IAAI,CAC1B,eAAM,KAAK,EAAC,iCAAiC,GAAQ,CACtD,IACI,CACR,EACA,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,IAAI,CAClB,eACE,KAAK,EAAC,iCAAiC,EACvC,IAAI,EAAC,cAAc,iBACP,MAAM,GACb,CACR,IACC,CACL,CAAC;AACJ,CAAC","sourcesContent":["import type UDExTab from \"./Tab.js\";\nimport type { ITab } from \"./Tab.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\n\nexport default function TabInOverflowTemplate(this: UDExTab) {\n const tab = this as unknown as ITab;\n\n return this.hasNotHref ? (\n <button\n id={this._id}\n class=\"udex-tab-overflow__button\"\n role=\"tab\"\n aria-selected={this.effectiveSelected}\n aria-disabled={this.ariaDisabled ? \"true\" : undefined}\n disabled={!!this.ariaDisabled}\n tabindex={Number(tab._tabIndex)}>\n {this.hasIcon && (\n <span\n class=\"udex-tab-overflow__button-icon\"\n role=\"presentation\"\n aria-hidden=\"true\">\n <Icon name={this.icon}></Icon>\n {this.showAttentionBadge && (\n <span class=\"udex-tab-overflow__button-badge\"></span>\n )}\n </span>\n )}\n {this.text}\n {this.hasNotIcon && (\n <span\n class=\"udex-tab-overflow__button-badge\"\n role=\"presentation\"\n aria-hidden=\"true\">\n </span>\n )}\n </button>\n ) : (\n <a\n id={this._id}\n href={this.ariaDisabled ? undefined : this.href}\n target={this.target}\n class=\"udex-tab-overflow__button\"\n role=\"tab\"\n aria-selected={this.effectiveSelected}\n aria-disabled={this.ariaDisabled ? \"true\" : undefined}\n tabindex={Number(tab._tabIndex)}>\n {this.hasIcon && (\n <span\n class=\"udex-tab-overflow__button-icon\"\n role=\"presentation\"\n aria-hidden=\"true\">\n <Icon name={this.icon}></Icon>\n {this.showAttentionBadge && (\n <span class=\"udex-tab-overflow__button-badge\"></span>\n )}\n </span>\n )}\n {this.text}\n {this.hasNotIcon && (\n <span\n class=\"udex-tab-overflow__button-badge\"\n role=\"presentation\"\n aria-hidden=\"true\">\n </span>\n )}\n </a>\n );\n}\n"]}
|
package/dist/TabNavigation.d.ts
CHANGED
|
@@ -10,7 +10,6 @@ import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
|
10
10
|
import "@ui5/webcomponents-icons/dist/play.js";
|
|
11
11
|
import "@ui5/webcomponents-icons/dist/pause.js";
|
|
12
12
|
import UDExButtonSize from "./types/ButtonSize.js";
|
|
13
|
-
import TabNavigationPopoverTemplate from "./generated/templates/TabNavigationPopoverTemplate.lit.js";
|
|
14
13
|
export declare enum UDExSizeMoreButton {
|
|
15
14
|
Small = "Small",
|
|
16
15
|
Medium = "Medium"
|
|
@@ -183,6 +182,7 @@ declare class UDExTabNavigation extends UI5Element {
|
|
|
183
182
|
_maxTitleLength: number;
|
|
184
183
|
_maxTitleLengthInSecondLines: number;
|
|
185
184
|
_autoPlayTimer?: number;
|
|
185
|
+
_focusSelectedTabAfterRender: boolean;
|
|
186
186
|
constructor();
|
|
187
187
|
onAfterRendering(): void;
|
|
188
188
|
onEnterDOM(): void;
|
|
@@ -249,13 +249,14 @@ declare class UDExTabNavigation extends UI5Element {
|
|
|
249
249
|
handleFocusMoreButton(e: KeyboardEvent): void;
|
|
250
250
|
handleHomeKeyMoreButton(e: KeyboardEvent): void;
|
|
251
251
|
handleEnterKeyMoreButton(e: KeyboardEvent): void;
|
|
252
|
-
handleDownMoreButton(e: KeyboardEvent): void;
|
|
253
252
|
onFocusFirstItemPopover(): void;
|
|
254
253
|
handleFocusPopover(e: KeyboardEvent): void;
|
|
255
254
|
handleTab(e: KeyboardEvent): void;
|
|
256
255
|
handleUp(e: KeyboardEvent): void;
|
|
257
256
|
onPreviousItemInPopover(target: HTMLElement): void;
|
|
258
257
|
onNextItemInPopover(target: HTMLElement): void;
|
|
258
|
+
private isPopoverItemDisabled;
|
|
259
|
+
private findNextEnabledPopoverItem;
|
|
259
260
|
resetTabIndexItem(item: HTMLElement): void;
|
|
260
261
|
getItemsFromPopover(): Array<HTMLElement>;
|
|
261
262
|
getPopoverTabIndexById(popoverItems: Array<HTMLElement>, id: string): number;
|
|
@@ -271,8 +272,6 @@ declare class UDExTabNavigation extends UI5Element {
|
|
|
271
272
|
get isDesktop(): boolean;
|
|
272
273
|
get moreButtonText(): string;
|
|
273
274
|
static registerStaticAreaTabStyles(styles: StyleData): void;
|
|
274
|
-
static get tabNavigationPopoverTemplate(): typeof TabNavigationPopoverTemplate;
|
|
275
|
-
get tabNavigationPopover(): object;
|
|
276
275
|
applyTabWidthToVerticalTabs(): void;
|
|
277
276
|
updateMobileState(): void;
|
|
278
277
|
_startAutoPlay(): void;
|
package/dist/TabNavigation.js
CHANGED
|
@@ -10,10 +10,9 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
|
|
|
10
10
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
11
11
|
import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
12
12
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
13
|
-
import
|
|
13
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
14
14
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
15
15
|
import Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
16
|
-
import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
|
|
17
16
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
18
17
|
import { isUp, isDown, isRight, isLeft, isEnter, isSpace, isEscape, isHome, isEnd, isTabNext, isTabPrevious, } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
19
18
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
@@ -26,13 +25,12 @@ import "@ui5/webcomponents-icons/dist/play.js";
|
|
|
26
25
|
import "@ui5/webcomponents-icons/dist/pause.js";
|
|
27
26
|
import UDExButton from "./Button.js";
|
|
28
27
|
import UDExButtonSize from "./types/ButtonSize.js";
|
|
28
|
+
import translate from "./utils/translate.js";
|
|
29
29
|
// Templates
|
|
30
|
-
import TabNavigationTemplate from "./
|
|
31
|
-
import TabNavigationPopoverTemplate from "./generated/templates/TabNavigationPopoverTemplate.lit.js";
|
|
30
|
+
import TabNavigationTemplate from "./TabNavigationTemplate.js";
|
|
32
31
|
// Styles
|
|
33
32
|
import TabNavigationCss from "./generated/themes/TabNavigation.css.js";
|
|
34
33
|
import TabInOverflowCss from "./generated/themes/TabInOverflow.css.js";
|
|
35
|
-
import translate from "./utils/translate.js";
|
|
36
34
|
const staticAreaTabStyles = [];
|
|
37
35
|
export var UDExSizeMoreButton;
|
|
38
36
|
(function (UDExSizeMoreButton) {
|
|
@@ -155,6 +153,7 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
155
153
|
this._isExpanded = false;
|
|
156
154
|
this._maxTitleLength = 25;
|
|
157
155
|
this._maxTitleLengthInSecondLines = this._maxTitleLength * 2;
|
|
156
|
+
this._focusSelectedTabAfterRender = false;
|
|
158
157
|
this._handleResizeBound = this._handleResize.bind(this);
|
|
159
158
|
this._handleWindowResizeBound = this._handleWindowResize.bind(this);
|
|
160
159
|
}
|
|
@@ -169,6 +168,10 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
169
168
|
}
|
|
170
169
|
this.initOutsideClick();
|
|
171
170
|
this.applyTabWidthToVerticalTabs();
|
|
171
|
+
if (this._focusSelectedTabAfterRender) {
|
|
172
|
+
this._focusSelectedTabAfterRender = false;
|
|
173
|
+
this._selectedTab?.getTabInHeaderDomRef()?.focus();
|
|
174
|
+
}
|
|
172
175
|
}
|
|
173
176
|
onEnterDOM() {
|
|
174
177
|
ResizeHandler.register(this.getHeader(), this._handleResizeBound);
|
|
@@ -466,9 +469,6 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
466
469
|
.filter(tab => !tab.disabled)
|
|
467
470
|
.map(tab => tab.getTabInHeaderDomRef())
|
|
468
471
|
.filter(tab => !tab.hasAttribute("hidden"));
|
|
469
|
-
if (!this.getMoreButton().hasAttribute("hidden")) {
|
|
470
|
-
this._visibleTabs.push(this.getMoreButton());
|
|
471
|
-
}
|
|
472
472
|
}
|
|
473
473
|
applyTabIndex() {
|
|
474
474
|
if (!this.shadowRoot.contains(document.activeElement)) {
|
|
@@ -483,15 +483,27 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
483
483
|
});
|
|
484
484
|
}
|
|
485
485
|
handleOverflowItemClick(e) {
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
486
|
+
const target = e.target;
|
|
487
|
+
const { localName } = target;
|
|
488
|
+
if (localName !== "button" && localName !== "a") {
|
|
489
|
+
this.handleClosePopover();
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
const targetId = target.id;
|
|
493
|
+
const [targetTab] = this.items.filter(item => item.__id === targetId);
|
|
494
|
+
if (targetTab?.disabled) {
|
|
495
|
+
e.preventDefault();
|
|
496
|
+
e.stopPropagation();
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
if (localName === "button") {
|
|
500
|
+
e.preventDefault();
|
|
501
|
+
this.onItemSelect(targetId);
|
|
493
502
|
}
|
|
494
503
|
this.handleClosePopover();
|
|
504
|
+
if (localName === "button") {
|
|
505
|
+
this._focusSelectedTabAfterRender = true;
|
|
506
|
+
}
|
|
495
507
|
}
|
|
496
508
|
onItemSelect(selectedId) {
|
|
497
509
|
const [selectedTab] = this.items.filter(item => item.__id === selectedId);
|
|
@@ -627,7 +639,6 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
627
639
|
}
|
|
628
640
|
}
|
|
629
641
|
handleFocusMoreButton(e) {
|
|
630
|
-
this.handleDownMoreButton(e);
|
|
631
642
|
this.handleHomeKeyMoreButton(e);
|
|
632
643
|
this.handleEnterKeyMoreButton(e);
|
|
633
644
|
}
|
|
@@ -646,19 +657,12 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
646
657
|
this.handleOpenPopover();
|
|
647
658
|
}
|
|
648
659
|
}
|
|
649
|
-
handleDownMoreButton(e) {
|
|
650
|
-
if (isDown(e) || isEnter(e)) {
|
|
651
|
-
this._popover = this.getResponsePopover();
|
|
652
|
-
this.handleOpenPopover();
|
|
653
|
-
this.updateOverflowItems();
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
660
|
onFocusFirstItemPopover() {
|
|
657
661
|
if (this._popover?.open) {
|
|
658
662
|
const popoverItems = this.getItemsFromPopover();
|
|
659
|
-
const
|
|
660
|
-
|
|
661
|
-
|
|
663
|
+
const firstActiveItem = popoverItems.find(item => !this.isPopoverItemDisabled(item)) ?? popoverItems[0];
|
|
664
|
+
firstActiveItem.setAttribute("tabindex", "0");
|
|
665
|
+
firstActiveItem.focus();
|
|
662
666
|
}
|
|
663
667
|
}
|
|
664
668
|
handleFocusPopover(e) {
|
|
@@ -684,8 +688,7 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
684
688
|
onPreviousItemInPopover(target) {
|
|
685
689
|
const popoverItems = this.getItemsFromPopover();
|
|
686
690
|
const currentSelectedTabIndex = this.getPopoverTabIndexById(popoverItems, target.id);
|
|
687
|
-
const
|
|
688
|
-
const prevItem = popoverItems[previousSelectIndex];
|
|
691
|
+
const prevItem = this.findNextEnabledPopoverItem(popoverItems, currentSelectedTabIndex, -1);
|
|
689
692
|
this.resetTabIndexItem(popoverItems[currentSelectedTabIndex]);
|
|
690
693
|
prevItem.setAttribute("tabIndex", "0");
|
|
691
694
|
prevItem.focus();
|
|
@@ -693,12 +696,25 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
693
696
|
onNextItemInPopover(target) {
|
|
694
697
|
const popoverItems = this.getItemsFromPopover();
|
|
695
698
|
const currentSelectedTabIndex = this.getPopoverTabIndexById(popoverItems, target.id);
|
|
696
|
-
const
|
|
697
|
-
const nextItem = popoverItems[nextSelectIndex];
|
|
699
|
+
const nextItem = this.findNextEnabledPopoverItem(popoverItems, currentSelectedTabIndex, 1);
|
|
698
700
|
this.resetTabIndexItem(popoverItems[currentSelectedTabIndex]);
|
|
699
701
|
nextItem.setAttribute("tabIndex", "0");
|
|
700
702
|
nextItem.focus();
|
|
701
703
|
}
|
|
704
|
+
isPopoverItemDisabled(item) {
|
|
705
|
+
return item.getAttribute("aria-disabled") === "true";
|
|
706
|
+
}
|
|
707
|
+
findNextEnabledPopoverItem(items, currentIndex, direction) {
|
|
708
|
+
const len = items.length;
|
|
709
|
+
let index = (currentIndex + direction + len) % len;
|
|
710
|
+
while (index !== currentIndex) {
|
|
711
|
+
if (!this.isPopoverItemDisabled(items[index])) {
|
|
712
|
+
return items[index];
|
|
713
|
+
}
|
|
714
|
+
index = (index + direction + len) % len;
|
|
715
|
+
}
|
|
716
|
+
return items[currentIndex];
|
|
717
|
+
}
|
|
702
718
|
resetTabIndexItem(item) {
|
|
703
719
|
item.setAttribute("tabIndex", "-1");
|
|
704
720
|
}
|
|
@@ -723,6 +739,7 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
723
739
|
if (!targetTab?.disabled) {
|
|
724
740
|
this.onItemSelect(targetId);
|
|
725
741
|
this.handleClosePopover();
|
|
742
|
+
this._focusSelectedTabAfterRender = true;
|
|
726
743
|
}
|
|
727
744
|
}
|
|
728
745
|
}
|
|
@@ -730,14 +747,15 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
730
747
|
if (isEscape(e)) {
|
|
731
748
|
e.preventDefault();
|
|
732
749
|
this.handleClosePopover();
|
|
733
|
-
this.
|
|
750
|
+
this.getMoreButton().focus();
|
|
734
751
|
}
|
|
735
752
|
}
|
|
736
753
|
handleHome(e) {
|
|
737
754
|
if (isHome(e)) {
|
|
738
755
|
e.preventDefault();
|
|
739
756
|
const popoverItems = this.getItemsFromPopover();
|
|
740
|
-
popoverItems[0]
|
|
757
|
+
const firstActiveItem = popoverItems.find(item => !this.isPopoverItemDisabled(item)) ?? popoverItems[0];
|
|
758
|
+
firstActiveItem.focus();
|
|
741
759
|
}
|
|
742
760
|
}
|
|
743
761
|
handleEnd(e) {
|
|
@@ -745,7 +763,8 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
745
763
|
e.preventDefault();
|
|
746
764
|
e.stopPropagation();
|
|
747
765
|
const popoverItems = this.getItemsFromPopover();
|
|
748
|
-
popoverItems[popoverItems.length - 1]
|
|
766
|
+
const lastActiveItem = [...popoverItems].reverse().find(item => !this.isPopoverItemDisabled(item)) ?? popoverItems[popoverItems.length - 1];
|
|
767
|
+
lastActiveItem.focus();
|
|
749
768
|
}
|
|
750
769
|
}
|
|
751
770
|
getResponsePopover() {
|
|
@@ -769,12 +788,6 @@ let UDExTabNavigation = UDExTabNavigation_1 = class UDExTabNavigation extends UI
|
|
|
769
788
|
static registerStaticAreaTabStyles(styles) {
|
|
770
789
|
staticAreaTabStyles.push(styles);
|
|
771
790
|
}
|
|
772
|
-
static get tabNavigationPopoverTemplate() {
|
|
773
|
-
return TabNavigationPopoverTemplate;
|
|
774
|
-
}
|
|
775
|
-
get tabNavigationPopover() {
|
|
776
|
-
return executeTemplate(UDExTabNavigation_1.tabNavigationPopoverTemplate, this);
|
|
777
|
-
}
|
|
778
791
|
applyTabWidthToVerticalTabs() {
|
|
779
792
|
if (this.isVertical && this.tabWidth && this.tabWidth !== "auto") {
|
|
780
793
|
this.style.setProperty("--udex-tab-header-width", this.tabWidth);
|
|
@@ -895,7 +908,7 @@ __decorate([
|
|
|
895
908
|
UDExTabNavigation = UDExTabNavigation_1 = __decorate([
|
|
896
909
|
customElement({
|
|
897
910
|
tag: "udex-tab-navigation",
|
|
898
|
-
renderer:
|
|
911
|
+
renderer: jsxRenderer,
|
|
899
912
|
styles: [TabNavigationCss, TabInOverflowCss],
|
|
900
913
|
template: TabNavigationTemplate,
|
|
901
914
|
dependencies: [Popover, Icon, UDExButton],
|