@tylertech/forge 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/custom-elements.json +114525 -0
  2. package/dist/esm/accordion/index.js +4 -4
  3. package/dist/esm/app-bar/help-button/index.js +14 -14
  4. package/dist/esm/app-bar/index.js +24 -24
  5. package/dist/esm/app-bar/menu-button/index.js +5 -5
  6. package/dist/esm/app-bar/notification-button/index.js +6 -6
  7. package/dist/esm/app-bar/profile-button/index.js +10 -10
  8. package/dist/esm/app-bar/search/index.js +3 -3
  9. package/dist/esm/autocomplete/index.js +16 -16
  10. package/dist/esm/avatar/index.js +1 -1
  11. package/dist/esm/backdrop/index.js +1 -1
  12. package/dist/esm/badge/index.js +1 -1
  13. package/dist/esm/banner/index.js +5 -5
  14. package/dist/esm/bottom-sheet/index.js +8 -8
  15. package/dist/esm/busy-indicator/index.js +6 -6
  16. package/dist/esm/button/index.js +2 -2
  17. package/dist/esm/button-toggle/button-toggle/index.js +3 -3
  18. package/dist/esm/button-toggle/button-toggle-group/index.js +3 -3
  19. package/dist/esm/button-toggle/index.js +4 -4
  20. package/dist/esm/calendar/calendar-dropdown/index.js +3 -3
  21. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  22. package/dist/esm/calendar/index.js +9 -9
  23. package/dist/esm/card/index.js +1 -1
  24. package/dist/esm/checkbox/index.js +2 -2
  25. package/dist/esm/chip-field/index.js +6 -6
  26. package/dist/esm/chips/chip/index.js +4 -4
  27. package/dist/esm/chips/chip-set/index.js +4 -4
  28. package/dist/esm/chips/index.js +5 -5
  29. package/dist/esm/chunks/{chunk.K7P3WRAY.js → chunk.2MBI5DLT.js} +6 -6
  30. package/dist/esm/chunks/{chunk.K7P3WRAY.js.map → chunk.2MBI5DLT.js.map} +2 -2
  31. package/dist/esm/chunks/{chunk.HRZBANYY.js → chunk.2WBHHTUM.js} +2 -2
  32. package/dist/esm/chunks/{chunk.HRZBANYY.js.map → chunk.2WBHHTUM.js.map} +2 -2
  33. package/dist/esm/chunks/{chunk.WXFCZJJI.js → chunk.3EHQ3YHJ.js} +1 -1
  34. package/dist/esm/chunks/{chunk.WXFCZJJI.js.map → chunk.3EHQ3YHJ.js.map} +2 -2
  35. package/dist/esm/chunks/{chunk.R5RVCPM2.js → chunk.3QXCVTCP.js} +2 -2
  36. package/dist/esm/chunks/{chunk.R5RVCPM2.js.map → chunk.3QXCVTCP.js.map} +0 -0
  37. package/dist/esm/chunks/{chunk.NFUWLTHW.js → chunk.46BED43J.js} +3 -3
  38. package/dist/esm/chunks/{chunk.NFUWLTHW.js.map → chunk.46BED43J.js.map} +2 -2
  39. package/dist/esm/chunks/{chunk.VTXXZ5KT.js → chunk.4PF7WRP4.js} +2 -2
  40. package/dist/esm/chunks/{chunk.VTXXZ5KT.js.map → chunk.4PF7WRP4.js.map} +2 -2
  41. package/dist/esm/chunks/{chunk.KZ2QNQK2.js → chunk.4WLVFWKI.js} +2 -2
  42. package/dist/esm/chunks/{chunk.KZ2QNQK2.js.map → chunk.4WLVFWKI.js.map} +0 -0
  43. package/dist/esm/chunks/{chunk.C2MR3RDF.js → chunk.56BNM7F2.js} +1 -1
  44. package/dist/esm/chunks/{chunk.C2MR3RDF.js.map → chunk.56BNM7F2.js.map} +2 -2
  45. package/dist/esm/chunks/{chunk.3GRDFAFV.js → chunk.5OYAJ36F.js} +2 -2
  46. package/dist/esm/chunks/{chunk.3GRDFAFV.js.map → chunk.5OYAJ36F.js.map} +0 -0
  47. package/dist/esm/chunks/{chunk.4UKSUUTX.js → chunk.5U6ZT6MC.js} +2 -2
  48. package/dist/esm/chunks/{chunk.4UKSUUTX.js.map → chunk.5U6ZT6MC.js.map} +2 -2
  49. package/dist/esm/chunks/{chunk.ANNBOFGK.js → chunk.65GHMPX2.js} +2 -2
  50. package/dist/esm/chunks/{chunk.ANNBOFGK.js.map → chunk.65GHMPX2.js.map} +2 -2
  51. package/dist/esm/chunks/{chunk.LCVWXB3K.js → chunk.67B6JDOJ.js} +3 -3
  52. package/dist/esm/chunks/{chunk.LCVWXB3K.js.map → chunk.67B6JDOJ.js.map} +2 -2
  53. package/dist/esm/chunks/{chunk.EL6B2ODN.js → chunk.6ZBFCE2A.js} +1 -1
  54. package/dist/esm/chunks/{chunk.EL6B2ODN.js.map → chunk.6ZBFCE2A.js.map} +2 -2
  55. package/dist/esm/chunks/{chunk.VAPJ75PS.js → chunk.7FWTBD6Y.js} +2 -2
  56. package/dist/esm/chunks/{chunk.VAPJ75PS.js.map → chunk.7FWTBD6Y.js.map} +0 -0
  57. package/dist/esm/chunks/{chunk.KCK3G74Y.js → chunk.7UAH67PT.js} +2 -2
  58. package/dist/esm/chunks/{chunk.KCK3G74Y.js.map → chunk.7UAH67PT.js.map} +2 -2
  59. package/dist/esm/chunks/{chunk.VDKKTHAJ.js → chunk.ANME7BKM.js} +1 -1
  60. package/dist/esm/chunks/{chunk.VDKKTHAJ.js.map → chunk.ANME7BKM.js.map} +2 -2
  61. package/dist/esm/chunks/{chunk.O62N7AHR.js → chunk.BEAJZPWS.js} +2 -2
  62. package/dist/esm/chunks/{chunk.O62N7AHR.js.map → chunk.BEAJZPWS.js.map} +0 -0
  63. package/dist/esm/chunks/{chunk.BVGIWAUP.js → chunk.BVGJFMEG.js} +7 -7
  64. package/dist/esm/chunks/{chunk.BVGIWAUP.js.map → chunk.BVGJFMEG.js.map} +2 -2
  65. package/dist/esm/chunks/{chunk.R4UKTXEK.js → chunk.C73AZRT4.js} +4 -4
  66. package/dist/esm/chunks/{chunk.R4UKTXEK.js.map → chunk.C73AZRT4.js.map} +2 -2
  67. package/dist/esm/chunks/{chunk.APUL33GR.js → chunk.CLEUHAZ6.js} +2 -2
  68. package/dist/esm/chunks/{chunk.APUL33GR.js.map → chunk.CLEUHAZ6.js.map} +2 -2
  69. package/dist/esm/chunks/{chunk.U35QQZVK.js → chunk.D33KLIFD.js} +1 -1
  70. package/dist/esm/chunks/{chunk.U35QQZVK.js.map → chunk.D33KLIFD.js.map} +2 -2
  71. package/dist/esm/chunks/{chunk.5EEEKOOK.js → chunk.DLF5JAQO.js} +1 -1
  72. package/dist/esm/chunks/{chunk.5EEEKOOK.js.map → chunk.DLF5JAQO.js.map} +2 -2
  73. package/dist/esm/chunks/{chunk.ZUM5YLB2.js → chunk.E26BROOG.js} +1 -1
  74. package/dist/esm/chunks/{chunk.ZUM5YLB2.js.map → chunk.E26BROOG.js.map} +2 -2
  75. package/dist/esm/chunks/{chunk.XN65LPA3.js → chunk.EBC2HGO3.js} +3 -3
  76. package/dist/esm/chunks/chunk.EBC2HGO3.js.map +7 -0
  77. package/dist/esm/chunks/{chunk.PCYIY5OY.js → chunk.EUPO2VO2.js} +4 -3
  78. package/dist/esm/chunks/{chunk.PCYIY5OY.js.map → chunk.EUPO2VO2.js.map} +2 -2
  79. package/dist/esm/chunks/{chunk.YCW56AVX.js → chunk.FJJVIMZ2.js} +1 -1
  80. package/dist/esm/chunks/{chunk.YCW56AVX.js.map → chunk.FJJVIMZ2.js.map} +2 -2
  81. package/dist/esm/chunks/{chunk.HHHMDDTU.js → chunk.FZ6KICMD.js} +1 -1
  82. package/dist/esm/chunks/{chunk.HHHMDDTU.js.map → chunk.FZ6KICMD.js.map} +2 -2
  83. package/dist/esm/chunks/{chunk.XPC7GINT.js → chunk.GHZ75UPO.js} +3 -3
  84. package/dist/esm/chunks/{chunk.XPC7GINT.js.map → chunk.GHZ75UPO.js.map} +2 -2
  85. package/dist/esm/chunks/{chunk.SJZ54RE3.js → chunk.GL72QT42.js} +1 -1
  86. package/dist/esm/chunks/{chunk.SJZ54RE3.js.map → chunk.GL72QT42.js.map} +2 -2
  87. package/dist/esm/chunks/{chunk.G6FY472A.js → chunk.GWNR3UUX.js} +2 -2
  88. package/dist/esm/chunks/{chunk.G6FY472A.js.map → chunk.GWNR3UUX.js.map} +2 -2
  89. package/dist/esm/chunks/{chunk.2NUAEZY7.js → chunk.GXTNND2M.js} +1 -1
  90. package/dist/esm/chunks/{chunk.2NUAEZY7.js.map → chunk.GXTNND2M.js.map} +2 -2
  91. package/dist/esm/chunks/{chunk.YJ5X3WZ4.js → chunk.HASAPJMX.js} +1 -1
  92. package/dist/esm/chunks/{chunk.YJ5X3WZ4.js.map → chunk.HASAPJMX.js.map} +2 -2
  93. package/dist/esm/chunks/{chunk.SSXNS4NR.js → chunk.HAWYW54W.js} +33 -25
  94. package/dist/esm/chunks/chunk.HAWYW54W.js.map +7 -0
  95. package/dist/esm/chunks/{chunk.EWQENJ4W.js → chunk.HMM7PGGZ.js} +2 -2
  96. package/dist/esm/chunks/{chunk.EWQENJ4W.js.map → chunk.HMM7PGGZ.js.map} +2 -2
  97. package/dist/esm/chunks/{chunk.P7SAJ6M7.js → chunk.I6PJGNJS.js} +2 -2
  98. package/dist/esm/chunks/{chunk.P7SAJ6M7.js.map → chunk.I6PJGNJS.js.map} +2 -2
  99. package/dist/esm/chunks/{chunk.3ZKORL4I.js → chunk.I7BQUB7Z.js} +2 -2
  100. package/dist/esm/chunks/chunk.I7BQUB7Z.js.map +7 -0
  101. package/dist/esm/chunks/{chunk.XY3ZHN7Y.js → chunk.IBED5TWL.js} +1 -1
  102. package/dist/esm/chunks/{chunk.XY3ZHN7Y.js.map → chunk.IBED5TWL.js.map} +2 -2
  103. package/dist/esm/chunks/{chunk.4FHBJXB7.js → chunk.IGBDDH3J.js} +6 -6
  104. package/dist/esm/chunks/{chunk.4FHBJXB7.js.map → chunk.IGBDDH3J.js.map} +0 -0
  105. package/dist/esm/chunks/{chunk.N3ZPWKJ5.js → chunk.IJW2YKP3.js} +12 -12
  106. package/dist/esm/chunks/{chunk.N3ZPWKJ5.js.map → chunk.IJW2YKP3.js.map} +2 -2
  107. package/dist/esm/chunks/{chunk.ID2ITG5T.js → chunk.ITQ55IPH.js} +4 -4
  108. package/dist/esm/chunks/{chunk.ID2ITG5T.js.map → chunk.ITQ55IPH.js.map} +2 -2
  109. package/dist/esm/chunks/{chunk.IBH5GL7A.js → chunk.IUNON3UL.js} +2 -2
  110. package/dist/esm/chunks/{chunk.IBH5GL7A.js.map → chunk.IUNON3UL.js.map} +2 -2
  111. package/dist/esm/chunks/{chunk.CLQS7CFC.js → chunk.J5NUYQ4D.js} +6 -6
  112. package/dist/esm/chunks/{chunk.CLQS7CFC.js.map → chunk.J5NUYQ4D.js.map} +0 -0
  113. package/dist/esm/chunks/{chunk.5E6UZZKY.js → chunk.JC2PZ4TS.js} +7 -7
  114. package/dist/esm/chunks/{chunk.5E6UZZKY.js.map → chunk.JC2PZ4TS.js.map} +2 -2
  115. package/dist/esm/chunks/{chunk.L4N2DKAS.js → chunk.JUXKYUD4.js} +8 -8
  116. package/dist/esm/chunks/{chunk.L4N2DKAS.js.map → chunk.JUXKYUD4.js.map} +2 -2
  117. package/dist/esm/chunks/{chunk.6V463G4I.js → chunk.KCVJDJ6K.js} +1 -1
  118. package/dist/esm/chunks/{chunk.6V463G4I.js.map → chunk.KCVJDJ6K.js.map} +2 -2
  119. package/dist/esm/chunks/{chunk.YMWBTMB6.js → chunk.KNR5DXE4.js} +2 -2
  120. package/dist/esm/chunks/{chunk.YMWBTMB6.js.map → chunk.KNR5DXE4.js.map} +2 -2
  121. package/dist/esm/chunks/{chunk.S6QD4UJN.js → chunk.L344BPCW.js} +1 -1
  122. package/dist/esm/chunks/{chunk.S6QD4UJN.js.map → chunk.L344BPCW.js.map} +2 -2
  123. package/dist/esm/chunks/{chunk.ZAAM3GTQ.js → chunk.L4OUV7W6.js} +5 -5
  124. package/dist/esm/chunks/{chunk.ZAAM3GTQ.js.map → chunk.L4OUV7W6.js.map} +2 -2
  125. package/dist/esm/chunks/{chunk.PXXLO4HJ.js → chunk.LHWZ4KZU.js} +3 -3
  126. package/dist/esm/chunks/{chunk.PXXLO4HJ.js.map → chunk.LHWZ4KZU.js.map} +2 -2
  127. package/dist/esm/chunks/{chunk.PQ5LOH7W.js → chunk.LK2DN5KX.js} +4 -4
  128. package/dist/esm/chunks/{chunk.PQ5LOH7W.js.map → chunk.LK2DN5KX.js.map} +2 -2
  129. package/dist/esm/chunks/{chunk.7G2S3DCM.js → chunk.LX2HDAIF.js} +2 -2
  130. package/dist/esm/chunks/{chunk.7G2S3DCM.js.map → chunk.LX2HDAIF.js.map} +2 -2
  131. package/dist/esm/chunks/{chunk.YDPSV74L.js → chunk.M3O5VPDD.js} +3 -3
  132. package/dist/esm/chunks/{chunk.YDPSV74L.js.map → chunk.M3O5VPDD.js.map} +0 -0
  133. package/dist/esm/chunks/{chunk.CKVCNPLI.js → chunk.MBZLA635.js} +12 -12
  134. package/dist/esm/chunks/{chunk.CKVCNPLI.js.map → chunk.MBZLA635.js.map} +2 -2
  135. package/dist/esm/chunks/{chunk.JB2PM7FT.js → chunk.MF3IZXQG.js} +1 -1
  136. package/dist/esm/chunks/{chunk.JB2PM7FT.js.map → chunk.MF3IZXQG.js.map} +2 -2
  137. package/dist/esm/chunks/{chunk.EL74HZRY.js → chunk.MUP3NY6M.js} +9 -9
  138. package/dist/esm/chunks/{chunk.EL74HZRY.js.map → chunk.MUP3NY6M.js.map} +2 -2
  139. package/dist/esm/chunks/{chunk.2F6PST3N.js → chunk.OXS2O7RG.js} +1 -1
  140. package/dist/esm/chunks/{chunk.2F6PST3N.js.map → chunk.OXS2O7RG.js.map} +2 -2
  141. package/dist/esm/chunks/{chunk.U2X7YAXC.js → chunk.PKZ43JNW.js} +4 -4
  142. package/dist/esm/chunks/{chunk.U2X7YAXC.js.map → chunk.PKZ43JNW.js.map} +2 -2
  143. package/dist/esm/chunks/{chunk.WAJDLUSQ.js → chunk.QHHYCB7N.js} +1 -1
  144. package/dist/esm/chunks/{chunk.WAJDLUSQ.js.map → chunk.QHHYCB7N.js.map} +2 -2
  145. package/dist/esm/chunks/{chunk.AHMBGV4N.js → chunk.QWW6A7AF.js} +6 -6
  146. package/dist/esm/chunks/{chunk.AHMBGV4N.js.map → chunk.QWW6A7AF.js.map} +2 -2
  147. package/dist/esm/chunks/{chunk.OYO6NUZY.js → chunk.QXZZ2MTF.js} +1 -1
  148. package/dist/esm/chunks/{chunk.OYO6NUZY.js.map → chunk.QXZZ2MTF.js.map} +2 -2
  149. package/dist/esm/chunks/{chunk.SSFSLBBM.js → chunk.QYWAZCBX.js} +2 -2
  150. package/dist/esm/chunks/chunk.QYWAZCBX.js.map +7 -0
  151. package/dist/esm/chunks/{chunk.Y2TDQIA4.js → chunk.RD4RIFOZ.js} +1 -1
  152. package/dist/esm/chunks/{chunk.Y2TDQIA4.js.map → chunk.RD4RIFOZ.js.map} +2 -2
  153. package/dist/esm/chunks/{chunk.EJHMX24S.js → chunk.RL7ZFLMG.js} +6 -6
  154. package/dist/esm/chunks/{chunk.EJHMX24S.js.map → chunk.RL7ZFLMG.js.map} +2 -2
  155. package/dist/esm/chunks/{chunk.AHBDISRG.js → chunk.S3UVF647.js} +2 -2
  156. package/dist/esm/chunks/{chunk.AHBDISRG.js.map → chunk.S3UVF647.js.map} +2 -2
  157. package/dist/esm/chunks/{chunk.RWCC6E4O.js → chunk.THKWQXBJ.js} +1 -1
  158. package/dist/esm/chunks/{chunk.RWCC6E4O.js.map → chunk.THKWQXBJ.js.map} +2 -2
  159. package/dist/esm/chunks/{chunk.2TEHKM2X.js → chunk.TIUNGGBF.js} +3 -3
  160. package/dist/esm/chunks/{chunk.2TEHKM2X.js.map → chunk.TIUNGGBF.js.map} +0 -0
  161. package/dist/esm/chunks/{chunk.PSHHY3ER.js → chunk.TM46MNYN.js} +4 -4
  162. package/dist/esm/chunks/{chunk.PSHHY3ER.js.map → chunk.TM46MNYN.js.map} +2 -2
  163. package/dist/esm/chunks/{chunk.7XGNGXLR.js → chunk.TYU4RLZG.js} +1 -1
  164. package/dist/esm/chunks/{chunk.7XGNGXLR.js.map → chunk.TYU4RLZG.js.map} +2 -2
  165. package/dist/esm/chunks/{chunk.QFPOG3VH.js → chunk.U37G47LH.js} +7 -7
  166. package/dist/esm/chunks/{chunk.QFPOG3VH.js.map → chunk.U37G47LH.js.map} +2 -2
  167. package/dist/esm/chunks/{chunk.HZML57TK.js → chunk.U5ECVIX5.js} +5 -5
  168. package/dist/esm/chunks/{chunk.HZML57TK.js.map → chunk.U5ECVIX5.js.map} +2 -2
  169. package/dist/esm/chunks/{chunk.DJX5CEYP.js → chunk.UPW5HUKB.js} +5 -5
  170. package/dist/esm/chunks/{chunk.DJX5CEYP.js.map → chunk.UPW5HUKB.js.map} +2 -2
  171. package/dist/esm/chunks/{chunk.ISR3SND2.js → chunk.UQ3QTUUB.js} +2 -2
  172. package/dist/esm/chunks/{chunk.ISR3SND2.js.map → chunk.UQ3QTUUB.js.map} +2 -2
  173. package/dist/esm/chunks/{chunk.JVQP6BJ3.js → chunk.V2ELLBDP.js} +1 -1
  174. package/dist/esm/chunks/{chunk.JVQP6BJ3.js.map → chunk.V2ELLBDP.js.map} +2 -2
  175. package/dist/esm/chunks/{chunk.2LQMHAC7.js → chunk.V6Q2SM6Y.js} +1 -1
  176. package/dist/esm/chunks/{chunk.2LQMHAC7.js.map → chunk.V6Q2SM6Y.js.map} +2 -2
  177. package/dist/esm/chunks/{chunk.WVVWDQLQ.js → chunk.VXAPRFMK.js} +4 -4
  178. package/dist/esm/chunks/{chunk.WVVWDQLQ.js.map → chunk.VXAPRFMK.js.map} +2 -2
  179. package/dist/esm/chunks/{chunk.NF2CS4ZM.js → chunk.VXVE7KEM.js} +4 -4
  180. package/dist/esm/chunks/{chunk.NF2CS4ZM.js.map → chunk.VXVE7KEM.js.map} +2 -2
  181. package/dist/esm/chunks/{chunk.P7NOYP4O.js → chunk.WDD2GTIH.js} +1 -1
  182. package/dist/esm/chunks/{chunk.P7NOYP4O.js.map → chunk.WDD2GTIH.js.map} +2 -2
  183. package/dist/esm/chunks/{chunk.RNPIV3BY.js → chunk.WNVZQDNS.js} +1 -1
  184. package/dist/esm/chunks/{chunk.RNPIV3BY.js.map → chunk.WNVZQDNS.js.map} +2 -2
  185. package/dist/esm/chunks/{chunk.3MO6XU44.js → chunk.WSH4S3GM.js} +1 -1
  186. package/dist/esm/chunks/{chunk.3MO6XU44.js.map → chunk.WSH4S3GM.js.map} +2 -2
  187. package/dist/esm/chunks/{chunk.MIGASQA3.js → chunk.XHMNHBZD.js} +2 -2
  188. package/dist/esm/chunks/{chunk.MIGASQA3.js.map → chunk.XHMNHBZD.js.map} +2 -2
  189. package/dist/esm/chunks/{chunk.DB7ZQBES.js → chunk.YL2NAVJW.js} +1 -1
  190. package/dist/esm/chunks/{chunk.DB7ZQBES.js.map → chunk.YL2NAVJW.js.map} +2 -2
  191. package/dist/esm/chunks/{chunk.EXKNFD5S.js → chunk.ZLF2G3YT.js} +11 -11
  192. package/dist/esm/chunks/{chunk.EXKNFD5S.js.map → chunk.ZLF2G3YT.js.map} +2 -2
  193. package/dist/esm/chunks/{chunk.EKIW7VYG.js → chunk.ZXIDTDRC.js} +1 -1
  194. package/dist/esm/chunks/{chunk.EKIW7VYG.js.map → chunk.ZXIDTDRC.js.map} +2 -2
  195. package/dist/esm/chunks/{chunk.F2TZX24O.js → chunk.ZXMJB7OW.js} +74 -74
  196. package/dist/esm/chunks/{chunk.F2TZX24O.js.map → chunk.ZXMJB7OW.js.map} +0 -0
  197. package/dist/esm/circular-progress/index.js +1 -1
  198. package/dist/esm/color-picker/index.js +5 -5
  199. package/dist/esm/date-picker/index.js +12 -12
  200. package/dist/esm/date-range-picker/index.js +12 -12
  201. package/dist/esm/dialog/index.js +8 -8
  202. package/dist/esm/divider/index.js +1 -1
  203. package/dist/esm/drawer/drawer/index.js +1 -1
  204. package/dist/esm/drawer/index.js +4 -4
  205. package/dist/esm/drawer/mini-drawer/index.js +1 -1
  206. package/dist/esm/drawer/modal-drawer/index.js +2 -2
  207. package/dist/esm/expansion-panel/index.js +3 -3
  208. package/dist/esm/file-picker/index.js +3 -3
  209. package/dist/esm/floating-action-button/index.js +2 -2
  210. package/dist/esm/icon/index.js +1 -1
  211. package/dist/esm/icon-button/index.js +3 -3
  212. package/dist/esm/index.js +84 -84
  213. package/dist/esm/inline-message/index.js +1 -1
  214. package/dist/esm/keyboard-shortcut/index.js +1 -1
  215. package/dist/esm/label-value/index.js +1 -1
  216. package/dist/esm/linear-progress/index.js +1 -1
  217. package/dist/esm/list/index.js +3 -3
  218. package/dist/esm/list/list/index.js +3 -3
  219. package/dist/esm/list/list-item/index.js +2 -2
  220. package/dist/esm/list-dropdown/index.js +8 -8
  221. package/dist/esm/menu/index.js +11 -11
  222. package/dist/esm/open-icon/index.js +2 -2
  223. package/dist/esm/page-state/index.js +1 -1
  224. package/dist/esm/paginator/index.js +21 -21
  225. package/dist/esm/popup/index.js +1 -1
  226. package/dist/esm/product-icon/index.js +1 -1
  227. package/dist/esm/profile-card/index.js +5 -5
  228. package/dist/esm/quantity-field/index.js +4 -4
  229. package/dist/esm/radio/index.js +2 -2
  230. package/dist/esm/ripple/index.js +1 -1
  231. package/dist/esm/scaffold/index.js +1 -1
  232. package/dist/esm/select/core/index.js +12 -12
  233. package/dist/esm/select/index.js +19 -19
  234. package/dist/esm/select/option/index.js +1 -1
  235. package/dist/esm/select/option-group/index.js +1 -1
  236. package/dist/esm/select/select/index.js +17 -17
  237. package/dist/esm/select/select-dropdown/index.js +17 -17
  238. package/dist/esm/skeleton/index.js +1 -1
  239. package/dist/esm/slider/index.js +1 -1
  240. package/dist/esm/stepper/index.js +4 -4
  241. package/dist/esm/stepper/step/index.js +3 -3
  242. package/dist/esm/stepper/stepper/index.js +4 -4
  243. package/dist/esm/switch/index.js +1 -1
  244. package/dist/esm/table/index.js +7 -7
  245. package/dist/esm/tabs/index.js +6 -6
  246. package/dist/esm/tabs/tab/index.js +3 -3
  247. package/dist/esm/tabs/tab-bar/index.js +5 -5
  248. package/dist/esm/text-field/index.js +1 -1
  249. package/dist/esm/time-picker/index.js +16 -16
  250. package/dist/esm/toast/index.js +5 -5
  251. package/dist/esm/toolbar/index.js +1 -1
  252. package/dist/esm/tooltip/index.js +1 -1
  253. package/dist/esm/view-switcher/index.js +2 -2
  254. package/dist/esm/view-switcher/view/index.js +1 -1
  255. package/esm/accordion/accordion.d.ts +2 -0
  256. package/esm/accordion/accordion.js +2 -0
  257. package/esm/app-bar/app-bar.d.ts +5 -1
  258. package/esm/app-bar/app-bar.js +5 -1
  259. package/esm/app-bar/help-button/app-bar-help-button.d.ts +5 -0
  260. package/esm/app-bar/help-button/app-bar-help-button.js +5 -0
  261. package/esm/app-bar/menu-button/app-bar-menu-button.d.ts +5 -0
  262. package/esm/app-bar/menu-button/app-bar-menu-button.js +5 -0
  263. package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +5 -0
  264. package/esm/app-bar/notification-button/app-bar-notification-button.js +5 -0
  265. package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +5 -0
  266. package/esm/app-bar/profile-button/app-bar-profile-button.js +5 -0
  267. package/esm/app-bar/search/app-bar-search.d.ts +26 -0
  268. package/esm/app-bar/search/app-bar-search.js +26 -0
  269. package/esm/autocomplete/autocomplete.d.ts +2 -0
  270. package/esm/autocomplete/autocomplete.js +2 -0
  271. package/esm/avatar/avatar.d.ts +2 -0
  272. package/esm/avatar/avatar.js +2 -0
  273. package/esm/backdrop/backdrop.d.ts +2 -0
  274. package/esm/backdrop/backdrop.js +2 -0
  275. package/esm/badge/badge.d.ts +5 -0
  276. package/esm/badge/badge.js +5 -0
  277. package/esm/banner/banner.d.ts +2 -0
  278. package/esm/banner/banner.js +2 -0
  279. package/esm/bottom-sheet/bottom-sheet.d.ts +5 -0
  280. package/esm/bottom-sheet/bottom-sheet.js +5 -0
  281. package/esm/busy-indicator/busy-indicator.d.ts +5 -1
  282. package/esm/busy-indicator/busy-indicator.js +5 -1
  283. package/esm/button/button.d.ts +2 -0
  284. package/esm/button/button.js +2 -0
  285. package/esm/button-toggle/button-toggle/button-toggle.d.ts +5 -0
  286. package/esm/button-toggle/button-toggle/button-toggle.js +5 -0
  287. package/esm/button-toggle/button-toggle-group/button-toggle-group-foundation.js +2 -1
  288. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +5 -0
  289. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +5 -0
  290. package/esm/calendar/calendar-menu/calendar-menu.d.ts +6 -0
  291. package/esm/calendar/calendar-menu/calendar-menu.js +6 -0
  292. package/esm/calendar/calendar.d.ts +5 -0
  293. package/esm/calendar/calendar.js +5 -0
  294. package/esm/card/card.d.ts +5 -1
  295. package/esm/card/card.js +5 -1
  296. package/esm/checkbox/checkbox.d.ts +2 -0
  297. package/esm/checkbox/checkbox.js +2 -0
  298. package/esm/chip-field/chip-field.d.ts +5 -0
  299. package/esm/chip-field/chip-field.js +5 -0
  300. package/esm/chips/chip/chip.d.ts +2 -0
  301. package/esm/chips/chip/chip.js +2 -0
  302. package/esm/chips/chip-set/chip-set.d.ts +5 -0
  303. package/esm/chips/chip-set/chip-set.js +5 -0
  304. package/esm/circular-progress/circular-progress.d.ts +5 -0
  305. package/esm/circular-progress/circular-progress.js +5 -0
  306. package/esm/color-picker/color-picker.d.ts +5 -0
  307. package/esm/color-picker/color-picker.js +5 -0
  308. package/esm/date-picker/date-picker.d.ts +5 -1
  309. package/esm/date-picker/date-picker.js +5 -1
  310. package/esm/date-range-picker/date-range-picker.d.ts +5 -1
  311. package/esm/date-range-picker/date-range-picker.js +5 -1
  312. package/esm/dialog/dialog.d.ts +5 -0
  313. package/esm/dialog/dialog.js +5 -0
  314. package/esm/divider/divider.d.ts +2 -0
  315. package/esm/divider/divider.js +2 -0
  316. package/esm/drawer/drawer/drawer.d.ts +5 -0
  317. package/esm/drawer/drawer/drawer.js +5 -0
  318. package/esm/drawer/mini-drawer/mini-drawer.d.ts +5 -0
  319. package/esm/drawer/mini-drawer/mini-drawer.js +5 -0
  320. package/esm/drawer/modal-drawer/modal-drawer.d.ts +5 -0
  321. package/esm/drawer/modal-drawer/modal-drawer.js +5 -0
  322. package/esm/expansion-panel/expansion-panel.d.ts +2 -0
  323. package/esm/expansion-panel/expansion-panel.js +2 -0
  324. package/esm/file-picker/file-picker.d.ts +5 -0
  325. package/esm/file-picker/file-picker.js +5 -0
  326. package/esm/floating-action-button/floating-action-button.d.ts +5 -1
  327. package/esm/floating-action-button/floating-action-button.js +5 -1
  328. package/esm/icon/icon.d.ts +5 -0
  329. package/esm/icon/icon.js +5 -0
  330. package/esm/icon-button/icon-button.d.ts +2 -0
  331. package/esm/icon-button/icon-button.js +2 -0
  332. package/esm/inline-message/inline-message.d.ts +5 -0
  333. package/esm/inline-message/inline-message.js +5 -0
  334. package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +5 -0
  335. package/esm/keyboard-shortcut/keyboard-shortcut.js +5 -0
  336. package/esm/label-value/label-value.d.ts +5 -0
  337. package/esm/label-value/label-value.js +5 -0
  338. package/esm/linear-progress/linear-progress.d.ts +5 -0
  339. package/esm/linear-progress/linear-progress.js +5 -0
  340. package/esm/list/list/list.d.ts +2 -0
  341. package/esm/list/list/list.js +2 -0
  342. package/esm/list/list-item/list-item.d.ts +5 -1
  343. package/esm/list/list-item/list-item.js +5 -1
  344. package/esm/menu/menu.d.ts +5 -0
  345. package/esm/menu/menu.js +5 -0
  346. package/esm/open-icon/open-icon.d.ts +5 -0
  347. package/esm/open-icon/open-icon.js +5 -0
  348. package/esm/page-state/page-state.d.ts +5 -0
  349. package/esm/page-state/page-state.js +5 -0
  350. package/esm/paginator/paginator-foundation.js +29 -20
  351. package/esm/paginator/paginator.d.ts +2 -0
  352. package/esm/paginator/paginator.js +2 -0
  353. package/esm/popup/popup.d.ts +5 -0
  354. package/esm/popup/popup.js +5 -0
  355. package/esm/product-icon/product-icon.d.ts +5 -0
  356. package/esm/product-icon/product-icon.js +5 -0
  357. package/esm/profile-card/profile-card.d.ts +5 -0
  358. package/esm/profile-card/profile-card.js +5 -0
  359. package/esm/quantity-field/quantity-field.d.ts +5 -0
  360. package/esm/quantity-field/quantity-field.js +5 -0
  361. package/esm/radio/radio.d.ts +2 -0
  362. package/esm/radio/radio.js +2 -0
  363. package/esm/ripple/ripple.d.ts +5 -0
  364. package/esm/ripple/ripple.js +5 -0
  365. package/esm/scaffold/scaffold.d.ts +2 -0
  366. package/esm/scaffold/scaffold.js +2 -0
  367. package/esm/select/option/option.d.ts +2 -0
  368. package/esm/select/option/option.js +2 -0
  369. package/esm/select/option-group/option-group.d.ts +2 -0
  370. package/esm/select/option-group/option-group.js +2 -0
  371. package/esm/select/select/select.d.ts +2 -0
  372. package/esm/select/select/select.js +2 -0
  373. package/esm/select/select-dropdown/select-dropdown.d.ts +5 -0
  374. package/esm/select/select-dropdown/select-dropdown.js +5 -0
  375. package/esm/skeleton/skeleton.d.ts +5 -0
  376. package/esm/skeleton/skeleton.js +5 -0
  377. package/esm/slider/slider.d.ts +2 -0
  378. package/esm/slider/slider.js +2 -0
  379. package/esm/stepper/step/step.d.ts +5 -0
  380. package/esm/stepper/step/step.js +5 -0
  381. package/esm/stepper/stepper/stepper.d.ts +5 -0
  382. package/esm/stepper/stepper/stepper.js +5 -0
  383. package/esm/switch/switch.d.ts +2 -0
  384. package/esm/switch/switch.js +2 -0
  385. package/esm/table/table.d.ts +3 -1
  386. package/esm/table/table.js +3 -1
  387. package/esm/tabs/tab/tab.d.ts +5 -0
  388. package/esm/tabs/tab/tab.js +5 -0
  389. package/esm/tabs/tab-bar/tab-bar.d.ts +2 -0
  390. package/esm/tabs/tab-bar/tab-bar.js +2 -0
  391. package/esm/text-field/text-field.d.ts +5 -0
  392. package/esm/text-field/text-field.js +5 -0
  393. package/esm/time-picker/time-picker.d.ts +5 -0
  394. package/esm/time-picker/time-picker.js +5 -0
  395. package/esm/toast/toast.d.ts +2 -0
  396. package/esm/toast/toast.js +2 -0
  397. package/esm/toolbar/toolbar.d.ts +5 -0
  398. package/esm/toolbar/toolbar.js +5 -0
  399. package/esm/tooltip/tooltip.d.ts +5 -1
  400. package/esm/tooltip/tooltip.js +5 -1
  401. package/esm/view-switcher/view/view.d.ts +5 -0
  402. package/esm/view-switcher/view/view.js +5 -0
  403. package/esm/view-switcher/view-switcher.d.ts +5 -0
  404. package/esm/view-switcher/view-switcher.js +5 -0
  405. package/package.json +3 -2
  406. package/dist/esm/chunks/chunk.3ZKORL4I.js.map +0 -7
  407. package/dist/esm/chunks/chunk.SSFSLBBM.js.map +0 -7
  408. package/dist/esm/chunks/chunk.SSXNS4NR.js.map +0 -7
  409. package/dist/esm/chunks/chunk.XN65LPA3.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/avatar/avatar-constants.ts", "../../src/avatar/avatar-adapter.ts", "../../src/avatar/avatar-foundation.ts", "../../src/avatar/avatar.ts", "../../src/avatar/avatar-component-delegate.ts", "../../src/avatar/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\nimport { COLOR_CONSTANTS } from '../theme';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}avatar`;\n\nconst attributes = {\n IMAGE_URL: 'image-url',\n TEXT: 'text',\n LETTER_COUNT: 'letter-count',\n AUTO_COLOR: 'auto-color'\n};\n\nconst numbers = {\n DEFAULT_LETTER_COUNT: 2\n};\n\nconst selectors = {\n ROOT: '.forge-avatar',\n DEFAULT_SLOT: '.forge-avatar > slot:not([name])'\n};\n\nconst strings = {\n DEFAULT_COLOR: COLOR_CONSTANTS.themeColors.tertiary,\n BACKGROUND_VARNAME: '--forge-avatar-theme-background'\n};\n\nexport const AVATAR_CONSTANTS = {\n elementName,\n attributes,\n numbers,\n selectors,\n strings\n};\n", "import { getShadowElement, removeAllChildren } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { IAvatarComponent } from './avatar';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\n\nexport interface IAvatarAdapter extends IBaseAdapter {\n setBackgroundColor(color: string): void;\n setBackgroundImageUrl(url: string): Promise<boolean>;\n removeBackgroundImage(): void;\n setText(value: string): void;\n clearText(): void;\n}\n\n/**\n * The DOM adapter behind the `<forge-avatar>` element.\n */\nexport class AvatarAdapter extends BaseAdapter<IAvatarComponent> implements IAvatarAdapter {\n private _root: HTMLElement;\n private _defaultSlot: HTMLSlotElement;\n\n constructor(component: IAvatarComponent) {\n super(component);\n this._root = getShadowElement(this._component, AVATAR_CONSTANTS.selectors.ROOT);\n this._defaultSlot = getShadowElement(this._component, AVATAR_CONSTANTS.selectors.DEFAULT_SLOT) as HTMLSlotElement;\n }\n\n /**\n * Sets the `backgroundColor` style on the content element.\n * @param {string} value The background color.\n */\n public setBackgroundColor(value: string): void {\n this._root.style.backgroundColor = `var(${AVATAR_CONSTANTS.strings.BACKGROUND_VARNAME}, ${value})`;\n }\n\n /**\n * Sets the background image URL.\n * @param url The URL.\n */\n public setBackgroundImageUrl(url: string): Promise<boolean> {\n const backgroundColor = this._root.style.backgroundColor;\n // doing his before the promise so it doesn't flash a color before loading\n this._root.style.backgroundColor = 'inherit';\n\n const loadResult = new Promise<boolean>(resolve => {\n const image = new Image();\n image.onload = () => {\n this._root.style.backgroundImage = `url(${image.src})`;\n resolve(true);\n };\n\n image.onerror = () => {\n this._root.style.backgroundColor = backgroundColor;\n resolve(false);\n };\n\n image.src = url;\n });\n\n return loadResult;\n }\n\n /**\n * Removes the background image URL.\n */\n public removeBackgroundImage(): void {\n this._root.style.removeProperty('background-image');\n }\n\n /**\n * Sets the avatar text content.\n * @param value The text value.\n */\n public setText(value: string): void {\n this._defaultSlot.textContent = value;\n }\n\n public clearText(): void {\n removeAllChildren(this._defaultSlot);\n }\n}\n", "import { ICustomElementFoundation, isDefined, isString } from '@tylertech/forge-core';\nimport { getTextColor } from '../utils/color-utils';\nimport { IAvatarAdapter } from './avatar-adapter';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\n\n\n\nexport interface IAvatarFoundation extends ICustomElementFoundation {\n imageUrl: string;\n text: string;\n letterCount: number;\n autoColor: boolean;\n}\n\n/**\n * The custom element class behind the `<forge-avatar>` class.\n */\nexport class AvatarFoundation implements IAvatarFoundation {\n private _imageUrl: string;\n private _text = '';\n private _letterCount = AVATAR_CONSTANTS.numbers.DEFAULT_LETTER_COUNT;\n private _autoColor = false;\n private _initialized = false;\n\n constructor(private _adapter: IAvatarAdapter) {}\n\n public initialize(): void {\n this._render();\n this._initialized = true;\n }\n\n public disconnect(): void {\n this._initialized = false;\n }\n\n private _render(): void {\n this._setText();\n this._setBackgroundImageUrl();\n }\n\n private async _setBackgroundImageUrl(): Promise<void> {\n if (this._imageUrl) {\n if (await this._adapter.setBackgroundImageUrl(this._imageUrl)) {\n this._adapter.clearText();\n }\n } else {\n this._adapter.removeBackgroundImage();\n }\n }\n\n private _setText(): void {\n const data = this._getTextContent(this._text, this._letterCount);\n\n if (data) {\n this._adapter.setText(data);\n } else {\n this._adapter.clearText();\n }\n\n const color = this._autoColor ? getTextColor(data) : AVATAR_CONSTANTS.strings.DEFAULT_COLOR;\n this._adapter.setBackgroundColor(color);\n }\n\n /**\n * Gets the text content to display in the avatar.\n * @param {string} value The text to parse.\n */\n private _getTextContent(value: string, count: number): string {\n if (!value || !isString(value) || count <= 0) {\n return '';\n }\n\n let text: string;\n\n if (count === 1) {\n text = value[0].toUpperCase();\n } else {\n const words = value.match(/\\S+/g) || [];\n text = words.slice(0, count).reduce((prev, curr) => prev += curr[0].toUpperCase(), '');\n }\n\n return text;\n }\n\n /** Gets/sets the text to display. */\n public get text(): string {\n return this._text;\n }\n public set text(value: string) {\n if (this._text !== value) {\n this._text = value || '';\n this._adapter.setHostAttribute(AVATAR_CONSTANTS.attributes.TEXT, this._text);\n if (this._initialized) {\n this._render();\n }\n }\n }\n\n /** Controls the number of letters to display from the text. By default the text is split on spaces and the first character of each word is used. */\n public get letterCount(): number {\n return this._letterCount;\n }\n public set letterCount(value: number) {\n if (this._letterCount !== value) {\n this._letterCount = value;\n this._adapter.setHostAttribute(AVATAR_CONSTANTS.attributes.LETTER_COUNT, isDefined(this._letterCount) ? this._letterCount.toString() : '');\n if (this._initialized) {\n this._render();\n }\n }\n }\n\n /** Sets the background image URL to use. */\n public get imageUrl(): string {\n return this._imageUrl;\n }\n public set imageUrl(value: string) {\n if (this._imageUrl !== value) {\n this._imageUrl = value;\n if (this._initialized) {\n this._render();\n }\n }\n }\n\n /** Controls whether the background color set automatically based on the text value. Does not have any effect when an image URL is specified. */\n public get autoColor(): boolean {\n return this._autoColor;\n }\n public set autoColor(value: boolean) {\n if (this._autoColor !== value) {\n this._autoColor = value;\n this._setText();\n this._adapter.setHostAttribute(AVATAR_CONSTANTS.attributes.AUTO_COLOR, isDefined(this._autoColor) ? this._autoColor.toString() : '');\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, coerceNumber, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\n\nimport { AvatarAdapter } from './avatar-adapter';\nimport { AvatarFoundation } from './avatar-foundation';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-avatar\\\" aria-hidden=\\\"true\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = ':host{display:inline-block;contain:content}:host([hidden]){display:none}.forge-avatar{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1.25rem;font-size:var(--forge-typography-title-font-size, 1.25rem);line-height:2rem;line-height:var(--forge-typography-title-line-height, 2rem);font-weight:400;font-weight:var(--forge-typography-title-font-weight,400);letter-spacing:.0125em;letter-spacing:var(--forge-typography-title-letter-spacing, .0125em);text-decoration:inherit;-webkit-text-decoration:var(--forge-typography-title-text-decoration,inherit);text-decoration:var(--forge-typography-title-text-decoration,inherit);text-transform:inherit;text-transform:var(--forge-typography-title-text-transform,inherit);font-size:1rem;font-size:var(--forge-avatar-font-size, 1rem);font-weight:400;font-weight:var(--forge-avatar-font-weight,400);background-color:none;background-color:var(--forge-avatar-theme-background,none);height:40px;height:var(--forge-avatar-size,40px);width:40px;width:var(--forge-avatar-size,40px);color:#fff;color:var(--forge-avatar-theme-on-background,#fff);border-radius:50%;border-radius:var(--forge-avatar-radius,50%);display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;background-position:center;background-repeat:no-repeat;background-size:cover;overflow:hidden;-webkit-transition:height .2s cubic-bezier(.4, 0, .2, 1),width .2s cubic-bezier(.4, 0, .2, 1);transition:height .2s cubic-bezier(.4, 0, .2, 1),width .2s cubic-bezier(.4, 0, .2, 1)}';\n\nexport interface IAvatarComponent extends IBaseComponent {\n imageUrl: string;\n text: string;\n letterCount: number;\n autoColor: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-avatar': IAvatarComponent;\n }\n}\n\n/**\n * The custom element class behind the `<forge-avatar>` element.\n */\n@CustomElement({\n name: AVATAR_CONSTANTS.elementName\n})\nexport class AvatarComponent extends BaseComponent implements IAvatarComponent {\n public static get observedAttributes(): string[] {\n return [\n AVATAR_CONSTANTS.attributes.TEXT,\n AVATAR_CONSTANTS.attributes.LETTER_COUNT,\n AVATAR_CONSTANTS.attributes.IMAGE_URL,\n AVATAR_CONSTANTS.attributes.AUTO_COLOR\n ];\n }\n\n private _foundation: AvatarFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new AvatarFoundation(new AvatarAdapter(this));\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case AVATAR_CONSTANTS.attributes.TEXT:\n this.text = newValue;\n break;\n case AVATAR_CONSTANTS.attributes.LETTER_COUNT:\n this.letterCount = coerceNumber(newValue);\n break;\n case AVATAR_CONSTANTS.attributes.IMAGE_URL:\n this.imageUrl = newValue;\n break;\n case AVATAR_CONSTANTS.attributes.AUTO_COLOR:\n this.autoColor = coerceBoolean(newValue);\n break;\n }\n }\n\n /** Gets/sets the text to display. */\n @FoundationProperty()\n public text: string;\n\n /** Controls the number of letters to display from the text. By default the text is split on spaces and the first character of each word is used. */\n @FoundationProperty()\n public letterCount: number;\n\n /** Sets the background image URL to use. */\n @FoundationProperty()\n public imageUrl: string;\n\n /** Controls whether the background color is set automatically based on the text value. Does not have any effect when an image URL is specified. */\n @FoundationProperty()\n public autoColor: boolean;\n}\n", "import { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { IAvatarComponent } from './avatar';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\n\nexport type AvatarComponentDelegateProps = Partial<IAvatarComponent>;\nexport interface IAvatarComponentDelegateOptions extends IBaseComponentDelegateOptions {}\nexport interface IAvatarComponentDelegateConfig extends IBaseComponentDelegateConfig<IAvatarComponent, IAvatarComponentDelegateOptions> {}\n\nexport class AvatarComponentDelegate extends BaseComponentDelegate<IAvatarComponent, IAvatarComponentDelegateOptions> {\n constructor(config?: IAvatarComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IAvatarComponent {\n return document.createElement(AVATAR_CONSTANTS.elementName);\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { AvatarComponent } from './avatar';\n\nexport * from './avatar-adapter';\nexport * from './avatar-constants';\nexport * from './avatar-foundation';\nexport * from './avatar';\nexport * from './avatar-component-delegate';\n\nexport function defineAvatarComponent(): void {\n defineCustomElement(AvatarComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\nimport { COLOR_CONSTANTS } from '../theme';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}avatar`;\n\nconst attributes = {\n IMAGE_URL: 'image-url',\n TEXT: 'text',\n LETTER_COUNT: 'letter-count',\n AUTO_COLOR: 'auto-color'\n};\n\nconst numbers = {\n DEFAULT_LETTER_COUNT: 2\n};\n\nconst selectors = {\n ROOT: '.forge-avatar',\n DEFAULT_SLOT: '.forge-avatar > slot:not([name])'\n};\n\nconst strings = {\n DEFAULT_COLOR: COLOR_CONSTANTS.themeColors.tertiary,\n BACKGROUND_VARNAME: '--forge-avatar-theme-background'\n};\n\nexport const AVATAR_CONSTANTS = {\n elementName,\n attributes,\n numbers,\n selectors,\n strings\n};\n", "import { getShadowElement, removeAllChildren } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { IAvatarComponent } from './avatar';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\n\nexport interface IAvatarAdapter extends IBaseAdapter {\n setBackgroundColor(color: string): void;\n setBackgroundImageUrl(url: string): Promise<boolean>;\n removeBackgroundImage(): void;\n setText(value: string): void;\n clearText(): void;\n}\n\n/**\n * The DOM adapter behind the `<forge-avatar>` element.\n */\nexport class AvatarAdapter extends BaseAdapter<IAvatarComponent> implements IAvatarAdapter {\n private _root: HTMLElement;\n private _defaultSlot: HTMLSlotElement;\n\n constructor(component: IAvatarComponent) {\n super(component);\n this._root = getShadowElement(this._component, AVATAR_CONSTANTS.selectors.ROOT);\n this._defaultSlot = getShadowElement(this._component, AVATAR_CONSTANTS.selectors.DEFAULT_SLOT) as HTMLSlotElement;\n }\n\n /**\n * Sets the `backgroundColor` style on the content element.\n * @param {string} value The background color.\n */\n public setBackgroundColor(value: string): void {\n this._root.style.backgroundColor = `var(${AVATAR_CONSTANTS.strings.BACKGROUND_VARNAME}, ${value})`;\n }\n\n /**\n * Sets the background image URL.\n * @param url The URL.\n */\n public setBackgroundImageUrl(url: string): Promise<boolean> {\n const backgroundColor = this._root.style.backgroundColor;\n // doing his before the promise so it doesn't flash a color before loading\n this._root.style.backgroundColor = 'inherit';\n\n const loadResult = new Promise<boolean>(resolve => {\n const image = new Image();\n image.onload = () => {\n this._root.style.backgroundImage = `url(${image.src})`;\n resolve(true);\n };\n\n image.onerror = () => {\n this._root.style.backgroundColor = backgroundColor;\n resolve(false);\n };\n\n image.src = url;\n });\n\n return loadResult;\n }\n\n /**\n * Removes the background image URL.\n */\n public removeBackgroundImage(): void {\n this._root.style.removeProperty('background-image');\n }\n\n /**\n * Sets the avatar text content.\n * @param value The text value.\n */\n public setText(value: string): void {\n this._defaultSlot.textContent = value;\n }\n\n public clearText(): void {\n removeAllChildren(this._defaultSlot);\n }\n}\n", "import { ICustomElementFoundation, isDefined, isString } from '@tylertech/forge-core';\nimport { getTextColor } from '../utils/color-utils';\nimport { IAvatarAdapter } from './avatar-adapter';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\n\n\n\nexport interface IAvatarFoundation extends ICustomElementFoundation {\n imageUrl: string;\n text: string;\n letterCount: number;\n autoColor: boolean;\n}\n\n/**\n * The custom element class behind the `<forge-avatar>` class.\n */\nexport class AvatarFoundation implements IAvatarFoundation {\n private _imageUrl: string;\n private _text = '';\n private _letterCount = AVATAR_CONSTANTS.numbers.DEFAULT_LETTER_COUNT;\n private _autoColor = false;\n private _initialized = false;\n\n constructor(private _adapter: IAvatarAdapter) {}\n\n public initialize(): void {\n this._render();\n this._initialized = true;\n }\n\n public disconnect(): void {\n this._initialized = false;\n }\n\n private _render(): void {\n this._setText();\n this._setBackgroundImageUrl();\n }\n\n private async _setBackgroundImageUrl(): Promise<void> {\n if (this._imageUrl) {\n if (await this._adapter.setBackgroundImageUrl(this._imageUrl)) {\n this._adapter.clearText();\n }\n } else {\n this._adapter.removeBackgroundImage();\n }\n }\n\n private _setText(): void {\n const data = this._getTextContent(this._text, this._letterCount);\n\n if (data) {\n this._adapter.setText(data);\n } else {\n this._adapter.clearText();\n }\n\n const color = this._autoColor ? getTextColor(data) : AVATAR_CONSTANTS.strings.DEFAULT_COLOR;\n this._adapter.setBackgroundColor(color);\n }\n\n /**\n * Gets the text content to display in the avatar.\n * @param {string} value The text to parse.\n */\n private _getTextContent(value: string, count: number): string {\n if (!value || !isString(value) || count <= 0) {\n return '';\n }\n\n let text: string;\n\n if (count === 1) {\n text = value[0].toUpperCase();\n } else {\n const words = value.match(/\\S+/g) || [];\n text = words.slice(0, count).reduce((prev, curr) => prev += curr[0].toUpperCase(), '');\n }\n\n return text;\n }\n\n /** Gets/sets the text to display. */\n public get text(): string {\n return this._text;\n }\n public set text(value: string) {\n if (this._text !== value) {\n this._text = value || '';\n this._adapter.setHostAttribute(AVATAR_CONSTANTS.attributes.TEXT, this._text);\n if (this._initialized) {\n this._render();\n }\n }\n }\n\n /** Controls the number of letters to display from the text. By default the text is split on spaces and the first character of each word is used. */\n public get letterCount(): number {\n return this._letterCount;\n }\n public set letterCount(value: number) {\n if (this._letterCount !== value) {\n this._letterCount = value;\n this._adapter.setHostAttribute(AVATAR_CONSTANTS.attributes.LETTER_COUNT, isDefined(this._letterCount) ? this._letterCount.toString() : '');\n if (this._initialized) {\n this._render();\n }\n }\n }\n\n /** Sets the background image URL to use. */\n public get imageUrl(): string {\n return this._imageUrl;\n }\n public set imageUrl(value: string) {\n if (this._imageUrl !== value) {\n this._imageUrl = value;\n if (this._initialized) {\n this._render();\n }\n }\n }\n\n /** Controls whether the background color set automatically based on the text value. Does not have any effect when an image URL is specified. */\n public get autoColor(): boolean {\n return this._autoColor;\n }\n public set autoColor(value: boolean) {\n if (this._autoColor !== value) {\n this._autoColor = value;\n this._setText();\n this._adapter.setHostAttribute(AVATAR_CONSTANTS.attributes.AUTO_COLOR, isDefined(this._autoColor) ? this._autoColor.toString() : '');\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, coerceNumber, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\n\nimport { AvatarAdapter } from './avatar-adapter';\nimport { AvatarFoundation } from './avatar-foundation';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-avatar\\\" aria-hidden=\\\"true\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = ':host{display:inline-block;contain:content}:host([hidden]){display:none}.forge-avatar{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:1.25rem;font-size:var(--forge-typography-title-font-size, 1.25rem);line-height:2rem;line-height:var(--forge-typography-title-line-height, 2rem);font-weight:400;font-weight:var(--forge-typography-title-font-weight,400);letter-spacing:.0125em;letter-spacing:var(--forge-typography-title-letter-spacing, .0125em);text-decoration:inherit;-webkit-text-decoration:var(--forge-typography-title-text-decoration,inherit);text-decoration:var(--forge-typography-title-text-decoration,inherit);text-transform:inherit;text-transform:var(--forge-typography-title-text-transform,inherit);font-size:1rem;font-size:var(--forge-avatar-font-size, 1rem);font-weight:400;font-weight:var(--forge-avatar-font-weight,400);background-color:none;background-color:var(--forge-avatar-theme-background,none);height:40px;height:var(--forge-avatar-size,40px);width:40px;width:var(--forge-avatar-size,40px);color:#fff;color:var(--forge-avatar-theme-on-background,#fff);border-radius:50%;border-radius:var(--forge-avatar-radius,50%);display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;background-position:center;background-repeat:no-repeat;background-size:cover;overflow:hidden;-webkit-transition:height .2s cubic-bezier(.4, 0, .2, 1),width .2s cubic-bezier(.4, 0, .2, 1);transition:height .2s cubic-bezier(.4, 0, .2, 1),width .2s cubic-bezier(.4, 0, .2, 1)}';\n\nexport interface IAvatarComponent extends IBaseComponent {\n imageUrl: string;\n text: string;\n letterCount: number;\n autoColor: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-avatar': IAvatarComponent;\n }\n}\n\n/**\n * The custom element class behind the `<forge-avatar>` element.\n * \n * @tag forge-avatar\n */\n@CustomElement({\n name: AVATAR_CONSTANTS.elementName\n})\nexport class AvatarComponent extends BaseComponent implements IAvatarComponent {\n public static get observedAttributes(): string[] {\n return [\n AVATAR_CONSTANTS.attributes.TEXT,\n AVATAR_CONSTANTS.attributes.LETTER_COUNT,\n AVATAR_CONSTANTS.attributes.IMAGE_URL,\n AVATAR_CONSTANTS.attributes.AUTO_COLOR\n ];\n }\n\n private _foundation: AvatarFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new AvatarFoundation(new AvatarAdapter(this));\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case AVATAR_CONSTANTS.attributes.TEXT:\n this.text = newValue;\n break;\n case AVATAR_CONSTANTS.attributes.LETTER_COUNT:\n this.letterCount = coerceNumber(newValue);\n break;\n case AVATAR_CONSTANTS.attributes.IMAGE_URL:\n this.imageUrl = newValue;\n break;\n case AVATAR_CONSTANTS.attributes.AUTO_COLOR:\n this.autoColor = coerceBoolean(newValue);\n break;\n }\n }\n\n /** Gets/sets the text to display. */\n @FoundationProperty()\n public text: string;\n\n /** Controls the number of letters to display from the text. By default the text is split on spaces and the first character of each word is used. */\n @FoundationProperty()\n public letterCount: number;\n\n /** Sets the background image URL to use. */\n @FoundationProperty()\n public imageUrl: string;\n\n /** Controls whether the background color is set automatically based on the text value. Does not have any effect when an image URL is specified. */\n @FoundationProperty()\n public autoColor: boolean;\n}\n", "import { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { IAvatarComponent } from './avatar';\nimport { AVATAR_CONSTANTS } from './avatar-constants';\n\nexport type AvatarComponentDelegateProps = Partial<IAvatarComponent>;\nexport interface IAvatarComponentDelegateOptions extends IBaseComponentDelegateOptions {}\nexport interface IAvatarComponentDelegateConfig extends IBaseComponentDelegateConfig<IAvatarComponent, IAvatarComponentDelegateOptions> {}\n\nexport class AvatarComponentDelegate extends BaseComponentDelegate<IAvatarComponent, IAvatarComponentDelegateOptions> {\n constructor(config?: IAvatarComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IAvatarComponent {\n return document.createElement(AVATAR_CONSTANTS.elementName);\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { AvatarComponent } from './avatar';\n\nexport * from './avatar-adapter';\nexport * from './avatar-constants';\nexport * from './avatar-foundation';\nexport * from './avatar';\nexport * from './avatar-component-delegate';\n\nexport function defineAvatarComponent(): void {\n defineCustomElement(AvatarComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -5,10 +5,10 @@
5
5
  */
6
6
  import {
7
7
  ForgeRipple
8
- } from "./chunk.C2MR3RDF.js";
8
+ } from "./chunk.56BNM7F2.js";
9
9
  import {
10
10
  ICON_CONSTANTS
11
- } from "./chunk.3MO6XU44.js";
11
+ } from "./chunk.WSH4S3GM.js";
12
12
  import {
13
13
  userInteractionListener
14
14
  } from "./chunk.PM7D2SUE.js";
