@tylertech/forge 3.0.0-next.6 → 3.0.0-next.8

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 (254) hide show
  1. package/custom-elements.json +2084 -1482
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/app-bar/help-button/index.js +1 -1
  4. package/dist/esm/app-bar/index.js +1 -1
  5. package/dist/esm/app-bar/menu-button/index.js +1 -1
  6. package/dist/esm/app-bar/notification-button/index.js +1 -1
  7. package/dist/esm/app-bar/profile-button/index.js +1 -1
  8. package/dist/esm/app-bar/search/index.js +1 -1
  9. package/dist/esm/autocomplete/index.js +1 -1
  10. package/dist/esm/banner/index.js +1 -1
  11. package/dist/esm/bottom-sheet/index.js +1 -1
  12. package/dist/esm/busy-indicator/index.js +1 -1
  13. package/dist/esm/button/index.js +1 -1
  14. package/dist/esm/button-toggle/button-toggle/index.js +1 -1
  15. package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
  16. package/dist/esm/button-toggle/index.js +1 -1
  17. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  18. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  19. package/dist/esm/calendar/index.js +1 -1
  20. package/dist/esm/card/index.js +1 -1
  21. package/dist/esm/checkbox/index.js +1 -1
  22. package/dist/esm/chip-field/index.js +1 -1
  23. package/dist/esm/chips/chip/index.js +1 -1
  24. package/dist/esm/chips/chip-set/index.js +1 -1
  25. package/dist/esm/chips/index.js +1 -1
  26. package/dist/esm/chunks/{chunk.Q6IP5GJ6.js → chunk.246JM2YT.js} +2 -2
  27. package/dist/esm/chunks/{chunk.DHTAH23Y.js → chunk.24L5GDD2.js} +2 -2
  28. package/dist/esm/chunks/{chunk.ZWTZJJ6H.js → chunk.2IQGDFQS.js} +2 -2
  29. package/dist/esm/chunks/{chunk.DAGXGSX7.js → chunk.2LRDPTHK.js} +2 -2
  30. package/dist/esm/chunks/{chunk.Q47M2LB5.js → chunk.2QFIMTVP.js} +2 -2
  31. package/dist/esm/chunks/{chunk.IVB6XTHQ.js → chunk.2TQONIPK.js} +2 -2
  32. package/dist/esm/chunks/{chunk.DXHKS7XO.js → chunk.2XFVFZ3P.js} +2 -2
  33. package/dist/esm/chunks/{chunk.3ICROIFD.js → chunk.2YAU7AXH.js} +2 -2
  34. package/dist/esm/chunks/{chunk.5B2CGITX.js → chunk.2YX7ASSX.js} +2 -2
  35. package/dist/esm/chunks/{chunk.QLNGQCJX.js → chunk.2ZTERGYF.js} +2 -2
  36. package/dist/esm/chunks/{chunk.BIJJCDHE.js → chunk.3AF7CJP2.js} +2 -2
  37. package/dist/esm/chunks/{chunk.BIJJCDHE.js.map → chunk.3AF7CJP2.js.map} +1 -1
  38. package/dist/esm/chunks/{chunk.Y2ANYRZH.js → chunk.4EB5NVCK.js} +2 -2
  39. package/dist/esm/chunks/{chunk.SACZLJPQ.js → chunk.4LVS2EYJ.js} +2 -2
  40. package/dist/esm/chunks/chunk.57XQ4F6F.js +12 -0
  41. package/dist/esm/chunks/chunk.57XQ4F6F.js.map +7 -0
  42. package/dist/esm/chunks/{chunk.E3VXLUEY.js → chunk.5IVB5L5Z.js} +2 -2
  43. package/dist/esm/chunks/{chunk.GZZ6GFKT.js → chunk.5MK5YWCK.js} +2 -2
  44. package/dist/esm/chunks/{chunk.QO37K76P.js → chunk.6SBTLXLH.js} +2 -2
  45. package/dist/esm/chunks/{chunk.BTZF6QGA.js → chunk.7JQHQKXN.js} +2 -2
  46. package/dist/esm/chunks/{chunk.TWV4OTF7.js → chunk.A5MBSCSQ.js} +2 -2
  47. package/dist/esm/chunks/{chunk.4EF7UJDK.js → chunk.A5R7KUIP.js} +2 -2
  48. package/dist/esm/chunks/{chunk.NQH4ZCXJ.js → chunk.AGMPIMJV.js} +2 -2
  49. package/dist/esm/chunks/{chunk.PMY4KVCF.js → chunk.BKCEVPKW.js} +2 -2
  50. package/dist/esm/chunks/{chunk.I5MLIFN5.js → chunk.BSTIDYQJ.js} +2 -2
  51. package/dist/esm/chunks/chunk.C2LTB7EX.js +7 -0
  52. package/dist/esm/chunks/chunk.C2LTB7EX.js.map +7 -0
  53. package/dist/esm/chunks/chunk.CN27IHDN.js +7 -0
  54. package/dist/esm/chunks/chunk.CN27IHDN.js.map +7 -0
  55. package/dist/esm/chunks/{chunk.MZNL36GJ.js → chunk.CNQESSA3.js} +2 -2
  56. package/dist/esm/chunks/{chunk.6FISJTFJ.js → chunk.E6KWYFZG.js} +2 -2
  57. package/dist/esm/chunks/{chunk.H3SBIXK5.js → chunk.ECRL6O3V.js} +2 -2
  58. package/dist/esm/chunks/{chunk.SBDWCXK3.js → chunk.ER52NFXX.js} +2 -2
  59. package/dist/esm/chunks/{chunk.GSQF3ACL.js → chunk.EUE3OVC7.js} +2 -2
  60. package/dist/esm/chunks/{chunk.DGNS4JNN.js → chunk.FAANPQES.js} +2 -2
  61. package/dist/esm/chunks/{chunk.MZLPUI6R.js → chunk.FYWPZFLJ.js} +2 -2
  62. package/dist/esm/chunks/{chunk.MZLPUI6R.js.map → chunk.FYWPZFLJ.js.map} +2 -2
  63. package/dist/esm/chunks/{chunk.LMSXJOPL.js → chunk.GF2GUVYS.js} +2 -2
  64. package/dist/esm/chunks/{chunk.QKRB6AIQ.js → chunk.GHSAKRYH.js} +2 -2
  65. package/dist/esm/chunks/{chunk.JHTGKXXX.js → chunk.GJW4WS4I.js} +2 -2
  66. package/dist/esm/chunks/{chunk.IW37LUQJ.js → chunk.GUYPITGA.js} +2 -2
  67. package/dist/esm/chunks/{chunk.G75X57KY.js → chunk.HKJEGD6C.js} +2 -2
  68. package/dist/esm/chunks/{chunk.3ARIVYGG.js → chunk.IGK3VYZG.js} +2 -2
  69. package/dist/esm/chunks/chunk.IIXLFXHZ.js +7 -0
  70. package/dist/esm/chunks/chunk.IIXLFXHZ.js.map +7 -0
  71. package/dist/esm/chunks/chunk.JQIOVCKI.js +7 -0
  72. package/dist/esm/chunks/chunk.JQIOVCKI.js.map +7 -0
  73. package/dist/esm/chunks/{chunk.7MDHI4PT.js → chunk.JVW6JGV3.js} +2 -2
  74. package/dist/esm/chunks/chunk.LJYTJ3RV.js +7 -0
  75. package/dist/esm/chunks/chunk.LJYTJ3RV.js.map +7 -0
  76. package/dist/esm/chunks/{chunk.LQ4RD7WW.js → chunk.MXNLCQRB.js} +2 -2
  77. package/dist/esm/chunks/{chunk.DCCJTW7C.js → chunk.NDGFQILG.js} +2 -2
  78. package/dist/esm/chunks/{chunk.PG4HEEX2.js → chunk.OTVT3XM2.js} +2 -2
  79. package/dist/esm/chunks/{chunk.VSO5QDBV.js → chunk.P5QIB6OY.js} +2 -2
  80. package/dist/esm/chunks/{chunk.XUV63FEH.js → chunk.PPPTT3SM.js} +2 -2
  81. package/dist/esm/chunks/{chunk.GZRMHYID.js → chunk.QA3NU7EN.js} +2 -2
  82. package/dist/esm/chunks/{chunk.MVYTV6WX.js → chunk.QYKO543K.js} +2 -2
  83. package/dist/esm/chunks/{chunk.XI4RWFCG.js → chunk.RHYRMQS7.js} +2 -2
  84. package/dist/esm/chunks/{chunk.Q4SCW4FN.js → chunk.RUSHOL23.js} +2 -2
  85. package/dist/esm/chunks/{chunk.AD4CP4UK.js → chunk.SIJGKRYS.js} +2 -2
  86. package/dist/esm/chunks/{chunk.RTMDWDS4.js → chunk.SYZB7B4F.js} +2 -2
  87. package/dist/esm/chunks/{chunk.GYPPM2D2.js → chunk.SZIM4KFZ.js} +2 -2
  88. package/dist/esm/chunks/{chunk.UXQZFI55.js → chunk.THPU5KBV.js} +2 -2
  89. package/dist/esm/chunks/{chunk.K6VWRQWY.js → chunk.TXFYS6EU.js} +2 -2
  90. package/dist/esm/chunks/{chunk.ZLFH7VOM.js → chunk.V4RBOYNH.js} +2 -2
  91. package/dist/esm/chunks/chunk.WH6C36MO.js +7 -0
  92. package/dist/esm/chunks/chunk.WH6C36MO.js.map +7 -0
  93. package/dist/esm/chunks/{chunk.JRV5FYMW.js → chunk.YUAU5IWT.js} +2 -2
  94. package/dist/esm/chunks/{chunk.YSFUL5AD.js → chunk.YZLASVCK.js} +2 -2
  95. package/dist/esm/chunks/{chunk.R7MQKCHR.js → chunk.Z5TWWM7I.js} +2 -2
  96. package/dist/esm/color-picker/index.js +1 -1
  97. package/dist/esm/core/index.js +1 -1
  98. package/dist/esm/date-picker/index.js +1 -1
  99. package/dist/esm/date-range-picker/index.js +1 -1
  100. package/dist/esm/expansion-panel/index.js +1 -1
  101. package/dist/esm/file-picker/index.js +1 -1
  102. package/dist/esm/floating-action-button/index.js +1 -1
  103. package/dist/esm/focus-indicator/index.js +7 -0
  104. package/dist/esm/focus-indicator/index.js.map +7 -0
  105. package/dist/esm/icon/index.js +1 -1
  106. package/dist/esm/icon-button/index.js +1 -1
  107. package/dist/esm/index.js +1 -1
  108. package/dist/esm/list/index.js +1 -1
  109. package/dist/esm/list/list/index.js +1 -1
  110. package/dist/esm/list/list-item/index.js +1 -1
  111. package/dist/esm/list-dropdown/index.js +1 -1
  112. package/dist/esm/menu/index.js +1 -1
  113. package/dist/esm/open-icon/index.js +1 -1
  114. package/dist/esm/paginator/index.js +1 -1
  115. package/dist/esm/profile-card/index.js +1 -1
  116. package/dist/esm/quantity-field/index.js +1 -1
  117. package/dist/esm/radio/index.js +1 -1
  118. package/dist/esm/ripple/index.js +1 -1
  119. package/dist/esm/select/core/index.js +1 -1
  120. package/dist/esm/select/index.js +1 -1
  121. package/dist/esm/select/select/index.js +1 -1
  122. package/dist/esm/select/select-dropdown/index.js +1 -1
  123. package/dist/esm/slider/index.js +1 -1
  124. package/dist/esm/split-view/index.js +1 -1
  125. package/dist/esm/split-view/split-view/index.js +1 -1
  126. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  127. package/dist/esm/stepper/index.js +1 -1
  128. package/dist/esm/stepper/step/index.js +1 -1
  129. package/dist/esm/stepper/stepper/index.js +1 -1
  130. package/dist/esm/switch/index.js +1 -1
  131. package/dist/esm/table/index.js +1 -1
  132. package/dist/esm/tabs/index.js +1 -1
  133. package/dist/esm/tabs/tab/index.js +1 -1
  134. package/dist/esm/tabs/tab-bar/index.js +1 -1
  135. package/dist/esm/time-picker/index.js +1 -1
  136. package/dist/esm/toast/index.js +1 -1
  137. package/esm/card/card-constants.d.ts +2 -2
  138. package/esm/card/card-constants.js +2 -2
  139. package/esm/card/card.d.ts +19 -8
  140. package/esm/card/card.js +30 -21
  141. package/esm/focus-indicator/focus-indicator-adapter.d.ts +37 -0
  142. package/esm/focus-indicator/focus-indicator-adapter.js +59 -0
  143. package/esm/focus-indicator/focus-indicator-constants.d.ts +15 -0
  144. package/esm/focus-indicator/focus-indicator-constants.js +19 -0
  145. package/esm/focus-indicator/focus-indicator-foundation.d.ts +43 -0
  146. package/esm/focus-indicator/focus-indicator-foundation.js +110 -0
  147. package/esm/focus-indicator/focus-indicator.d.ts +67 -0
  148. package/esm/focus-indicator/focus-indicator.js +112 -0
  149. package/esm/focus-indicator/index.d.ts +10 -0
  150. package/esm/focus-indicator/index.js +14 -0
  151. package/esm/index.d.ts +1 -0
  152. package/esm/index.js +3 -0
  153. package/esm/slider/slider-utils.js +3 -0
  154. package/esm/slider/slider.d.ts +0 -1
  155. package/esm/slider/slider.js +7 -4
  156. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  157. package/esm/tabs/tab/tab-adapter.d.ts +15 -39
  158. package/esm/tabs/tab/tab-adapter.js +65 -78
  159. package/esm/tabs/tab/tab-constants.d.ts +13 -13
  160. package/esm/tabs/tab/tab-constants.js +18 -10
  161. package/esm/tabs/tab/tab-foundation.d.ts +24 -23
  162. package/esm/tabs/tab/tab-foundation.js +68 -62
  163. package/esm/tabs/tab/tab-ripple.d.ts +17 -0
  164. package/esm/tabs/tab/tab-ripple.js +33 -0
  165. package/esm/tabs/tab/tab.d.ts +56 -19
  166. package/esm/tabs/tab/tab.js +82 -32
  167. package/esm/tabs/tab-bar/tab-bar-adapter.d.ts +49 -87
  168. package/esm/tabs/tab-bar/tab-bar-adapter.js +114 -188
  169. package/esm/tabs/tab-bar/tab-bar-constants.d.ts +15 -45
  170. package/esm/tabs/tab-bar/tab-bar-constants.js +22 -56
  171. package/esm/tabs/tab-bar/tab-bar-foundation.d.ts +56 -65
  172. package/esm/tabs/tab-bar/tab-bar-foundation.js +241 -302
  173. package/esm/tabs/tab-bar/tab-bar.d.ts +51 -36
  174. package/esm/tabs/tab-bar/tab-bar.js +84 -52
  175. package/package.json +1 -1
  176. package/styles/card/_mixins.scss +8 -7
  177. package/styles/core/style-layer/tabs/tab/_core.scss +419 -0
  178. package/styles/core/style-layer/tabs/tab/_variables.scss +20 -0
  179. package/styles/core/style-layer/tabs/tab/index.scss +13 -0
  180. package/styles/core/style-layer/tabs/tab-bar/_core.scss +110 -0
  181. package/styles/core/style-layer/tabs/tab-bar/_variables.scss +9 -0
  182. package/styles/core/style-layer/tabs/tab-bar/index.scss +13 -0
  183. package/styles/focus-indicator/_mixins.scss +147 -0
  184. package/styles/focus-indicator/_variables.scss +20 -0
  185. package/styles/focus-indicator/focus-indicator.scss +32 -0
  186. package/styles/slider/_mixins.scss +9 -0
  187. package/styles/tabs/tab/_mixins.scss +55 -126
  188. package/styles/tabs/tab/_variables.scss +26 -4
  189. package/styles/tabs/tab/tab.scss +50 -11
  190. package/styles/tabs/tab-bar/_mixins.scss +20 -60
  191. package/styles/tabs/tab-bar/_variables.scss +11 -0
  192. package/styles/tabs/tab-bar/tab-bar.scss +29 -2
  193. package/dist/esm/chunks/chunk.4B22UXEH.js +0 -7
  194. package/dist/esm/chunks/chunk.4B22UXEH.js.map +0 -7
  195. package/dist/esm/chunks/chunk.4QPMNWJ3.js +0 -129
  196. package/dist/esm/chunks/chunk.4QPMNWJ3.js.map +0 -7
  197. package/dist/esm/chunks/chunk.BWZKQ6WX.js +0 -7
  198. package/dist/esm/chunks/chunk.BWZKQ6WX.js.map +0 -7
  199. package/dist/esm/chunks/chunk.D3IAEEPM.js +0 -201
  200. package/dist/esm/chunks/chunk.D3IAEEPM.js.map +0 -7
  201. package/dist/esm/chunks/chunk.NV4U4DE6.js +0 -12
  202. package/dist/esm/chunks/chunk.NV4U4DE6.js.map +0 -7
  203. /package/dist/esm/chunks/{chunk.Q6IP5GJ6.js.map → chunk.246JM2YT.js.map} +0 -0
  204. /package/dist/esm/chunks/{chunk.DHTAH23Y.js.map → chunk.24L5GDD2.js.map} +0 -0
  205. /package/dist/esm/chunks/{chunk.ZWTZJJ6H.js.map → chunk.2IQGDFQS.js.map} +0 -0
  206. /package/dist/esm/chunks/{chunk.DAGXGSX7.js.map → chunk.2LRDPTHK.js.map} +0 -0
  207. /package/dist/esm/chunks/{chunk.Q47M2LB5.js.map → chunk.2QFIMTVP.js.map} +0 -0
  208. /package/dist/esm/chunks/{chunk.IVB6XTHQ.js.map → chunk.2TQONIPK.js.map} +0 -0
  209. /package/dist/esm/chunks/{chunk.DXHKS7XO.js.map → chunk.2XFVFZ3P.js.map} +0 -0
  210. /package/dist/esm/chunks/{chunk.3ICROIFD.js.map → chunk.2YAU7AXH.js.map} +0 -0
  211. /package/dist/esm/chunks/{chunk.5B2CGITX.js.map → chunk.2YX7ASSX.js.map} +0 -0
  212. /package/dist/esm/chunks/{chunk.QLNGQCJX.js.map → chunk.2ZTERGYF.js.map} +0 -0
  213. /package/dist/esm/chunks/{chunk.Y2ANYRZH.js.map → chunk.4EB5NVCK.js.map} +0 -0
  214. /package/dist/esm/chunks/{chunk.SACZLJPQ.js.map → chunk.4LVS2EYJ.js.map} +0 -0
  215. /package/dist/esm/chunks/{chunk.E3VXLUEY.js.map → chunk.5IVB5L5Z.js.map} +0 -0
  216. /package/dist/esm/chunks/{chunk.GZZ6GFKT.js.map → chunk.5MK5YWCK.js.map} +0 -0
  217. /package/dist/esm/chunks/{chunk.QO37K76P.js.map → chunk.6SBTLXLH.js.map} +0 -0
  218. /package/dist/esm/chunks/{chunk.BTZF6QGA.js.map → chunk.7JQHQKXN.js.map} +0 -0
  219. /package/dist/esm/chunks/{chunk.TWV4OTF7.js.map → chunk.A5MBSCSQ.js.map} +0 -0
  220. /package/dist/esm/chunks/{chunk.4EF7UJDK.js.map → chunk.A5R7KUIP.js.map} +0 -0
  221. /package/dist/esm/chunks/{chunk.NQH4ZCXJ.js.map → chunk.AGMPIMJV.js.map} +0 -0
  222. /package/dist/esm/chunks/{chunk.PMY4KVCF.js.map → chunk.BKCEVPKW.js.map} +0 -0
  223. /package/dist/esm/chunks/{chunk.I5MLIFN5.js.map → chunk.BSTIDYQJ.js.map} +0 -0
  224. /package/dist/esm/chunks/{chunk.MZNL36GJ.js.map → chunk.CNQESSA3.js.map} +0 -0
  225. /package/dist/esm/chunks/{chunk.6FISJTFJ.js.map → chunk.E6KWYFZG.js.map} +0 -0
  226. /package/dist/esm/chunks/{chunk.H3SBIXK5.js.map → chunk.ECRL6O3V.js.map} +0 -0
  227. /package/dist/esm/chunks/{chunk.SBDWCXK3.js.map → chunk.ER52NFXX.js.map} +0 -0
  228. /package/dist/esm/chunks/{chunk.GSQF3ACL.js.map → chunk.EUE3OVC7.js.map} +0 -0
  229. /package/dist/esm/chunks/{chunk.DGNS4JNN.js.map → chunk.FAANPQES.js.map} +0 -0
  230. /package/dist/esm/chunks/{chunk.LMSXJOPL.js.map → chunk.GF2GUVYS.js.map} +0 -0
  231. /package/dist/esm/chunks/{chunk.QKRB6AIQ.js.map → chunk.GHSAKRYH.js.map} +0 -0
  232. /package/dist/esm/chunks/{chunk.JHTGKXXX.js.map → chunk.GJW4WS4I.js.map} +0 -0
  233. /package/dist/esm/chunks/{chunk.IW37LUQJ.js.map → chunk.GUYPITGA.js.map} +0 -0
  234. /package/dist/esm/chunks/{chunk.G75X57KY.js.map → chunk.HKJEGD6C.js.map} +0 -0
  235. /package/dist/esm/chunks/{chunk.3ARIVYGG.js.map → chunk.IGK3VYZG.js.map} +0 -0
  236. /package/dist/esm/chunks/{chunk.7MDHI4PT.js.map → chunk.JVW6JGV3.js.map} +0 -0
  237. /package/dist/esm/chunks/{chunk.LQ4RD7WW.js.map → chunk.MXNLCQRB.js.map} +0 -0
  238. /package/dist/esm/chunks/{chunk.DCCJTW7C.js.map → chunk.NDGFQILG.js.map} +0 -0
  239. /package/dist/esm/chunks/{chunk.PG4HEEX2.js.map → chunk.OTVT3XM2.js.map} +0 -0
  240. /package/dist/esm/chunks/{chunk.VSO5QDBV.js.map → chunk.P5QIB6OY.js.map} +0 -0
  241. /package/dist/esm/chunks/{chunk.XUV63FEH.js.map → chunk.PPPTT3SM.js.map} +0 -0
  242. /package/dist/esm/chunks/{chunk.GZRMHYID.js.map → chunk.QA3NU7EN.js.map} +0 -0
  243. /package/dist/esm/chunks/{chunk.MVYTV6WX.js.map → chunk.QYKO543K.js.map} +0 -0
  244. /package/dist/esm/chunks/{chunk.XI4RWFCG.js.map → chunk.RHYRMQS7.js.map} +0 -0
  245. /package/dist/esm/chunks/{chunk.Q4SCW4FN.js.map → chunk.RUSHOL23.js.map} +0 -0
  246. /package/dist/esm/chunks/{chunk.AD4CP4UK.js.map → chunk.SIJGKRYS.js.map} +0 -0
  247. /package/dist/esm/chunks/{chunk.RTMDWDS4.js.map → chunk.SYZB7B4F.js.map} +0 -0
  248. /package/dist/esm/chunks/{chunk.GYPPM2D2.js.map → chunk.SZIM4KFZ.js.map} +0 -0
  249. /package/dist/esm/chunks/{chunk.UXQZFI55.js.map → chunk.THPU5KBV.js.map} +0 -0
  250. /package/dist/esm/chunks/{chunk.K6VWRQWY.js.map → chunk.TXFYS6EU.js.map} +0 -0
  251. /package/dist/esm/chunks/{chunk.ZLFH7VOM.js.map → chunk.V4RBOYNH.js.map} +0 -0
  252. /package/dist/esm/chunks/{chunk.JRV5FYMW.js.map → chunk.YUAU5IWT.js.map} +0 -0
  253. /package/dist/esm/chunks/{chunk.YSFUL5AD.js.map → chunk.YZLASVCK.js.map} +0 -0
  254. /package/dist/esm/chunks/{chunk.R7MQKCHR.js.map → chunk.Z5TWWM7I.js.map} +0 -0
