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

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 (212) hide show
  1. package/custom-elements.json +620 -1108
  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/index.js +1 -1
  18. package/dist/esm/checkbox/index.js +1 -1
  19. package/dist/esm/chip-field/index.js +1 -1
  20. package/dist/esm/chips/chip/index.js +1 -1
  21. package/dist/esm/chips/chip-set/index.js +1 -1
  22. package/dist/esm/chips/index.js +1 -1
  23. package/dist/esm/chunks/{chunk.Q6IP5GJ6.js → chunk.246JM2YT.js} +2 -2
  24. package/dist/esm/chunks/{chunk.DHTAH23Y.js → chunk.24L5GDD2.js} +2 -2
  25. package/dist/esm/chunks/{chunk.ZWTZJJ6H.js → chunk.2IQGDFQS.js} +2 -2
  26. package/dist/esm/chunks/{chunk.DAGXGSX7.js → chunk.2LRDPTHK.js} +2 -2
  27. package/dist/esm/chunks/{chunk.Q47M2LB5.js → chunk.2QFIMTVP.js} +2 -2
  28. package/dist/esm/chunks/{chunk.IVB6XTHQ.js → chunk.2TQONIPK.js} +2 -2
  29. package/dist/esm/chunks/{chunk.DXHKS7XO.js → chunk.2XFVFZ3P.js} +2 -2
  30. package/dist/esm/chunks/{chunk.3ICROIFD.js → chunk.2YAU7AXH.js} +2 -2
  31. package/dist/esm/chunks/{chunk.5B2CGITX.js → chunk.2YX7ASSX.js} +2 -2
  32. package/dist/esm/chunks/{chunk.QLNGQCJX.js → chunk.2ZTERGYF.js} +2 -2
  33. package/dist/esm/chunks/{chunk.Y2ANYRZH.js → chunk.4EB5NVCK.js} +2 -2
  34. package/dist/esm/chunks/{chunk.SACZLJPQ.js → chunk.4LVS2EYJ.js} +2 -2
  35. package/dist/esm/chunks/{chunk.E3VXLUEY.js → chunk.5IVB5L5Z.js} +2 -2
  36. package/dist/esm/chunks/{chunk.QO37K76P.js → chunk.6SBTLXLH.js} +2 -2
  37. package/dist/esm/chunks/{chunk.BTZF6QGA.js → chunk.7JQHQKXN.js} +2 -2
  38. package/dist/esm/chunks/{chunk.TWV4OTF7.js → chunk.A5MBSCSQ.js} +2 -2
  39. package/dist/esm/chunks/{chunk.4EF7UJDK.js → chunk.A5R7KUIP.js} +2 -2
  40. package/dist/esm/chunks/{chunk.NQH4ZCXJ.js → chunk.AGMPIMJV.js} +2 -2
  41. package/dist/esm/chunks/{chunk.PMY4KVCF.js → chunk.BKCEVPKW.js} +2 -2
  42. package/dist/esm/chunks/{chunk.I5MLIFN5.js → chunk.BSTIDYQJ.js} +2 -2
  43. package/dist/esm/chunks/{chunk.MZNL36GJ.js → chunk.CNQESSA3.js} +2 -2
  44. package/dist/esm/chunks/{chunk.6FISJTFJ.js → chunk.E6KWYFZG.js} +2 -2
  45. package/dist/esm/chunks/{chunk.H3SBIXK5.js → chunk.ECRL6O3V.js} +2 -2
  46. package/dist/esm/chunks/{chunk.SBDWCXK3.js → chunk.ER52NFXX.js} +2 -2
  47. package/dist/esm/chunks/{chunk.GSQF3ACL.js → chunk.EUE3OVC7.js} +2 -2
  48. package/dist/esm/chunks/{chunk.DGNS4JNN.js → chunk.FAANPQES.js} +2 -2
  49. package/dist/esm/chunks/{chunk.MZLPUI6R.js → chunk.FYWPZFLJ.js} +2 -2
  50. package/dist/esm/chunks/{chunk.MZLPUI6R.js.map → chunk.FYWPZFLJ.js.map} +2 -2
  51. package/dist/esm/chunks/{chunk.LMSXJOPL.js → chunk.GF2GUVYS.js} +2 -2
  52. package/dist/esm/chunks/{chunk.QKRB6AIQ.js → chunk.GHSAKRYH.js} +2 -2
  53. package/dist/esm/chunks/{chunk.JHTGKXXX.js → chunk.GJW4WS4I.js} +2 -2
  54. package/dist/esm/chunks/{chunk.IW37LUQJ.js → chunk.GUYPITGA.js} +2 -2
  55. package/dist/esm/chunks/chunk.GWIVOPRO.js +7 -0
  56. package/dist/esm/chunks/chunk.GWIVOPRO.js.map +7 -0
  57. package/dist/esm/chunks/{chunk.G75X57KY.js → chunk.HKJEGD6C.js} +2 -2
  58. package/dist/esm/chunks/{chunk.3ARIVYGG.js → chunk.IGK3VYZG.js} +2 -2
  59. package/dist/esm/chunks/chunk.JHXNEHWR.js +12 -0
  60. package/dist/esm/chunks/{chunk.7MDHI4PT.js → chunk.JVW6JGV3.js} +2 -2
  61. package/dist/esm/chunks/{chunk.LQ4RD7WW.js → chunk.MXNLCQRB.js} +2 -2
  62. package/dist/esm/chunks/chunk.OHNPVHPF.js +7 -0
  63. package/dist/esm/chunks/chunk.OHNPVHPF.js.map +7 -0
  64. package/dist/esm/chunks/{chunk.GZZ6GFKT.js → chunk.OT6H5NHX.js} +2 -2
  65. package/dist/esm/chunks/{chunk.PG4HEEX2.js → chunk.OTVT3XM2.js} +2 -2
  66. package/dist/esm/chunks/{chunk.VSO5QDBV.js → chunk.P5QIB6OY.js} +2 -2
  67. package/dist/esm/chunks/{chunk.XUV63FEH.js → chunk.PPPTT3SM.js} +2 -2
  68. package/dist/esm/chunks/{chunk.GZRMHYID.js → chunk.QA3NU7EN.js} +2 -2
  69. package/dist/esm/chunks/{chunk.MVYTV6WX.js → chunk.QYKO543K.js} +2 -2
  70. package/dist/esm/chunks/{chunk.XI4RWFCG.js → chunk.RHYRMQS7.js} +2 -2
  71. package/dist/esm/chunks/{chunk.Q4SCW4FN.js → chunk.RUSHOL23.js} +2 -2
  72. package/dist/esm/chunks/{chunk.AD4CP4UK.js → chunk.SIJGKRYS.js} +2 -2
  73. package/dist/esm/chunks/{chunk.BIJJCDHE.js → chunk.STGRPD2L.js} +2 -2
  74. package/dist/esm/chunks/{chunk.BIJJCDHE.js.map → chunk.STGRPD2L.js.map} +1 -1
  75. package/dist/esm/chunks/{chunk.RTMDWDS4.js → chunk.SYZB7B4F.js} +2 -2
  76. package/dist/esm/chunks/{chunk.GYPPM2D2.js → chunk.SZIM4KFZ.js} +2 -2
  77. package/dist/esm/chunks/{chunk.UXQZFI55.js → chunk.THPU5KBV.js} +2 -2
  78. package/dist/esm/chunks/{chunk.K6VWRQWY.js → chunk.TXFYS6EU.js} +2 -2
  79. package/dist/esm/chunks/{chunk.ZLFH7VOM.js → chunk.V4RBOYNH.js} +2 -2
  80. package/dist/esm/chunks/{chunk.4B22UXEH.js → chunk.WFDIA7R6.js} +2 -2
  81. package/dist/esm/chunks/{chunk.DCCJTW7C.js → chunk.XMFQFFKR.js} +2 -2
  82. package/dist/esm/chunks/{chunk.JRV5FYMW.js → chunk.YUAU5IWT.js} +2 -2
  83. package/dist/esm/chunks/{chunk.YSFUL5AD.js → chunk.YZLASVCK.js} +2 -2
  84. package/dist/esm/chunks/{chunk.R7MQKCHR.js → chunk.Z5TWWM7I.js} +2 -2
  85. package/dist/esm/color-picker/index.js +1 -1
  86. package/dist/esm/date-picker/index.js +1 -1
  87. package/dist/esm/date-range-picker/index.js +1 -1
  88. package/dist/esm/expansion-panel/index.js +1 -1
  89. package/dist/esm/file-picker/index.js +1 -1
  90. package/dist/esm/floating-action-button/index.js +1 -1
  91. package/dist/esm/icon-button/index.js +1 -1
  92. package/dist/esm/index.js +1 -1
  93. package/dist/esm/list/index.js +1 -1
  94. package/dist/esm/list/list/index.js +1 -1
  95. package/dist/esm/list/list-item/index.js +1 -1
  96. package/dist/esm/list-dropdown/index.js +1 -1
  97. package/dist/esm/menu/index.js +1 -1
  98. package/dist/esm/open-icon/index.js +1 -1
  99. package/dist/esm/paginator/index.js +1 -1
  100. package/dist/esm/profile-card/index.js +1 -1
  101. package/dist/esm/quantity-field/index.js +1 -1
  102. package/dist/esm/radio/index.js +1 -1
  103. package/dist/esm/ripple/index.js +1 -1
  104. package/dist/esm/select/core/index.js +1 -1
  105. package/dist/esm/select/index.js +1 -1
  106. package/dist/esm/select/select/index.js +1 -1
  107. package/dist/esm/select/select-dropdown/index.js +1 -1
  108. package/dist/esm/slider/index.js +1 -1
  109. package/dist/esm/split-view/index.js +1 -1
  110. package/dist/esm/split-view/split-view/index.js +1 -1
  111. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  112. package/dist/esm/stepper/index.js +1 -1
  113. package/dist/esm/stepper/step/index.js +1 -1
  114. package/dist/esm/stepper/stepper/index.js +1 -1
  115. package/dist/esm/switch/index.js +1 -1
  116. package/dist/esm/table/index.js +1 -1
  117. package/dist/esm/tabs/index.js +1 -1
  118. package/dist/esm/tabs/tab/index.js +1 -1
  119. package/dist/esm/tabs/tab-bar/index.js +1 -1
  120. package/dist/esm/time-picker/index.js +1 -1
  121. package/dist/esm/toast/index.js +1 -1
  122. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  123. package/esm/tabs/tab/tab-adapter.d.ts +14 -38
  124. package/esm/tabs/tab/tab-adapter.js +65 -78
  125. package/esm/tabs/tab/tab-constants.d.ts +13 -13
  126. package/esm/tabs/tab/tab-constants.js +18 -10
  127. package/esm/tabs/tab/tab-foundation.d.ts +24 -23
  128. package/esm/tabs/tab/tab-foundation.js +68 -62
  129. package/esm/tabs/tab/tab-ripple.d.ts +17 -0
  130. package/esm/tabs/tab/tab-ripple.js +33 -0
  131. package/esm/tabs/tab/tab.d.ts +56 -19
  132. package/esm/tabs/tab/tab.js +77 -31
  133. package/esm/tabs/tab-bar/tab-bar-adapter.d.ts +49 -87
  134. package/esm/tabs/tab-bar/tab-bar-adapter.js +114 -188
  135. package/esm/tabs/tab-bar/tab-bar-constants.d.ts +15 -45
  136. package/esm/tabs/tab-bar/tab-bar-constants.js +22 -56
  137. package/esm/tabs/tab-bar/tab-bar-foundation.d.ts +56 -65
  138. package/esm/tabs/tab-bar/tab-bar-foundation.js +241 -302
  139. package/esm/tabs/tab-bar/tab-bar.d.ts +51 -36
  140. package/esm/tabs/tab-bar/tab-bar.js +84 -52
  141. package/package.json +1 -1
  142. package/styles/core/style-layer/tabs/tab/_core.scss +419 -0
  143. package/styles/core/style-layer/tabs/tab/_variables.scss +20 -0
  144. package/styles/core/style-layer/tabs/tab/index.scss +13 -0
  145. package/styles/core/style-layer/tabs/tab-bar/_core.scss +110 -0
  146. package/styles/core/style-layer/tabs/tab-bar/_variables.scss +9 -0
  147. package/styles/core/style-layer/tabs/tab-bar/index.scss +13 -0
  148. package/styles/tabs/tab/_mixins.scss +46 -128
  149. package/styles/tabs/tab/_variables.scss +26 -4
  150. package/styles/tabs/tab/tab.scss +50 -11
  151. package/styles/tabs/tab-bar/_mixins.scss +20 -60
  152. package/styles/tabs/tab-bar/_variables.scss +11 -0
  153. package/styles/tabs/tab-bar/tab-bar.scss +29 -2
  154. package/dist/esm/chunks/chunk.4QPMNWJ3.js +0 -129
  155. package/dist/esm/chunks/chunk.4QPMNWJ3.js.map +0 -7
  156. package/dist/esm/chunks/chunk.D3IAEEPM.js +0 -201
  157. package/dist/esm/chunks/chunk.D3IAEEPM.js.map +0 -7
  158. package/dist/esm/chunks/chunk.NV4U4DE6.js +0 -12
  159. /package/dist/esm/chunks/{chunk.Q6IP5GJ6.js.map → chunk.246JM2YT.js.map} +0 -0
  160. /package/dist/esm/chunks/{chunk.DHTAH23Y.js.map → chunk.24L5GDD2.js.map} +0 -0
  161. /package/dist/esm/chunks/{chunk.ZWTZJJ6H.js.map → chunk.2IQGDFQS.js.map} +0 -0
  162. /package/dist/esm/chunks/{chunk.DAGXGSX7.js.map → chunk.2LRDPTHK.js.map} +0 -0
  163. /package/dist/esm/chunks/{chunk.Q47M2LB5.js.map → chunk.2QFIMTVP.js.map} +0 -0
  164. /package/dist/esm/chunks/{chunk.IVB6XTHQ.js.map → chunk.2TQONIPK.js.map} +0 -0
  165. /package/dist/esm/chunks/{chunk.DXHKS7XO.js.map → chunk.2XFVFZ3P.js.map} +0 -0
  166. /package/dist/esm/chunks/{chunk.3ICROIFD.js.map → chunk.2YAU7AXH.js.map} +0 -0
  167. /package/dist/esm/chunks/{chunk.5B2CGITX.js.map → chunk.2YX7ASSX.js.map} +0 -0
  168. /package/dist/esm/chunks/{chunk.QLNGQCJX.js.map → chunk.2ZTERGYF.js.map} +0 -0
  169. /package/dist/esm/chunks/{chunk.Y2ANYRZH.js.map → chunk.4EB5NVCK.js.map} +0 -0
  170. /package/dist/esm/chunks/{chunk.SACZLJPQ.js.map → chunk.4LVS2EYJ.js.map} +0 -0
  171. /package/dist/esm/chunks/{chunk.E3VXLUEY.js.map → chunk.5IVB5L5Z.js.map} +0 -0
  172. /package/dist/esm/chunks/{chunk.QO37K76P.js.map → chunk.6SBTLXLH.js.map} +0 -0
  173. /package/dist/esm/chunks/{chunk.BTZF6QGA.js.map → chunk.7JQHQKXN.js.map} +0 -0
  174. /package/dist/esm/chunks/{chunk.TWV4OTF7.js.map → chunk.A5MBSCSQ.js.map} +0 -0
  175. /package/dist/esm/chunks/{chunk.4EF7UJDK.js.map → chunk.A5R7KUIP.js.map} +0 -0
  176. /package/dist/esm/chunks/{chunk.NQH4ZCXJ.js.map → chunk.AGMPIMJV.js.map} +0 -0
  177. /package/dist/esm/chunks/{chunk.PMY4KVCF.js.map → chunk.BKCEVPKW.js.map} +0 -0
  178. /package/dist/esm/chunks/{chunk.I5MLIFN5.js.map → chunk.BSTIDYQJ.js.map} +0 -0
  179. /package/dist/esm/chunks/{chunk.MZNL36GJ.js.map → chunk.CNQESSA3.js.map} +0 -0
  180. /package/dist/esm/chunks/{chunk.6FISJTFJ.js.map → chunk.E6KWYFZG.js.map} +0 -0
  181. /package/dist/esm/chunks/{chunk.H3SBIXK5.js.map → chunk.ECRL6O3V.js.map} +0 -0
  182. /package/dist/esm/chunks/{chunk.SBDWCXK3.js.map → chunk.ER52NFXX.js.map} +0 -0
  183. /package/dist/esm/chunks/{chunk.GSQF3ACL.js.map → chunk.EUE3OVC7.js.map} +0 -0
  184. /package/dist/esm/chunks/{chunk.DGNS4JNN.js.map → chunk.FAANPQES.js.map} +0 -0
  185. /package/dist/esm/chunks/{chunk.LMSXJOPL.js.map → chunk.GF2GUVYS.js.map} +0 -0
  186. /package/dist/esm/chunks/{chunk.QKRB6AIQ.js.map → chunk.GHSAKRYH.js.map} +0 -0
  187. /package/dist/esm/chunks/{chunk.JHTGKXXX.js.map → chunk.GJW4WS4I.js.map} +0 -0
  188. /package/dist/esm/chunks/{chunk.IW37LUQJ.js.map → chunk.GUYPITGA.js.map} +0 -0
  189. /package/dist/esm/chunks/{chunk.G75X57KY.js.map → chunk.HKJEGD6C.js.map} +0 -0
  190. /package/dist/esm/chunks/{chunk.3ARIVYGG.js.map → chunk.IGK3VYZG.js.map} +0 -0
  191. /package/dist/esm/chunks/{chunk.NV4U4DE6.js.map → chunk.JHXNEHWR.js.map} +0 -0
  192. /package/dist/esm/chunks/{chunk.7MDHI4PT.js.map → chunk.JVW6JGV3.js.map} +0 -0
  193. /package/dist/esm/chunks/{chunk.LQ4RD7WW.js.map → chunk.MXNLCQRB.js.map} +0 -0
  194. /package/dist/esm/chunks/{chunk.GZZ6GFKT.js.map → chunk.OT6H5NHX.js.map} +0 -0
  195. /package/dist/esm/chunks/{chunk.PG4HEEX2.js.map → chunk.OTVT3XM2.js.map} +0 -0
  196. /package/dist/esm/chunks/{chunk.VSO5QDBV.js.map → chunk.P5QIB6OY.js.map} +0 -0
  197. /package/dist/esm/chunks/{chunk.XUV63FEH.js.map → chunk.PPPTT3SM.js.map} +0 -0
  198. /package/dist/esm/chunks/{chunk.GZRMHYID.js.map → chunk.QA3NU7EN.js.map} +0 -0
  199. /package/dist/esm/chunks/{chunk.MVYTV6WX.js.map → chunk.QYKO543K.js.map} +0 -0
  200. /package/dist/esm/chunks/{chunk.XI4RWFCG.js.map → chunk.RHYRMQS7.js.map} +0 -0
  201. /package/dist/esm/chunks/{chunk.Q4SCW4FN.js.map → chunk.RUSHOL23.js.map} +0 -0
  202. /package/dist/esm/chunks/{chunk.AD4CP4UK.js.map → chunk.SIJGKRYS.js.map} +0 -0
  203. /package/dist/esm/chunks/{chunk.RTMDWDS4.js.map → chunk.SYZB7B4F.js.map} +0 -0
  204. /package/dist/esm/chunks/{chunk.GYPPM2D2.js.map → chunk.SZIM4KFZ.js.map} +0 -0
  205. /package/dist/esm/chunks/{chunk.UXQZFI55.js.map → chunk.THPU5KBV.js.map} +0 -0
  206. /package/dist/esm/chunks/{chunk.K6VWRQWY.js.map → chunk.TXFYS6EU.js.map} +0 -0
  207. /package/dist/esm/chunks/{chunk.ZLFH7VOM.js.map → chunk.V4RBOYNH.js.map} +0 -0
  208. /package/dist/esm/chunks/{chunk.4B22UXEH.js.map → chunk.WFDIA7R6.js.map} +0 -0
  209. /package/dist/esm/chunks/{chunk.DCCJTW7C.js.map → chunk.XMFQFFKR.js.map} +0 -0
  210. /package/dist/esm/chunks/{chunk.JRV5FYMW.js.map → chunk.YUAU5IWT.js.map} +0 -0
  211. /package/dist/esm/chunks/{chunk.YSFUL5AD.js.map → chunk.YZLASVCK.js.map} +0 -0
  212. /package/dist/esm/chunks/{chunk.R7MQKCHR.js.map → chunk.Z5TWWM7I.js.map} +0 -0