@@ -369,4 +369,4 @@ export {
369
369
  IconButtonComponentDelegate,
370
370
  defineIconButtonComponent
371
371
  };
372
- //# sourceMappingURL=chunk.XN65LPA3.js.map
372
+ //# sourceMappingURL=chunk.EBC2HGO3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/icon-button/icon-button-constants.ts", "../../src/icon-button/icon-button.ts", "../../src/icon-button/icon-button-component-delegate.ts", "../../src/icon-button/index.ts"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}icon-button`;\n\nconst attributes = {\n TOGGLE: 'toggle',\n IS_ON: 'is-on',\n ICON_ON: 'forge-icon-button-on',\n DENSE: 'dense',\n DENSITY_LEVEL: 'density-level'\n};\n\nconst selectors = {\n BUTTON: 'button',\n ICON: 'i, span, svg, img, forge-icon'\n};\n\nconst classes = {\n BUTTON: 'forge-icon-button',\n BUTTON_ON: 'forge-icon-button--on',\n BUTTON_DENSE: 'forge-icon-button--dense',\n ICON: 'forge-icon-button__icon',\n ICON_ON: 'forge-icon-button__icon--on',\n DENSITY: [\n 'forge-icon-button--dense-1',\n 'forge-icon-button--dense-2',\n 'forge-icon-button--dense-3',\n 'forge-icon-button--dense-4',\n 'forge-icon-button--dense-5',\n 'forge-icon-button--dense-6'\n ]\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nexport const ICON_BUTTON_CONSTANTS = {\n elementName,\n attributes,\n selectors,\n classes,\n events\n};\n", "import { coerceBoolean, coerceNumber, CustomElement, emitEvent, ensureChild, toggleClass } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { ForgeRipple } from '../ripple';\nimport { userInteractionListener } from '../core/utils';\nimport { ICON_BUTTON_CONSTANTS } from './icon-button-constants';\n\nexport interface IIconButtonComponent extends IBaseComponent {\n toggle: boolean;\n isOn: boolean;\n dense: boolean;\n densityLevel: number;\n layout(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-icon-button': IIconButtonComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-icon-button-change': CustomEvent<boolean>;\n }\n}\n\n/**\n * The custom element class behind the `<forge-icon-button>` element.\n * \n * @tag forge-icon-button\n */\n@CustomElement({\n name: ICON_BUTTON_CONSTANTS.elementName\n})\nexport class IconButtonComponent extends BaseComponent implements IIconButtonComponent {\n public static get observedAttributes(): string[] {\n return [\n ICON_BUTTON_CONSTANTS.attributes.IS_ON,\n ICON_BUTTON_CONSTANTS.attributes.DENSE,\n ICON_BUTTON_CONSTANTS.attributes.DENSITY_LEVEL,\n ICON_BUTTON_CONSTANTS.attributes.TOGGLE\n ];\n }\n\n private _rippleInstance: ForgeRipple;\n private _buttonElement: HTMLButtonElement;\n private _toggle = false;\n private _isOn = false;\n private _dense = false;\n private _densityLevel = 5;\n private _toggleHandler: (event: Event) => void;\n\n constructor() {\n super();\n }\n\n public connectedCallback(): void {\n if (this.querySelector(ICON_BUTTON_CONSTANTS.selectors.BUTTON)) {\n this._initialize();\n } else {\n ensureChild(this, ICON_BUTTON_CONSTANTS.selectors.BUTTON).then(() => this._initialize());\n }\n }\n\n public disconnectedCallback(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case ICON_BUTTON_CONSTANTS.attributes.IS_ON:\n this.isOn = coerceBoolean(newValue);\n break;\n case ICON_BUTTON_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case ICON_BUTTON_CONSTANTS.attributes.DENSITY_LEVEL:\n this.densityLevel = coerceNumber(newValue);\n break;\n case ICON_BUTTON_CONSTANTS.attributes.TOGGLE:\n this.toggle = coerceBoolean(newValue);\n break;\n }\n }\n\n /** Gets/sets whether the button is togglable. */\n public get toggle(): boolean {\n return this._toggle;\n }\n public set toggle(value: boolean) {\n this._toggle = value;\n\n if (this._toggle) {\n this._initializeToggle();\n } else {\n this._destroyToggle();\n }\n }\n\n /** Gets/sets the toggled state of the icon button. Only applies when `toggle = true`. */\n public get isOn(): boolean {\n return this._isOn;\n }\n public set isOn(value: boolean) {\n if (this._isOn !== value) {\n this._isOn = value;\n this._applyToggle();\n }\n }\n\n /** Gets/sets whether the icon button is dense. */\n public get dense(): boolean {\n return this._dense;\n }\n public set dense(value: boolean) {\n if (this._dense !== value) {\n this._dense = value;\n this._applyDensity();\n }\n }\n\n /** Controls the density level. 1 (least dense) to 6 (most dense). */\n public get densityLevel(): number {\n return this._densityLevel;\n }\n public set densityLevel(value: number) {\n if (this._densityLevel !== value) {\n this._densityLevel = value;\n\n if (this._densityLevel <= 0) {\n this._densityLevel = 1;\n } else if (this._densityLevel > 6) {\n this._densityLevel = 6;\n } else if (typeof this._densityLevel !== 'number') {\n this._densityLevel = 5;\n }\n\n this._applyDensity();\n }\n }\n\n private _initialize(): void {\n this._buttonElement = this.querySelector(ICON_BUTTON_CONSTANTS.selectors.BUTTON) as HTMLButtonElement;\n if (!this._buttonElement) {\n return;\n }\n\n this._buttonElement.classList.add(ICON_BUTTON_CONSTANTS.classes.BUTTON);\n this._applyToggle();\n this._applyDensity();\n this._toggleHandler = () => {\n this._toggleValue();\n emitEvent(this, ICON_BUTTON_CONSTANTS.events.CHANGE, this._isOn, true);\n };\n\n if (this._toggle) {\n this._initializeToggle();\n }\n\n // We wait to initialize the ripple instance until the user interacts with the component to avoid unnecessary performance overhead\n this._deferRippleInitialization();\n }\n\n private async _deferRippleInitialization(): Promise<void> {\n const type = await userInteractionListener(this._buttonElement);\n if (!this._rippleInstance) {\n this._initRipple();\n if (type === 'focusin') {\n // eslint-disable-next-line @typescript-eslint/dot-notation\n (this._rippleInstance as ForgeRipple)['foundation'].handleFocus();\n }\n }\n }\n\n private _initRipple(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n this._rippleInstance = new ForgeRipple(this._buttonElement);\n this._rippleInstance.unbounded = true;\n }\n\n private _toggleValue(): void {\n this._isOn = !this._isOn;\n this._applyToggle();\n }\n\n private _applyToggle(): void {\n if (!this._buttonElement) {\n return;\n }\n toggleClass(this._buttonElement, this._isOn, ICON_BUTTON_CONSTANTS.classes.BUTTON_ON);\n if (this._toggle) {\n this._buttonElement.setAttribute('aria-pressed', `${this._isOn}`);\n }\n }\n\n private _applyDensity(): void {\n if (!this._buttonElement) {\n return;\n }\n\n // Remove all other density classes first\n ICON_BUTTON_CONSTANTS.classes.DENSITY.forEach(c => this._buttonElement.classList.remove(c));\n\n if (this._dense) {\n this.setAttribute(ICON_BUTTON_CONSTANTS.attributes.DENSE, '');\n this._buttonElement.classList.add(ICON_BUTTON_CONSTANTS.classes.BUTTON_DENSE);\n\n // 5 is the default density level (we apply 5 implicitly in the regular dense class)\n // Exclude 5 since its already covered by dense class\n if (this._densityLevel < 7 && this._densityLevel > 0 && this.densityLevel !== 5) {\n const densityLevelClass = ICON_BUTTON_CONSTANTS.classes.DENSITY[this._densityLevel - 1];\n this._buttonElement.classList.add(densityLevelClass);\n this.setAttribute(ICON_BUTTON_CONSTANTS.attributes.DENSITY_LEVEL, this._densityLevel.toString());\n }\n } else {\n this.removeAttribute(ICON_BUTTON_CONSTANTS.attributes.DENSE);\n this._buttonElement.classList.remove(ICON_BUTTON_CONSTANTS.classes.BUTTON_DENSE);\n }\n\n // re-layout the ripple for cases where dense was changed after initial layout\n if (this._rippleInstance) {\n this._rippleInstance.layout();\n }\n }\n\n private _initializeToggle(): void {\n if (!this._buttonElement) {\n return;\n }\n const icons = Array.from(this._buttonElement.querySelectorAll(ICON_BUTTON_CONSTANTS.selectors.ICON));\n\n // We require two icon/image elements to be specified for the \"on\" and \"off\" states\n if (icons.length !== 2) {\n console.error('You must specify two icons, one for \"on\" and one for \"off\".');\n return;\n }\n\n // Add the icon class to each icon\n icons.forEach(icon => icon.classList.add(ICON_BUTTON_CONSTANTS.classes.ICON));\n\n // If there are no icons that specify the \"on\" class, then automatically choose the first icon as the \"on\" icon and add the class,\n // alternatively we check for the existence of a `forge-icon-button-on` attribute on any of the icons and use that.\n if (!icons.some(icon => icon.classList.contains(ICON_BUTTON_CONSTANTS.classes.ICON_ON))) {\n const requestedOnIcon = icons.find(icon => icon.hasAttribute(ICON_BUTTON_CONSTANTS.attributes.ICON_ON));\n if (requestedOnIcon) {\n requestedOnIcon.classList.add(ICON_BUTTON_CONSTANTS.classes.ICON_ON);\n } else {\n icons[0].classList.add(ICON_BUTTON_CONSTANTS.classes.ICON_ON);\n }\n }\n\n this._buttonElement.addEventListener('click', this._toggleHandler);\n\n // Wait a frame to ensure the value of the `on` property has been set\n window.requestAnimationFrame(() => {\n if (this._isOn) {\n this._buttonElement.classList.add(ICON_BUTTON_CONSTANTS.classes.BUTTON_ON);\n this._buttonElement.setAttribute('aria-pressed', `${this._isOn}`);\n }\n });\n }\n\n private _destroyToggle(): void {\n if (!this._buttonElement) {\n return;\n }\n this._buttonElement.removeEventListener('click', this._toggleHandler);\n }\n\n public layout(): void {\n if (this._rippleInstance) {\n this._rippleInstance.layout();\n }\n }\n}\n", "import { addClass } from '@tylertech/forge-core';\nimport { IconExternalType, ICON_CONSTANTS, IIconComponent } from '../icon';\nimport { ICON_CLASS_NAME } from '../constants';\nimport { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { IIconButtonComponent } from './icon-button';\nimport { ICON_BUTTON_CONSTANTS } from './icon-button-constants';\nimport { PopupPlacement } from '../popup';\n\nexport type IconButtonComponentDelegateProps = Partial<IIconButtonComponent>;\nexport interface IIconButtonComponentDelegateOptions extends IBaseComponentDelegateOptions {\n iconName?: string;\n iconExternal?: boolean;\n iconExternalType?: IconExternalType;\n iconType?: 'font' | 'component';\n iconClass?: string | string[];\n tooltip?: string;\n tooltipPosition?: PopupPlacement;\n}\nexport interface IIconButtonComponentDelegateConfig extends IBaseComponentDelegateConfig<IIconButtonComponent, IIconButtonComponentDelegateOptions> {}\n\nexport class IconButtonComponentDelegate extends BaseComponentDelegate<IIconButtonComponent, IIconButtonComponentDelegateOptions> {\n private _buttonElement: HTMLButtonElement;\n private _iconElement?: IIconComponent;\n\n constructor(config?: IIconButtonComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IIconButtonComponent {\n const component = document.createElement(ICON_BUTTON_CONSTANTS.elementName);\n this._buttonElement = document.createElement('button');\n this._buttonElement.type = 'button';\n component.appendChild(this._buttonElement);\n\n if (this._config.options?.tooltip) {\n const tooltip = document.createElement('forge-tooltip');\n tooltip.textContent = this._config.options.tooltip;\n \n if (this._config.options.tooltipPosition) {\n tooltip.position = this._config.options.tooltipPosition;\n }\n\n component.appendChild(tooltip);\n }\n\n return component;\n }\n\n public get iconElement(): IIconComponent | undefined {\n return this._iconElement;\n }\n\n public get disabled(): boolean {\n return !!this._buttonElement.disabled;\n }\n public set disabled(value: boolean) {\n this._buttonElement.disabled = value;\n }\n\n /** @deprecated Use buttonElement instead. */\n public get butttonElement(): HTMLButtonElement | undefined {\n return this._buttonElement;\n }\n\n public get buttonElement(): HTMLButtonElement | undefined {\n return this._buttonElement;\n }\n\n protected _configure(): void {\n this._configureIcon();\n }\n\n private _configureIcon(): void {\n if (!this._config.options?.iconName) {\n return;\n }\n\n const type = this._config.options?.iconType || 'component';\n\n switch (type) {\n case 'font':\n const classes = Array.isArray(this._config.options.iconClass) ? this._config.options.iconClass : [ICON_CLASS_NAME];\n addClass(classes, this._buttonElement);\n this._buttonElement.textContent = this._config.options.iconName;\n break;\n case 'component':\n this._iconElement = document.createElement(ICON_CONSTANTS.elementName);\n this._iconElement.name = this._config.options.iconName;\n if (this._config.options.iconExternal !== undefined) {\n this._iconElement.external = !!this._config.options.iconExternal;\n }\n if (this._config.options.iconExternalType) {\n this._iconElement.externalType = this._config.options.iconExternalType;\n }\n if (this._config.options.iconClass) {\n addClass(this._config.options.iconClass, this._iconElement);\n }\n this._buttonElement.appendChild(this._iconElement);\n break;\n }\n }\n\n public onClick(listener: (evt: MouseEvent) => void): void {\n this._buttonElement.addEventListener('click', listener);\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._buttonElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._buttonElement.addEventListener('blur', evt => listener(evt));\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { IconButtonComponent } from './icon-button';\n\nexport * from './icon-button-constants';\nexport * from './icon-button';\nexport * from './icon-button-component-delegate';\n\nexport function defineIconButtonComponent(): void {\n defineCustomElement(IconButtonComponent);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,cAA2C,GAAG;AAEpD,IAAM,aAAa;AAAA,EACjB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,eAAe;AACjB;AAEA,IAAM,YAAY;AAAA,EAChB,QAAQ;AAAA,EACR,MAAM;AACR;AAEA,IAAM,UAAU;AAAA,EACd,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,cAAc;AAAA,EACd,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,SAAS;AAAA,EACb,QAAQ,GAAG;AACb;AAEO,IAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACXO,IAAM,sBAAN,cAAkC,cAA8C;AAAA,EAkBrF,cAAc;AACZ,UAAM;AAPR,SAAQ,UAAU;AAClB,SAAQ,QAAQ;AAChB,SAAQ,SAAS;AACjB,SAAQ,gBAAgB;AAAA,EAKxB;AAAA,EAnBA,WAAkB,qBAA+B;AAC/C,WAAO;AAAA,MACL,sBAAsB,WAAW;AAAA,MACjC,sBAAsB,WAAW;AAAA,MACjC,sBAAsB,WAAW;AAAA,MACjC,sBAAsB,WAAW;AAAA,IACnC;AAAA,EACF;AAAA,EAcA,AAAO,oBAA0B;AAC/B,QAAI,KAAK,cAAc,sBAAsB,UAAU,MAAM,GAAG;AAC9D,WAAK,YAAY;AAAA,IACnB,OAAO;AACL,kBAAY,MAAM,sBAAsB,UAAU,MAAM,EAAE,KAAK,MAAM,KAAK,YAAY,CAAC;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,AAAO,uBAA6B;AAClC,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB,QAAQ;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,AAAO,yBAAyB,MAAc,UAAkB,UAAwB;AACtF,YAAQ;AAAA,WACD,sBAAsB,WAAW;AACpC,aAAK,OAAO,cAAc,QAAQ;AAClC;AAAA,WACG,sBAAsB,WAAW;AACpC,aAAK,QAAQ,cAAc,QAAQ;AACnC;AAAA,WACG,sBAAsB,WAAW;AACpC,aAAK,eAAe,aAAa,QAAQ;AACzC;AAAA,WACG,sBAAsB,WAAW;AACpC,aAAK,SAAS,cAAc,QAAQ;AACpC;AAAA;AAAA,EAEN;AAAA,EAGA,IAAW,SAAkB;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAW,OAAO,OAAgB;AAChC,SAAK,UAAU;AAEf,QAAI,KAAK,SAAS;AAChB,WAAK,kBAAkB;AAAA,IACzB,OAAO;AACL,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AAAA,EAGA,IAAW,OAAgB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAW,KAAK,OAAgB;AAC9B,QAAI,KAAK,UAAU,OAAO;AACxB,WAAK,QAAQ;AACb,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAAA,EAGA,IAAW,QAAiB;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAW,MAAM,OAAgB;AAC/B,QAAI,KAAK,WAAW,OAAO;AACzB,WAAK,SAAS;AACd,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAGA,IAAW,eAAuB;AAChC,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAW,aAAa,OAAe;AACrC,QAAI,KAAK,kBAAkB,OAAO;AAChC,WAAK,gBAAgB;AAErB,UAAI,KAAK,iBAAiB,GAAG;AAC3B,aAAK,gBAAgB;AAAA,MACvB,WAAW,KAAK,gBAAgB,GAAG;AACjC,aAAK,gBAAgB;AAAA,MACvB,WAAW,OAAO,KAAK,kBAAkB,UAAU;AACjD,aAAK,gBAAgB;AAAA,MACvB;AAEA,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,AAAQ,cAAoB;AAC1B,SAAK,iBAAiB,KAAK,cAAc,sBAAsB,UAAU,MAAM;AAC/E,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AAEA,SAAK,eAAe,UAAU,IAAI,sBAAsB,QAAQ,MAAM;AACtE,SAAK,aAAa;AAClB,SAAK,cAAc;AACnB,SAAK,iBAAiB,MAAM;AAC1B,WAAK,aAAa;AAClB,gBAAU,MAAM,sBAAsB,OAAO,QAAQ,KAAK,OAAO,IAAI;AAAA,IACvE;AAEA,QAAI,KAAK,SAAS;AAChB,WAAK,kBAAkB;AAAA,IACzB;AAGA,SAAK,2BAA2B;AAAA,EAClC;AAAA,EAEA,MAAc,6BAA4C;AACxD,UAAM,OAAO,MAAM,wBAAwB,KAAK,cAAc;AAC9D,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,YAAY;AACjB,UAAI,SAAS,WAAW;AAEtB,QAAC,KAAK,gBAAgC,cAAc,YAAY;AAAA,MAClE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,AAAQ,cAAoB;AAC1B,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB,QAAQ;AAAA,IAC/B;AACA,SAAK,kBAAkB,IAAI,YAAY,KAAK,cAAc;AAC1D,SAAK,gBAAgB,YAAY;AAAA,EACnC;AAAA,EAEA,AAAQ,eAAqB;AAC3B,SAAK,QAAQ,CAAC,KAAK;AACnB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,AAAQ,eAAqB;AAC3B,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AACA,gBAAY,KAAK,gBAAgB,KAAK,OAAO,sBAAsB,QAAQ,SAAS;AACpF,QAAI,KAAK,SAAS;AAChB,WAAK,eAAe,aAAa,gBAAgB,GAAG,KAAK,OAAO;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,AAAQ,gBAAsB;AAC5B,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AAGA,0BAAsB,QAAQ,QAAQ,QAAQ,OAAK,KAAK,eAAe,UAAU,OAAO,CAAC,CAAC;AAE1F,QAAI,KAAK,QAAQ;AACf,WAAK,aAAa,sBAAsB,WAAW,OAAO,EAAE;AAC5D,WAAK,eAAe,UAAU,IAAI,sBAAsB,QAAQ,YAAY;AAI5E,UAAI,KAAK,gBAAgB,KAAK,KAAK,gBAAgB,KAAK,KAAK,iBAAiB,GAAG;AAC/E,cAAM,oBAAoB,sBAAsB,QAAQ,QAAQ,KAAK,gBAAgB;AACrF,aAAK,eAAe,UAAU,IAAI,iBAAiB;AACnD,aAAK,aAAa,sBAAsB,WAAW,eAAe,KAAK,cAAc,SAAS,CAAC;AAAA,MACjG;AAAA,IACF,OAAO;AACL,WAAK,gBAAgB,sBAAsB,WAAW,KAAK;AAC3D,WAAK,eAAe,UAAU,OAAO,sBAAsB,QAAQ,YAAY;AAAA,IACjF;AAGA,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB,OAAO;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,AAAQ,oBAA0B;AAChC,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AACA,UAAM,QAAQ,MAAM,KAAK,KAAK,eAAe,iBAAiB,sBAAsB,UAAU,IAAI,CAAC;AAGnG,QAAI,MAAM,WAAW,GAAG;AACtB,cAAQ,MAAM,6DAA6D;AAC3E;AAAA,IACF;AAGA,UAAM,QAAQ,UAAQ,KAAK,UAAU,IAAI,sBAAsB,QAAQ,IAAI,CAAC;AAI5E,QAAI,CAAC,MAAM,KAAK,UAAQ,KAAK,UAAU,SAAS,sBAAsB,QAAQ,OAAO,CAAC,GAAG;AACvF,YAAM,kBAAkB,MAAM,KAAK,UAAQ,KAAK,aAAa,sBAAsB,WAAW,OAAO,CAAC;AACtG,UAAI,iBAAiB;AACnB,wBAAgB,UAAU,IAAI,sBAAsB,QAAQ,OAAO;AAAA,MACrE,OAAO;AACL,cAAM,GAAG,UAAU,IAAI,sBAAsB,QAAQ,OAAO;AAAA,MAC9D;AAAA,IACF;AAEA,SAAK,eAAe,iBAAiB,SAAS,KAAK,cAAc;AAGjE,WAAO,sBAAsB,MAAM;AACjC,UAAI,KAAK,OAAO;AACd,aAAK,eAAe,UAAU,IAAI,sBAAsB,QAAQ,SAAS;AACzE,aAAK,eAAe,aAAa,gBAAgB,GAAG,KAAK,OAAO;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,AAAQ,iBAAuB;AAC7B,QAAI,CAAC,KAAK,gBAAgB;AACxB;AAAA,IACF;AACA,SAAK,eAAe,oBAAoB,SAAS,KAAK,cAAc;AAAA,EACtE;AAAA,EAEA,AAAO,SAAe;AACpB,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB,OAAO;AAAA,IAC9B;AAAA,EACF;AACF;AApPa,sBAAN;AAAA,EAHP,AAAC,cAAc;AAAA,IACb,MAAM,sBAAsB;AAAA,EAC9B,CAAC;AAAA,GACY;;;ACZN,IAAM,8BAAN,cAA0C,sBAAiF;AAAA,EAIhI,YAAY,QAA6C;AACvD,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,AAAU,SAA+B;AA5B3C;AA6BI,UAAM,YAAY,SAAS,cAAc,sBAAsB,WAAW;AAC1E,SAAK,iBAAiB,SAAS,cAAc,QAAQ;AACrD,SAAK,eAAe,OAAO;AAC3B,cAAU,YAAY,KAAK,cAAc;AAEzC,QAAI,WAAK,QAAQ,YAAb,mBAAsB,SAAS;AACjC,YAAM,UAAU,SAAS,cAAc,eAAe;AACtD,cAAQ,cAAc,KAAK,QAAQ,QAAQ;AAE3C,UAAI,KAAK,QAAQ,QAAQ,iBAAiB;AACxC,gBAAQ,WAAW,KAAK,QAAQ,QAAQ;AAAA,MAC1C;AAEA,gBAAU,YAAY,OAAO;AAAA,IAC/B;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,IAAW,cAA0C;AACnD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,WAAoB;AAC7B,WAAO,CAAC,CAAC,KAAK,eAAe;AAAA,EAC/B;AAAA,EACA,IAAW,SAAS,OAAgB;AAClC,SAAK,eAAe,WAAW;AAAA,EACjC;AAAA,EAGA,IAAW,iBAAgD;AACzD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,gBAA+C;AACxD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,AAAU,aAAmB;AAC3B,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,AAAQ,iBAAuB;AAxEjC;AAyEI,QAAI,CAAC,YAAK,QAAQ,YAAb,mBAAsB,WAAU;AACnC;AAAA,IACF;AAEA,UAAM,OAAO,YAAK,QAAQ,YAAb,mBAAsB,aAAY;AAE/C,YAAQ;AAAA,WACD;AACH,cAAM,WAAU,MAAM,QAAQ,KAAK,QAAQ,QAAQ,SAAS,IAAI,KAAK,QAAQ,QAAQ,YAAY,CAAC,eAAe;AACjH,iBAAS,UAAS,KAAK,cAAc;AACrC,aAAK,eAAe,cAAc,KAAK,QAAQ,QAAQ;AACvD;AAAA,WACG;AACH,aAAK,eAAe,SAAS,cAAc,eAAe,WAAW;AACrE,aAAK,aAAa,OAAO,KAAK,QAAQ,QAAQ;AAC9C,YAAI,KAAK,QAAQ,QAAQ,iBAAiB,QAAW;AACnD,eAAK,aAAa,WAAW,CAAC,CAAC,KAAK,QAAQ,QAAQ;AAAA,QACtD;AACA,YAAI,KAAK,QAAQ,QAAQ,kBAAkB;AACzC,eAAK,aAAa,eAAe,KAAK,QAAQ,QAAQ;AAAA,QACxD;AACA,YAAI,KAAK,QAAQ,QAAQ,WAAW;AAClC,mBAAS,KAAK,QAAQ,QAAQ,WAAW,KAAK,YAAY;AAAA,QAC5D;AACA,aAAK,eAAe,YAAY,KAAK,YAAY;AACjD;AAAA;AAAA,EAEN;AAAA,EAEA,AAAO,QAAQ,UAA2C;AACxD,SAAK,eAAe,iBAAiB,SAAS,QAAQ;AAAA,EACxD;AAAA,EAEA,AAAO,QAAQ,UAAsC;AACnD,SAAK,eAAe,iBAAiB,SAAS,SAAO,SAAS,GAAG,CAAC;AAAA,EACpE;AAAA,EAEA,AAAO,OAAO,UAAsC;AAClD,SAAK,eAAe,iBAAiB,QAAQ,SAAO,SAAS,GAAG,CAAC;AAAA,EACnE;AACF;;;ACzGO,qCAA2C;AAChD,sBAAoB,mBAAmB;AACzC;",
6
+ "names": []
7
+ }
@@ -6,7 +6,7 @@
6
6
  import {
7
7
  BUTTON_TOGGLE_CONSTANTS,
8
8
  ButtonToggleComponent
9
- } from "./chunk.IBH5GL7A.js";
9
+ } from "./chunk.IUNON3UL.js";
10
10
  import {
11
11
  BaseAdapter
12
12
  } from "./chunk.KZATVOA6.js";