@@ -7,65 +7,42 @@ import { TAB_CONSTANTS } from './tab-constants';
7
7
  export class TabFoundation {
8
8
  constructor(_adapter) {
9
9
  this._adapter = _adapter;
10
+ // State
11
+ this._selected = false;
10
12
  this._disabled = false;
11
- this._active = false;
12
- this._stretch = false;
13
- this._clickListener = (evt) => this._onClick(evt);
13
+ this._vertical = false;
14
+ this._stacked = false;
15
+ this._secondary = false;
16
+ this._inverted = false;
17
+ this._clickListener = () => this._onClick();
18
+ this._keydownListener = (evt) => this._onKeydown(evt);
14
19
  }
15
20
  initialize() {
16
21
  this._adapter.initialize();
17
- this._adapter.initializeRipple();
18
- this._adapter.initializeIndicator();
19
- this._adapter.setDisabled(this._disabled);
20
- this._setActive(this._active);
21
- this._adapter.addButtonListener('click', this._clickListener);
22
- }
23
- disconnect() {
24
- this._adapter.destroyRipple();
25
- this._adapter.destroyIndicator();
26
- this._adapter.removeButtonListener('click', this._clickListener);
27
- }
28
- _onClick(evt) {
29
- if (!this._active) {
30
- this._adapter.emitHostEvent(TAB_CONSTANTS.events.INTERACTED, undefined, true);
22
+ this._adapter.addInteractionListener('click', this._clickListener);
23
+ this._adapter.addInteractionListener('keydown', this._keydownListener);
24
+ }
25
+ destroy() {
26
+ this._adapter.destroy();
27
+ }
28
+ _onClick() {
29
+ if (this._disabled || this._selected) {
30
+ return;
31
31
  }
32
+ this._dispatchSelectEvent();
32
33
  }
33
- _setActive(isActive, previousIndicatorClientRect) {
34
- this._active = isActive;
35
- this._adapter.setActive(this._active);
36
- if (this._active) {
37
- this._adapter.activateIndicator(previousIndicatorClientRect);
34
+ _onKeydown(evt) {
35
+ if (this._disabled || this._selected) {
36
+ return;
38
37
  }
39
- else {
40
- this._adapter.deactivateIndicator();
38
+ const isSelectionKey = evt.key === ' ' || evt.key === 'Enter';
39
+ if (isSelectionKey) {
40
+ evt.preventDefault();
41
+ this._dispatchSelectEvent();
41
42
  }
42
43
  }
43
- activate(previousIndicatorClientRect) {
44
- this._setActive(true, previousIndicatorClientRect);
45
- }
46
- deactivate() {
47
- this._setActive(false);
48
- }
49
- computeIndicatorBounds() {
50
- return this._adapter.computeIndicatorBounds();
51
- }
52
- computeDimensions() {
53
- const rootWidth = this._adapter.getOffsetWidth();
54
- const rootLeft = this._adapter.getOffsetLeft();
55
- const contentWidth = this._adapter.getContentOffsetWidth();
56
- const contentLeft = this._adapter.getContentOffsetLeft();
57
- return {
58
- contentLeft: rootLeft + contentLeft,
59
- contentRight: rootLeft + contentLeft + contentWidth,
60
- rootLeft,
61
- rootRight: rootLeft + rootWidth
62
- };
63
- }
64
- focus() {
65
- this._adapter.focus();
66
- }
67
- setTabIndex(value) {
68
- this._adapter.setTabIndex(value);
44
+ _dispatchSelectEvent() {
45
+ this._adapter.emitHostEvent(TAB_CONSTANTS.events.SELECT, { bubbles: true, composed: true });
69
46
  }
70
47
  get disabled() {
71
48
  return this._disabled;
@@ -77,22 +54,51 @@ export class TabFoundation {
77
54
  this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.DISABLED, this._disabled);
78
55
  }
79
56
  }
80
- get active() {
81
- return this._active;
57
+ get selected() {
58
+ return this._selected;
59
+ }
60
+ set selected(value) {
61
+ if (this._selected !== value) {
62
+ this._selected = value;
63
+ this._adapter.setSelected(this._selected);
64
+ this._adapter.animateSelected();
65
+ this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.SELECTED, this._selected);
66
+ }
67
+ }
68
+ get vertical() {
69
+ return this._vertical;
70
+ }
71
+ set vertical(value) {
72
+ if (this._vertical !== value) {
73
+ this._vertical = value;
74
+ this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.VERTICAL, this._vertical);
75
+ }
76
+ }
77
+ get stacked() {
78
+ return this._stacked;
79
+ }
80
+ set stacked(value) {
81
+ if (this._stacked !== value) {
82
+ this._stacked = value;
83
+ this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.STACKED, this._stacked);
84
+ }
85
+ }
86
+ get secondary() {
87
+ return this._secondary;
82
88
  }
83
- set active(value) {
84
- if (this._active !== value) {
85
- this._setActive(value);
86
- this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.ACTIVE, this._active);
89
+ set secondary(value) {
90
+ if (this._secondary !== value) {
91
+ this._secondary = value;
92
+ this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.SECONDARY, this._secondary);
87
93
  }
88
94
  }
89
- get stretch() {
90
- return this._stretch;
95
+ get inverted() {
96
+ return this._inverted;
91
97
  }
92
- set stretch(value) {
93
- if (this._stretch !== value) {
94
- this._stretch = value;
95
- this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.STRETCH, this._stretch);
98
+ set inverted(value) {
99
+ if (this._inverted !== value) {
100
+ this._inverted = value;
101
+ this._adapter.toggleHostAttribute(TAB_CONSTANTS.attributes.INVERTED, this._inverted);
96
102
  }
97
103
  }
98
104
  }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ import { ForgeRippleCapableSurface, ForgeRipple } from '../../ripple';
7
+ export declare class TabRipple implements ForgeRippleCapableSurface {
8
+ private _surfaceElement;
9
+ private _buttonElement;
10
+ rippleInstance: ForgeRipple | undefined;
11
+ constructor(_surfaceElement: HTMLElement, _buttonElement: HTMLButtonElement);
12
+ destroy(): void;
13
+ emulateFocus(): void;
14
+ get root(): Element;
15
+ get unbounded(): boolean;
16
+ get disabled(): boolean;
17
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Tyler Technologies, Inc.
4
+ * License: Apache-2.0
5
+ */
6
+ import { ForgeRipple, ForgeRippleFoundation } from '../../ripple';
7
+ export class TabRipple {
8
+ constructor(_surfaceElement, _buttonElement) {
9
+ this._surfaceElement = _surfaceElement;
10
+ this._buttonElement = _buttonElement;
11
+ const rippleAdapter = Object.assign(Object.assign({}, ForgeRipple.createAdapter(this)), { registerInteractionHandler: (evtType, handler) => this._buttonElement.addEventListener(evtType, handler, { passive: true }), deregisterInteractionHandler: (evtType, handler) => this._buttonElement.removeEventListener(evtType, handler, { passive: true }), isSurfaceActive: () => this._buttonElement.matches(':active'), isUnbounded: () => this.unbounded, addClass: (className) => this._surfaceElement.classList.add(className), removeClass: (className) => this._surfaceElement.classList.remove(className), updateCssVariable: (varName, value) => this._surfaceElement.style.setProperty(varName, value) });
12
+ const rippleFoundation = new ForgeRippleFoundation(rippleAdapter);
13
+ this.rippleInstance = new ForgeRipple(this._buttonElement, rippleFoundation);
14
+ }
15
+ destroy() {
16
+ var _a;
17
+ (_a = this.rippleInstance) === null || _a === void 0 ? void 0 : _a.destroy();
18
+ this.rippleInstance = undefined;
19
+ }
20
+ emulateFocus() {
21
+ var _a;
22
+ (_a = this.rippleInstance) === null || _a === void 0 ? void 0 : _a.handleFocus();
23
+ }
24
+ get root() {
25
+ return this._buttonElement;
26
+ }
27
+ get unbounded() {
28
+ return false;
29
+ }
30
+ get disabled() {
31
+ return this._buttonElement.disabled;
32
+ }
33
+ }
@@ -3,30 +3,70 @@
3
3
  * Copyright 2023 Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { ITabDimensions } from './tab-constants';
7
6
  import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
8
7
  export interface ITabComponent extends IBaseComponent {
9
8
  disabled: boolean;
10
- active: boolean;
11
- stretch: boolean;
12
- activate(previousIndicatorClientRect?: DOMRect): void;
13
- deactivate(): void;
14
- computeIndicatorBounds(): DOMRect | undefined;
15
- computeDimensions(): ITabDimensions;
16
- setTabIndex(value: number): void;
9
+ selected: boolean;
10
+ vertical: boolean;
11
+ stacked: boolean;
12
+ secondary: boolean;
13
+ inverted: boolean;
17
14
  }
18
15
  declare global {
19
16
  interface HTMLElementTagNameMap {
20
17
  'forge-tab': ITabComponent;
21
18
  }
22
19
  interface HTMLElementEventMap {
23
- 'forge-tab-interacted': CustomEvent<void>;
20
+ 'forge-tab-select': CustomEvent<void>;
24
21
  }
25
22
  }
26
23
  /**
27
- * The web component class behind the `<forge-tab>` custom element.
28
- *
29
24
  * @tag forge-tab
25
+ *
26
+ * @property {boolean} disabled - The disabled state of the tab.
27
+ * @property {boolean} selected - The selected state of the tab.
28
+ * @property {boolean} vertical - Controls whether the tab is vertical or horizontal.
29
+ * @property {boolean} stacked - Controls whether the tab is taller to allow for slotted leading/trailing elements.
30
+ * @property {boolean} secondary - Controls whether the tab is styled as secondary tab navigation.
31
+ * @property {boolean} inverted - Controls whether the tab indicator is rendered on the opposite side of the tab.
32
+ *
33
+ * @attribute disabled - The disabled state of the tab.
34
+ * @attribute selected - The selected state of the tab.
35
+ * @attribute vertical - Controls whether the tab is vertical or horizontal.
36
+ * @attribute stacked - Controls whether the tab is taller to allow for slotted leading/trailing elements.
37
+ * @attribute secondary - Controls whether the tab is styled as secondary tab navigation.
38
+ *
39
+ * @event forge-tab-select - Dispatched when the tab is selected.
40
+ *
41
+ * @cssproperty --forge-tab-indicator-color - The color of the tab indicator. Defaults to the primary theme.
42
+ * @cssproperty --forge-tab-indicator-height - The height of the tab indicator.
43
+ * @cssproperty --forge-tab-indicator-shape - The shape of the tab indicator.
44
+ * @cssproperty --forge-tab-container-color - The color of the tab container. Defaults to the surface theme.
45
+ * @cssproperty --forge-tab-height - The height of the tab.
46
+ * @cssproperty --forge-tab-shape - The shape of the tab.
47
+ * @cssproperty --forge-tab-disabled-opacity - The opacity of the tab when disabled.
48
+ * @cssproperty --forge-tab-active-focus-icon-color - The color of the icon when the tab is active and focused. Defaults to the primary theme.
49
+ * @cssproperty --forge-tab-active-hover-icon-color - The color of the icon when the tab is active and hovered. Defaults to the primary theme.
50
+ * @cssproperty --forge-tab-active-icon-color - The color of the icon when the tab is active. Defaults to the primary theme.
51
+ * @cssproperty --forge-tab-active-pressed-icon-color - The color of the icon when the tab is active and pressed. Defaults to the primary theme.
52
+ * @cssproperty --forge-tab-icon-size - The size of the icon.
53
+ * @cssproperty --forge-tab-focus-icon-color - The color of the icon when the tab is focused. Defaults to the text-on-background theme.
54
+ * @cssproperty --forge-tab-hover-icon-color - The color of the icon when the tab is hovered. Defaults to the text-on-background theme.
55
+ * @cssproperty --forge-tab-icon-color - The color of the icon. Defaults to the text-on-background theme.
56
+ * @cssproperty --forge-tab-pressed-icon-color - The color of the icon when the tab is pressed. Defaults to the text-on-background theme.
57
+ * @cssproperty --forge-tab-active-focus-label-text-color - The color of the label text when the tab is active and focused. Defaults to the primary theme.
58
+ * @cssproperty --forge-tab-active-hover-label-text-color - The color of the label text when the tab is active and hovered. Defaults to the primary theme.
59
+ * @cssproperty --forge-tab-active-label-text-color - The color of the label text when the tab is active. Defaults to the primary theme.
60
+ * @cssproperty --forge-tab-active-pressed-label-text-color - The color of the label text when the tab is active and pressed. Defaults to the primary theme.
61
+ * @cssproperty --forge-tab-focus-label-text-color - The color of the label text when the tab is focused. Defaults to the text-on-background theme.
62
+ * @cssproperty --forge-tab-hover-label-text-color - The color of the label text when the tab is hovered. Defaults to the text-on-background theme.
63
+ * @cssproperty --forge-tab-label-text-color - The color of the label text. Defaults to the text-on-background theme.
64
+ * @cssproperty --forge-tab-pressed-label-text-color - The color of the label text when the tab is pressed. Defaults to the text-on-background theme.
65
+ *
66
+ * @csspart container - The tab container.
67
+ * @csspart content - The tab content container.
68
+ * @csspart label - The tab label container.
69
+ * @csspart indicator - The tab active indicator.
30
70
  */
31
71
  export declare class TabComponent extends BaseComponent implements ITabComponent {
32
72
  static get observedAttributes(): string[];
@@ -36,12 +76,9 @@ export declare class TabComponent extends BaseComponent implements ITabComponent
36
76
  disconnectedCallback(): void;
37
77
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
38
78
  disabled: boolean;
39
- active: boolean;
40
- stretch: boolean;
41
- activate(previousIndicatorClientRect?: DOMRect): void;
42
- deactivate(): void;
43
- computeIndicatorBounds(): DOMRect | undefined;
44
- computeDimensions(): ITabDimensions;
45
- focus(): void;
46
- setTabIndex(value: number): void;
79
+ selected: boolean;
80
+ vertical: boolean;
81
+ stacked: boolean;
82
+ secondary: boolean;
83
+ inverted: boolean;
47
84
  }
@@ -9,19 +9,66 @@ import { TabAdapter } from './tab-adapter';
9
9
  import { TabFoundation } from './tab-foundation';
10
10
  import { TAB_CONSTANTS } from './tab-constants';
11
11
  import { BaseComponent } from '../../core/base/base-component';
12
- const template = '<template><button class=\"forge-tab\" type=\"button\" part=\"button\"><slot name=\"top\"></slot><span class=\"forge-tab__content\" part=\"content\"><slot name=\"leading\"></slot><span class=\"forge-tab__text\" part=\"text\"><slot></slot></span><slot name=\"trailing\"></slot></span><span class=\"mdc-tab-indicator\" part=\"indicator-container\"><span class=\"mdc-tab-indicator__content mdc-tab-indicator__content--underline\" part=\"indicator\"></span> </span><span class=\"forge-tab__ripple\" part=\"ripple-container\"></span></button></template>';
13
- const styles = '@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:relative;outline:0;overflow:hidden}.mdc-ripple-surface::after,.mdc-ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface::after,.mdc-ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-upgraded--unbounded::after,.mdc-ripple-upgraded--unbounded::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{background-color:#000;background-color:var(--mdc-ripple-color,#000)}.mdc-ripple-surface.mdc-ripple-surface--hover::before,.mdc-ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{--mdc-ripple-color:var(--mdc-theme-on-surface)}.mdc-tab-indicator .mdc-tab-indicator__content--underline{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5)}.mdc-tab-indicator .mdc-tab-indicator__content--icon{color:#ffc107;color:var(--mdc-theme-secondary,#ffc107)}.mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:2px}.mdc-tab-indicator .mdc-tab-indicator__content--icon{height:34px;font-size:34px}.mdc-tab-indicator{display:-webkit-box;display:flex;position:absolute;top:0;left:0;-webkit-box-pack:center;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{-webkit-transform-origin:left;transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{-webkit-transition:250ms -webkit-transform cubic-bezier(.4, 0, .2, 1);transition:250ms -webkit-transform cubic-bezier(.4, 0, .2, 1);transition:250ms transform cubic-bezier(.4, 0, .2, 1);transition:250ms transform cubic-bezier(.4, 0, .2, 1),250ms -webkit-transform cubic-bezier(.4, 0, .2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{-webkit-transition:none;transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{-webkit-transition:150ms opacity linear;transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{-webkit-transition-delay:0.1s;transition-delay:0.1s}.forge-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.875rem;font-size:var(--mdc-typography-button-font-size, .875rem);line-height:2.25rem;line-height:var(--mdc-typography-button-line-height, 2.25rem);font-weight:500;font-weight:var(--mdc-typography-button-font-weight,500);letter-spacing:.0892857143em;letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);text-decoration:none;-webkit-text-decoration:var(--mdc-typography-button-text-decoration,none);text-decoration:var(--mdc-typography-button-text-decoration,none);text-transform:uppercase;text-transform:var(--mdc-typography-button-text-transform,uppercase);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-light,rgba(0,0,0,.54));position:relative;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-flex:1;flex:1 0 auto;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:0;background:0 0;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1;padding-right:24px;padding-left:24px;height:100%;width:100%}.forge-tab:disabled{color:rgba(0,0,0,.12);color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12));cursor:not-allowed;pointer-events:none}.forge-tab::-moz-focus-inner{padding:0;border:0}.forge-tab ::slotted([slot=top]){padding-top:8px}.forge-tab ::slotted([slot=leading]),.forge-tab ::slotted([slot=top]),.forge-tab ::slotted([slot=trailing]){-webkit-transition:150ms color linear;transition:150ms color linear;fill:currentColor;width:24px;height:24px;font-size:24px;z-index:2}.forge-tab ::slotted([slot=leading]),.forge-tab ::slotted([slot=trailing]){padding:0 8px}.forge-tab__content{position:relative;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;height:inherit;pointer-events:none}.forge-tab__text{-webkit-transition:150ms color linear;transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.forge-tab--active{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-tab--active ::slotted([slot=leading]),.forge-tab--active ::slotted([slot=top]),.forge-tab--active ::slotted([slot=trailing]){-webkit-transition-delay:0.1s;transition-delay:0.1s}.forge-tab__ripple{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.forge-tab__ripple::after,.forge-tab__ripple::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.forge-tab__ripple::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.forge-tab__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-tab__ripple.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-tab__ripple.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-tab__ripple.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-tab__ripple.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.forge-tab__ripple.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.forge-tab__ripple::after,.forge-tab__ripple::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.forge-tab__ripple.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-tab__ripple::after,.forge-tab__ripple::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-tab__ripple.mdc-ripple-surface--hover::before,.forge-tab__ripple:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-tab__ripple.mdc-ripple-upgraded--background-focused::before,.forge-tab__ripple:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-tab__ripple:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-tab__ripple:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-tab__ripple.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:host{display:inline-block}:host([hidden]){display:none}:host([stretch]){-webkit-box-flex:1;flex:1}:host([theme=primary]){--mdc-theme-primary:var(--mdc-theme-primary, $defaultValue)}:host([theme=primary]) .forge-tab.forge-tab--active{color:#3f51b5}:host([theme=secondary]){--mdc-theme-primary:var(--mdc-theme-secondary, $defaultValue)}:host([theme=secondary]) .forge-tab.forge-tab--active{color:#ffc107}:host([theme=warning]){--mdc-theme-primary:var(--mdc-theme-warning, $defaultValue)}:host([theme=warning]) .forge-tab.forge-tab--active{color:#d14900}:host([theme=success]){--mdc-theme-primary:var(--mdc-theme-success, $defaultValue)}:host([theme=success]) .forge-tab.forge-tab--active{color:#2e7d32}:host([theme=danger]){--mdc-theme-primary:var(--mdc-theme-danger, $defaultValue)}:host([theme=danger]) .forge-tab.forge-tab--active{color:#b00020}:host([theme=info]){--mdc-theme-primary:var(--mdc-theme-info, $defaultValue)}:host([theme=info]) .forge-tab.forge-tab--active{color:#424242}';
12
+ import { FocusIndicatorComponent } from '../../focus-indicator/focus-indicator';
13
+ const template = '<template><div class=\"forge-tab\" part=\"container\"><span class=\"content\" part=\"content\"><slot name=\"leading\"></slot><span class=\"label\" part=\"label\"><slot></slot></span><slot name=\"trailing\"></slot><span class=\"indicator\" part=\"indicator\"></span> </span><span class=\"ripple-surface\"></span><forge-focus-indicator target=\":host\" inward></forge-focus-indicator></div></template>';
14
+ const styles = '@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-tab{--_active-indicator-color:var(--forge-tab-indicator-color, var(--mdc-theme-primary, #3f51b5));--_active-indicator-height:var(--forge-tab-indicator-height, 3px);--_active-indicator-shape:var(--forge-tab-indicator-shape, 3px 3px 0 0);--_container-color:var(--forge-tab-container-color, var(--mdc-theme-surface, #ffffff));--_container-height:var(--forge-tab-container-height, 48px);--_container-shape:var(--forge-tab-shape, 0);--_content-height:var(--forge-tab-height, 48px);--_active-focus-icon-color:var(--forge-tab-active-focus-icon-color, var(--mdc-theme-primary, #3f51b5));--_active-hover-icon-color:var(--forge-tab-active-hover-icon-color, var(--mdc-theme-primary, #3f51b5));--_active-icon-color:var(--forge-tab-active-icon-color, var(--mdc-theme-primary, #3f51b5));--_active-pressed-icon-color:var(--forge-tab-active-pressed-icon-color, var(--mdc-theme-primary, #3f51b5));--_icon-size:var(--forge-tab-icon-size, 24px);--_focus-icon-color:var(--forge-tab-focus-icon-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_hover-icon-color:var(--forge-tab-hover-icon-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_icon-color:var(--forge-tab-icon-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_pressed-icon-color:var(--forge-tab-pressed-icon-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_active-focus-label-text-color:var(--forge-tab-active-focus-label-text-color, var(--mdc-theme-primary, #3f51b5));--_active-hover-label-text-color:var(--forge-tab-active-hover-label-text-color, var(--mdc-theme-primary, #3f51b5));--_active-label-text-color:var(--forge-tab-active-label-text-color, var(--mdc-theme-primary, #3f51b5));--_active-pressed-label-text-color:var(--forge-tab-active-pressed-label-text-color, var(--mdc-theme-primary, #3f51b5));--_focus-label-text-color:var(--forge-tab-focus-label-text-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_hover-label-text-color:var(--forge-tab-hover-label-text-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_label-text-color:var(--forge-tab-label-text-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));--_pressed-label-text-color:var(--forge-tab-pressed-label-text-color, var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.875rem;font-size:var(--mdc-typography-button-font-size, .875rem);line-height:2.25rem;line-height:var(--mdc-typography-button-line-height, 2.25rem);font-weight:500;font-weight:var(--mdc-typography-button-font-weight,500);letter-spacing:.0892857143em;letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);text-decoration:none;-webkit-text-decoration:var(--mdc-typography-button-text-decoration,none);text-decoration:var(--mdc-typography-button-text-decoration,none);text-transform:uppercase;text-transform:var(--mdc-typography-button-text-transform,uppercase);display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;vertical-align:middle;background:0 0;text-decoration:none;width:100%;position:relative;padding:0;margin:0;z-index:0;background-color:var(--_container-color);color:var(--_label-text-color);min-height:var(--_container-height)}.forge-tab::-moz-focus-inner{padding:0;border:0}.forge-tab ::slotted([slot=leading]),.forge-tab ::slotted([slot=trailing]){display:-webkit-inline-box;display:inline-flex;position:relative;-webkit-writing-mode:horizontal-tb;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb;fill:currentColor;color:var(--_icon-color);font-size:var(--_icon-size);width:var(--_icon-size);height:var(--_icon-size)}.forge-tab:hover{color:var(--_hover-label-text-color);cursor:pointer}.forge-tab:hover ::slotted([slot=leading]),.forge-tab:hover ::slotted([slot=trailing]){color:var(--_hover-icon-color)}.forge-tab .content{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-inline-box;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;white-space:nowrap;-webkit-transition:150ms color linear;transition:150ms color linear;max-height:calc(var(--_content-height) + 16px);min-height:var(--_content-height);padding:8px 16px;gap:4px}.forge-tab .content .label{display:inline-block;line-height:1}.forge-tab .indicator{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:-1;-webkit-transform-origin:bottom left;transform-origin:bottom left;background:var(--_active-indicator-color);border-radius:var(--_active-indicator-shape);height:var(--_active-indicator-height);inset:auto 0 0;opacity:0}.forge-tab .ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;border-radius:var(--_container-shape)}.forge-tab .ripple-surface::after,.forge-tab .ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.forge-tab .ripple-surface::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.forge-tab .ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-tab .ripple-surface.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-tab .ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-tab .ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-tab .ripple-surface.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.forge-tab .ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.forge-tab .ripple-surface::after,.forge-tab .ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.forge-tab .ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-tab .ripple-surface::after,.forge-tab .ripple-surface::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-tab .ripple-surface.mdc-ripple-surface--hover::before,.forge-tab .ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-tab .ripple-surface.mdc-ripple-upgraded--background-focused::before,.forge-tab .ripple-surface:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-tab .ripple-surface:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-tab .ripple-surface:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-tab .ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}::slotted(*),host{white-space:nowrap}forge-focus-indicator{--forge-focus-indicator-shape:8px}:host{display:-webkit-inline-box;display:inline-flex;outline:0;-webkit-tap-highlight-color:transparent;vertical-align:middle}:host([hidden]){display:none}:host(:focus) .forge-tab{color:var(--_focus-label-text-color)}:host(:focus) .forge-tab ::slotted([slot=leading]),:host(:focus) .forge-tab ::slotted([slot=trailing]){color:var(--_focus-icon-color)}:host(:active) .forge-tab{color:var(--_pressed-label-text-color);outline:0}:host(:active) .forge-tab ::slotted([slot=leading]),:host(:active) .forge-tab ::slotted([slot=trailing]){color:var(--_pressed-icon-color)}:host([disabled]){cursor:not-allowed;opacity:var(--forge-tab-disabled-opacity, .38)}:host([disabled]) .forge-tab{pointer-events:none}:host([selected]) .forge-tab{color:var(--_active-label-text-color)}:host([selected]) .forge-tab ::slotted([slot=leading]),:host([selected]) .forge-tab ::slotted([slot=trailing]){color:var(--_active-icon-color)}:host([selected]) .forge-tab:hover{color:var(--_active-hover-label-text-color)}:host([selected]) .forge-tab:hover ::slotted([slot=leading]),:host([selected]) .forge-tab:hover ::slotted([slot=trailing]){color:var(--_active-hover-icon-color)}:host([selected]) .indicator{opacity:1}@media (forced-colors:active){:host([selected]) .forge-tab{--_active-indicator-color:CanvasText}}:host([selected]) forge-focus-indicator{--forge-focus-indicator-offset-block:0 calc(var(--_active-indicator-height) + 1px)}:host([selected]:focus) .forge-tab{color:var(--_active-focus-label-text-color)}:host([selected]:focus) .forge-tab ::slotted([slot=leading]),:host([selected]:focus) .forge-tab ::slotted([slot=trailing]){color:var(--_active-focus-icon-color)}:host([selected]:active) .forge-tab{color:var(--_active-pressed-label-text-color)}:host([selected]:active) .forge-tab ::slotted([slot=leading]),:host([selected]:active) .forge-tab ::slotted([slot=trailing]){color:var(--_active-pressed-icon-color)}:host([stacked]) .forge-tab{--_container-height:64px;--_content-height:64px}:host([stacked]) .forge-tab .content{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}:host([secondary]) .forge-tab{--_active-indicator-height:var(--forge-tab-active-indicator-height, 2px);--_active-indicator-shape:var(--forge-tab-indicator-shape, 0)}:host([secondary]) .content{width:100%}:host([secondary]) .indicator{min-width:100%}:host([vertical]) .forge-tab{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;border-bottom:none}:host([vertical]) .content{width:100%}:host([vertical]) .indicator{height:100%;min-width:var(--_active-indicator-height);inset:0 0 0 auto}:host([vertical][secondary]) .content{min-height:100%}:host([vertical]:not([secondary])) .forge-tab{--_active-indicator-shape:3px 0 0 3px}:host([inverted]) .forge-tab{--_active-indicator-shape:var(--forge-tab-indicator-shape, 0 0 3px 3px)}:host([inverted]) .indicator{inset:0 0 auto;-webkit-transform-origin:top left;transform-origin:top left}:host([inverted][vertical]) .forge-tab{--_active-indicator-shape:var(--forge-tab-indicator-shape, 0 3px 3px 0)}:host([inverted][vertical]) .indicator{inset:0 auto 0 0}';
14
15
  /**
15
- * The web component class behind the `<forge-tab>` custom element.
16
- *
17
16
  * @tag forge-tab
17
+ *
18
+ * @property {boolean} disabled - The disabled state of the tab.
19
+ * @property {boolean} selected - The selected state of the tab.
20
+ * @property {boolean} vertical - Controls whether the tab is vertical or horizontal.
21
+ * @property {boolean} stacked - Controls whether the tab is taller to allow for slotted leading/trailing elements.
22
+ * @property {boolean} secondary - Controls whether the tab is styled as secondary tab navigation.
23
+ * @property {boolean} inverted - Controls whether the tab indicator is rendered on the opposite side of the tab.
24
+ *
25
+ * @attribute disabled - The disabled state of the tab.
26
+ * @attribute selected - The selected state of the tab.
27
+ * @attribute vertical - Controls whether the tab is vertical or horizontal.
28
+ * @attribute stacked - Controls whether the tab is taller to allow for slotted leading/trailing elements.
29
+ * @attribute secondary - Controls whether the tab is styled as secondary tab navigation.
30
+ *
31
+ * @event forge-tab-select - Dispatched when the tab is selected.
32
+ *
33
+ * @cssproperty --forge-tab-indicator-color - The color of the tab indicator. Defaults to the primary theme.
34
+ * @cssproperty --forge-tab-indicator-height - The height of the tab indicator.
35
+ * @cssproperty --forge-tab-indicator-shape - The shape of the tab indicator.
36
+ * @cssproperty --forge-tab-container-color - The color of the tab container. Defaults to the surface theme.
37
+ * @cssproperty --forge-tab-height - The height of the tab.
38
+ * @cssproperty --forge-tab-shape - The shape of the tab.
39
+ * @cssproperty --forge-tab-disabled-opacity - The opacity of the tab when disabled.
40
+ * @cssproperty --forge-tab-active-focus-icon-color - The color of the icon when the tab is active and focused. Defaults to the primary theme.
41
+ * @cssproperty --forge-tab-active-hover-icon-color - The color of the icon when the tab is active and hovered. Defaults to the primary theme.
42
+ * @cssproperty --forge-tab-active-icon-color - The color of the icon when the tab is active. Defaults to the primary theme.
43
+ * @cssproperty --forge-tab-active-pressed-icon-color - The color of the icon when the tab is active and pressed. Defaults to the primary theme.
44
+ * @cssproperty --forge-tab-icon-size - The size of the icon.
45
+ * @cssproperty --forge-tab-focus-icon-color - The color of the icon when the tab is focused. Defaults to the text-on-background theme.
46
+ * @cssproperty --forge-tab-hover-icon-color - The color of the icon when the tab is hovered. Defaults to the text-on-background theme.
47
+ * @cssproperty --forge-tab-icon-color - The color of the icon. Defaults to the text-on-background theme.
48
+ * @cssproperty --forge-tab-pressed-icon-color - The color of the icon when the tab is pressed. Defaults to the text-on-background theme.
49
+ * @cssproperty --forge-tab-active-focus-label-text-color - The color of the label text when the tab is active and focused. Defaults to the primary theme.
50
+ * @cssproperty --forge-tab-active-hover-label-text-color - The color of the label text when the tab is active and hovered. Defaults to the primary theme.
51
+ * @cssproperty --forge-tab-active-label-text-color - The color of the label text when the tab is active. Defaults to the primary theme.
52
+ * @cssproperty --forge-tab-active-pressed-label-text-color - The color of the label text when the tab is active and pressed. Defaults to the primary theme.
53
+ * @cssproperty --forge-tab-focus-label-text-color - The color of the label text when the tab is focused. Defaults to the text-on-background theme.
54
+ * @cssproperty --forge-tab-hover-label-text-color - The color of the label text when the tab is hovered. Defaults to the text-on-background theme.
55
+ * @cssproperty --forge-tab-label-text-color - The color of the label text. Defaults to the text-on-background theme.
56
+ * @cssproperty --forge-tab-pressed-label-text-color - The color of the label text when the tab is pressed. Defaults to the text-on-background theme.
57
+ *
58
+ * @csspart container - The tab container.
59
+ * @csspart content - The tab content container.
60
+ * @csspart label - The tab label container.
61
+ * @csspart indicator - The tab active indicator.
18
62
  */
19
63
  let TabComponent = class TabComponent extends BaseComponent {
20
64
  static get observedAttributes() {
21
65
  return [
22
66
  TAB_CONSTANTS.attributes.DISABLED,
23
- TAB_CONSTANTS.attributes.ACTIVE,
24
- TAB_CONSTANTS.attributes.STRETCH
67
+ TAB_CONSTANTS.attributes.SELECTED,
68
+ TAB_CONSTANTS.attributes.VERTICAL,
69
+ TAB_CONSTANTS.attributes.STACKED,
70
+ TAB_CONSTANTS.attributes.SECONDARY,
71
+ TAB_CONSTANTS.attributes.INVERTED
25
72
  ];
26
73
  }
27
74
  constructor() {
@@ -33,52 +80,55 @@ let TabComponent = class TabComponent extends BaseComponent {
33
80
  this._foundation.initialize();
34
81
  }
35
82
  disconnectedCallback() {
36
- this._foundation.disconnect();
83
+ this._foundation.destroy();
37
84
  }
38
85
  attributeChangedCallback(name, oldValue, newValue) {
39
86
  switch (name) {
40
87
  case TAB_CONSTANTS.attributes.DISABLED:
41
88
  this.disabled = coerceBoolean(newValue);
42
89
  break;
43
- case TAB_CONSTANTS.attributes.ACTIVE:
44
- this.active = coerceBoolean(newValue);
90
+ case TAB_CONSTANTS.attributes.SELECTED:
91
+ this.selected = coerceBoolean(newValue);
45
92
  break;
46
- case TAB_CONSTANTS.attributes.STRETCH:
47
- this.stretch = coerceBoolean(newValue);
93
+ case TAB_CONSTANTS.attributes.VERTICAL:
94
+ this.vertical = coerceBoolean(newValue);
95
+ break;
96
+ case TAB_CONSTANTS.attributes.STACKED:
97
+ this.stacked = coerceBoolean(newValue);
98
+ break;
99
+ case TAB_CONSTANTS.attributes.SECONDARY:
100
+ this.secondary = coerceBoolean(newValue);
101
+ break;
102
+ case TAB_CONSTANTS.attributes.INVERTED:
103
+ this.inverted = coerceBoolean(newValue);
48
104
  break;
49
105
  }
50
106
  }
51
- activate(previousIndicatorClientRect) {
52
- this._foundation.activate(previousIndicatorClientRect);
53
- }
54
- deactivate() {
55
- this._foundation.deactivate();
56
- }
57
- computeIndicatorBounds() {
58
- return this._foundation.computeIndicatorBounds();
59
- }
60
- computeDimensions() {
61
- return this._foundation.computeDimensions();
62
- }
63
- focus() {
64
- this._foundation.focus();
65
- }
66
- setTabIndex(value) {
67
- this._foundation.setTabIndex(value);
68
- }
69
107
  };
70
108
  __decorate([
71
109
  FoundationProperty()
72
110
  ], TabComponent.prototype, "disabled", void 0);
73
111
  __decorate([
74
112
  FoundationProperty()
75
- ], TabComponent.prototype, "active", void 0);
113
+ ], TabComponent.prototype, "selected", void 0);
114
+ __decorate([
115
+ FoundationProperty()
116
+ ], TabComponent.prototype, "vertical", void 0);
117
+ __decorate([
118
+ FoundationProperty()
119
+ ], TabComponent.prototype, "stacked", void 0);
120
+ __decorate([
121
+ FoundationProperty()
122
+ ], TabComponent.prototype, "secondary", void 0);
76
123
  __decorate([
77
124
  FoundationProperty()
78
- ], TabComponent.prototype, "stretch", void 0);
125
+ ], TabComponent.prototype, "inverted", void 0);
79
126
  TabComponent = __decorate([
80
127
  CustomElement({
81
- name: TAB_CONSTANTS.elementName
128
+ name: TAB_CONSTANTS.elementName,
129
+ dependencies: [
130
+ FocusIndicatorComponent
131
+ ]
82
132
  })
83
133
  ], TabComponent);
84
134
  export { TabComponent };