@patternfly/elements 4.1.0 → 4.2.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 (286) hide show
  1. package/custom-elements.json +13726 -12682
  2. package/package.json +17 -14
  3. package/pf-accordion/pf-accordion-header.css +37 -0
  4. package/pf-accordion/pf-accordion-header.d.ts +0 -61
  5. package/pf-accordion/pf-accordion-header.js +180 -2
  6. package/pf-accordion/pf-accordion-header.js.map +1 -1
  7. package/pf-accordion/pf-accordion-panel.css +12 -0
  8. package/pf-accordion/pf-accordion-panel.d.ts +0 -34
  9. package/pf-accordion/pf-accordion-panel.js +87 -2
  10. package/pf-accordion/pf-accordion-panel.js.map +1 -1
  11. package/pf-accordion/pf-accordion.css +62 -0
  12. package/pf-accordion/pf-accordion.d.ts +1 -64
  13. package/pf-accordion/pf-accordion.js +156 -2
  14. package/pf-accordion/pf-accordion.js.map +1 -1
  15. package/pf-avatar/pf-avatar.css +14 -0
  16. package/pf-avatar/pf-avatar.d.ts +1 -14
  17. package/pf-avatar/pf-avatar.js +82 -2
  18. package/pf-avatar/pf-avatar.js.map +1 -1
  19. package/pf-back-to-top/pf-back-to-top.css +12 -0
  20. package/pf-back-to-top/pf-back-to-top.d.ts +1 -17
  21. package/pf-back-to-top/pf-back-to-top.js +87 -3
  22. package/pf-back-to-top/pf-back-to-top.js.map +1 -1
  23. package/pf-background-image/pf-background-image.css +7 -0
  24. package/pf-background-image/pf-background-image.d.ts +1 -8
  25. package/pf-background-image/pf-background-image.js +76 -2
  26. package/pf-background-image/pf-background-image.js.map +1 -1
  27. package/pf-badge/pf-badge.css +13 -0
  28. package/pf-badge/pf-badge.d.ts +1 -13
  29. package/pf-badge/pf-badge.js +53 -2
  30. package/pf-badge/pf-badge.js.map +1 -1
  31. package/pf-banner/pf-banner.css +21 -0
  32. package/pf-banner/pf-banner.d.ts +1 -19
  33. package/pf-banner/pf-banner.js +122 -2
  34. package/pf-banner/pf-banner.js.map +1 -1
  35. package/pf-button/pf-button-tokens.css +38 -0
  36. package/pf-button/pf-button.d.ts +1 -106
  37. package/pf-button/pf-button.js +837 -4
  38. package/pf-button/pf-button.js.map +1 -1
  39. package/pf-card/pf-card.css +24 -0
  40. package/pf-card/pf-card.d.ts +1 -38
  41. package/pf-card/pf-card.js +248 -2
  42. package/pf-card/pf-card.js.map +1 -1
  43. package/pf-chip/pf-chip-group.css +15 -0
  44. package/pf-chip/pf-chip-group.d.ts +0 -15
  45. package/pf-chip/pf-chip-group.js +111 -2
  46. package/pf-chip/pf-chip-group.js.map +1 -1
  47. package/pf-chip/pf-chip.css +30 -1
  48. package/pf-chip/pf-chip.d.ts +1 -20
  49. package/pf-chip/pf-chip.js +135 -2
  50. package/pf-chip/pf-chip.js.map +1 -1
  51. package/pf-clipboard-copy/pf-clipboard-copy.css +25 -0
  52. package/pf-clipboard-copy/pf-clipboard-copy.d.ts +1 -27
  53. package/pf-clipboard-copy/pf-clipboard-copy.js +318 -3
  54. package/pf-clipboard-copy/pf-clipboard-copy.js.map +1 -1
  55. package/pf-code-block/pf-code-block.css +11 -1
  56. package/pf-code-block/pf-code-block.js +70 -18
  57. package/pf-code-block/pf-code-block.js.map +1 -1
  58. package/pf-dropdown/pf-dropdown-group.js +40 -2
  59. package/pf-dropdown/pf-dropdown-group.js.map +1 -1
  60. package/pf-dropdown/pf-dropdown-item.css +10 -0
  61. package/pf-dropdown/pf-dropdown-item.d.ts +0 -27
  62. package/pf-dropdown/pf-dropdown-item.js +155 -2
  63. package/pf-dropdown/pf-dropdown-item.js.map +1 -1
  64. package/pf-dropdown/pf-dropdown-menu.js +39 -2
  65. package/pf-dropdown/pf-dropdown-menu.js.map +1 -1
  66. package/pf-dropdown/pf-dropdown.css +5 -0
  67. package/pf-dropdown/pf-dropdown.d.ts +1 -9
  68. package/pf-dropdown/pf-dropdown.js +350 -2
  69. package/pf-dropdown/pf-dropdown.js.map +1 -1
  70. package/pf-icon/pf-icon.css +1 -0
  71. package/pf-icon/pf-icon.d.ts +1 -3
  72. package/pf-icon/pf-icon.js +44 -4
  73. package/pf-icon/pf-icon.js.map +1 -1
  74. package/pf-jump-links/pf-jump-links-item.css +7 -1
  75. package/pf-jump-links/pf-jump-links-item.d.ts +0 -8
  76. package/pf-jump-links/pf-jump-links-item.js +77 -2
  77. package/pf-jump-links/pf-jump-links-item.js.map +1 -1
  78. package/pf-jump-links/pf-jump-links-list.css +3 -0
  79. package/pf-jump-links/pf-jump-links-list.d.ts +0 -5
  80. package/pf-jump-links/pf-jump-links-list.js +20 -2
  81. package/pf-jump-links/pf-jump-links-list.js.map +1 -1
  82. package/pf-jump-links/pf-jump-links.css +36 -0
  83. package/pf-jump-links/pf-jump-links.d.ts +1 -38
  84. package/pf-jump-links/pf-jump-links.js +179 -2
  85. package/pf-jump-links/pf-jump-links.js.map +1 -1
  86. package/pf-label/pf-label.css +51 -1
  87. package/pf-label/pf-label.d.ts +1 -58
  88. package/pf-label/pf-label.js +257 -2
  89. package/pf-label/pf-label.js.map +1 -1
  90. package/pf-modal/pf-modal.css +11 -0
  91. package/pf-modal/pf-modal.d.ts +1 -24
  92. package/pf-modal/pf-modal.js +215 -2
  93. package/pf-modal/pf-modal.js.map +1 -1
  94. package/pf-panel/pf-panel.css +29 -0
  95. package/pf-panel/pf-panel.d.ts +1 -32
  96. package/pf-panel/pf-panel.js +204 -2
  97. package/pf-panel/pf-panel.js.map +1 -1
  98. package/pf-popover/pf-popover.css +33 -0
  99. package/pf-popover/pf-popover.d.ts +1 -108
  100. package/pf-popover/pf-popover.js +251 -3
  101. package/pf-popover/pf-popover.js.map +1 -1
  102. package/pf-progress/pf-progress.css +19 -0
  103. package/pf-progress/pf-progress.d.ts +1 -57
  104. package/pf-progress/pf-progress.js +231 -2
  105. package/pf-progress/pf-progress.js.map +1 -1
  106. package/pf-progress-stepper/pf-progress-step.js +126 -2
  107. package/pf-progress-stepper/pf-progress-step.js.map +1 -1
  108. package/pf-progress-stepper/pf-progress-stepper.css +96 -0
  109. package/pf-progress-stepper/pf-progress-stepper.d.ts +1 -115
  110. package/pf-progress-stepper/pf-progress-stepper.js +326 -2
  111. package/pf-progress-stepper/pf-progress-stepper.js.map +1 -1
  112. package/pf-search-input/pf-search-input.css +308 -0
  113. package/pf-search-input/pf-search-input.d.ts +75 -0
  114. package/pf-search-input/pf-search-input.js +630 -0
  115. package/pf-search-input/pf-search-input.js.map +1 -0
  116. package/pf-search-input/test/pf-search-input.e2e.d.ts +1 -0
  117. package/pf-search-input/test/pf-search-input.e2e.js +23 -0
  118. package/pf-search-input/test/pf-search-input.e2e.js.map +1 -0
  119. package/pf-search-input/test/pf-search-input.spec.d.ts +1 -0
  120. package/pf-search-input/test/pf-search-input.spec.js +1021 -0
  121. package/pf-search-input/test/pf-search-input.spec.js.map +1 -0
  122. package/pf-select/pf-option-group.js +27 -2
  123. package/pf-select/pf-option-group.js.map +1 -1
  124. package/pf-select/pf-option.css +9 -1
  125. package/pf-select/pf-option.js +83 -2
  126. package/pf-select/pf-option.js.map +1 -1
  127. package/pf-select/pf-select.css +157 -0
  128. package/pf-select/pf-select.d.ts +1 -158
  129. package/pf-select/pf-select.js +542 -5
  130. package/pf-select/pf-select.js.map +1 -1
  131. package/pf-spinner/pf-spinner.css +13 -0
  132. package/pf-spinner/pf-spinner.d.ts +1 -14
  133. package/pf-spinner/pf-spinner.js +101 -2
  134. package/pf-spinner/pf-spinner.js.map +1 -1
  135. package/pf-switch/pf-switch.css +22 -0
  136. package/pf-switch/pf-switch.d.ts +1 -30
  137. package/pf-switch/pf-switch.js +156 -2
  138. package/pf-switch/pf-switch.js.map +1 -1
  139. package/pf-table/pf-caption.js +10 -2
  140. package/pf-table/pf-caption.js.map +1 -1
  141. package/pf-table/pf-table.css +211 -0
  142. package/pf-table/pf-table.d.ts +1 -635
  143. package/pf-table/pf-table.js +437 -2
  144. package/pf-table/pf-table.js.map +1 -1
  145. package/pf-table/pf-tbody.js +18 -2
  146. package/pf-table/pf-tbody.js.map +1 -1
  147. package/pf-table/pf-td.js +107 -2
  148. package/pf-table/pf-td.js.map +1 -1
  149. package/pf-table/pf-th.js +95 -2
  150. package/pf-table/pf-th.js.map +1 -1
  151. package/pf-table/pf-thead.js +20 -2
  152. package/pf-table/pf-thead.js.map +1 -1
  153. package/pf-table/pf-tr.js +89 -2
  154. package/pf-table/pf-tr.js.map +1 -1
  155. package/pf-tabs/pf-tab-panel.css +1 -0
  156. package/pf-tabs/pf-tab-panel.d.ts +0 -2
  157. package/pf-tabs/pf-tab-panel.js +19 -3
  158. package/pf-tabs/pf-tab-panel.js.map +1 -1
  159. package/pf-tabs/pf-tab.css +33 -0
  160. package/pf-tabs/pf-tab.d.ts +0 -40
  161. package/pf-tabs/pf-tab.js +231 -2
  162. package/pf-tabs/pf-tab.js.map +1 -1
  163. package/pf-tabs/pf-tabs.css +26 -0
  164. package/pf-tabs/pf-tabs.d.ts +1 -34
  165. package/pf-tabs/pf-tabs.js +307 -2
  166. package/pf-tabs/pf-tabs.js.map +1 -1
  167. package/pf-text-area/pf-text-area.css +125 -0
  168. package/pf-text-area/pf-text-area.d.ts +1 -125
  169. package/pf-text-area/pf-text-area.js +320 -2
  170. package/pf-text-area/pf-text-area.js.map +1 -1
  171. package/pf-text-input/pf-text-input.css +126 -0
  172. package/pf-text-input/pf-text-input.d.ts +1 -126
  173. package/pf-text-input/pf-text-input.js +395 -2
  174. package/pf-text-input/pf-text-input.js.map +1 -1
  175. package/pf-tile/pf-tile.css +28 -8
  176. package/pf-tile/pf-tile.d.ts +1 -24
  177. package/pf-tile/pf-tile.js +156 -2
  178. package/pf-tile/pf-tile.js.map +1 -1
  179. package/pf-timestamp/pf-timestamp.d.ts +1 -0
  180. package/pf-timestamp/pf-timestamp.js +10 -2
  181. package/pf-timestamp/pf-timestamp.js.map +1 -1
  182. package/pf-tooltip/pf-tooltip.css +10 -0
  183. package/pf-tooltip/pf-tooltip.d.ts +1 -79
  184. package/pf-tooltip/pf-tooltip.js +113 -3
  185. package/pf-tooltip/pf-tooltip.js.map +1 -1
  186. package/pfe.min.js +0 -7439
  187. package/pfe.min.js.LEGAL.txt +0 -57
  188. package/pfe.min.js.map +0 -7
  189. package/react/pf-accordion/pf-accordion-header.d.ts +0 -5
  190. package/react/pf-accordion/pf-accordion-header.js +0 -12
  191. package/react/pf-accordion/pf-accordion-panel.d.ts +0 -5
  192. package/react/pf-accordion/pf-accordion-panel.js +0 -10
  193. package/react/pf-accordion/pf-accordion.d.ts +0 -5
  194. package/react/pf-accordion/pf-accordion.js +0 -13
  195. package/react/pf-avatar/pf-avatar.d.ts +0 -5
  196. package/react/pf-avatar/pf-avatar.js +0 -12
  197. package/react/pf-back-to-top/pf-back-to-top.d.ts +0 -5
  198. package/react/pf-back-to-top/pf-back-to-top.js +0 -10
  199. package/react/pf-background-image/pf-background-image.d.ts +0 -5
  200. package/react/pf-background-image/pf-background-image.js +0 -10
  201. package/react/pf-badge/pf-badge.d.ts +0 -5
  202. package/react/pf-badge/pf-badge.js +0 -10
  203. package/react/pf-banner/pf-banner.d.ts +0 -5
  204. package/react/pf-banner/pf-banner.js +0 -10
  205. package/react/pf-button/pf-button.d.ts +0 -5
  206. package/react/pf-button/pf-button.js +0 -12
  207. package/react/pf-card/pf-card.d.ts +0 -5
  208. package/react/pf-card/pf-card.js +0 -10
  209. package/react/pf-chip/pf-chip-group.d.ts +0 -5
  210. package/react/pf-chip/pf-chip-group.js +0 -13
  211. package/react/pf-chip/pf-chip.d.ts +0 -5
  212. package/react/pf-chip/pf-chip.js +0 -13
  213. package/react/pf-clipboard-copy/pf-clipboard-copy.d.ts +0 -5
  214. package/react/pf-clipboard-copy/pf-clipboard-copy.js +0 -12
  215. package/react/pf-code-block/pf-code-block.d.ts +0 -5
  216. package/react/pf-code-block/pf-code-block.js +0 -10
  217. package/react/pf-dropdown/pf-dropdown-group.d.ts +0 -5
  218. package/react/pf-dropdown/pf-dropdown-group.js +0 -10
  219. package/react/pf-dropdown/pf-dropdown-item.d.ts +0 -5
  220. package/react/pf-dropdown/pf-dropdown-item.js +0 -10
  221. package/react/pf-dropdown/pf-dropdown-menu.d.ts +0 -5
  222. package/react/pf-dropdown/pf-dropdown-menu.js +0 -10
  223. package/react/pf-dropdown/pf-dropdown.d.ts +0 -5
  224. package/react/pf-dropdown/pf-dropdown.js +0 -14
  225. package/react/pf-icon/pf-icon.d.ts +0 -5
  226. package/react/pf-icon/pf-icon.js +0 -13
  227. package/react/pf-jump-links/pf-jump-links-item.d.ts +0 -5
  228. package/react/pf-jump-links/pf-jump-links-item.js +0 -13
  229. package/react/pf-jump-links/pf-jump-links-list.d.ts +0 -5
  230. package/react/pf-jump-links/pf-jump-links-list.js +0 -10
  231. package/react/pf-jump-links/pf-jump-links.d.ts +0 -5
  232. package/react/pf-jump-links/pf-jump-links.js +0 -12
  233. package/react/pf-label/pf-label.d.ts +0 -5
  234. package/react/pf-label/pf-label.js +0 -12
  235. package/react/pf-modal/pf-modal.d.ts +0 -5
  236. package/react/pf-modal/pf-modal.js +0 -13
  237. package/react/pf-panel/pf-panel.d.ts +0 -5
  238. package/react/pf-panel/pf-panel.js +0 -10
  239. package/react/pf-popover/pf-popover.d.ts +0 -5
  240. package/react/pf-popover/pf-popover.js +0 -10
  241. package/react/pf-progress/pf-progress.d.ts +0 -5
  242. package/react/pf-progress/pf-progress.js +0 -10
  243. package/react/pf-progress-stepper/pf-progress-step.d.ts +0 -5
  244. package/react/pf-progress-stepper/pf-progress-step.js +0 -10
  245. package/react/pf-progress-stepper/pf-progress-stepper.d.ts +0 -5
  246. package/react/pf-progress-stepper/pf-progress-stepper.js +0 -10
  247. package/react/pf-select/pf-option-group.d.ts +0 -5
  248. package/react/pf-select/pf-option-group.js +0 -10
  249. package/react/pf-select/pf-option.d.ts +0 -5
  250. package/react/pf-select/pf-option.js +0 -10
  251. package/react/pf-select/pf-select.d.ts +0 -5
  252. package/react/pf-select/pf-select.js +0 -13
  253. package/react/pf-spinner/pf-spinner.d.ts +0 -5
  254. package/react/pf-spinner/pf-spinner.js +0 -10
  255. package/react/pf-switch/pf-switch.d.ts +0 -5
  256. package/react/pf-switch/pf-switch.js +0 -12
  257. package/react/pf-table/pf-caption.d.ts +0 -5
  258. package/react/pf-table/pf-caption.js +0 -10
  259. package/react/pf-table/pf-table.d.ts +0 -5
  260. package/react/pf-table/pf-table.js +0 -10
  261. package/react/pf-table/pf-tbody.d.ts +0 -5
  262. package/react/pf-table/pf-tbody.js +0 -10
  263. package/react/pf-table/pf-td.d.ts +0 -5
  264. package/react/pf-table/pf-td.js +0 -10
  265. package/react/pf-table/pf-th.d.ts +0 -5
  266. package/react/pf-table/pf-th.js +0 -10
  267. package/react/pf-table/pf-thead.d.ts +0 -5
  268. package/react/pf-table/pf-thead.js +0 -10
  269. package/react/pf-table/pf-tr.d.ts +0 -5
  270. package/react/pf-table/pf-tr.js +0 -10
  271. package/react/pf-tabs/pf-tab-panel.d.ts +0 -5
  272. package/react/pf-tabs/pf-tab-panel.js +0 -10
  273. package/react/pf-tabs/pf-tab.d.ts +0 -5
  274. package/react/pf-tabs/pf-tab.js +0 -12
  275. package/react/pf-tabs/pf-tabs.d.ts +0 -5
  276. package/react/pf-tabs/pf-tabs.js +0 -10
  277. package/react/pf-text-area/pf-text-area.d.ts +0 -5
  278. package/react/pf-text-area/pf-text-area.js +0 -10
  279. package/react/pf-text-input/pf-text-input.d.ts +0 -5
  280. package/react/pf-text-input/pf-text-input.js +0 -10
  281. package/react/pf-tile/pf-tile.d.ts +0 -5
  282. package/react/pf-tile/pf-tile.js +0 -10
  283. package/react/pf-timestamp/pf-timestamp.d.ts +0 -5
  284. package/react/pf-timestamp/pf-timestamp.js +0 -10
  285. package/react/pf-tooltip/pf-tooltip.d.ts +0 -5
  286. package/react/pf-tooltip/pf-tooltip.js +0 -10
