@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.
Files changed (222) hide show
  1. package/cypress/specs/FilterMenu.cy.tsx +209 -19
  2. package/cypress/specs/List.cy.tsx +67 -4
  3. package/cypress/specs/ListItem.cy.tsx +35 -9
  4. package/cypress/specs/SelectBox.cy.tsx +100 -0
  5. package/cypress/specs/TabNavigation.cy.tsx +297 -21
  6. package/dist/List.d.ts +15 -1
  7. package/dist/List.js +23 -2
  8. package/dist/List.js.map +1 -1
  9. package/dist/ListGroupHeaderBase.d.ts +13 -0
  10. package/dist/ListGroupHeaderBase.js +43 -2
  11. package/dist/ListGroupHeaderBase.js.map +1 -1
  12. package/dist/ListGroupHeaderTemplate.js +26 -7
  13. package/dist/ListGroupHeaderTemplate.js.map +1 -1
  14. package/dist/ListItem.d.ts +0 -3
  15. package/dist/ListItem.js +18 -12
  16. package/dist/ListItem.js.map +1 -1
  17. package/dist/ListItemBase.d.ts +17 -0
  18. package/dist/ListItemBase.js +15 -0
  19. package/dist/ListItemBase.js.map +1 -1
  20. package/dist/ListItemTemplate.js +2 -2
  21. package/dist/ListItemTemplate.js.map +1 -1
  22. package/dist/MastheadCountrySelector.js +5 -5
  23. package/dist/MastheadCountrySelector.js.map +1 -1
  24. package/dist/MastheadCountrySelectorTemplate.d.ts +2 -0
  25. package/dist/MastheadCountrySelectorTemplate.js +15 -0
  26. package/dist/MastheadCountrySelectorTemplate.js.map +1 -0
  27. package/dist/MastheadItem.d.ts +0 -3
  28. package/dist/MastheadItem.js +3 -6
  29. package/dist/MastheadItem.js.map +1 -1
  30. package/dist/MastheadItemTemplate.d.ts +2 -0
  31. package/dist/MastheadItemTemplate.js +41 -0
  32. package/dist/MastheadItemTemplate.js.map +1 -0
  33. package/dist/MastheadMenu.d.ts +1 -0
  34. package/dist/MastheadMenu.js +4 -6
  35. package/dist/MastheadMenu.js.map +1 -1
  36. package/dist/MastheadMenuItem.d.ts +0 -3
  37. package/dist/MastheadMenuItem.js +3 -6
  38. package/dist/MastheadMenuItem.js.map +1 -1
  39. package/dist/MastheadMenuItemTemplate.d.ts +2 -0
  40. package/dist/MastheadMenuItemTemplate.js +36 -0
  41. package/dist/MastheadMenuItemTemplate.js.map +1 -0
  42. package/dist/MastheadMenuTemplate.d.ts +2 -0
  43. package/dist/MastheadMenuTemplate.js +13 -0
  44. package/dist/MastheadMenuTemplate.js.map +1 -0
  45. package/dist/MastheadMobileMenu.js +3 -3
  46. package/dist/MastheadMobileMenu.js.map +1 -1
  47. package/dist/MastheadMobileMenuTemplate.d.ts +2 -0
  48. package/dist/MastheadMobileMenuTemplate.js +33 -0
  49. package/dist/MastheadMobileMenuTemplate.js.map +1 -0
  50. package/dist/MastheadProfileMenu.d.ts +2 -4
  51. package/dist/MastheadProfileMenu.js +5 -20
  52. package/dist/MastheadProfileMenu.js.map +1 -1
  53. package/dist/MastheadProfileMenuTemplate.d.ts +2 -0
  54. package/dist/MastheadProfileMenuTemplate.js +24 -0
  55. package/dist/MastheadProfileMenuTemplate.js.map +1 -0
  56. package/dist/MastheadShell.js +3 -5
  57. package/dist/MastheadShell.js.map +1 -1
  58. package/dist/MastheadShellTemplate.d.ts +2 -0
  59. package/dist/MastheadShellTemplate.js +20 -0
  60. package/dist/MastheadShellTemplate.js.map +1 -0
  61. package/dist/SearchableListBase.d.ts +10 -0
  62. package/dist/SearchableListBase.js +34 -1
  63. package/dist/SearchableListBase.js.map +1 -1
  64. package/dist/SearchableListBaseTemplate.js +35 -4
  65. package/dist/SearchableListBaseTemplate.js.map +1 -1
  66. package/dist/SecondaryNavigation.d.ts +1 -0
  67. package/dist/SecondaryNavigation.js +20 -6
  68. package/dist/SecondaryNavigation.js.map +1 -1
  69. package/dist/SelectBase.js +8 -3
  70. package/dist/SelectBase.js.map +1 -1
  71. package/dist/Tab.d.ts +0 -7
  72. package/dist/Tab.js +4 -19
  73. package/dist/Tab.js.map +1 -1
  74. package/dist/TabHeaderTemplate.d.ts +2 -0
  75. package/dist/TabHeaderTemplate.js +15 -0
  76. package/dist/TabHeaderTemplate.js.map +1 -0
  77. package/dist/TabInOverflowTemplate.d.ts +2 -0
  78. package/dist/TabInOverflowTemplate.js +7 -0
  79. package/dist/TabInOverflowTemplate.js.map +1 -0
  80. package/dist/TabNavigation.d.ts +3 -4
  81. package/dist/TabNavigation.js +53 -40
  82. package/dist/TabNavigation.js.map +1 -1
  83. package/dist/TabNavigationPopoverTemplate.d.ts +2 -0
  84. package/dist/TabNavigationPopoverTemplate.js +9 -0
  85. package/dist/TabNavigationPopoverTemplate.js.map +1 -0
  86. package/dist/TabNavigationTemplate.d.ts +2 -0
  87. package/dist/TabNavigationTemplate.js +10 -0
  88. package/dist/TabNavigationTemplate.js.map +1 -0
  89. package/dist/TabTemplate.d.ts +2 -0
  90. package/dist/TabTemplate.js +5 -0
  91. package/dist/TabTemplate.js.map +1 -0
  92. package/dist/assets/{InputSuggestions-C8grDr_8.js → InputSuggestions-CMYjJsHw.js} +1 -1
  93. package/dist/assets/{ListItemStandardExpandableTextTemplate-BQtSr7yg.js → ListItemStandardExpandableTextTemplate-D2i8wWuR.js} +1 -1
  94. package/dist/assets/{bundle.esm-GvPkDyXP.js → bundle.esm-BjN47C_y.js} +242 -242
  95. package/dist/assets/messagebundle_en-B7YJOdQz.js +1 -0
  96. package/dist/css/themes/Button.css +1 -1
  97. package/dist/css/themes/ListGroupHeader.css +1 -1
  98. package/dist/css/themes/PromoTile.css +1 -1
  99. package/dist/css/themes/TabInOverflow.css +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  101. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  102. package/dist/generated/i18n/i18n-defaults.js +3 -1
  103. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  104. package/dist/generated/themes/Button.css.d.ts +1 -1
  105. package/dist/generated/themes/Button.css.js +1 -1
  106. package/dist/generated/themes/Button.css.js.map +1 -1
  107. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  108. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  109. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  110. package/dist/generated/themes/PromoTile.css.d.ts +1 -1
  111. package/dist/generated/themes/PromoTile.css.js +1 -1
  112. package/dist/generated/themes/PromoTile.css.js.map +1 -1
  113. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  114. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  115. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  116. package/dist/messagebundle.properties +4 -0
  117. package/dist/messagebundle_en.properties +2 -0
  118. package/dist/web-types.json +1 -1
  119. package/package.json +1 -1
  120. package/src/List.ts +24 -2
  121. package/src/ListGroupHeaderBase.ts +44 -2
  122. package/src/ListGroupHeaderTemplate.tsx +74 -23
  123. package/src/ListItem.ts +18 -15
  124. package/src/ListItemBase.ts +30 -0
  125. package/src/ListItemTemplate.tsx +4 -4
  126. package/src/MastheadCountrySelector.ts +5 -5
  127. package/src/MastheadCountrySelectorTemplate.tsx +98 -0
  128. package/src/MastheadItem.ts +3 -6
  129. package/src/MastheadItemTemplate.tsx +178 -0
  130. package/src/MastheadMenu.ts +5 -6
  131. package/src/MastheadMenuItem.ts +3 -7
  132. package/src/MastheadMenuItemTemplate.tsx +123 -0
  133. package/src/MastheadMenuTemplate.tsx +142 -0
  134. package/src/MastheadMobileMenu.ts +3 -3
  135. package/src/MastheadMobileMenuTemplate.tsx +274 -0
  136. package/src/MastheadProfileMenu.ts +10 -23
  137. package/src/MastheadProfileMenuTemplate.tsx +143 -0
  138. package/src/MastheadShell.ts +3 -5
  139. package/src/MastheadShellTemplate.tsx +228 -0
  140. package/src/SearchableListBase.ts +37 -1
  141. package/src/SearchableListBaseTemplate.tsx +38 -2
  142. package/src/SecondaryNavigation.ts +21 -6
  143. package/src/SelectBase.ts +8 -3
  144. package/src/Tab.ts +4 -24
  145. package/src/TabHeaderTemplate.tsx +153 -0
  146. package/src/TabInOverflowTemplate.tsx +68 -0
  147. package/src/TabNavigation.ts +61 -44
  148. package/src/TabNavigationPopoverTemplate.tsx +27 -0
  149. package/src/TabNavigationTemplate.tsx +98 -0
  150. package/src/TabTemplate.tsx +7 -0
  151. package/src/generated/i18n/i18n-defaults.ts +2 -2
  152. package/src/generated/themes/Button.css.ts +1 -1
  153. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  154. package/src/generated/themes/PromoTile.css.ts +1 -1
  155. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  156. package/src/i18n/messagebundle.properties +4 -0
  157. package/src/i18n/messagebundle_en.properties +2 -0
  158. package/src/themes/Button.css +2 -1
  159. package/src/themes/ListGroupHeader.css +50 -7
  160. package/src/themes/PromoTile.css +1 -0
  161. package/src/themes/TabInOverflow.css +9 -4
  162. package/dist/assets/messagebundle_en-DBpf5Il2.js +0 -1
  163. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.d.ts +0 -3
  164. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +0 -13
  165. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +0 -1
  166. package/dist/generated/templates/MastheadItemTemplate.lit.d.ts +0 -3
  167. package/dist/generated/templates/MastheadItemTemplate.lit.js +0 -43
  168. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +0 -1
  169. package/dist/generated/templates/MastheadMenuItemTemplate.lit.d.ts +0 -3
  170. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +0 -21
  171. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +0 -1
  172. package/dist/generated/templates/MastheadMenuTemplate.lit.d.ts +0 -3
  173. package/dist/generated/templates/MastheadMenuTemplate.lit.js +0 -25
  174. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +0 -1
  175. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.d.ts +0 -3
  176. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +0 -37
  177. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +0 -1
  178. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.d.ts +0 -3
  179. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +0 -18
  180. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +0 -1
  181. package/dist/generated/templates/MastheadShellTemplate.lit.d.ts +0 -3
  182. package/dist/generated/templates/MastheadShellTemplate.lit.js +0 -28
  183. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +0 -1
  184. package/dist/generated/templates/TabHeaderTemplate.lit.d.ts +0 -3
  185. package/dist/generated/templates/TabHeaderTemplate.lit.js +0 -52
  186. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +0 -1
  187. package/dist/generated/templates/TabInOverflowTemplate.lit.d.ts +0 -3
  188. package/dist/generated/templates/TabInOverflowTemplate.lit.js +0 -15
  189. package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +0 -1
  190. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.d.ts +0 -3
  191. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +0 -8
  192. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +0 -1
  193. package/dist/generated/templates/TabNavigationTemplate.lit.d.ts +0 -3
  194. package/dist/generated/templates/TabNavigationTemplate.lit.js +0 -16
  195. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +0 -1
  196. package/dist/generated/templates/TabTemplate.lit.d.ts +0 -3
  197. package/dist/generated/templates/TabTemplate.lit.js +0 -7
  198. package/dist/generated/templates/TabTemplate.lit.js.map +0 -1
  199. package/src/MastheadCountrySelector.hbs +0 -76
  200. package/src/MastheadItem.hbs +0 -136
  201. package/src/MastheadMenu.hbs +0 -131
  202. package/src/MastheadMenuItem.hbs +0 -102
  203. package/src/MastheadMobileMenu.hbs +0 -253
  204. package/src/MastheadProfileMenu.hbs +0 -121
  205. package/src/MastheadShell.hbs +0 -223
  206. package/src/Tab.hbs +0 -1
  207. package/src/TabHeader.hbs +0 -141
  208. package/src/TabInOverflow.hbs +0 -59
  209. package/src/TabNavigation.hbs +0 -88
  210. package/src/TabNavigationPopover.hbs +0 -18
  211. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +0 -17
  212. package/src/generated/templates/MastheadItemTemplate.lit.ts +0 -47
  213. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +0 -25
  214. package/src/generated/templates/MastheadMenuTemplate.lit.ts +0 -29
  215. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +0 -41
  216. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +0 -22
  217. package/src/generated/templates/MastheadShellTemplate.lit.ts +0 -32
  218. package/src/generated/templates/TabHeaderTemplate.lit.ts +0 -56
  219. package/src/generated/templates/TabInOverflowTemplate.lit.ts +0 -19
  220. package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +0 -12
  221. package/src/generated/templates/TabNavigationTemplate.lit.ts +0 -20
  222. 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 litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
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 "./generated/templates/TabTemplate.lit.js";
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: litRender,
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,2 @@
1
+ import type UDExTab from "./Tab.js";
2
+ export default function TabHeaderTemplate(this: UDExTab): import("@ui5/webcomponents-base").JSX.Element;
@@ -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,2 @@
1
+ import type UDExTab from "./Tab.js";
2
+ export default function TabInOverflowTemplate(this: UDExTab): import("@ui5/webcomponents-base").JSX.Element;
@@ -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"]}
@@ -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;
@@ -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 litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
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 "./generated/templates/TabNavigationTemplate.lit.js";
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
- if (e.target.localName === "button") {
487
- const targetId = e.target.id;
488
- const [targetTab] = this.items.filter(item => item.__id === targetId);
489
- if (!targetTab?.disabled) {
490
- e.preventDefault();
491
- this.onItemSelect(targetId);
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 firstPopoverItem = popoverItems[0];
660
- firstPopoverItem.setAttribute("tabindex", "0");
661
- firstPopoverItem.focus();
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 previousSelectIndex = currentSelectedTabIndex - 1 < 0 ? popoverItems.length - 1 : currentSelectedTabIndex - 1;
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 nextSelectIndex = currentSelectedTabIndex + 1 > popoverItems.length - 1 ? 0 : currentSelectedTabIndex + 1;
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._visibleTabs[this._visibleTabs.length - 1].focus();
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].focus();
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].focus();
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: litRender,
911
+ renderer: jsxRenderer,
899
912
  styles: [TabNavigationCss, TabInOverflowCss],
900
913
  template: TabNavigationTemplate,
901
914
  dependencies: [Popover, Icon, UDExButton],