@@ -238,8 +238,9 @@ var ButtonToggleGroupFoundation = class {
238
238
  this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());
239
239
  }
240
240
  _getValue() {
241
+ var _a;
241
242
  const selections = this._adapter.getSelectedValues();
242
- return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] || null;
243
+ return this._multiple ? Array.from(new Set(selections)) : (_a = selections.slice(0, 1)[0]) != null ? _a : null;
243
244
  }
244
245
  _applyValue(value) {
245
246
  let values = value instanceof Array ? value : [value];
@@ -458,4 +459,4 @@ export {
458
459
  ButtonToggleGroupComponent,
459
460
  defineButtonToggleGroupComponent
460
461
  };
461
- //# sourceMappingURL=chunk.PCYIY5OY.js.map
462
+ //# sourceMappingURL=chunk.EUPO2VO2.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/button-toggle/button-toggle-group/button-toggle-group-constants.ts", "../../src/button-toggle/button-toggle-group/button-toggle-group-adapter.ts", "../../src/button-toggle/button-toggle-group/button-toggle-group-foundation.ts", "../../src/button-toggle/button-toggle-group/button-toggle-group.ts", "../../src/button-toggle/button-toggle-group/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}button-toggle-group`;\n\nconst attributes = {\n VALUE: 'value',\n MULTIPLE: 'multiple',\n MANDATORY: 'mandatory',\n VERTICAL: 'vertical',\n STRETCH: 'stretch',\n DISABLED: 'disabled',\n DENSE: 'dense'\n};\n\nconst classes = {\n VERTICAL: 'forge-button-toggle-group--vertical',\n STRETCH: 'forge-button-toggle-group--stretch'\n};\n\nconst selectors = {\n ROOT: '.forge-button-toggle-group'\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nexport const BUTTON_TOGGLE_GROUP_CONSTANTS = {\n elementName,\n attributes,\n classes,\n selectors,\n events\n};\n\nexport type IButtonToggleGroupChangeEventData<T> = T;\n\nexport interface IButtonToggleOption {\n label?: string;\n icon?: string;\n value: any;\n leadingIcon?: string;\n trailingIcon?: string;\n}\n", "import { getShadowElement, removeAllChildren } from '@tylertech/forge-core';\nimport { ICON_CLASS_NAME } from '../../constants';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupComponent } from './button-toggle-group';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupAdapter extends IBaseAdapter {\n addListener(type: string, listener: (evt: Event) => void): void;\n removeListener(type: string, listener: (evt: Event) => void): void;\n addSlotChangeListener(listener: (evt: Event) => void): void;\n removeSlotChangeListener(listener: (evt: Event) => void): void;\n deselect(selectedToggle: IButtonToggleComponent): void;\n applyAdjacentSelections(isVertical: boolean): void;\n setVertical(isVertical: boolean): void;\n setStretch(value: boolean): void;\n setDense(value: boolean): void;\n setDisabled(value: boolean): void;\n getSelectedValues(): any[];\n applyValues(values: any[]): void;\n createOptions(options: IButtonToggleOption[]): void;\n}\n\nexport class ButtonToggleGroupAdapter extends BaseAdapter<IButtonToggleGroupComponent> implements IButtonToggleGroupAdapter {\n private _rootElement: HTMLElement;\n private _slotElement: HTMLSlotElement;\n\n constructor(component: IButtonToggleGroupComponent) {\n super(component);\n this._rootElement = getShadowElement(component, BUTTON_TOGGLE_GROUP_CONSTANTS.selectors.ROOT);\n this._slotElement = this._rootElement.querySelector('slot') as HTMLSlotElement;\n }\n\n public addListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.addEventListener(type, listener);\n }\n\n public removeListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.removeEventListener(type, listener);\n }\n\n public addSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n public removeSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n\n public deselect(selectedToggle: IButtonToggleComponent): void {\n const toggles = this._getButtonToggleElements();\n toggles.filter(t => t !== selectedToggle).forEach(t => t.selected = false);\n }\n\n public applyAdjacentSelections(isVertical: boolean): void {\n const toggles = this._getButtonToggleElements();\n for (let i = toggles.length - 1; i > 0; i--) {\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT);\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL);\n if (toggles[i].selected && toggles[i - 1].selected) {\n const attr = isVertical ? BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL : BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT;\n toggles[i].setAttribute(attr, '');\n }\n }\n }\n\n public setVertical(isVertical: boolean): void {\n if (isVertical) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n }\n }\n\n public setStretch(value: boolean): void {\n if (value) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n }\n\n const toggles = this._getButtonToggleElements();\n toggles.forEach(toggle => {\n if (value) {\n toggle.setAttribute('stretch', '');\n } else {\n toggle.removeAttribute('stretch');\n }\n });\n }\n\n public setDense(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.dense = value);\n }\n\n public setDisabled(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.disabled = value);\n }\n\n public getSelectedValues(): any[] {\n const toggles = this._getButtonToggleElements();\n return toggles.filter(t => t.selected).map(t => t.value);\n }\n\n public applyValues(values: any[]): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.selected = values.indexOf(t.value) >= 0);\n }\n\n public createOptions(options: IButtonToggleOption[]): void {\n removeAllChildren(this._component);\n options.forEach(o => {\n this._component.appendChild(this._createButtonToggle(o));\n });\n }\n\n private _createButtonToggle(option: IButtonToggleOption): IButtonToggleComponent {\n const buttonToggle = document.createElement(BUTTON_TOGGLE_CONSTANTS.elementName) as IButtonToggleComponent;\n buttonToggle.value = option.value;\n\n if (option.label) {\n buttonToggle.textContent = option.label;\n } else if (option.icon) {\n const icon = document.createElement('i');\n icon.textContent = option.icon;\n icon.classList.add(ICON_CLASS_NAME);\n icon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(icon);\n }\n\n if (option.leadingIcon) {\n const leadingIcon = document.createElement('i');\n leadingIcon.slot = 'leading';\n leadingIcon.textContent = option.leadingIcon;\n leadingIcon.classList.add(ICON_CLASS_NAME);\n leadingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(leadingIcon);\n }\n\n if (option.trailingIcon) {\n const trailingIcon = document.createElement('i');\n trailingIcon.slot = 'trailing';\n trailingIcon.textContent = option.trailingIcon;\n trailingIcon.classList.add(ICON_CLASS_NAME);\n trailingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(trailingIcon);\n }\n\n return buttonToggle;\n }\n\n private _getButtonToggleElements(): IButtonToggleComponent[] {\n return Array.from(this._component.querySelectorAll(BUTTON_TOGGLE_CONSTANTS.elementName));\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS, IButtonToggleSelectEventData } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupFoundation extends ICustomElementFoundation {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n dense: boolean;\n disabled: boolean;\n options: IButtonToggleOption[];\n}\n\nexport class ButtonToggleGroupFoundation implements IButtonToggleGroupFoundation {\n private _isInitialized = false;\n private _multiple = false;\n private _mandatory = false;\n private _vertical = false;\n private _stretch = false;\n private _dense = false;\n private _disabled = false;\n private _options: IButtonToggleOption[] = [];\n private _values: any[] = [];\n private _originalValue: any;\n private _selectListener: (evt: CustomEvent<IButtonToggleSelectEventData>) => void;\n private _slotListener: () => void;\n\n constructor(private _adapter: IButtonToggleGroupAdapter) {\n this._selectListener = evt => this._onSelect(evt);\n this._slotListener = () => this._synchronize();\n }\n\n public initialize(): void {\n if (this._options && this._options.length) {\n this._applyOptions(false);\n }\n\n this._adapter.addListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.addSlotChangeListener(this._slotListener);\n this._adapter.setVertical(this._vertical);\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._adapter.removeListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.removeSlotChangeListener(this._slotListener);\n }\n\n private _synchronize(): void {\n if (!this._multiple) {\n const selectedValues = this._adapter.getSelectedValues().concat(this._values);\n this.value = selectedValues.length ? selectedValues[selectedValues.length - 1] : null;\n } else {\n const selectedValues = new Set(this._adapter.getSelectedValues().concat(this._values));\n this._applyValue(Array.from(selectedValues));\n }\n }\n\n private _onSelect(evt: CustomEvent<IButtonToggleSelectEventData>): void {\n const target = evt.target as IButtonToggleComponent;\n\n // When in mandatory mode we need to ensure at least one element is selected. If there are no selections\n // then we need to reselect the target toggle because it was deselected\n if (this._mandatory) {\n const values = this._adapter.getSelectedValues();\n if (!values.length) {\n target.selected = true;\n return;\n }\n }\n\n // When not in multiple mode, we deselect all toggles, except for the one that was just changed\n if (!this._multiple) {\n this._adapter.deselect(target);\n }\n\n this._adapter.applyAdjacentSelections(this._vertical);\n this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());\n }\n\n private _getValue(): any {\n const selections = this._adapter.getSelectedValues();\n return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] || null;\n }\n\n private _applyValue(value: any): void {\n let values = value instanceof Array ? value : [value];\n if (!this._multiple && values.length > 1) {\n values = values[0];\n }\n this._values = values;\n this._adapter.applyValues(values);\n if (this._multiple) {\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n\n private _applyOptions(init = true): void {\n if (this._options) {\n this._adapter.createOptions(this._options);\n\n if (init) {\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n }\n\n public get value(): any {\n if (!this._isInitialized) {\n return this._originalValue;\n }\n return this._getValue();\n }\n public set value(value: any) {\n this._originalValue = value;\n this._applyValue(value);\n }\n\n public get multiple(): boolean {\n return this._multiple;\n }\n public set multiple(value: boolean) {\n if (this._multiple !== value) {\n this._multiple = value;\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE, this._multiple as any);\n }\n }\n\n public get mandatory(): boolean {\n return this._mandatory;\n }\n public set mandatory(value: boolean) {\n if (this._mandatory !== value) {\n this._mandatory = value;\n if (this._mandatory) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n }\n }\n }\n\n public get vertical(): boolean {\n return this._vertical;\n }\n public set vertical(value: boolean) {\n if (this._vertical !== value) {\n this._vertical = value;\n this._adapter.setVertical(this._vertical);\n this._adapter.applyAdjacentSelections(this._vertical);\n if (this._vertical) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n }\n }\n }\n\n public get stretch(): boolean {\n return this._stretch;\n }\n public set stretch(value: boolean) {\n if (this._stretch !== value) {\n this._stretch = value;\n this._adapter.setStretch(this._stretch);\n if (this._stretch) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n }\n }\n }\n\n public get dense(): boolean {\n return this._dense;\n }\n public set dense(value: boolean) {\n if (this._dense !== value) {\n this._dense = value;\n this._adapter.setDense(this._dense);\n if (this._dense) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n }\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._adapter.setDisabled(this._disabled);\n if (this._disabled) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n }\n }\n }\n\n public get options(): IButtonToggleOption[] {\n return this._options.map(o => ({ ...o }));\n }\n public set options(value: IButtonToggleOption[]) {\n this._options = value.map(o => ({ ...o }));\n if (this._isInitialized) {\n this._applyOptions();\n }\n }\n}\n", "import { attachShadowTemplate, coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { ButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { ButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\nimport { ButtonToggleGroupFoundation } from './button-toggle-group-foundation';\n\nconst template = '<template><div class=\\\"forge-button-toggle-group\\\" role=\\\"group\\\" aria-label=\\\"Button group\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = '.forge-button-toggle-group{display:-webkit-box;display:flex}.forge-button-toggle-group ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px}.forge-button-toggle-group ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.forge-button-toggle-group--vertical ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:1px;--forge-button-toggle-border-bottom-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group--vertical ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px}.forge-button-toggle-group--vertical ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group ::slotted(:only-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--stretch{width:100%}:host{display:block}:host([hidden]){display:none}';\n\nexport interface IButtonToggleGroupComponent extends IBaseComponent {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n disabled: boolean;\n dense: boolean;\n options: IButtonToggleOption[];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-button-toggle-group': IButtonToggleGroupComponent;\n }\n}\n\n@CustomElement({\n name: BUTTON_TOGGLE_GROUP_CONSTANTS.elementName,\n dependencies: [ButtonToggleComponent]\n})\nexport class ButtonToggleGroupComponent extends BaseComponent implements IButtonToggleGroupComponent {\n public static get observedAttributes(): string[] {\n return [\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE\n ];\n }\n\n private _foundation: ButtonToggleGroupFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ButtonToggleGroupFoundation(new ButtonToggleGroupAdapter(this));\n }\n\n public initializedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE:\n this.multiple = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY:\n this.mandatory = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL:\n this.vertical = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH:\n this.stretch = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public value: any;\n\n @FoundationProperty()\n public multiple: boolean;\n\n @FoundationProperty()\n public mandatory: boolean;\n\n @FoundationProperty()\n public vertical: boolean;\n\n @FoundationProperty()\n public stretch: boolean;\n\n @FoundationProperty()\n public dense: boolean;\n\n @FoundationProperty()\n public disabled: boolean;\n\n @FoundationProperty()\n public options: IButtonToggleOption[];\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { ButtonToggleGroupComponent } from './button-toggle-group';\n\nexport * from './button-toggle-group-adapter';\nexport * from './button-toggle-group-constants';\nexport * from './button-toggle-group-foundation';\nexport * from './button-toggle-group';\n\nexport function defineButtonToggleGroupComponent(): void {\n defineCustomElement(ButtonToggleGroupComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}button-toggle-group`;\n\nconst attributes = {\n VALUE: 'value',\n MULTIPLE: 'multiple',\n MANDATORY: 'mandatory',\n VERTICAL: 'vertical',\n STRETCH: 'stretch',\n DISABLED: 'disabled',\n DENSE: 'dense'\n};\n\nconst classes = {\n VERTICAL: 'forge-button-toggle-group--vertical',\n STRETCH: 'forge-button-toggle-group--stretch'\n};\n\nconst selectors = {\n ROOT: '.forge-button-toggle-group'\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nexport const BUTTON_TOGGLE_GROUP_CONSTANTS = {\n elementName,\n attributes,\n classes,\n selectors,\n events\n};\n\nexport type IButtonToggleGroupChangeEventData<T> = T;\n\nexport interface IButtonToggleOption {\n label?: string;\n icon?: string;\n value: any;\n leadingIcon?: string;\n trailingIcon?: string;\n}\n", "import { getShadowElement, removeAllChildren } from '@tylertech/forge-core';\nimport { ICON_CLASS_NAME } from '../../constants';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupComponent } from './button-toggle-group';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupAdapter extends IBaseAdapter {\n addListener(type: string, listener: (evt: Event) => void): void;\n removeListener(type: string, listener: (evt: Event) => void): void;\n addSlotChangeListener(listener: (evt: Event) => void): void;\n removeSlotChangeListener(listener: (evt: Event) => void): void;\n deselect(selectedToggle: IButtonToggleComponent): void;\n applyAdjacentSelections(isVertical: boolean): void;\n setVertical(isVertical: boolean): void;\n setStretch(value: boolean): void;\n setDense(value: boolean): void;\n setDisabled(value: boolean): void;\n getSelectedValues(): any[];\n applyValues(values: any[]): void;\n createOptions(options: IButtonToggleOption[]): void;\n}\n\nexport class ButtonToggleGroupAdapter extends BaseAdapter<IButtonToggleGroupComponent> implements IButtonToggleGroupAdapter {\n private _rootElement: HTMLElement;\n private _slotElement: HTMLSlotElement;\n\n constructor(component: IButtonToggleGroupComponent) {\n super(component);\n this._rootElement = getShadowElement(component, BUTTON_TOGGLE_GROUP_CONSTANTS.selectors.ROOT);\n this._slotElement = this._rootElement.querySelector('slot') as HTMLSlotElement;\n }\n\n public addListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.addEventListener(type, listener);\n }\n\n public removeListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.removeEventListener(type, listener);\n }\n\n public addSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n public removeSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n\n public deselect(selectedToggle: IButtonToggleComponent): void {\n const toggles = this._getButtonToggleElements();\n toggles.filter(t => t !== selectedToggle).forEach(t => t.selected = false);\n }\n\n public applyAdjacentSelections(isVertical: boolean): void {\n const toggles = this._getButtonToggleElements();\n for (let i = toggles.length - 1; i > 0; i--) {\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT);\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL);\n if (toggles[i].selected && toggles[i - 1].selected) {\n const attr = isVertical ? BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL : BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT;\n toggles[i].setAttribute(attr, '');\n }\n }\n }\n\n public setVertical(isVertical: boolean): void {\n if (isVertical) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n }\n }\n\n public setStretch(value: boolean): void {\n if (value) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n }\n\n const toggles = this._getButtonToggleElements();\n toggles.forEach(toggle => {\n if (value) {\n toggle.setAttribute('stretch', '');\n } else {\n toggle.removeAttribute('stretch');\n }\n });\n }\n\n public setDense(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.dense = value);\n }\n\n public setDisabled(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.disabled = value);\n }\n\n public getSelectedValues(): any[] {\n const toggles = this._getButtonToggleElements();\n return toggles.filter(t => t.selected).map(t => t.value);\n }\n\n public applyValues(values: any[]): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.selected = values.indexOf(t.value) >= 0);\n }\n\n public createOptions(options: IButtonToggleOption[]): void {\n removeAllChildren(this._component);\n options.forEach(o => {\n this._component.appendChild(this._createButtonToggle(o));\n });\n }\n\n private _createButtonToggle(option: IButtonToggleOption): IButtonToggleComponent {\n const buttonToggle = document.createElement(BUTTON_TOGGLE_CONSTANTS.elementName) as IButtonToggleComponent;\n buttonToggle.value = option.value;\n\n if (option.label) {\n buttonToggle.textContent = option.label;\n } else if (option.icon) {\n const icon = document.createElement('i');\n icon.textContent = option.icon;\n icon.classList.add(ICON_CLASS_NAME);\n icon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(icon);\n }\n\n if (option.leadingIcon) {\n const leadingIcon = document.createElement('i');\n leadingIcon.slot = 'leading';\n leadingIcon.textContent = option.leadingIcon;\n leadingIcon.classList.add(ICON_CLASS_NAME);\n leadingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(leadingIcon);\n }\n\n if (option.trailingIcon) {\n const trailingIcon = document.createElement('i');\n trailingIcon.slot = 'trailing';\n trailingIcon.textContent = option.trailingIcon;\n trailingIcon.classList.add(ICON_CLASS_NAME);\n trailingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(trailingIcon);\n }\n\n return buttonToggle;\n }\n\n private _getButtonToggleElements(): IButtonToggleComponent[] {\n return Array.from(this._component.querySelectorAll(BUTTON_TOGGLE_CONSTANTS.elementName));\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS, IButtonToggleSelectEventData } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupFoundation extends ICustomElementFoundation {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n dense: boolean;\n disabled: boolean;\n options: IButtonToggleOption[];\n}\n\nexport class ButtonToggleGroupFoundation implements IButtonToggleGroupFoundation {\n private _isInitialized = false;\n private _multiple = false;\n private _mandatory = false;\n private _vertical = false;\n private _stretch = false;\n private _dense = false;\n private _disabled = false;\n private _options: IButtonToggleOption[] = [];\n private _values: any[] = [];\n private _originalValue: any;\n private _selectListener: (evt: CustomEvent<IButtonToggleSelectEventData>) => void;\n private _slotListener: () => void;\n\n constructor(private _adapter: IButtonToggleGroupAdapter) {\n this._selectListener = evt => this._onSelect(evt);\n this._slotListener = () => this._synchronize();\n }\n\n public initialize(): void {\n if (this._options && this._options.length) {\n this._applyOptions(false);\n }\n\n this._adapter.addListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.addSlotChangeListener(this._slotListener);\n this._adapter.setVertical(this._vertical);\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._adapter.removeListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.removeSlotChangeListener(this._slotListener);\n }\n\n private _synchronize(): void {\n if (!this._multiple) {\n const selectedValues = this._adapter.getSelectedValues().concat(this._values);\n this.value = selectedValues.length ? selectedValues[selectedValues.length - 1] : null;\n } else {\n const selectedValues = new Set(this._adapter.getSelectedValues().concat(this._values));\n this._applyValue(Array.from(selectedValues));\n }\n }\n\n private _onSelect(evt: CustomEvent<IButtonToggleSelectEventData>): void {\n const target = evt.target as IButtonToggleComponent;\n\n // When in mandatory mode we need to ensure at least one element is selected. If there are no selections\n // then we need to reselect the target toggle because it was deselected\n if (this._mandatory) {\n const values = this._adapter.getSelectedValues();\n if (!values.length) {\n target.selected = true;\n return;\n }\n }\n\n // When not in multiple mode, we deselect all toggles, except for the one that was just changed\n if (!this._multiple) {\n this._adapter.deselect(target);\n }\n\n this._adapter.applyAdjacentSelections(this._vertical);\n this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());\n }\n\n private _getValue(): any {\n const selections = this._adapter.getSelectedValues();\n return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] ?? null;\n }\n\n private _applyValue(value: any): void {\n let values = value instanceof Array ? value : [value];\n if (!this._multiple && values.length > 1) {\n values = values[0];\n }\n this._values = values;\n this._adapter.applyValues(values);\n if (this._multiple) {\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n\n private _applyOptions(init = true): void {\n if (this._options) {\n this._adapter.createOptions(this._options);\n\n if (init) {\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n }\n\n public get value(): any {\n if (!this._isInitialized) {\n return this._originalValue;\n }\n return this._getValue();\n }\n public set value(value: any) {\n this._originalValue = value;\n this._applyValue(value);\n }\n\n public get multiple(): boolean {\n return this._multiple;\n }\n public set multiple(value: boolean) {\n if (this._multiple !== value) {\n this._multiple = value;\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE, this._multiple as any);\n }\n }\n\n public get mandatory(): boolean {\n return this._mandatory;\n }\n public set mandatory(value: boolean) {\n if (this._mandatory !== value) {\n this._mandatory = value;\n if (this._mandatory) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n }\n }\n }\n\n public get vertical(): boolean {\n return this._vertical;\n }\n public set vertical(value: boolean) {\n if (this._vertical !== value) {\n this._vertical = value;\n this._adapter.setVertical(this._vertical);\n this._adapter.applyAdjacentSelections(this._vertical);\n if (this._vertical) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n }\n }\n }\n\n public get stretch(): boolean {\n return this._stretch;\n }\n public set stretch(value: boolean) {\n if (this._stretch !== value) {\n this._stretch = value;\n this._adapter.setStretch(this._stretch);\n if (this._stretch) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n }\n }\n }\n\n public get dense(): boolean {\n return this._dense;\n }\n public set dense(value: boolean) {\n if (this._dense !== value) {\n this._dense = value;\n this._adapter.setDense(this._dense);\n if (this._dense) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n }\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._adapter.setDisabled(this._disabled);\n if (this._disabled) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n }\n }\n }\n\n public get options(): IButtonToggleOption[] {\n return this._options.map(o => ({ ...o }));\n }\n public set options(value: IButtonToggleOption[]) {\n this._options = value.map(o => ({ ...o }));\n if (this._isInitialized) {\n this._applyOptions();\n }\n }\n}\n", "import { attachShadowTemplate, coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { ButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { ButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\nimport { ButtonToggleGroupFoundation } from './button-toggle-group-foundation';\n\nconst template = '<template><div class=\\\"forge-button-toggle-group\\\" role=\\\"group\\\" aria-label=\\\"Button group\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = '.forge-button-toggle-group{display:-webkit-box;display:flex}.forge-button-toggle-group ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px}.forge-button-toggle-group ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.forge-button-toggle-group--vertical ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:1px;--forge-button-toggle-border-bottom-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group--vertical ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px}.forge-button-toggle-group--vertical ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group ::slotted(:only-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--stretch{width:100%}:host{display:block}:host([hidden]){display:none}';\n\nexport interface IButtonToggleGroupComponent extends IBaseComponent {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n disabled: boolean;\n dense: boolean;\n options: IButtonToggleOption[];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-button-toggle-group': IButtonToggleGroupComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-button-toggle-group>` custom element.\n * \n * @tag forge-button-toggle-group\n */\n@CustomElement({\n name: BUTTON_TOGGLE_GROUP_CONSTANTS.elementName,\n dependencies: [ButtonToggleComponent]\n})\nexport class ButtonToggleGroupComponent extends BaseComponent implements IButtonToggleGroupComponent {\n public static get observedAttributes(): string[] {\n return [\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE\n ];\n }\n\n private _foundation: ButtonToggleGroupFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ButtonToggleGroupFoundation(new ButtonToggleGroupAdapter(this));\n }\n\n public initializedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE:\n this.multiple = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY:\n this.mandatory = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL:\n this.vertical = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH:\n this.stretch = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public value: any;\n\n @FoundationProperty()\n public multiple: boolean;\n\n @FoundationProperty()\n public mandatory: boolean;\n\n @FoundationProperty()\n public vertical: boolean;\n\n @FoundationProperty()\n public stretch: boolean;\n\n @FoundationProperty()\n public dense: boolean;\n\n @FoundationProperty()\n public disabled: boolean;\n\n @FoundationProperty()\n public options: IButtonToggleOption[];\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { ButtonToggleGroupComponent } from './button-toggle-group';\n\nexport * from './button-toggle-group-adapter';\nexport * from './button-toggle-group-constants';\nexport * from './button-toggle-group-foundation';\nexport * from './button-toggle-group';\n\nexport function defineButtonToggleGroupComponent(): void {\n defineCustomElement(ButtonToggleGroupComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -173,4 +173,4 @@ export {
173
173
  TextFieldComponent,
174
174
  defineTextFieldComponent
175
175
  };