@@ -16,7 +16,302 @@ import { getRandomId } from '@patternfly/pfe-core/functions/random.js';
16
16
  import { TabExpandEvent, context } from './context.js';
17
17
  import '@patternfly/elements/pf-icon/pf-icon.js';
18
18
  import { css } from "lit";
19
- const styles = css `:host {\n display: block;\n}\n\n[part="tabs-container"] {\n position: relative;\n display: flex;\n overflow: hidden;\n}\n\n[part="tabs-container"]::before {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n border-style: solid;\n}\n\n:host button {\n opacity: 1;\n}\n\n:host button:nth-of-type(1) {\n margin-inline-end: 0;\n translate: 0 0;\n}\n\n:host button:nth-of-type(2) {\n margin-inline-start: 0;\n translate: 0 0;\n}\n\n[part="tabs"],\n[part="panels"] {\n display: block;\n}\n\n[part="tabs"] {\n scrollbar-width: none;\n position: relative;\n max-width: 100%;\n overflow-x: auto;\n}\n\n[part="tabs-container"]::before,\n[part="tabs"]::before,\nbutton::before {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n content: "";\n border-style: solid;\n}\n\n[part="tabs"]::before,\nbutton::before {\n top: 0;\n}\n\nbutton,\n[part="tabs"]::before {\n border: 0;\n}\n\nbutton {\n flex: none;\n line-height: 1;\n opacity: 0;\n}\n\nbutton::before {\n border-block-start-width: 0;\n}\n\nbutton:nth-of-type(1) {\n translate: -100% 0;\n}\n\nbutton:nth-of-type(2) {\n translate: 100% 0;\n}\n\nbutton:disabled {\n pointer-events: none;\n}\n\n[part="tabs-container"] {\n width: var(--pf-c-tabs--Width, auto);\n padding-inline-end: var(--pf-c-tabs--inset, 0);\n padding-inline-start: var(--pf-c-tabs--inset, 0);\n}\n\n[part="tabs-container"]::before {\n border-color: var(--pf-c-tabs--before--BorderColor, var(--pf-global--BorderColor--100, #d2d2d2));\n border-block-start-width: var(--pf-c-tabs--before--BorderTopWidth, 0);\n border-inline-end-width: var(--pf-c-tabs--before--BorderRightWidth, 0);\n border-block-end-width: var(--pf-c-tabs--before--BorderBottomWidth, var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)));\n border-inline-start-width: var(--pf-c-tabs--before--BorderLeftWidth, 0);\n}\n\n:host([box]) [part="tabs-container"] {\n --pf-c-tabs__link--BackgroundColor: var(--pf-c-tabs--m-box__link--BackgroundColor, var(--pf-global--BackgroundColor--200, #f0f0f0));\n --pf-c-tabs__link--disabled--BackgroundColor: var(--pf-c-tabs--m-box__link--disabled--BackgroundColor, var(--pf-global--disabled-color--200, #d2d2d2));\n --pf-c-tabs__link--before--BorderBottomWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n --pf-c-tabs__link--before--BorderRightWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n --pf-c-tabs__link--disabled--before--BorderRightWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n --pf-c-tabs__link--after--Top: 0;\n --pf-c-tabs__link--after--Bottom: auto;\n}\n\n:host([box]) ::slotted(pf-tab:last-of-type) {\n --pf-c-tabs__link--before--BorderRightWidth: 0;\n}\n\n:host([box]) button:nth-of-type(2)::before {\n left: calc(var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)) * -1);\n}\n\n:host([box]) pf-tab[aria-selected="true"] + pf-tab {\n --pf-c-tabs__link--before--Left: 0;\n}\n\n:host([box="light"]) [part="tabs-container"] {\n --pf-c-tabs__link--BackgroundColor: var(--pf-c-tabs--m-color-scheme--light-300__link--BackgroundColor, transparent);\n --pf-c-tabs__item--m-current__link--BackgroundColor: var(--pf-c-tabs--m-color-scheme--light-300__item--m-current__link--BackgroundColor, var(--pf-global--BackgroundColor--light-300, #f0f0f0));\n --pf-c-tabs__link--disabled--BackgroundColor: var(--pf-c-tabs--m-color-scheme--light-300__link--disabled--BackgroundColor, var(--pf-global--palette--black-150, #f5f5f5));\n}\n\n:host([vertical]) [part="tabs-container"] {\n --pf-c-tabs--Width: var(--pf-c-tabs--m-vertical--Width, 100%);\n --pf-c-tabs--inset: var(--pf-c-tabs--m-vertical--inset, var(--pf-global--spacer--lg, 1.5rem));\n --pf-c-tabs--before--BorderBottomWidth: 0; /* *override user setting* border bottom should always be 0 for vertical tabs */\n --pf-c-tabs__link--PaddingTop: var(--pf-c-tabs--m-vertical__link--PaddingTop, var(--pf-global--spacer--md, 1rem));\n --pf-c-tabs__link--PaddingBottom: var(--pf-c-tabs--m-vertical__link--PaddingBottom, var(--pf-global--spacer--md, 1rem));\n --pf-c-tabs__link--before--Left: 0;\n --pf-c-tabs__link--disabled--before--BorderBottomWidth: 0; /* *override user setting* border bottom for disabled should always be 0 for vertical tabs */\n --pf-c-tabs__link--disabled--before--BorderLeftWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n --pf-c-tabs__link--after--Top: 0;\n --pf-c-tabs__link--after--Right: auto;\n\n display: inline-flex;\n flex-direction: column;\n height: 100%;\n padding: 0;\n overflow: visible;\n}\n\n:host([vertical]) [part="tabs"] {\n position: relative;\n flex-direction: column;\n flex-grow: 1;\n max-width: var(--pf-c-tabs--m-vertical--MaxWidth, 15.625rem);\n}\n\n:host([vertical]) [part="tabs"]::before {\n position: absolute;\n right: auto;\n border-style: solid;\n border-color: var(--pf-c-tabs--m-vertical__list--before--BorderColor, var(--pf-c-tabs--before--BorderColor, var(--pf-global--BorderColor--100, #d2d2d2)));\n border-block-start-width: var(--pf-c-tabs--m-vertical__list--before--BorderTopWidth, 0);\n border-inline-end-width: var(--pf-c-tabs--m-vertical__list--before--BorderRightWidth, 0);\n border-block-end-width: var(--pf-c-tabs--m-vertical__list--before--BorderBottomWidth, 0);\n border-inline-start-width: var(--pf-c-tabs--m-vertical__list--before--BorderLeftWidth, var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)));\n}\n\n:host([vertical]) ::slotted(pf-tab:first-of-type) {\n margin-block-start: var(--pf-c-tabs--inset, 0);\n}\n\n:host([vertical]) ::slotted(pf-tab:last-of-type) {\n margin-block-end: var(--pf-c-tabs--inset, 0);\n}\n\n:host([box][vertical]) [part="tabs-container"] {\n --pf-c-tabs--inset: var(--pf-c-tabs--m-vertical--m-box--inset, var(--pf-global--spacer--xl, 2rem));\n --pf-c-tabs--m-vertical__list--before--BorderLeftWidth: 0; /* *override user setting* border left should be 0 for vertical box; */\n --pf-c-tabs--m-vertical__list--before--BorderRightWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n --pf-c-tabs__link--disabled--before--BorderRightWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n /* --pf-c-tabs__link--disabled--before--BorderBottomWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)); */\n --pf-c-tabs__link--disabled--before--BorderLeftWidth: 0; /* *override user setting* border left should be 0 for disabled ; */\n}\n\n:host([box][vertical]) [part="tabs"]::before {\n right: 0;\n left: auto;\n}\n\n:host([box][vertical]) ::slotted(pf-tab:last-of-type) {\n --pf-c-tabs__link--before--BorderBottomWidth: 0;\n --pf-c-tabs__link--before--BorderRightWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n}\n\n:host([box][vertical]) ::slotted(pf-tab[aria-selected="true"]) {\n --pf-c-tabs__link--before--BorderRightColor: var(--pf-c-tabs__item--m-current__link--BackgroundColor, var(--pf-global--BackgroundColor--100, #ffffff));\n --pf-c-tabs__link--before--BorderBottomColor: var(--pf-c-tabs__link--before--border-color--base, var(--pf-global--BorderColor--100, #d2d2d2));\n --pf-c-tabs__link--before--BorderBottomWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n}\n\n:host([box][vertical]) ::slotted(pf-tab[aria-selected="true"]:first-of-type) {\n --pf-c-tabs__link--before--BorderTopWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n}\n\n[part="tabs"] {\n display: var(--pf-c-tabs__list--Display, flex);\n}\n\nbutton {\n width: var(--pf-c-tabs__scroll-button--Width, var(--pf-global--spacer--2xl, 3rem));\n color: var(--pf-c-tabs__scroll-button--Color, var(--pf-global--Color--100, #151515));\n background-color: var(--pf-c-tabs__scroll-button--BackgroundColor, var(--pf-global--BackgroundColor--100, #ffffff));\n outline-offset: var(--pf-c-tabs__scroll-button--OutlineOffset, calc(-1 * var(--pf-global--spacer--xs, 0.25rem)));\n transition:\n margin var(--pf-c-tabs__scroll-button--TransitionDuration--margin, .125s),\n translate var(--pf-c-tabs__scroll-button--TransitionDuration--transform, .125s), opacity var(--pf-c-tabs__scroll-button--TransitionDuration--opacity, .125s);\n --pf-icon--size: 16px;\n}\n\nbutton:hover {\n --pf-c-tabs__scroll-button--Color: var(--pf-c-tabs__scroll-button--hover--Color, var(--pf-global--active-color--100, #06c));\n}\n\nbutton::before {\n border-color: var(--pf-c-tabs__scroll-button--before--BorderColor, var(--pf-c-tabs--before--BorderColor, var(--pf-global--BorderColor--100, #d2d2d2)));\n border-inline-end-width: var(--pf-c-tabs__scroll-button--before--BorderRightWidth, 0);\n border-block-end-width: var(--pf-c-tabs__scroll-button--before--BorderBottomWidth, var(--pf-c-tabs__scroll-button--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)));\n border-inline-start-width: var(--pf-c-tabs__scroll-button--before--BorderLeftWidth, 0);\n}\n\nbutton:nth-of-type(1) {\n --pf-c-tabs__scroll-button--before--BorderRightWidth: var(--pf-c-tabs__scroll-button--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n margin-inline-end: calc(var(--pf-c-tabs__scroll-button--Width, var(--pf-global--spacer--2xl, 3rem)) * -1);\n}\n\nbutton:nth-of-type(2) {\n --pf-c-tabs__scroll-button--before--BorderLeftWidth: var(--pf-c-tabs__scroll-button--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));\n margin-inline-start: calc(var(--pf-c-tabs__scroll-button--Width, var(--pf-global--spacer--2xl, 3rem)) * -1);\n}\n\nbutton:disabled {\n --pf-c-tabs__scroll-button--Color: var(--pf-c-tabs__scroll-button--disabled--Color, var(--pf-global--disabled-color--200, #d2d2d2));\n}\n\n:host(:not[vertical]) [part="tabs-container"] {\n --pf-c-tabs--inset: 0;\n --pf-c-tabs--m-vertical--inset: 0;\n --pf-c-tabs--m-vertical--m-box--inset: 0;\n}\n\n:host([fill]) [part="tabs"] {\n flex-basis: 100%;\n}\n\n:host([fill]) ::slotted(pf-tab) {\n flex-grow: 1;\n}\n\n:host([fill]) ::slotted(pf-tab:first-of-type) {\n --pf-c-tabs--m-box__item--m-current--first-child__link--before--BorderLeftWidth: 0;\n}\n\n:host([fill]) ::slotted(pf-tab:last-of-type) {\n --pf-c-tabs--m-box__item--m-current--last-child__link--before--BorderRightWidth: 0;\n}\n\n:host([border-bottom="false"]) [part="tabs-container"] {\n --pf-c-tabs--before--BorderBottomWidth: 0; /* *override user setting* when border-bottom is false border bottom styles should be 0; */\n --pf-c-tabs__link--before--BorderBottomWidth: 0;\n}\n`;
19
+ const styles = css `:host {
20
+ display: block;
21
+ }
22
+
23
+ [part="tabs-container"] {
24
+ position: relative;
25
+ display: flex;
26
+ overflow: hidden;
27
+ }
28
+
29
+ [part="tabs-container"]::before {
30
+ position: absolute;
31
+ right: 0;
32
+ bottom: 0;
33
+ left: 0;
34
+ border-style: solid;
35
+ }
36
+
37
+ :host button {
38
+ opacity: 1;
39
+ }
40
+
41
+ :host button:nth-of-type(1) {
42
+ margin-inline-end: 0;
43
+ translate: 0 0;
44
+ }
45
+
46
+ :host button:nth-of-type(2) {
47
+ margin-inline-start: 0;
48
+ translate: 0 0;
49
+ }
50
+
51
+ [part="tabs"],
52
+ [part="panels"] {
53
+ display: block;
54
+ }
55
+
56
+ [part="tabs"] {
57
+ scrollbar-width: none;
58
+ position: relative;
59
+ max-width: 100%;
60
+ overflow-x: auto;
61
+ }
62
+
63
+ [part="tabs-container"]::before,
64
+ [part="tabs"]::before,
65
+ button::before {
66
+ position: absolute;
67
+ right: 0;
68
+ bottom: 0;
69
+ left: 0;
70
+ content: "";
71
+ border-style: solid;
72
+ }
73
+
74
+ [part="tabs"]::before,
75
+ button::before {
76
+ top: 0;
77
+ }
78
+
79
+ button,
80
+ [part="tabs"]::before {
81
+ border: 0;
82
+ }
83
+
84
+ button {
85
+ flex: none;
86
+ line-height: 1;
87
+ opacity: 0;
88
+ }
89
+
90
+ button::before {
91
+ border-block-start-width: 0;
92
+ }
93
+
94
+ button:nth-of-type(1) {
95
+ translate: -100% 0;
96
+ }
97
+
98
+ button:nth-of-type(2) {
99
+ translate: 100% 0;
100
+ }
101
+
102
+ button:disabled {
103
+ pointer-events: none;
104
+ }
105
+
106
+ [part="tabs-container"] {
107
+ /** Width of the tabs container */
108
+ width: var(--pf-c-tabs--Width, auto);
109
+ /** Inset spacing for tabs */
110
+ padding-inline-end: var(--pf-c-tabs--inset, 0);
111
+ /** Inset spacing for tabs */
112
+ padding-inline-start: var(--pf-c-tabs--inset, 0);
113
+ }
114
+
115
+ [part="tabs-container"]::before {
116
+ /** Border color for tabs container pseudo-element */
117
+ border-color: var(--pf-c-tabs--before--BorderColor, var(--pf-global--BorderColor--100, #d2d2d2));
118
+ /** Top border width */
119
+ border-block-start-width: var(--pf-c-tabs--before--BorderTopWidth, 0);
120
+ /** Right border width */
121
+ border-inline-end-width: var(--pf-c-tabs--before--BorderRightWidth, 0);
122
+ /** Bottom border width */
123
+ border-block-end-width: var(--pf-c-tabs--before--BorderBottomWidth, var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)));
124
+ /** Left border width */
125
+ border-inline-start-width: var(--pf-c-tabs--before--BorderLeftWidth, 0);
126
+ }
127
+
128
+ :host([box]) [part="tabs-container"] {
129
+ --pf-c-tabs__link--BackgroundColor: var(--pf-c-tabs--m-box__link--BackgroundColor, var(--pf-global--BackgroundColor--200, #f0f0f0));
130
+ --pf-c-tabs__link--disabled--BackgroundColor: var(--pf-c-tabs--m-box__link--disabled--BackgroundColor, var(--pf-global--disabled-color--200, #d2d2d2));
131
+ --pf-c-tabs__link--before--BorderBottomWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
132
+ --pf-c-tabs__link--before--BorderRightWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
133
+ --pf-c-tabs__link--disabled--before--BorderRightWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
134
+ --pf-c-tabs__link--after--Top: 0;
135
+ --pf-c-tabs__link--after--Bottom: auto;
136
+ }
137
+
138
+ :host([box]) ::slotted(pf-tab:last-of-type) {
139
+ --pf-c-tabs__link--before--BorderRightWidth: 0;
140
+ }
141
+
142
+ :host([box]) button:nth-of-type(2)::before {
143
+ left: calc(var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)) * -1);
144
+ }
145
+
146
+ :host([box]) pf-tab[aria-selected="true"] + pf-tab {
147
+ --pf-c-tabs__link--before--Left: 0;
148
+ }
149
+
150
+ :host([box="light"]) [part="tabs-container"] {
151
+ --pf-c-tabs__link--BackgroundColor: var(--pf-c-tabs--m-color-scheme--light-300__link--BackgroundColor, transparent);
152
+ --pf-c-tabs__item--m-current__link--BackgroundColor: var(--pf-c-tabs--m-color-scheme--light-300__item--m-current__link--BackgroundColor, var(--pf-global--BackgroundColor--light-300, #f0f0f0));
153
+ --pf-c-tabs__link--disabled--BackgroundColor: var(--pf-c-tabs--m-color-scheme--light-300__link--disabled--BackgroundColor, var(--pf-global--palette--black-150, #f5f5f5));
154
+ }
155
+
156
+ :host([vertical]) [part="tabs-container"] {
157
+ --pf-c-tabs--Width: var(--pf-c-tabs--m-vertical--Width, 100%);
158
+ --pf-c-tabs--inset: var(--pf-c-tabs--m-vertical--inset, var(--pf-global--spacer--lg, 1.5rem));
159
+ --pf-c-tabs--before--BorderBottomWidth: 0; /* *override user setting* border bottom should always be 0 for vertical tabs */
160
+ --pf-c-tabs__link--PaddingTop: var(--pf-c-tabs--m-vertical__link--PaddingTop, var(--pf-global--spacer--md, 1rem));
161
+ --pf-c-tabs__link--PaddingBottom: var(--pf-c-tabs--m-vertical__link--PaddingBottom, var(--pf-global--spacer--md, 1rem));
162
+ --pf-c-tabs__link--before--Left: 0;
163
+ --pf-c-tabs__link--disabled--before--BorderBottomWidth: 0; /* *override user setting* border bottom for disabled should always be 0 for vertical tabs */
164
+ --pf-c-tabs__link--disabled--before--BorderLeftWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
165
+ --pf-c-tabs__link--after--Top: 0;
166
+ --pf-c-tabs__link--after--Right: auto;
167
+
168
+ display: inline-flex;
169
+ flex-direction: column;
170
+ height: 100%;
171
+ padding: 0;
172
+ overflow: visible;
173
+ }
174
+
175
+ :host([vertical]) [part="tabs"] {
176
+ position: relative;
177
+ flex-direction: column;
178
+ flex-grow: 1;
179
+ /** Maximum width for vertical tabs */
180
+ max-width: var(--pf-c-tabs--m-vertical--MaxWidth, 15.625rem);
181
+ }
182
+
183
+ :host([vertical]) [part="tabs"]::before {
184
+ position: absolute;
185
+ right: auto;
186
+ border-style: solid;
187
+ border-color: var(--pf-c-tabs--m-vertical__list--before--BorderColor, var(--pf-c-tabs--before--BorderColor, var(--pf-global--BorderColor--100, #d2d2d2)));
188
+ /** Top border width for vertical tabs */
189
+ border-block-start-width: var(--pf-c-tabs--m-vertical__list--before--BorderTopWidth, 0);
190
+ /** Right border width for vertical tabs */
191
+ border-inline-end-width: var(--pf-c-tabs--m-vertical__list--before--BorderRightWidth, 0);
192
+ /** Bottom border width for vertical tabs */
193
+ border-block-end-width: var(--pf-c-tabs--m-vertical__list--before--BorderBottomWidth, 0);
194
+ /** Left border width for vertical tabs */
195
+ border-inline-start-width: var(--pf-c-tabs--m-vertical__list--before--BorderLeftWidth, var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)));
196
+ }
197
+
198
+ :host([vertical]) ::slotted(pf-tab:first-of-type) {
199
+ margin-block-start: var(--pf-c-tabs--inset, 0);
200
+ }
201
+
202
+ :host([vertical]) ::slotted(pf-tab:last-of-type) {
203
+ margin-block-end: var(--pf-c-tabs--inset, 0);
204
+ }
205
+
206
+ :host([box][vertical]) [part="tabs-container"] {
207
+ --pf-c-tabs--inset: var(--pf-c-tabs--m-vertical--m-box--inset, var(--pf-global--spacer--xl, 2rem));
208
+ --pf-c-tabs--m-vertical__list--before--BorderLeftWidth: 0; /* *override user setting* border left should be 0 for vertical box; */
209
+ --pf-c-tabs--m-vertical__list--before--BorderRightWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
210
+ --pf-c-tabs__link--disabled--before--BorderRightWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
211
+ /* --pf-c-tabs__link--disabled--before--BorderBottomWidth: var(--pf-c-tabs--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)); */
212
+ --pf-c-tabs__link--disabled--before--BorderLeftWidth: 0; /* *override user setting* border left should be 0 for disabled ; */
213
+ }
214
+
215
+ :host([box][vertical]) [part="tabs"]::before {
216
+ right: 0;
217
+ left: auto;
218
+ }
219
+
220
+ :host([box][vertical]) ::slotted(pf-tab:last-of-type) {
221
+ --pf-c-tabs__link--before--BorderBottomWidth: 0;
222
+ --pf-c-tabs__link--before--BorderRightWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
223
+ }
224
+
225
+ :host([box][vertical]) ::slotted(pf-tab[aria-selected="true"]) {
226
+ --pf-c-tabs__link--before--BorderRightColor: var(--pf-c-tabs__item--m-current__link--BackgroundColor, var(--pf-global--BackgroundColor--100, #ffffff));
227
+ --pf-c-tabs__link--before--BorderBottomColor: var(--pf-c-tabs__link--before--border-color--base, var(--pf-global--BorderColor--100, #d2d2d2));
228
+ --pf-c-tabs__link--before--BorderBottomWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
229
+ }
230
+
231
+ :host([box][vertical]) ::slotted(pf-tab[aria-selected="true"]:first-of-type) {
232
+ --pf-c-tabs__link--before--BorderTopWidth: var(--pf-c-tabs__link--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
233
+ }
234
+
235
+ [part="tabs"] {
236
+ /** Display type for the tabs list */
237
+ display: var(--pf-c-tabs__list--Display, flex);
238
+ }
239
+
240
+ button {
241
+ /** Width of the scroll buttons */
242
+ width: var(--pf-c-tabs__scroll-button--Width, var(--pf-global--spacer--2xl, 3rem));
243
+ /** Color of the scroll buttons */
244
+ color: var(--pf-c-tabs__scroll-button--Color, var(--pf-global--Color--100, #151515));
245
+ /** Background color of the scroll buttons */
246
+ background-color: var(--pf-c-tabs__scroll-button--BackgroundColor, var(--pf-global--BackgroundColor--100, #ffffff));
247
+ /** Outline offset for scroll buttons */
248
+ outline-offset: var(--pf-c-tabs__scroll-button--OutlineOffset, calc(-1 * var(--pf-global--spacer--xs, 0.25rem)));
249
+ transition:
250
+ /** Transition duration for margin changes */
251
+ margin var(--pf-c-tabs__scroll-button--TransitionDuration--margin, .125s),
252
+ /** Transition duration for transform changes */
253
+ translate var(--pf-c-tabs__scroll-button--TransitionDuration--transform, .125s), opacity var(--pf-c-tabs__scroll-button--TransitionDuration--opacity, .125s);
254
+ --pf-icon--size: 16px;
255
+ }
256
+
257
+ button:hover {
258
+ /** Hover color for scroll buttons */
259
+ --pf-c-tabs__scroll-button--Color: var(--pf-c-tabs__scroll-button--hover--Color, var(--pf-global--active-color--100, #06c));
260
+ }
261
+
262
+ button::before {
263
+ /** Border color for scroll button pseudo-elements */
264
+ border-color: var(--pf-c-tabs__scroll-button--before--BorderColor, var(--pf-c-tabs--before--BorderColor, var(--pf-global--BorderColor--100, #d2d2d2)));
265
+ /** Right border width for scroll button pseudo-elements */
266
+ border-inline-end-width: var(--pf-c-tabs__scroll-button--before--BorderRightWidth, 0);
267
+ /** Bottom border width for scroll button pseudo-elements */
268
+ border-block-end-width: var(--pf-c-tabs__scroll-button--before--BorderBottomWidth, var(--pf-c-tabs__scroll-button--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px)));
269
+ /** Left border width for scroll button pseudo-elements */
270
+ border-inline-start-width: var(--pf-c-tabs__scroll-button--before--BorderLeftWidth, 0);
271
+ }
272
+
273
+ button:nth-of-type(1) {
274
+ --pf-c-tabs__scroll-button--before--BorderRightWidth: var(--pf-c-tabs__scroll-button--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
275
+ margin-inline-end: calc(var(--pf-c-tabs__scroll-button--Width, var(--pf-global--spacer--2xl, 3rem)) * -1);
276
+ }
277
+
278
+ button:nth-of-type(2) {
279
+ --pf-c-tabs__scroll-button--before--BorderLeftWidth: var(--pf-c-tabs__scroll-button--before--border-width--base, var(--pf-global--BorderWidth--sm, 1px));
280
+ margin-inline-start: calc(var(--pf-c-tabs__scroll-button--Width, var(--pf-global--spacer--2xl, 3rem)) * -1);
281
+ }
282
+
283
+ button:disabled {
284
+ /** Color for disabled scroll buttons */
285
+ --pf-c-tabs__scroll-button--Color: var(--pf-c-tabs__scroll-button--disabled--Color, var(--pf-global--disabled-color--200, #d2d2d2));
286
+ }
287
+
288
+ :host(:not[vertical]) [part="tabs-container"] {
289
+ --pf-c-tabs--inset: 0;
290
+ --pf-c-tabs--m-vertical--inset: 0;
291
+ --pf-c-tabs--m-vertical--m-box--inset: 0;
292
+ }
293
+
294
+ :host([fill]) [part="tabs"] {
295
+ flex-basis: 100%;
296
+ }
297
+
298
+ :host([fill]) ::slotted(pf-tab) {
299
+ flex-grow: 1;
300
+ }
301
+
302
+ :host([fill]) ::slotted(pf-tab:first-of-type) {
303
+ --pf-c-tabs--m-box__item--m-current--first-child__link--before--BorderLeftWidth: 0;
304
+ }
305
+
306
+ :host([fill]) ::slotted(pf-tab:last-of-type) {
307
+ --pf-c-tabs--m-box__item--m-current--last-child__link--before--BorderRightWidth: 0;
308
+ }
309
+
310
+ :host([border-bottom="false"]) [part="tabs-container"] {
311
+ --pf-c-tabs--before--BorderBottomWidth: 0; /* *override user setting* when border-bottom is false border bottom styles should be 0; */
312
+ --pf-c-tabs__link--before--BorderBottomWidth: 0;
313
+ }
314
+ `;
20
315
  import { observes } from '@patternfly/pfe-core/decorators/observes.js';