@@ -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,65 @@ 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
+ 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></div></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}}.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}: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]: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
14
  /**
15
- * The web component class behind the `<forge-tab>` custom element.
16
- *
17
15
  * @tag forge-tab
16
+ *
17
+ * @property {boolean} disabled - The disabled state of the tab.
18
+ * @property {boolean} selected - The selected state of the tab.
19
+ * @property {boolean} vertical - Controls whether the tab is vertical or horizontal.
20
+ * @property {boolean} stacked - Controls whether the tab is taller to allow for slotted leading/trailing elements.
21
+ * @property {boolean} secondary - Controls whether the tab is styled as secondary tab navigation.
22
+ * @property {boolean} inverted - Controls whether the tab indicator is rendered on the opposite side of the tab.
23
+ *
24
+ * @attribute disabled - The disabled state of the tab.
25
+ * @attribute selected - The selected state of the tab.
26
+ * @attribute vertical - Controls whether the tab is vertical or horizontal.
27
+ * @attribute stacked - Controls whether the tab is taller to allow for slotted leading/trailing elements.
28
+ * @attribute secondary - Controls whether the tab is styled as secondary tab navigation.
29
+ *
30
+ * @event forge-tab-select - Dispatched when the tab is selected.
31
+ *
32
+ * @cssproperty --forge-tab-indicator-color - The color of the tab indicator. Defaults to the primary theme.
33
+ * @cssproperty --forge-tab-indicator-height - The height of the tab indicator.
34
+ * @cssproperty --forge-tab-indicator-shape - The shape of the tab indicator.
35
+ * @cssproperty --forge-tab-container-color - The color of the tab container. Defaults to the surface theme.
36
+ * @cssproperty --forge-tab-height - The height of the tab.
37
+ * @cssproperty --forge-tab-shape - The shape of the tab.
38
+ * @cssproperty --forge-tab-disabled-opacity - The opacity of the tab when disabled.
39
+ * @cssproperty --forge-tab-active-focus-icon-color - The color of the icon when the tab is active and focused. Defaults to the primary theme.
40
+ * @cssproperty --forge-tab-active-hover-icon-color - The color of the icon when the tab is active and hovered. Defaults to the primary theme.
41
+ * @cssproperty --forge-tab-active-icon-color - The color of the icon when the tab is active. Defaults to the primary theme.
42
+ * @cssproperty --forge-tab-active-pressed-icon-color - The color of the icon when the tab is active and pressed. Defaults to the primary theme.
43
+ * @cssproperty --forge-tab-icon-size - The size of the icon.
44
+ * @cssproperty --forge-tab-focus-icon-color - The color of the icon when the tab is focused. Defaults to the text-on-background theme.
45
+ * @cssproperty --forge-tab-hover-icon-color - The color of the icon when the tab is hovered. Defaults to the text-on-background theme.
46
+ * @cssproperty --forge-tab-icon-color - The color of the icon. Defaults to the text-on-background theme.
47
+ * @cssproperty --forge-tab-pressed-icon-color - The color of the icon when the tab is pressed. Defaults to the text-on-background theme.
48
+ * @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.
49
+ * @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.
50
+ * @cssproperty --forge-tab-active-label-text-color - The color of the label text when the tab is active. Defaults to the primary theme.
51
+ * @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.
52
+ * @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.
53
+ * @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.
54
+ * @cssproperty --forge-tab-label-text-color - The color of the label text. Defaults to the text-on-background theme.
55
+ * @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.
56
+ *
57
+ * @csspart container - The tab container.
58
+ * @csspart content - The tab content container.
59
+ * @csspart label - The tab label container.
60
+ * @csspart indicator - The tab active indicator.
18
61
  */