176
- //# sourceMappingURL=chunk.YCW56AVX.js.map
176
+ //# sourceMappingURL=chunk.FJJVIMZ2.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/text-field/text-field-adapter.ts", "../../src/text-field/text-field-foundation.ts", "../../src/text-field/text-field.ts", "../../src/text-field/index.ts"],
4
- "sourcesContent": ["import { addClass, listenOwnProperty, getActiveElement, createElementAttributeObserver } from '@tylertech/forge-core';\nimport { ITextFieldComponent } from './text-field';\nimport { FieldAdapter, IFieldAdapter } from '../field/field-adapter';\nimport { TEXT_FIELD_CONSTANTS } from './text-field-constants';\nimport { FIELD_CONSTANTS } from '../field/field-constants';\n\nexport interface ITextFieldAdapter extends IFieldAdapter {\n detectTextarea(): void;\n}\n\nexport class TextFieldAdapter extends FieldAdapter implements ITextFieldAdapter {\n protected _inputElements: Array<HTMLInputElement|HTMLTextAreaElement>;\n protected _inputMutationObserverInstances: MutationObserver[] = [];\n\n constructor(component: ITextFieldComponent) {\n super(component);\n }\n\n public initialize(required: boolean): void {\n super.initialize(required, TEXT_FIELD_CONSTANTS.selectors.ROOT);\n this._inputElements = Array.from(this._component.querySelectorAll('input:not([type=checkbox]):not([type=radio]), textarea'));\n if (this._inputElements.length > 1) {\n this._handleMultiInputs();\n }\n }\n\n public override destroy(): void {\n super.destroy();\n if (this._inputMutationObserverInstances) {\n this._inputMutationObserverInstances.forEach(mo => mo.disconnect());\n }\n }\n\n public detectTextarea(): void {\n this._applyToInputs(input => {\n if (input instanceof HTMLTextAreaElement) {\n this._rootElement.classList.add(TEXT_FIELD_CONSTANTS.classes.TEXTAREA);\n } else {\n this._rootElement.classList.remove(TEXT_FIELD_CONSTANTS.classes.TEXTAREA);\n }\n });\n }\n\n public override ensureLabelOrder(): void {\n if (this._labelElement) {\n const children = Array.from(this._component.children);\n if (children.length > 1 && children.indexOf(this._labelElement) < children.indexOf(this._inputElements[0])) {\n this._component.appendChild(this._labelElement);\n }\n }\n }\n\n public override addInputListener(type: string, listener: (evt: Event) => void): void {\n this._applyToInputs(input => input.addEventListener(type, listener));\n }\n public override removeInputListener(type: string, listener: (evt: Event) => void): void {\n if (this._inputElements && this._inputElements.length > 0) {\n this._applyToInputs(input => input.removeEventListener(type, listener));\n }\n }\n\n public override setValueChangedListener(context: any, listener: (value: any) => void): void {\n this.destroyValueChangeListener();\n this._applyToInputs(input => {\n const destroyListener = listenOwnProperty(context, input, 'value', listener);\n this._valueChangeListeners.push(destroyListener);\n });\n }\n\n public override inputHasValue(): boolean {\n return this._inputsSome(input => input.value ? input.value.trim().length > 0 : false);\n }\n\n public override hasPlaceholder(): boolean {\n return this._inputsSome(input => input.placeholder ? input.placeholder.trim().length > 0 : false);\n }\n\n public override inputHasFocus(): boolean {\n return this._inputsSome(input => input === getActiveElement());\n }\n\n public override setInputClass(className: string): void {\n this._applyToInputs(input => input.classList.add(className));\n }\n\n public override removeInputClass(className: string): void {\n this._applyToInputs(input => input.classList.remove(className));\n }\n\n public override setInputAttributeObserver(listener: (name: string, value: string) => void): void {\n this._applyToInputs(input => {\n const observer = createElementAttributeObserver(input, listener, FIELD_CONSTANTS.observedInputAttributes);\n this._inputMutationObserverInstances.push(observer);\n });\n }\n\n public override isDisabled(): boolean {\n return this._inputsSome(input => input.hasAttribute('disabled'));\n }\n\n public override isReadonly(): boolean {\n return this._inputsSome(input => input.hasAttribute('readonly'));\n }\n\n protected _inputsSome(action: (input: HTMLInputElement) => boolean): boolean {\n return this._inputElements.some(action);\n }\n\n protected _applyToInputs(action: (input: HTMLInputElement, index: number) => void): void {\n this._inputElements.forEach(action);\n }\n\n protected _handleMultiInputs(): void {\n addClass(TEXT_FIELD_CONSTANTS.classes.MULTI_INPUT, this._rootElement);\n this._applyToInputs((input, index) => {\n input.setAttribute(`${TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT}-${index.toString()}`, '');\n if (index % 2 !== 1) {\n Promise.resolve().then(() => input.insertAdjacentElement('afterend', this._createSeperatorElement()));\n }\n });\n }\n\n private _createSeperatorElement(): HTMLElement {\n const divider = document.createElement('span');\n divider.setAttribute(TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT_SEPARATOR, '');\n divider.textContent = '-';\n return divider;\n }\n}\n", "import { ITextFieldAdapter } from './text-field-adapter';\nimport { FieldFoundation, IFieldFoundation } from '../field/field-foundation';\n\nexport interface ITextFieldFoundation extends IFieldFoundation {}\n\nexport class TextFieldFoundation extends FieldFoundation implements ITextFieldFoundation {\n constructor(protected _adapter: ITextFieldAdapter) {\n super(_adapter);\n }\n\n public initialize(): void {\n super.initialize();\n this._adapter.detectTextarea();\n }\n}\n", "import { CustomElement, attachShadowTemplate } from '@tylertech/forge-core';\nimport { TextFieldAdapter } from './text-field-adapter';\nimport { TextFieldFoundation } from './text-field-foundation';\nimport { TEXT_FIELD_CONSTANTS } from './text-field-constants';\nimport { FieldComponent, IFieldComponent } from '../field/field';\n\nconst template = '<template><div class=\\\"forge-text-field__wrapper\\\" part=\\\"root\\\"><div class=\\\"forge-text-field forge-field\\\" part=\\\"container\\\"><div class=\\\"forge-text-field__leading-container\\\" part=\\\"leading-container\\\"><slot name=\\\"leading\\\"></slot></div><div class=\\\"forge-field__label-input-container\\\" part=\\\"label-input-container\\\"><slot></slot><slot name=\\\"label\\\"></slot></div><slot name=\\\"trailing\\\"></slot><div class=\\\"forge-field__addon-end-container\\\" part=\\\"addon-end-container\\\"><slot name=\\\"addon-end\\\"></slot></div></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-field::before{content:\\\"\\\";display:-webkit-box;display:flex;position:absolute;top:0;right:0;left:0;z-index:-1;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:100%;height:100%;pointer-events:none;border-style:solid;border-width:1px;-webkit-transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);background-color:transparent;background-color:var(--forge-text-field-theme-background,transparent);text-align:left}.forge-field[dir=rtl]::before,[dir=rtl] .forge-field::before{text-align:right}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused)::before{border-color:rgba(0,0,0,.38);border-color:var(--mdc-theme-text-icon-on-background,rgba(0,0,0,.38))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused):hover::before{border-color:rgba(0,0,0,.87);border-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled)::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5)}.forge-field--invalid:not(.forge-field--disabled)::before{border-color:#b00020;border-color:var(--mdc-theme-error,#b00020)}.forge-field--invalid:not(.forge-field--disabled):not(.forge-field--focused):hover::before{border-color:#db8a98;border-color:var(--forge-theme-error-hover,#db8a98)}.forge-field--disabled::before{border-color:rgba(0,0,0,.12);border-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--shape-rounded){border-radius:4px}.forge-field:not(.forge-field--shape-rounded)::before{border-radius:4px}.forge-field--shape-rounded{border-radius:28px}.forge-field--shape-rounded::before{border-radius:28px}.forge-field--disabled::before{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5)}.forge-field--focused::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5);border-width:2px}.forge-field__label-input-container{position:relative;-webkit-box-flex:1;flex:1 1 0.0001px;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;min-width:0}.forge-field ::slotted(label){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65));pointer-events:none;right:0;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight,400);letter-spacing:.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform,inherit);font-size:var(--mdc-typography-subtitle1-font-size, 1rem);position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.1rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform;-webkit-transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1)}.forge-field ::slotted(label[dir=rtl]),[dir=rtl] .forge-field ::slotted(label){right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.forge-field--dense:not(.forge-field--roomy) ::slotted(label){display:none}.forge-field--required ::slotted(label)::after{content:none}.forge-field--required ::slotted(label)::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:4px}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){font-size:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){font-size:1rem}.forge-field--disabled ::slotted(label){color:rgba(0,0,0,.38);color:var(--forge-theme-label-disabled-on-background,rgba(0,0,0,.38))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){top:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){top:1.285rem}.forge-field:not(.forge-field--shape-rounded):not(.forge-field--leading) ::slotted(label){left:12px!important}.forge-field--shape-rounded:not(.forge-field--leading) ::slotted(label){left:32px!important}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end):not(.forge-field--shape-rounded) ::slotted(label){padding-right:12px}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end).forge-field--shape-rounded ::slotted(label){padding-right:32px}.forge-field ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65))}.forge-field--disabled ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.54rem) scale(.8125);transform:translateY(-.54rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.72rem) scale(.8125);transform:translateY(-.72rem) scale(.8125);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.62rem) scale(1);transform:translateY(-.62rem) scale(1);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.8rem) scale(1);transform:translateY(-.8rem) scale(1);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.62rem) scale(.8125);transform:translateY(-.62rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.8rem) scale(.8125);transform:translateY(-.8rem) scale(.8125);cursor:auto}.forge-field ::slotted(input){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);border:none;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;line-height:normal;min-width:0}.forge-field ::slotted(input)::-webkit-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-moz-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):invalid{-webkit-box-shadow:none;box-shadow:none}.forge-field ::slotted(input):-webkit-autofill{z-index:auto!important}.forge-field:not(.forge-field--disabled) ::slotted(input){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--disabled ::slotted(input){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6));cursor:not-allowed}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){font-size:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){font-size:1rem}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){font-size:.875rem}.forge-field ::slotted(input){padding:0 12px}.forge-field--label ::slotted(input){padding-top:24px}.forge-field--roomy.forge-field--label ::slotted(input){padding-top:29px}.forge-field--shape-rounded:not(.forge-field--leading) ::slotted(input){padding-left:32px}.forge-field--leading ::slotted(input){padding-left:0}.forge-field--label ::slotted(input){padding-bottom:3px}.forge-field--roomy.forge-field--label ::slotted(input){padding-bottom:8px}.forge-field--shape-rounded:not(.forge-field--trailing):not(.forge-field--addon-end) ::slotted(input){padding-right:32px}.forge-field--addon-end ::slotted(input),.forge-field--trailing ::slotted(input){padding-right:0}.forge-field~::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);display:block;height:auto}.forge-field~::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field--roomy:not(.forge-field--dense)~::slotted([slot=helper-text]){font-size:.875rem}.forge-field--dense:not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field~::slotted([slot=helper-text]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled)~::slotted([slot=helper-text]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field:not(.forge-field--shape-rounded)~::slotted([slot=helper-text]){margin-left:12px}.forge-field--shape-rounded~::slotted([slot=helper-text]){margin-left:32px}.forge-field ::slotted([slot=leading]){display:-webkit-box;display:flex;align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=leading]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=leading]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=leading]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=leading]){margin:0 4px}.forge-field ::slotted([slot=leading]:not(forge-icon-button)){padding:6px}.forge-field ::slotted([slot=trailing]){align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=trailing]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=trailing]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=trailing]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=trailing]){margin:0 4px}.forge-field ::slotted([slot=trailing]:not(forge-icon-button)){padding:6px}.forge-field__addon-end-container{display:none}.forge-field--addon-end .forge-field__addon-end-container{height:100%;width:auto;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;padding:0 4px;border-left-width:1px;border-left-style:solid;-webkit-transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1)}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.54);border-left-color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container:hover{border-left-color:rgba(0,0,0,.87);border-left-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#3f51b5;border-left-color:var(--mdc-theme-primary,#3f51b5)}.forge-field.forge-field--invalid:not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#b00020;border-left-color:var(--mdc-theme-error,#b00020)}.forge-field.forge-field--invalid:not(.forge-field--focused):not(.forge-field--disabled) .forge-field__addon-end-container:hover{border-left-color:#db8a98;border-left-color:var(--forge-theme-error-hover,#db8a98)}.forge-field.forge-field--disabled .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.12);border-left-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=addon-end]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=addon-end]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=addon-end]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-text-field{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;z-index:1;z-index:var(--forge-z-index-surface,1);margin-top:0;margin-top:var(--forge-text-field-margin-top,0)}.forge-text-field.forge-field--disabled{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5);cursor:not-allowed}.forge-text-field:not(.forge-text-field--textarea):not(.forge-field--dense):not(.forge-field--roomy){height:3rem;height:var(--forge-text-field-height,3rem)}.forge-text-field:not(.forge-text-field--textarea).forge-field--roomy:not(.forge-field--dense){height:3.5rem;height:var(--forge-text-field-height,3.5rem)}.forge-text-field:not(.forge-text-field--textarea).forge-field--dense:not(.forge-field--roomy){height:1.5rem;height:var(--forge-text-field-height,1.5rem)}.forge-text-field__leading-container{display:-webkit-box;display:flex;align-self:center}.forge-text-field--multi-input ::slotted(input:first-of-type){padding-right:0;max-width:110px;min-width:110px;width:110px}.forge-text-field--multi-input ::slotted(input:last-of-type)::-webkit-input-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type)::-moz-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type):-ms-input-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type)::-ms-input-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type)::placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted([data-forge-multi-input-separator]){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));border:transparent}.forge-text-field--multi-input.forge-field--label ::slotted([data-forge-multi-input-separator]){margin:20px 0 0 4px}.forge-text-field--multi-input:not(.forge-field--label) ::slotted([data-forge-multi-input-separator]){margin:0 0 0 4px}.forge-text-field.forge-text-field--textarea{height:auto;padding-right:2px;min-height:3rem;min-height:var(--forge-text-field-height,3rem)}.forge-text-field.forge-text-field--textarea ::slotted(textarea){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-body1-font-size, 1rem);line-height:1.5rem;line-height:var(--mdc-typography-body1-line-height, 1.5rem);font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);border:none;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;line-height:normal;min-width:0;font-size:1rem;margin:28px 0 0;padding:0 12px 8px;overflow:auto;resize:vertical}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::-webkit-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::-moz-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea):-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea):invalid{-webkit-box-shadow:none;box-shadow:none}.forge-text-field.forge-text-field--textarea ::slotted(textarea):-webkit-autofill{z-index:auto!important}.forge-text-field.forge-text-field--textarea:not(.forge-field--disabled) ::slotted(textarea){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-text-field.forge-text-field--textarea.forge-field--disabled ::slotted(textarea){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6));cursor:not-allowed}:host{display:block;contain:layout}:host([hidden]){display:none}';\n\nexport interface ITextFieldComponent extends IFieldComponent {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-text-field': ITextFieldComponent;\n }\n}\n\n@CustomElement({\n name: TEXT_FIELD_CONSTANTS.elementName\n})\nexport class TextFieldComponent extends FieldComponent<TextFieldFoundation> implements ITextFieldComponent {\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new TextFieldFoundation(new TextFieldAdapter(this));\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { TextFieldComponent } from './text-field';\n\nexport * from './text-field-adapter';\nexport * from './text-field-component-delegate';\nexport * from './text-field-constants';\nexport * from './text-field-foundation';\nexport * from './text-field';\n\nexport function defineTextFieldComponent(): void {\n defineCustomElement(TextFieldComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { addClass, listenOwnProperty, getActiveElement, createElementAttributeObserver } from '@tylertech/forge-core';\nimport { ITextFieldComponent } from './text-field';\nimport { FieldAdapter, IFieldAdapter } from '../field/field-adapter';\nimport { TEXT_FIELD_CONSTANTS } from './text-field-constants';\nimport { FIELD_CONSTANTS } from '../field/field-constants';\n\nexport interface ITextFieldAdapter extends IFieldAdapter {\n detectTextarea(): void;\n}\n\nexport class TextFieldAdapter extends FieldAdapter implements ITextFieldAdapter {\n protected _inputElements: Array<HTMLInputElement|HTMLTextAreaElement>;\n protected _inputMutationObserverInstances: MutationObserver[] = [];\n\n constructor(component: ITextFieldComponent) {\n super(component);\n }\n\n public initialize(required: boolean): void {\n super.initialize(required, TEXT_FIELD_CONSTANTS.selectors.ROOT);\n this._inputElements = Array.from(this._component.querySelectorAll('input:not([type=checkbox]):not([type=radio]), textarea'));\n if (this._inputElements.length > 1) {\n this._handleMultiInputs();\n }\n }\n\n public override destroy(): void {\n super.destroy();\n if (this._inputMutationObserverInstances) {\n this._inputMutationObserverInstances.forEach(mo => mo.disconnect());\n }\n }\n\n public detectTextarea(): void {\n this._applyToInputs(input => {\n if (input instanceof HTMLTextAreaElement) {\n this._rootElement.classList.add(TEXT_FIELD_CONSTANTS.classes.TEXTAREA);\n } else {\n this._rootElement.classList.remove(TEXT_FIELD_CONSTANTS.classes.TEXTAREA);\n }\n });\n }\n\n public override ensureLabelOrder(): void {\n if (this._labelElement) {\n const children = Array.from(this._component.children);\n if (children.length > 1 && children.indexOf(this._labelElement) < children.indexOf(this._inputElements[0])) {\n this._component.appendChild(this._labelElement);\n }\n }\n }\n\n public override addInputListener(type: string, listener: (evt: Event) => void): void {\n this._applyToInputs(input => input.addEventListener(type, listener));\n }\n public override removeInputListener(type: string, listener: (evt: Event) => void): void {\n if (this._inputElements && this._inputElements.length > 0) {\n this._applyToInputs(input => input.removeEventListener(type, listener));\n }\n }\n\n public override setValueChangedListener(context: any, listener: (value: any) => void): void {\n this.destroyValueChangeListener();\n this._applyToInputs(input => {\n const destroyListener = listenOwnProperty(context, input, 'value', listener);\n this._valueChangeListeners.push(destroyListener);\n });\n }\n\n public override inputHasValue(): boolean {\n return this._inputsSome(input => input.value ? input.value.trim().length > 0 : false);\n }\n\n public override hasPlaceholder(): boolean {\n return this._inputsSome(input => input.placeholder ? input.placeholder.trim().length > 0 : false);\n }\n\n public override inputHasFocus(): boolean {\n return this._inputsSome(input => input === getActiveElement());\n }\n\n public override setInputClass(className: string): void {\n this._applyToInputs(input => input.classList.add(className));\n }\n\n public override removeInputClass(className: string): void {\n this._applyToInputs(input => input.classList.remove(className));\n }\n\n public override setInputAttributeObserver(listener: (name: string, value: string) => void): void {\n this._applyToInputs(input => {\n const observer = createElementAttributeObserver(input, listener, FIELD_CONSTANTS.observedInputAttributes);\n this._inputMutationObserverInstances.push(observer);\n });\n }\n\n public override isDisabled(): boolean {\n return this._inputsSome(input => input.hasAttribute('disabled'));\n }\n\n public override isReadonly(): boolean {\n return this._inputsSome(input => input.hasAttribute('readonly'));\n }\n\n protected _inputsSome(action: (input: HTMLInputElement) => boolean): boolean {\n return this._inputElements.some(action);\n }\n\n protected _applyToInputs(action: (input: HTMLInputElement, index: number) => void): void {\n this._inputElements.forEach(action);\n }\n\n protected _handleMultiInputs(): void {\n addClass(TEXT_FIELD_CONSTANTS.classes.MULTI_INPUT, this._rootElement);\n this._applyToInputs((input, index) => {\n input.setAttribute(`${TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT}-${index.toString()}`, '');\n if (index % 2 !== 1) {\n Promise.resolve().then(() => input.insertAdjacentElement('afterend', this._createSeperatorElement()));\n }\n });\n }\n\n private _createSeperatorElement(): HTMLElement {\n const divider = document.createElement('span');\n divider.setAttribute(TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT_SEPARATOR, '');\n divider.textContent = '-';\n return divider;\n }\n}\n", "import { ITextFieldAdapter } from './text-field-adapter';\nimport { FieldFoundation, IFieldFoundation } from '../field/field-foundation';\n\nexport interface ITextFieldFoundation extends IFieldFoundation {}\n\nexport class TextFieldFoundation extends FieldFoundation implements ITextFieldFoundation {\n constructor(protected _adapter: ITextFieldAdapter) {\n super(_adapter);\n }\n\n public initialize(): void {\n super.initialize();\n this._adapter.detectTextarea();\n }\n}\n", "import { CustomElement, attachShadowTemplate } from '@tylertech/forge-core';\nimport { TextFieldAdapter } from './text-field-adapter';\nimport { TextFieldFoundation } from './text-field-foundation';\nimport { TEXT_FIELD_CONSTANTS } from './text-field-constants';\nimport { FieldComponent, IFieldComponent } from '../field/field';\n\nconst template = '<template><div class=\\\"forge-text-field__wrapper\\\" part=\\\"root\\\"><div class=\\\"forge-text-field forge-field\\\" part=\\\"container\\\"><div class=\\\"forge-text-field__leading-container\\\" part=\\\"leading-container\\\"><slot name=\\\"leading\\\"></slot></div><div class=\\\"forge-field__label-input-container\\\" part=\\\"label-input-container\\\"><slot></slot><slot name=\\\"label\\\"></slot></div><slot name=\\\"trailing\\\"></slot><div class=\\\"forge-field__addon-end-container\\\" part=\\\"addon-end-container\\\"><slot name=\\\"addon-end\\\"></slot></div></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-field::before{content:\\\"\\\";display:-webkit-box;display:flex;position:absolute;top:0;right:0;left:0;z-index:-1;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:100%;height:100%;pointer-events:none;border-style:solid;border-width:1px;-webkit-transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);background-color:transparent;background-color:var(--forge-text-field-theme-background,transparent);text-align:left}.forge-field[dir=rtl]::before,[dir=rtl] .forge-field::before{text-align:right}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused)::before{border-color:rgba(0,0,0,.38);border-color:var(--mdc-theme-text-icon-on-background,rgba(0,0,0,.38))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused):hover::before{border-color:rgba(0,0,0,.87);border-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled)::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5)}.forge-field--invalid:not(.forge-field--disabled)::before{border-color:#b00020;border-color:var(--mdc-theme-error,#b00020)}.forge-field--invalid:not(.forge-field--disabled):not(.forge-field--focused):hover::before{border-color:#db8a98;border-color:var(--forge-theme-error-hover,#db8a98)}.forge-field--disabled::before{border-color:rgba(0,0,0,.12);border-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--shape-rounded){border-radius:4px}.forge-field:not(.forge-field--shape-rounded)::before{border-radius:4px}.forge-field--shape-rounded{border-radius:28px}.forge-field--shape-rounded::before{border-radius:28px}.forge-field--disabled::before{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5)}.forge-field--focused::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5);border-width:2px}.forge-field__label-input-container{position:relative;-webkit-box-flex:1;flex:1 1 0.0001px;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;min-width:0}.forge-field ::slotted(label){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65));pointer-events:none;right:0;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight,400);letter-spacing:.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform,inherit);font-size:var(--mdc-typography-subtitle1-font-size, 1rem);position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.1rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform;-webkit-transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1)}.forge-field ::slotted(label[dir=rtl]),[dir=rtl] .forge-field ::slotted(label){right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.forge-field--dense:not(.forge-field--roomy) ::slotted(label){display:none}.forge-field--required ::slotted(label)::after{content:none}.forge-field--required ::slotted(label)::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:4px}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){font-size:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){font-size:1rem}.forge-field--disabled ::slotted(label){color:rgba(0,0,0,.38);color:var(--forge-theme-label-disabled-on-background,rgba(0,0,0,.38))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){top:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){top:1.285rem}.forge-field:not(.forge-field--shape-rounded):not(.forge-field--leading) ::slotted(label){left:12px!important}.forge-field--shape-rounded:not(.forge-field--leading) ::slotted(label){left:32px!important}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end):not(.forge-field--shape-rounded) ::slotted(label){padding-right:12px}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end).forge-field--shape-rounded ::slotted(label){padding-right:32px}.forge-field ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65))}.forge-field--disabled ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.54rem) scale(.8125);transform:translateY(-.54rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.72rem) scale(.8125);transform:translateY(-.72rem) scale(.8125);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.62rem) scale(1);transform:translateY(-.62rem) scale(1);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.8rem) scale(1);transform:translateY(-.8rem) scale(1);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.62rem) scale(.8125);transform:translateY(-.62rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.8rem) scale(.8125);transform:translateY(-.8rem) scale(.8125);cursor:auto}.forge-field ::slotted(input){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);border:none;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;line-height:normal;min-width:0}.forge-field ::slotted(input)::-webkit-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-moz-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):invalid{-webkit-box-shadow:none;box-shadow:none}.forge-field ::slotted(input):-webkit-autofill{z-index:auto!important}.forge-field:not(.forge-field--disabled) ::slotted(input){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--disabled ::slotted(input){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6));cursor:not-allowed}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){font-size:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){font-size:1rem}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){font-size:.875rem}.forge-field ::slotted(input){padding:0 12px}.forge-field--label ::slotted(input){padding-top:24px}.forge-field--roomy.forge-field--label ::slotted(input){padding-top:29px}.forge-field--shape-rounded:not(.forge-field--leading) ::slotted(input){padding-left:32px}.forge-field--leading ::slotted(input){padding-left:0}.forge-field--label ::slotted(input){padding-bottom:3px}.forge-field--roomy.forge-field--label ::slotted(input){padding-bottom:8px}.forge-field--shape-rounded:not(.forge-field--trailing):not(.forge-field--addon-end) ::slotted(input){padding-right:32px}.forge-field--addon-end ::slotted(input),.forge-field--trailing ::slotted(input){padding-right:0}.forge-field~::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);display:block;height:auto}.forge-field~::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field--roomy:not(.forge-field--dense)~::slotted([slot=helper-text]){font-size:.875rem}.forge-field--dense:not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field~::slotted([slot=helper-text]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled)~::slotted([slot=helper-text]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field:not(.forge-field--shape-rounded)~::slotted([slot=helper-text]){margin-left:12px}.forge-field--shape-rounded~::slotted([slot=helper-text]){margin-left:32px}.forge-field ::slotted([slot=leading]){display:-webkit-box;display:flex;align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=leading]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=leading]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=leading]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=leading]){margin:0 4px}.forge-field ::slotted([slot=leading]:not(forge-icon-button)){padding:6px}.forge-field ::slotted([slot=trailing]){align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=trailing]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=trailing]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=trailing]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=trailing]){margin:0 4px}.forge-field ::slotted([slot=trailing]:not(forge-icon-button)){padding:6px}.forge-field__addon-end-container{display:none}.forge-field--addon-end .forge-field__addon-end-container{height:100%;width:auto;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;padding:0 4px;border-left-width:1px;border-left-style:solid;-webkit-transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1)}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.54);border-left-color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container:hover{border-left-color:rgba(0,0,0,.87);border-left-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#3f51b5;border-left-color:var(--mdc-theme-primary,#3f51b5)}.forge-field.forge-field--invalid:not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#b00020;border-left-color:var(--mdc-theme-error,#b00020)}.forge-field.forge-field--invalid:not(.forge-field--focused):not(.forge-field--disabled) .forge-field__addon-end-container:hover{border-left-color:#db8a98;border-left-color:var(--forge-theme-error-hover,#db8a98)}.forge-field.forge-field--disabled .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.12);border-left-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=addon-end]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=addon-end]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=addon-end]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-text-field{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;z-index:1;z-index:var(--forge-z-index-surface,1);margin-top:0;margin-top:var(--forge-text-field-margin-top,0)}.forge-text-field.forge-field--disabled{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5);cursor:not-allowed}.forge-text-field:not(.forge-text-field--textarea):not(.forge-field--dense):not(.forge-field--roomy){height:3rem;height:var(--forge-text-field-height,3rem)}.forge-text-field:not(.forge-text-field--textarea).forge-field--roomy:not(.forge-field--dense){height:3.5rem;height:var(--forge-text-field-height,3.5rem)}.forge-text-field:not(.forge-text-field--textarea).forge-field--dense:not(.forge-field--roomy){height:1.5rem;height:var(--forge-text-field-height,1.5rem)}.forge-text-field__leading-container{display:-webkit-box;display:flex;align-self:center}.forge-text-field--multi-input ::slotted(input:first-of-type){padding-right:0;max-width:110px;min-width:110px;width:110px}.forge-text-field--multi-input ::slotted(input:last-of-type)::-webkit-input-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type)::-moz-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type):-ms-input-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type)::-ms-input-placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted(input:last-of-type)::placeholder{padding-left:6px}.forge-text-field--multi-input ::slotted([data-forge-multi-input-separator]){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));border:transparent}.forge-text-field--multi-input.forge-field--label ::slotted([data-forge-multi-input-separator]){margin:20px 0 0 4px}.forge-text-field--multi-input:not(.forge-field--label) ::slotted([data-forge-multi-input-separator]){margin:0 0 0 4px}.forge-text-field.forge-text-field--textarea{height:auto;padding-right:2px;min-height:3rem;min-height:var(--forge-text-field-height,3rem)}.forge-text-field.forge-text-field--textarea ::slotted(textarea){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-body1-font-size, 1rem);line-height:1.5rem;line-height:var(--mdc-typography-body1-line-height, 1.5rem);font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);border:none;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;line-height:normal;min-width:0;font-size:1rem;margin:28px 0 0;padding:0 12px 8px;overflow:auto;resize:vertical}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::-webkit-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::-moz-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea):-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea)::placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-text-field.forge-text-field--textarea ::slotted(textarea):invalid{-webkit-box-shadow:none;box-shadow:none}.forge-text-field.forge-text-field--textarea ::slotted(textarea):-webkit-autofill{z-index:auto!important}.forge-text-field.forge-text-field--textarea:not(.forge-field--disabled) ::slotted(textarea){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-text-field.forge-text-field--textarea.forge-field--disabled ::slotted(textarea){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6));cursor:not-allowed}:host{display:block;contain:layout}:host([hidden]){display:none}';\n\nexport interface ITextFieldComponent extends IFieldComponent {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-text-field': ITextFieldComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-text-field>` custom element.\n * \n * @tag forge-text-field\n */\n@CustomElement({\n name: TEXT_FIELD_CONSTANTS.elementName\n})\nexport class TextFieldComponent extends FieldComponent<TextFieldFoundation> implements ITextFieldComponent {\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new TextFieldFoundation(new TextFieldAdapter(this));\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { TextFieldComponent } from './text-field';\n\nexport * from './text-field-adapter';\nexport * from './text-field-component-delegate';\nexport * from './text-field-constants';\nexport * from './text-field-foundation';\nexport * from './text-field';\n\nexport function defineTextFieldComponent(): void {\n defineCustomElement(TextFieldComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -294,4 +294,4 @@ export {
294
294
  ProductIconComponent,
295
295
  defineProductIconComponent
296
296
  };
297
- //# sourceMappingURL=chunk.HHHMDDTU.js.map
297
+ //# sourceMappingURL=chunk.FZ6KICMD.js.map