21
316
  let PfTabs = class PfTabs extends LitElement {
22
317
  constructor() {
@@ -121,8 +416,10 @@ let PfTabs = class PfTabs extends LitElement {
121
416
  }
122
417
  render() {
123
418
  return html `
419
+ <!-- outer container -->
124
420
  <div part="container"
125
421
  class="${classMap({ overflow: __classPrivateFieldGet(this, _PfTabs_overflow, "f").showScrollButtons })}">
422
+ <!-- tabs container -->
126
423
  <div part="tabs-container">${!__classPrivateFieldGet(this, _PfTabs_overflow, "f").showScrollButtons ? '' : html `
127
424
  <button id="previousTab" tabindex="-1"
128
425
  aria-label="${this.labelScrollLeft}"
@@ -130,7 +427,9 @@ let PfTabs = class PfTabs extends LitElement {
130
427
  @click="${__classPrivateFieldGet(this, _PfTabs_instances, "m", _PfTabs_scrollLeft)}">
131
428
  <pf-icon icon="angle-left" set="fas" loading="eager"></pf-icon>
132
429
  </button>`}
430
+ <!-- tablist -->
133
431
  <div id="tabs" part="tabs" role="tablist">
432
+ <!-- Must contain one or more \`<pf-tab>\` -->
134
433
  <slot name="tab" @slotchange="${__classPrivateFieldGet(this, _PfTabs_instances, "m", _PfTabs_onSlotChange)}" @scroll="${__classPrivateFieldGet(this, _PfTabs_overflow, "f").onScroll}"></slot>
135
434
  </div>
136
435
  ${!__classPrivateFieldGet(this, _PfTabs_overflow, "f").showScrollButtons ? '' : html `
@@ -141,6 +440,12 @@ let PfTabs = class PfTabs extends LitElement {
141
440
  <pf-icon icon="angle-right" set="fas" loading="eager"></pf-icon>
142
441
  </button>`}
143
442
  </div>
443
+ <!--
444
+ slot:
445
+ summary: Must contain one or more \`<pf-panel>\`
446
+ part:
447
+ summary: panels
448
+ -->
144
449
  <slot part="panels"></slot>
145
450
  </div>
146
451
  `;
@@ -183,7 +488,7 @@ _PfTabs_onExpand = function _PfTabs_onExpand(event) {
183
488
  };
184
489
  PfTabs.styles = [styles];
185
490
  PfTabs.scrollTimeoutDelay = 150;
186
- PfTabs.version = "4.1.0";
491
+ PfTabs.version = "4.2.0";
187
492
  __decorate([
188
493
  property({ reflect: false, attribute: 'label-scroll-left' })
189
494
  ], PfTabs.prototype, "labelScrollLeft", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pf-tabs.js","sourceRoot":"","sources":["pf-tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport { provide } from '@lit/context';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\nimport { OverflowController } from '@patternfly/pfe-core/controllers/overflow-controller.js';\nimport { RovingTabindexController } from '@patternfly/pfe-core/controllers/roving-tabindex-controller.js';\nimport { TabsAriaController } from '@patternfly/pfe-core/controllers/tabs-aria-controller.js';\n\nimport { PfTab } from './pf-tab.js';\nimport { PfTabPanel } from './pf-tab-panel.js';\n\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nimport { type PfTabsContext, TabExpandEvent, context } from './context.js';\n\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport styles from './pf-tabs.css';\nimport { observes } from '@patternfly/pfe-core/decorators/observes.js';\n\n/**\n * **Tabs** allow users to navigate between views within the same page or context.\n * @csspart container - outer container\n * @csspart tabs-container - tabs container\n * @csspart tabs - tablist\n * @csspart panels - panels\n * @slot tab - Must contain one or more `<pf-tab>`\n * @slot - Must contain one or more `<pf-panel>`\n * @cssprop {<length>} [--pf-c-tabs--Width=auto]\n * @cssprop {<length>} [--pf-c-tabs--inset=0]\n * @cssprop {<color>} [--pf-c-tabs--before--BorderColor=#d2d2d2]\n * @cssprop {<length>} [--pf-c-tabs--before--BorderTopWidth=0]\n * @cssprop {<length>} [--pf-c-tabs--before--BorderRightWidth=0]\n * @cssprop {<length>} [--pf-c-tabs--before--BorderBottomWidth=1px]\n * @cssprop {<length>} [--pf-c-tabs--before---BorderLeftWidth=0]\n * @cssprop {<length>} [--pf-c-tabs--m-vertical--MaxWidth=15.625rem]\n * @cssprop {<color>} [--pf-c-tabs--m-vertical__list--before--BorderColor=#d2d2d2]\n * @cssprop {<length>} [--pf-c-tabs--m-vertical__list--before--BorderTopWidth=0]\n * @cssprop {<length>} [--pf-c-tabs--m-vertical__list--before--BorderRightWidth=0]\n * @cssprop {<length>} [--pf-c-tabs--m-vertical__list--before--BorderBottomWidth=0]\n * @cssprop {<length>} [--pf-c-tabs--m-vertical__list--before--BorderLeftWidth=1px]\n * @cssprop {<length>} [--pf-c-tabs--m-vertical--m-box--inset=2rem]\n * @cssprop {<display>} [--pf-c-tabs__list--Display=flex]\n * @cssprop {<length>} [--pf-c-tabs__scroll-button--Width=3rem]\n * @cssprop {<color>} [--pf-c-tabs__scroll-button--Color=#151515]\n * @cssprop {<color>} [--pf-c-tabs__scroll-button--BackgroundColor=#ffffff]\n * @cssprop {<length>} [--pf-c-tabs__scroll-button--OutlineOffset=-0.25rem]\n * @cssprop {<time>} [--pf-c-tabs__scroll-button--TransitionDuration--margin=.125s]\n * @cssprop {<time>} [--pf-c-tabs__scroll-button--TransitionDuration--transform=.125s]\n * @cssprop {<color>} [--pf-c-tabs__scroll-button--hover--Color=#06c]\n * @cssprop {<color>} [--pf-c-tabs__scroll-button--before--BorderColor=#d2d2d2]\n * @cssprop {<length>} [--pf-c-tabs__scroll-button--before--BorderRightWidth=0]\n * @cssprop {<length>} [--pf-c-tabs__scroll-button--before--BorderBottomWidth=1px]\n * @cssprop {<length>} [--pf-c-tabs__scroll-button--before--BorderLeftWidth=0]\n * @cssprop {<length>} [--pf-c-tabs__scroll-button--before--border-width--base=1px]\n * @cssprop {<color>} [--pf-c-tabs__scroll-button--disabled--Color=#d2d2d2]\n */\n@customElement('pf-tabs')\nexport class PfTabs extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n protected static readonly scrollTimeoutDelay = 150;\n\n static isExpandEvent(event: Event): event is TabExpandEvent<PfTab> {\n return event instanceof TabExpandEvent;\n }\n\n /**\n * Aria Label for the left scroll button\n */\n @property({ reflect: false, attribute: 'label-scroll-left' }) labelScrollLeft = 'Scroll left';\n\n /**\n * Aria Label for the right scroll button\n */\n @property({ reflect: false, attribute: 'label-scroll-right' }) labelScrollRight = 'Scroll left';\n\n /**\n * Box styling on tabs. Defaults to null\n */\n @property({ reflect: true }) box: 'light' | 'dark' | null = null;\n\n /**\n * Set to true to enable vertical tab styling.\n */\n @property({ reflect: true, type: Boolean }) vertical = false;\n\n /**\n * Set to true to enable filled tab styling.\n */\n @property({ reflect: true, type: Boolean }) fill = false;\n\n /**\n * Border bottom tab styling on tabs. To remove the bottom border, set this prop to false.\n */\n @property({ attribute: 'border-bottom' }) borderBottom: 'true' | 'false' = 'true';\n\n /**\n * Set's the tabs to be manually activated. This means that the tabs will not automatically select\n * unless a user clicks on them or uses the keyboard space or enter key to select them. Roving\n * tabindex will still update allowing user to keyboard navigate through the tabs with arrow keys.\n */\n @property({ reflect: true, type: Boolean }) manual = false;\n\n #activeIndex = -1;\n\n /** The index of the active tab */\n @property({ attribute: 'active-index', reflect: true, type: Number })\n get activeIndex() {\n return this.#activeIndex;\n }\n\n set activeIndex(v: number) {\n this.#tabindex.atFocusedItemIndex = v;\n this.#activeIndex = v;\n this.activeTab = this.tabs[v];\n for (const tab of this.tabs) {\n if (!this.activeTab?.disabled) {\n tab.active = tab === this.activeTab;\n }\n this.#tabs.panelFor(tab)?.toggleAttribute('hidden', !tab.active);\n }\n }\n\n @property({ attribute: false }) activeTab?: PfTab;\n\n get tabs(): PfTab[] {\n return this.#tabs.tabs;\n }\n\n @query('#tabs') private tabsContainer!: HTMLElement;\n\n get #ctx(): PfTabsContext {\n const { activeTab, borderBottom, box, fill, manual, vertical } = this;\n return { activeTab, borderBottom, box, fill, manual, vertical };\n }\n\n @provide({ context })\n private ctx: PfTabsContext = this.#ctx;\n\n #overflow = new OverflowController(this, { scrollTimeoutDelay: 200 });\n\n #tabs = new TabsAriaController<PfTab, PfTabPanel>(this, {\n isTab: (x): x is PfTab => (x as HTMLElement).localName === 'pf-tab',\n isPanel: (x): x is PfTabPanel => (x as HTMLElement).localName === 'pf-tab-panel',\n isActiveTab: x => x.active,\n });\n\n #tabindex = RovingTabindexController.of(this, {\n getItemsContainer: () => this.tabsContainer ?? null,\n getItems: () => this.tabs ?? [],\n });\n\n #logger = new Logger(this);\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('expand', this.#onExpand);\n this.id ||= getRandomId(this.localName);\n this.activeIndex = this.#tabindex.atFocusedItemIndex;\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const here = await super.getUpdateComplete();\n const ps = await Promise.all(Array.from(\n this.querySelectorAll<LitElement>('pf-tab, pf-tab-panel'),\n x => x.updateComplete,\n ));\n return here && ps.every(x => !!x);\n }\n\n protected override willUpdate(): void {\n if (!this.manual && this.activeIndex !== this.#tabindex.atFocusedItemIndex) {\n this.activeIndex = this.#tabindex.atFocusedItemIndex;\n }\n this.#overflow.update();\n this.ctx = this.#ctx;\n }\n\n @observes('activeTab')\n protected activeTabChanged(old?: PfTab, activeTab?: PfTab): void {\n if (activeTab?.disabled) {\n this.#logger.warn('Active tab is disabled. Setting to first focusable tab');\n this.activeIndex = 0;\n } if (activeTab) {\n this.activeIndex = this.tabs.indexOf(activeTab);\n }\n }\n\n protected override firstUpdated(): void {\n if (this.tabs.length && this.activeIndex === -1) {\n this.select(this.tabs.findIndex(x => !x.disabled));\n }\n }\n\n render(): TemplateResult<1> {\n return html`\n <div part=\"container\"\n class=\"${classMap({ overflow: this.#overflow.showScrollButtons })}\">\n <div part=\"tabs-container\">${!this.#overflow.showScrollButtons ? '' : html`\n <button id=\"previousTab\" tabindex=\"-1\"\n aria-label=\"${this.labelScrollLeft}\"\n ?disabled=\"${!this.#overflow.overflowLeft}\"\n @click=\"${this.#scrollLeft}\">\n <pf-icon icon=\"angle-left\" set=\"fas\" loading=\"eager\"></pf-icon>\n </button>`}\n <div id=\"tabs\" part=\"tabs\" role=\"tablist\">\n <slot name=\"tab\" @slotchange=\"${this.#onSlotChange}\" @scroll=\"${this.#overflow.onScroll}\"></slot>\n </div>\n ${!this.#overflow.showScrollButtons ? '' : html`\n <button id=\"nextTab\" tabindex=\"-1\"\n aria-label=\"${this.labelScrollRight}\"\n ?disabled=\"${!this.#overflow.overflowRight}\"\n @click=\"${this.#scrollRight}\">\n <pf-icon icon=\"angle-right\" set=\"fas\" loading=\"eager\"></pf-icon>\n </button>`}\n </div>\n <slot part=\"panels\"></slot>\n </div>\n `;\n }\n\n #scrollLeft() {\n this.#overflow.scrollLeft();\n }\n\n #scrollRight() {\n this.#overflow.scrollRight();\n }\n\n #onSlotChange() {\n if (this.tabs) {\n this.#overflow.init(this.tabsContainer, this.tabs);\n }\n }\n\n #onExpand(event: Event) {\n if (event instanceof TabExpandEvent\n && !event.defaultPrevented && this.tabs.includes(event.tab)) {\n this.select(event.tab);\n }\n }\n\n select(tab: PfTab | number): void {\n if (typeof tab === 'number') {\n this.activeIndex = tab;\n } else {\n this.activeIndex = this.tabs.indexOf(tab);\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-tabs': PfTabs;\n }\n}\n"]}
1
+ {"version":3,"file":"pf-tabs.js","sourceRoot":"","sources":["pf-tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, type TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport { provide } from '@lit/context';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { Logger } from '@patternfly/pfe-core/controllers/logger.js';\nimport { OverflowController } from '@patternfly/pfe-core/controllers/overflow-controller.js';\nimport { RovingTabindexController } from '@patternfly/pfe-core/controllers/roving-tabindex-controller.js';\nimport { TabsAriaController } from '@patternfly/pfe-core/controllers/tabs-aria-controller.js';\n\nimport { PfTab } from './pf-tab.js';\nimport { PfTabPanel } from './pf-tab-panel.js';\n\nimport { getRandomId } from '@patternfly/pfe-core/functions/random.js';\n\nimport { type PfTabsContext, TabExpandEvent, context } from './context.js';\n\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nimport styles from './pf-tabs.css';\nimport { observes } from '@patternfly/pfe-core/decorators/observes.js';\n\n/**\n * **Tabs** allow users to navigate between views within the same page or context.\n * @alias Tabs\n */\n@customElement('pf-tabs')\nexport class PfTabs extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n protected static readonly scrollTimeoutDelay = 150;\n\n static isExpandEvent(event: Event): event is TabExpandEvent<PfTab> {\n return event instanceof TabExpandEvent;\n }\n\n /**\n * Aria Label for the left scroll button\n */\n @property({ reflect: false, attribute: 'label-scroll-left' }) labelScrollLeft = 'Scroll left';\n\n /**\n * Aria Label for the right scroll button\n */\n @property({ reflect: false, attribute: 'label-scroll-right' }) labelScrollRight = 'Scroll left';\n\n /**\n * Box styling on tabs. Defaults to null\n */\n @property({ reflect: true }) box: 'light' | 'dark' | null = null;\n\n /**\n * Set to true to enable vertical tab styling.\n */\n @property({ reflect: true, type: Boolean }) vertical = false;\n\n /**\n * Set to true to enable filled tab styling.\n */\n @property({ reflect: true, type: Boolean }) fill = false;\n\n /**\n * Border bottom tab styling on tabs. To remove the bottom border, set this prop to false.\n */\n @property({ attribute: 'border-bottom' }) borderBottom: 'true' | 'false' = 'true';\n\n /**\n * Set's the tabs to be manually activated. This means that the tabs will not automatically select\n * unless a user clicks on them or uses the keyboard space or enter key to select them. Roving\n * tabindex will still update allowing user to keyboard navigate through the tabs with arrow keys.\n */\n @property({ reflect: true, type: Boolean }) manual = false;\n\n #activeIndex = -1;\n\n /** The index of the active tab */\n @property({ attribute: 'active-index', reflect: true, type: Number })\n get activeIndex() {\n return this.#activeIndex;\n }\n\n set activeIndex(v: number) {\n this.#tabindex.atFocusedItemIndex = v;\n this.#activeIndex = v;\n this.activeTab = this.tabs[v];\n for (const tab of this.tabs) {\n if (!this.activeTab?.disabled) {\n tab.active = tab === this.activeTab;\n }\n this.#tabs.panelFor(tab)?.toggleAttribute('hidden', !tab.active);\n }\n }\n\n @property({ attribute: false }) activeTab?: PfTab;\n\n get tabs(): PfTab[] {\n return this.#tabs.tabs;\n }\n\n @query('#tabs') private tabsContainer!: HTMLElement;\n\n get #ctx(): PfTabsContext {\n const { activeTab, borderBottom, box, fill, manual, vertical } = this;\n return { activeTab, borderBottom, box, fill, manual, vertical };\n }\n\n @provide({ context })\n private ctx: PfTabsContext = this.#ctx;\n\n #overflow = new OverflowController(this, { scrollTimeoutDelay: 200 });\n\n #tabs = new TabsAriaController<PfTab, PfTabPanel>(this, {\n isTab: (x): x is PfTab => (x as HTMLElement).localName === 'pf-tab',\n isPanel: (x): x is PfTabPanel => (x as HTMLElement).localName === 'pf-tab-panel',\n isActiveTab: x => x.active,\n });\n\n #tabindex = RovingTabindexController.of(this, {\n getItemsContainer: () => this.tabsContainer ?? null,\n getItems: () => this.tabs ?? [],\n });\n\n #logger = new Logger(this);\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('expand', this.#onExpand);\n this.id ||= getRandomId(this.localName);\n this.activeIndex = this.#tabindex.atFocusedItemIndex;\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const here = await super.getUpdateComplete();\n const ps = await Promise.all(Array.from(\n this.querySelectorAll<LitElement>('pf-tab, pf-tab-panel'),\n x => x.updateComplete,\n ));\n return here && ps.every(x => !!x);\n }\n\n protected override willUpdate(): void {\n if (!this.manual && this.activeIndex !== this.#tabindex.atFocusedItemIndex) {\n this.activeIndex = this.#tabindex.atFocusedItemIndex;\n }\n this.#overflow.update();\n this.ctx = this.#ctx;\n }\n\n @observes('activeTab')\n protected activeTabChanged(old?: PfTab, activeTab?: PfTab): void {\n if (activeTab?.disabled) {\n this.#logger.warn('Active tab is disabled. Setting to first focusable tab');\n this.activeIndex = 0;\n } if (activeTab) {\n this.activeIndex = this.tabs.indexOf(activeTab);\n }\n }\n\n protected override firstUpdated(): void {\n if (this.tabs.length && this.activeIndex === -1) {\n this.select(this.tabs.findIndex(x => !x.disabled));\n }\n }\n\n render(): TemplateResult<1> {\n return html`\n <!-- outer container -->\n <div part=\"container\"\n class=\"${classMap({ overflow: this.#overflow.showScrollButtons })}\">\n <!-- tabs container -->\n <div part=\"tabs-container\">${!this.#overflow.showScrollButtons ? '' : html`\n <button id=\"previousTab\" tabindex=\"-1\"\n aria-label=\"${this.labelScrollLeft}\"\n ?disabled=\"${!this.#overflow.overflowLeft}\"\n @click=\"${this.#scrollLeft}\">\n <pf-icon icon=\"angle-left\" set=\"fas\" loading=\"eager\"></pf-icon>\n </button>`}\n <!-- tablist -->\n <div id=\"tabs\" part=\"tabs\" role=\"tablist\">\n <!-- Must contain one or more \\`<pf-tab>\\` -->\n <slot name=\"tab\" @slotchange=\"${this.#onSlotChange}\" @scroll=\"${this.#overflow.onScroll}\"></slot>\n </div>\n ${!this.#overflow.showScrollButtons ? '' : html`\n <button id=\"nextTab\" tabindex=\"-1\"\n aria-label=\"${this.labelScrollRight}\"\n ?disabled=\"${!this.#overflow.overflowRight}\"\n @click=\"${this.#scrollRight}\">\n <pf-icon icon=\"angle-right\" set=\"fas\" loading=\"eager\"></pf-icon>\n </button>`}\n </div>\n <!--\n slot:\n summary: Must contain one or more \\`<pf-panel>\\`\n part:\n summary: panels\n -->\n <slot part=\"panels\"></slot>\n </div>\n `;\n }\n\n #scrollLeft() {\n this.#overflow.scrollLeft();\n }\n\n #scrollRight() {\n this.#overflow.scrollRight();\n }\n\n #onSlotChange() {\n if (this.tabs) {\n this.#overflow.init(this.tabsContainer, this.tabs);\n }\n }\n\n #onExpand(event: Event) {\n if (event instanceof TabExpandEvent\n && !event.defaultPrevented && this.tabs.includes(event.tab)) {\n this.select(event.tab);\n }\n }\n\n select(tab: PfTab | number): void {\n if (typeof tab === 'number') {\n this.activeIndex = tab;\n } else {\n this.activeIndex = this.tabs.indexOf(tab);\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-tabs': PfTabs;\n }\n}\n"]}