19
62
  let TabComponent = class TabComponent extends BaseComponent {
20
63
  static get observedAttributes() {
21
64
  return [
22
65
  TAB_CONSTANTS.attributes.DISABLED,
23
- TAB_CONSTANTS.attributes.ACTIVE,
24
- TAB_CONSTANTS.attributes.STRETCH
66
+ TAB_CONSTANTS.attributes.SELECTED,
67
+ TAB_CONSTANTS.attributes.VERTICAL,
68
+ TAB_CONSTANTS.attributes.STACKED,
69
+ TAB_CONSTANTS.attributes.SECONDARY,
70
+ TAB_CONSTANTS.attributes.INVERTED
25
71
  ];
26
72
  }
27
73
  constructor() {
@@ -33,49 +79,49 @@ let TabComponent = class TabComponent extends BaseComponent {
33
79
  this._foundation.initialize();
34
80
  }
35
81
  disconnectedCallback() {
36
- this._foundation.disconnect();
82
+ this._foundation.destroy();
37
83
  }
38
84
  attributeChangedCallback(name, oldValue, newValue) {
39
85
  switch (name) {
40
86
  case TAB_CONSTANTS.attributes.DISABLED:
41
87
  this.disabled = coerceBoolean(newValue);
42
88
  break;
43
- case TAB_CONSTANTS.attributes.ACTIVE:
44
- this.active = coerceBoolean(newValue);
89
+ case TAB_CONSTANTS.attributes.SELECTED:
90
+ this.selected = coerceBoolean(newValue);
45
91
  break;
46
- case TAB_CONSTANTS.attributes.STRETCH:
47
- this.stretch = coerceBoolean(newValue);
92
+ case TAB_CONSTANTS.attributes.VERTICAL:
93
+ this.vertical = coerceBoolean(newValue);
94
+ break;
95
+ case TAB_CONSTANTS.attributes.STACKED:
96
+ this.stacked = coerceBoolean(newValue);
97
+ break;
98
+ case TAB_CONSTANTS.attributes.SECONDARY:
99
+ this.secondary = coerceBoolean(newValue);
100
+ break;
101
+ case TAB_CONSTANTS.attributes.INVERTED:
102
+ this.inverted = coerceBoolean(newValue);
48
103
  break;
49
104
  }
50
105
  }
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
106
  };
70
107
  __decorate([
71
108
  FoundationProperty()
72
109
  ], TabComponent.prototype, "disabled", void 0);
73
110
  __decorate([
74
111
  FoundationProperty()
75
- ], TabComponent.prototype, "active", void 0);
112
+ ], TabComponent.prototype, "selected", void 0);
113
+ __decorate([
114
+ FoundationProperty()
115
+ ], TabComponent.prototype, "vertical", void 0);
116
+ __decorate([
117
+ FoundationProperty()
118
+ ], TabComponent.prototype, "stacked", void 0);
119
+ __decorate([
120
+ FoundationProperty()
121
+ ], TabComponent.prototype, "secondary", void 0);
76
122
  __decorate([
77
123
  FoundationProperty()
78
- ], TabComponent.prototype, "stretch", void 0);
124
+ ], TabComponent.prototype, "inverted", void 0);
79
125
  TabComponent = __decorate([
80
126
  CustomElement({
81
127
  name: TAB_CONSTANTS.elementName
@@ -3,96 +3,58 @@
3
3
  * Copyright 2023 Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { IBaseAdapter, BaseAdapter } from '../../core/base/base-adapter';
7
- import { ITabBarComponent } from './tab-bar';
8
- import { TabBarLayoutMode, TabBarLayoutAlign } from './tab-bar-constants';
6
+ import { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';
9
7
  import { ITabComponent } from '../tab/tab';
10
- import { ITabDimensions } from '../tab/tab-constants';
8
+ import { ITabBarComponent } from './tab-bar';
11
9
  export interface ITabBarAdapter extends IBaseAdapter {
12
- initializeTabs(activeTabIndex: number, stretch: boolean): void;
13
- initializeTabScroller(): void;
14
- initializeAccessibility(): void;
15
- destroyTabScroller(): void;
16
- addTabChangeListener(listener: (evt: Event) => void): void;
17
- removeTabChangeListener(listener: (evt: Event) => void): void;
18
- addScrollListener(listener: (evt: Event) => void): void;
19
- getTabIndex(tab: ITabComponent): number;
20
- getTabCount(): number;
21
- activateTab(index: number, previousTabBounds?: DOMRect): void;
22
- deactivateTab(index: number): void;
23
- syncTabIndex(index: number): void;
24
- getTabBounds(index: number): DOMRect | undefined;
25
- setUnderline(value: boolean): void;
26
- setStacked(value: boolean): void;
27
- scrollTo(scrollX: number): void;
28
- getScrollContentWidth(): number;
29
- getScrollPosition(): number;
30
- getOffsetWidth(): number;
31
- getTabDimensionsAtIndex(index: number): ITabDimensions;
32
- incrementScroll(scrollXIncrement: number): void;
33
- isScrolled(): boolean;
34
- isScrolledEnd(): boolean;
35
- getFocusedTabIndex(): number;
36
- focusTabAtIndex(index: number): void;
37
- setLayoutMode(value: TabBarLayoutMode): void;
38
- setLayoutAlign(value: TabBarLayoutAlign): void;
39
- setPreviousButtonVisibility(value: boolean): void;
40
- setPreviousButtonEnabled(value: boolean): void;
41
- setNextButtonVisibility(value: boolean): void;
42
- setNextButtonEnabled(value: boolean): void;
43
- addScrollPreviousListener(type: string, listener: (evt: MouseEvent) => void): void;
44
- addScrollNextListener(type: string, listener: (evt: MouseEvent) => void): void;
45
- isTabDisabled(index: number): boolean;
46
- ensureFocusableTab(): void;
10
+ initializeContainerSizeObserver(listener: () => void): void;
11
+ destroyContainerSizeObserver(): void;
12
+ initializeScrollObserver(listener: EventListener): void;
13
+ destroyScrollObserver(listener: EventListener): void;
14
+ setVertical(value: boolean): void;
15
+ setScrollBackwardButtonListener(listener: EventListener): void;
16
+ setScrollForwardButtonListener(listener: EventListener): void;
17
+ addSlotListener(listener: EventListener): void;
18
+ getTabs(): ITabComponent[];
19
+ tryScrollTabIntoView(tab: ITabComponent): Promise<void>;
20
+ isScrollable(): boolean;
21
+ getScrollState(): ITabBarScrollInfo;
22
+ setScrollButtons(value: boolean): void;
23
+ syncScrollButtons(state: ITabBarScrollButtonState): void;
24
+ scroll(which: 'backward' | 'forward'): void;
25
+ updateScrollButtonIcons(vertical: boolean): void;
26
+ }
27
+ export interface ITabBarScrollInfo {
28
+ isScrolledStart: boolean;
29
+ isScrolledEnd: boolean;
30
+ }
31
+ export interface ITabBarScrollButtonState {
32
+ backwardEnabled: boolean;
33
+ forwardEnabled: boolean;
47
34
  }
48
35
  export declare class TabBarAdapter extends BaseAdapter<ITabBarComponent> implements ITabBarAdapter {
49
- private _rootElement;
50
- private _defaultSlotElement;
51
- private _tabScrollElement;
52
- private _tabScrollAreaElement;
53
- private _tabScrollContentElement;
54
- private _tabScroller;
55
- private _tabs;
56
- private _prevButtonContainerElement;
57
- private _nextButtonContainerElement;
58
- private _prevButtonElement;
59
- private _nextButtonElement;
36
+ private readonly _defaultSlotElement;
37
+ private readonly _container;
38
+ private readonly _scrollContainer;
39
+ private _resizeObserver;
40
+ private _backwardScrollButton;
41
+ private _forwardScrollButton;
60
42
  constructor(component: ITabBarComponent);
61
- initializeTabs(activeTabIndex: number, stretch: boolean): void;
62
- initializeTabScroller(): void;
63
- initializeAccessibility(): void;
64
- destroyTabScroller(): void;
65
- addTabChangeListener(listener: (evt: Event) => void): void;
66
- removeTabChangeListener(listener: (evt: Event) => void): void;
67
- addScrollListener(listener: (evt: Event) => void): void;
68
- getTabIndex(tab: ITabComponent): number;
69
- getTabCount(): number;
70
- activateTab(index: number, previousTabBounds?: DOMRect): void;
71
- deactivateTab(index: number): void;
72
- syncTabIndex(index: number): void;
73
- getTabBounds(index: number): DOMRect | undefined;
74
- setUnderline(value: boolean): void;
75
- setStacked(value: boolean): void;
76
- scrollTo(scrollX: number): void;
77
- getScrollContentWidth(): number;
78
- getScrollPosition(): number;
79
- getOffsetWidth(): number;
80
- getTabDimensionsAtIndex(index: number): ITabDimensions;
81
- incrementScroll(scrollXIncrement: number): void;
82
- isScrolled(): boolean;
83
- isScrolledEnd(): boolean;
84
- getFocusedTabIndex(): number;
85
- focusTabAtIndex(index: number): void;
86
- setLayoutMode(value: TabBarLayoutMode): void;
87
- setLayoutAlign(value: TabBarLayoutAlign): void;
88
- setPreviousButtonVisibility(value: boolean): void;
89
- setPreviousButtonEnabled(value: boolean): void;
90
- setNextButtonVisibility(value: boolean): void;
91
- setNextButtonEnabled(value: boolean): void;
92
- addScrollPreviousListener(type: string, listener: (evt: MouseEvent) => void): void;
93
- addScrollNextListener(type: string, listener: (evt: MouseEvent) => void): void;
94
- isTabDisabled(index: number): boolean;
95
- ensureFocusableTab(): void;
96
- private _getTabs;
97
- private _getTabByIndex;
43
+ initializeContainerSizeObserver(listener: () => void): void;
44
+ initializeScrollObserver(listener: EventListener): void;
45
+ destroyContainerSizeObserver(): void;
46
+ destroyScrollObserver(listener: EventListener): void;
47
+ setVertical(value: boolean): void;
48
+ setScrollBackwardButtonListener(listener: EventListener): void;
49
+ setScrollForwardButtonListener(listener: EventListener): void;
50
+ addSlotListener(listener: EventListener): void;
51
+ getTabs(): ITabComponent[];
52
+ tryScrollTabIntoView(tab: ITabComponent): Promise<void>;
53
+ getScrollState(): ITabBarScrollInfo;
54
+ isScrollable(): boolean;
55
+ setScrollButtons(value: boolean): void;
56
+ syncScrollButtons({ backwardEnabled, forwardEnabled }: ITabBarScrollButtonState): void;
57
+ scroll(which: 'backward' | 'forward'): void;
58
+ updateScrollButtonIcons(vertical: boolean): void;
59
+ private _createScrollButton;
98
60
  }