@tylertech/forge 2.5.0 → 2.6.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 (406) hide show
  1. package/custom-elements.json +114521 -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.F2TZX24O.js → chunk.5H65ASFE.js} +74 -74
  46. package/dist/esm/chunks/{chunk.F2TZX24O.js.map → chunk.5H65ASFE.js.map} +0 -0
  47. package/dist/esm/chunks/{chunk.3GRDFAFV.js → chunk.5OYAJ36F.js} +2 -2
  48. package/dist/esm/chunks/{chunk.3GRDFAFV.js.map → chunk.5OYAJ36F.js.map} +0 -0
  49. package/dist/esm/chunks/{chunk.4UKSUUTX.js → chunk.5U6ZT6MC.js} +2 -2
  50. package/dist/esm/chunks/{chunk.4UKSUUTX.js.map → chunk.5U6ZT6MC.js.map} +2 -2
  51. package/dist/esm/chunks/{chunk.ANNBOFGK.js → chunk.65GHMPX2.js} +2 -2
  52. package/dist/esm/chunks/{chunk.ANNBOFGK.js.map → chunk.65GHMPX2.js.map} +2 -2
  53. package/dist/esm/chunks/{chunk.LCVWXB3K.js → chunk.67B6JDOJ.js} +3 -3
  54. package/dist/esm/chunks/{chunk.LCVWXB3K.js.map → chunk.67B6JDOJ.js.map} +2 -2
  55. package/dist/esm/chunks/{chunk.EL6B2ODN.js → chunk.6ZBFCE2A.js} +1 -1
  56. package/dist/esm/chunks/{chunk.EL6B2ODN.js.map → chunk.6ZBFCE2A.js.map} +2 -2
  57. package/dist/esm/chunks/{chunk.VAPJ75PS.js → chunk.7FWTBD6Y.js} +2 -2
  58. package/dist/esm/chunks/{chunk.VAPJ75PS.js.map → chunk.7FWTBD6Y.js.map} +0 -0
  59. package/dist/esm/chunks/{chunk.KCK3G74Y.js → chunk.7UAH67PT.js} +2 -2
  60. package/dist/esm/chunks/{chunk.KCK3G74Y.js.map → chunk.7UAH67PT.js.map} +2 -2
  61. package/dist/esm/chunks/{chunk.VDKKTHAJ.js → chunk.ANME7BKM.js} +1 -1
  62. package/dist/esm/chunks/{chunk.VDKKTHAJ.js.map → chunk.ANME7BKM.js.map} +2 -2
  63. package/dist/esm/chunks/{chunk.O62N7AHR.js → chunk.BEAJZPWS.js} +2 -2
  64. package/dist/esm/chunks/{chunk.O62N7AHR.js.map → chunk.BEAJZPWS.js.map} +0 -0
  65. package/dist/esm/chunks/{chunk.BVGIWAUP.js → chunk.BVGJFMEG.js} +7 -7
  66. package/dist/esm/chunks/{chunk.BVGIWAUP.js.map → chunk.BVGJFMEG.js.map} +2 -2
  67. package/dist/esm/chunks/{chunk.R4UKTXEK.js → chunk.C73AZRT4.js} +4 -4
  68. package/dist/esm/chunks/{chunk.R4UKTXEK.js.map → chunk.C73AZRT4.js.map} +2 -2
  69. package/dist/esm/chunks/{chunk.APUL33GR.js → chunk.CLEUHAZ6.js} +2 -2
  70. package/dist/esm/chunks/{chunk.APUL33GR.js.map → chunk.CLEUHAZ6.js.map} +2 -2
  71. package/dist/esm/chunks/{chunk.SSXNS4NR.js → chunk.CMXAORYF.js} +5 -5
  72. package/dist/esm/chunks/{chunk.SSXNS4NR.js.map → chunk.CMXAORYF.js.map} +2 -2
  73. package/dist/esm/chunks/{chunk.U35QQZVK.js → chunk.D33KLIFD.js} +1 -1
  74. package/dist/esm/chunks/{chunk.U35QQZVK.js.map → chunk.D33KLIFD.js.map} +2 -2
  75. package/dist/esm/chunks/{chunk.5EEEKOOK.js → chunk.DLF5JAQO.js} +1 -1
  76. package/dist/esm/chunks/{chunk.5EEEKOOK.js.map → chunk.DLF5JAQO.js.map} +2 -2
  77. package/dist/esm/chunks/{chunk.ZUM5YLB2.js → chunk.E26BROOG.js} +1 -1
  78. package/dist/esm/chunks/{chunk.ZUM5YLB2.js.map → chunk.E26BROOG.js.map} +2 -2
  79. package/dist/esm/chunks/{chunk.XN65LPA3.js → chunk.EBC2HGO3.js} +3 -3
  80. package/dist/esm/chunks/chunk.EBC2HGO3.js.map +7 -0
  81. package/dist/esm/chunks/{chunk.YCW56AVX.js → chunk.FJJVIMZ2.js} +1 -1
  82. package/dist/esm/chunks/{chunk.YCW56AVX.js.map → chunk.FJJVIMZ2.js.map} +2 -2
  83. package/dist/esm/chunks/{chunk.HHHMDDTU.js → chunk.FZ6KICMD.js} +1 -1
  84. package/dist/esm/chunks/{chunk.HHHMDDTU.js.map → chunk.FZ6KICMD.js.map} +2 -2
  85. package/dist/esm/chunks/{chunk.XPC7GINT.js → chunk.GHZ75UPO.js} +3 -3
  86. package/dist/esm/chunks/{chunk.XPC7GINT.js.map → chunk.GHZ75UPO.js.map} +2 -2
  87. package/dist/esm/chunks/{chunk.SJZ54RE3.js → chunk.GL72QT42.js} +1 -1
  88. package/dist/esm/chunks/{chunk.SJZ54RE3.js.map → chunk.GL72QT42.js.map} +2 -2
  89. package/dist/esm/chunks/{chunk.PCYIY5OY.js → chunk.GNAIKBO6.js} +2 -2
  90. package/dist/esm/chunks/{chunk.PCYIY5OY.js.map → chunk.GNAIKBO6.js.map} +2 -2
  91. package/dist/esm/chunks/{chunk.G6FY472A.js → chunk.GWNR3UUX.js} +2 -2
  92. package/dist/esm/chunks/{chunk.G6FY472A.js.map → chunk.GWNR3UUX.js.map} +2 -2
  93. package/dist/esm/chunks/{chunk.2NUAEZY7.js → chunk.GXTNND2M.js} +1 -1
  94. package/dist/esm/chunks/{chunk.2NUAEZY7.js.map → chunk.GXTNND2M.js.map} +2 -2
  95. package/dist/esm/chunks/{chunk.YJ5X3WZ4.js → chunk.HASAPJMX.js} +1 -1
  96. package/dist/esm/chunks/{chunk.YJ5X3WZ4.js.map → chunk.HASAPJMX.js.map} +2 -2
  97. package/dist/esm/chunks/{chunk.EWQENJ4W.js → chunk.HMM7PGGZ.js} +2 -2
  98. package/dist/esm/chunks/{chunk.EWQENJ4W.js.map → chunk.HMM7PGGZ.js.map} +2 -2
  99. package/dist/esm/chunks/{chunk.P7SAJ6M7.js → chunk.I6PJGNJS.js} +2 -2
  100. package/dist/esm/chunks/{chunk.P7SAJ6M7.js.map → chunk.I6PJGNJS.js.map} +2 -2
  101. package/dist/esm/chunks/{chunk.3ZKORL4I.js → chunk.I7BQUB7Z.js} +2 -2
  102. package/dist/esm/chunks/chunk.I7BQUB7Z.js.map +7 -0
  103. package/dist/esm/chunks/{chunk.XY3ZHN7Y.js → chunk.IBED5TWL.js} +1 -1
  104. package/dist/esm/chunks/{chunk.XY3ZHN7Y.js.map → chunk.IBED5TWL.js.map} +2 -2
  105. package/dist/esm/chunks/{chunk.4FHBJXB7.js → chunk.IGBDDH3J.js} +6 -6
  106. package/dist/esm/chunks/{chunk.4FHBJXB7.js.map → chunk.IGBDDH3J.js.map} +0 -0
  107. package/dist/esm/chunks/{chunk.N3ZPWKJ5.js → chunk.IJW2YKP3.js} +12 -12
  108. package/dist/esm/chunks/{chunk.N3ZPWKJ5.js.map → chunk.IJW2YKP3.js.map} +2 -2
  109. package/dist/esm/chunks/{chunk.ID2ITG5T.js → chunk.ITQ55IPH.js} +4 -4
  110. package/dist/esm/chunks/{chunk.ID2ITG5T.js.map → chunk.ITQ55IPH.js.map} +2 -2
  111. package/dist/esm/chunks/{chunk.IBH5GL7A.js → chunk.IUNON3UL.js} +2 -2
  112. package/dist/esm/chunks/{chunk.IBH5GL7A.js.map → chunk.IUNON3UL.js.map} +2 -2
  113. package/dist/esm/chunks/{chunk.CLQS7CFC.js → chunk.J5NUYQ4D.js} +6 -6
  114. package/dist/esm/chunks/{chunk.CLQS7CFC.js.map → chunk.J5NUYQ4D.js.map} +0 -0
  115. package/dist/esm/chunks/{chunk.5E6UZZKY.js → chunk.JC2PZ4TS.js} +7 -7
  116. package/dist/esm/chunks/{chunk.5E6UZZKY.js.map → chunk.JC2PZ4TS.js.map} +2 -2
  117. package/dist/esm/chunks/{chunk.L4N2DKAS.js → chunk.JUXKYUD4.js} +8 -8
  118. package/dist/esm/chunks/{chunk.L4N2DKAS.js.map → chunk.JUXKYUD4.js.map} +2 -2
  119. package/dist/esm/chunks/{chunk.6V463G4I.js → chunk.KCVJDJ6K.js} +1 -1
  120. package/dist/esm/chunks/{chunk.6V463G4I.js.map → chunk.KCVJDJ6K.js.map} +2 -2
  121. package/dist/esm/chunks/{chunk.YMWBTMB6.js → chunk.KNR5DXE4.js} +2 -2
  122. package/dist/esm/chunks/{chunk.YMWBTMB6.js.map → chunk.KNR5DXE4.js.map} +2 -2
  123. package/dist/esm/chunks/{chunk.S6QD4UJN.js → chunk.L344BPCW.js} +1 -1
  124. package/dist/esm/chunks/{chunk.S6QD4UJN.js.map → chunk.L344BPCW.js.map} +2 -2
  125. package/dist/esm/chunks/{chunk.ZAAM3GTQ.js → chunk.L4OUV7W6.js} +5 -5
  126. package/dist/esm/chunks/{chunk.ZAAM3GTQ.js.map → chunk.L4OUV7W6.js.map} +2 -2
  127. package/dist/esm/chunks/{chunk.PXXLO4HJ.js → chunk.LHWZ4KZU.js} +3 -3
  128. package/dist/esm/chunks/{chunk.PXXLO4HJ.js.map → chunk.LHWZ4KZU.js.map} +2 -2
  129. package/dist/esm/chunks/{chunk.PQ5LOH7W.js → chunk.LK2DN5KX.js} +4 -4
  130. package/dist/esm/chunks/{chunk.PQ5LOH7W.js.map → chunk.LK2DN5KX.js.map} +2 -2
  131. package/dist/esm/chunks/{chunk.7G2S3DCM.js → chunk.LX2HDAIF.js} +2 -2
  132. package/dist/esm/chunks/{chunk.7G2S3DCM.js.map → chunk.LX2HDAIF.js.map} +2 -2
  133. package/dist/esm/chunks/{chunk.YDPSV74L.js → chunk.M3O5VPDD.js} +3 -3
  134. package/dist/esm/chunks/{chunk.YDPSV74L.js.map → chunk.M3O5VPDD.js.map} +0 -0
  135. package/dist/esm/chunks/{chunk.CKVCNPLI.js → chunk.MBZLA635.js} +12 -12
  136. package/dist/esm/chunks/{chunk.CKVCNPLI.js.map → chunk.MBZLA635.js.map} +2 -2
  137. package/dist/esm/chunks/{chunk.JB2PM7FT.js → chunk.MF3IZXQG.js} +1 -1
  138. package/dist/esm/chunks/{chunk.JB2PM7FT.js.map → chunk.MF3IZXQG.js.map} +2 -2
  139. package/dist/esm/chunks/{chunk.EL74HZRY.js → chunk.MUP3NY6M.js} +9 -9
  140. package/dist/esm/chunks/{chunk.EL74HZRY.js.map → chunk.MUP3NY6M.js.map} +2 -2
  141. package/dist/esm/chunks/{chunk.2F6PST3N.js → chunk.OXS2O7RG.js} +1 -1
  142. package/dist/esm/chunks/{chunk.2F6PST3N.js.map → chunk.OXS2O7RG.js.map} +2 -2
  143. package/dist/esm/chunks/{chunk.U2X7YAXC.js → chunk.PKZ43JNW.js} +4 -4
  144. package/dist/esm/chunks/{chunk.U2X7YAXC.js.map → chunk.PKZ43JNW.js.map} +2 -2
  145. package/dist/esm/chunks/{chunk.WAJDLUSQ.js → chunk.QHHYCB7N.js} +1 -1
  146. package/dist/esm/chunks/{chunk.WAJDLUSQ.js.map → chunk.QHHYCB7N.js.map} +2 -2
  147. package/dist/esm/chunks/{chunk.AHMBGV4N.js → chunk.QWW6A7AF.js} +6 -6
  148. package/dist/esm/chunks/{chunk.AHMBGV4N.js.map → chunk.QWW6A7AF.js.map} +2 -2
  149. package/dist/esm/chunks/{chunk.OYO6NUZY.js → chunk.QXZZ2MTF.js} +1 -1
  150. package/dist/esm/chunks/{chunk.OYO6NUZY.js.map → chunk.QXZZ2MTF.js.map} +2 -2
  151. package/dist/esm/chunks/{chunk.SSFSLBBM.js → chunk.QYWAZCBX.js} +2 -2
  152. package/dist/esm/chunks/chunk.QYWAZCBX.js.map +7 -0
  153. package/dist/esm/chunks/{chunk.Y2TDQIA4.js → chunk.RD4RIFOZ.js} +1 -1
  154. package/dist/esm/chunks/{chunk.Y2TDQIA4.js.map → chunk.RD4RIFOZ.js.map} +2 -2
  155. package/dist/esm/chunks/{chunk.EJHMX24S.js → chunk.RL7ZFLMG.js} +6 -6
  156. package/dist/esm/chunks/{chunk.EJHMX24S.js.map → chunk.RL7ZFLMG.js.map} +2 -2
  157. package/dist/esm/chunks/{chunk.AHBDISRG.js → chunk.S3UVF647.js} +2 -2
  158. package/dist/esm/chunks/{chunk.AHBDISRG.js.map → chunk.S3UVF647.js.map} +2 -2
  159. package/dist/esm/chunks/{chunk.RWCC6E4O.js → chunk.THKWQXBJ.js} +1 -1
  160. package/dist/esm/chunks/{chunk.RWCC6E4O.js.map → chunk.THKWQXBJ.js.map} +2 -2
  161. package/dist/esm/chunks/{chunk.2TEHKM2X.js → chunk.TIUNGGBF.js} +3 -3
  162. package/dist/esm/chunks/{chunk.2TEHKM2X.js.map → chunk.TIUNGGBF.js.map} +0 -0
  163. package/dist/esm/chunks/{chunk.PSHHY3ER.js → chunk.TM46MNYN.js} +4 -4
  164. package/dist/esm/chunks/{chunk.PSHHY3ER.js.map → chunk.TM46MNYN.js.map} +2 -2
  165. package/dist/esm/chunks/{chunk.7XGNGXLR.js → chunk.TYU4RLZG.js} +1 -1
  166. package/dist/esm/chunks/{chunk.7XGNGXLR.js.map → chunk.TYU4RLZG.js.map} +2 -2
  167. package/dist/esm/chunks/{chunk.QFPOG3VH.js → chunk.U37G47LH.js} +7 -7
  168. package/dist/esm/chunks/{chunk.QFPOG3VH.js.map → chunk.U37G47LH.js.map} +2 -2
  169. package/dist/esm/chunks/{chunk.HZML57TK.js → chunk.U5ECVIX5.js} +5 -5
  170. package/dist/esm/chunks/{chunk.HZML57TK.js.map → chunk.U5ECVIX5.js.map} +2 -2
  171. package/dist/esm/chunks/{chunk.DJX5CEYP.js → chunk.UPW5HUKB.js} +5 -5
  172. package/dist/esm/chunks/{chunk.DJX5CEYP.js.map → chunk.UPW5HUKB.js.map} +2 -2
  173. package/dist/esm/chunks/{chunk.ISR3SND2.js → chunk.UQ3QTUUB.js} +2 -2
  174. package/dist/esm/chunks/{chunk.ISR3SND2.js.map → chunk.UQ3QTUUB.js.map} +2 -2
  175. package/dist/esm/chunks/{chunk.JVQP6BJ3.js → chunk.V2ELLBDP.js} +1 -1
  176. package/dist/esm/chunks/{chunk.JVQP6BJ3.js.map → chunk.V2ELLBDP.js.map} +2 -2
  177. package/dist/esm/chunks/{chunk.2LQMHAC7.js → chunk.V6Q2SM6Y.js} +1 -1
  178. package/dist/esm/chunks/{chunk.2LQMHAC7.js.map → chunk.V6Q2SM6Y.js.map} +2 -2
  179. package/dist/esm/chunks/{chunk.WVVWDQLQ.js → chunk.VXAPRFMK.js} +4 -4
  180. package/dist/esm/chunks/{chunk.WVVWDQLQ.js.map → chunk.VXAPRFMK.js.map} +2 -2
  181. package/dist/esm/chunks/{chunk.NF2CS4ZM.js → chunk.VXVE7KEM.js} +4 -4
  182. package/dist/esm/chunks/{chunk.NF2CS4ZM.js.map → chunk.VXVE7KEM.js.map} +2 -2
  183. package/dist/esm/chunks/{chunk.P7NOYP4O.js → chunk.WDD2GTIH.js} +1 -1
  184. package/dist/esm/chunks/{chunk.P7NOYP4O.js.map → chunk.WDD2GTIH.js.map} +2 -2
  185. package/dist/esm/chunks/{chunk.RNPIV3BY.js → chunk.WNVZQDNS.js} +1 -1
  186. package/dist/esm/chunks/{chunk.RNPIV3BY.js.map → chunk.WNVZQDNS.js.map} +2 -2
  187. package/dist/esm/chunks/{chunk.3MO6XU44.js → chunk.WSH4S3GM.js} +1 -1
  188. package/dist/esm/chunks/{chunk.3MO6XU44.js.map → chunk.WSH4S3GM.js.map} +2 -2
  189. package/dist/esm/chunks/{chunk.MIGASQA3.js → chunk.XHMNHBZD.js} +2 -2
  190. package/dist/esm/chunks/{chunk.MIGASQA3.js.map → chunk.XHMNHBZD.js.map} +2 -2
  191. package/dist/esm/chunks/{chunk.DB7ZQBES.js → chunk.YL2NAVJW.js} +1 -1
  192. package/dist/esm/chunks/{chunk.DB7ZQBES.js.map → chunk.YL2NAVJW.js.map} +2 -2
  193. package/dist/esm/chunks/{chunk.EXKNFD5S.js → chunk.ZLF2G3YT.js} +11 -11
  194. package/dist/esm/chunks/{chunk.EXKNFD5S.js.map → chunk.ZLF2G3YT.js.map} +2 -2
  195. package/dist/esm/chunks/{chunk.EKIW7VYG.js → chunk.ZXIDTDRC.js} +1 -1
  196. package/dist/esm/chunks/{chunk.EKIW7VYG.js.map → chunk.ZXIDTDRC.js.map} +2 -2
  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.d.ts +5 -0
  288. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +5 -0
  289. package/esm/calendar/calendar-menu/calendar-menu.d.ts +6 -0
  290. package/esm/calendar/calendar-menu/calendar-menu.js +6 -0
  291. package/esm/calendar/calendar.d.ts +5 -0
  292. package/esm/calendar/calendar.js +5 -0
  293. package/esm/card/card.d.ts +5 -1
  294. package/esm/card/card.js +5 -1
  295. package/esm/checkbox/checkbox.d.ts +2 -0
  296. package/esm/checkbox/checkbox.js +2 -0
  297. package/esm/chip-field/chip-field.d.ts +5 -0
  298. package/esm/chip-field/chip-field.js +5 -0
  299. package/esm/chips/chip/chip.d.ts +2 -0
  300. package/esm/chips/chip/chip.js +2 -0
  301. package/esm/chips/chip-set/chip-set.d.ts +5 -0
  302. package/esm/chips/chip-set/chip-set.js +5 -0
  303. package/esm/circular-progress/circular-progress.d.ts +5 -0
  304. package/esm/circular-progress/circular-progress.js +5 -0
  305. package/esm/color-picker/color-picker.d.ts +5 -0
  306. package/esm/color-picker/color-picker.js +5 -0
  307. package/esm/date-picker/date-picker.d.ts +5 -1
  308. package/esm/date-picker/date-picker.js +5 -1
  309. package/esm/date-range-picker/date-range-picker.d.ts +5 -1
  310. package/esm/date-range-picker/date-range-picker.js +5 -1
  311. package/esm/dialog/dialog.d.ts +5 -0
  312. package/esm/dialog/dialog.js +5 -0
  313. package/esm/divider/divider.d.ts +2 -0
  314. package/esm/divider/divider.js +2 -0
  315. package/esm/drawer/drawer/drawer.d.ts +5 -0
  316. package/esm/drawer/drawer/drawer.js +5 -0
  317. package/esm/drawer/mini-drawer/mini-drawer.d.ts +5 -0
  318. package/esm/drawer/mini-drawer/mini-drawer.js +5 -0
  319. package/esm/drawer/modal-drawer/modal-drawer.d.ts +5 -0
  320. package/esm/drawer/modal-drawer/modal-drawer.js +5 -0
  321. package/esm/expansion-panel/expansion-panel.d.ts +2 -0
  322. package/esm/expansion-panel/expansion-panel.js +2 -0
  323. package/esm/file-picker/file-picker.d.ts +5 -0
  324. package/esm/file-picker/file-picker.js +5 -0
  325. package/esm/floating-action-button/floating-action-button.d.ts +5 -1
  326. package/esm/floating-action-button/floating-action-button.js +5 -1
  327. package/esm/icon/icon.d.ts +5 -0
  328. package/esm/icon/icon.js +5 -0
  329. package/esm/icon-button/icon-button.d.ts +2 -0
  330. package/esm/icon-button/icon-button.js +2 -0
  331. package/esm/inline-message/inline-message.d.ts +5 -0
  332. package/esm/inline-message/inline-message.js +5 -0
  333. package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +5 -0
  334. package/esm/keyboard-shortcut/keyboard-shortcut.js +5 -0
  335. package/esm/label-value/label-value.d.ts +5 -0
  336. package/esm/label-value/label-value.js +5 -0
  337. package/esm/linear-progress/linear-progress.d.ts +5 -0
  338. package/esm/linear-progress/linear-progress.js +5 -0
  339. package/esm/list/list/list.d.ts +2 -0
  340. package/esm/list/list/list.js +2 -0
  341. package/esm/list/list-item/list-item.d.ts +5 -1
  342. package/esm/list/list-item/list-item.js +5 -1
  343. package/esm/menu/menu.d.ts +5 -0
  344. package/esm/menu/menu.js +5 -0
  345. package/esm/open-icon/open-icon.d.ts +5 -0
  346. package/esm/open-icon/open-icon.js +5 -0
  347. package/esm/page-state/page-state.d.ts +5 -0
  348. package/esm/page-state/page-state.js +5 -0
  349. package/esm/paginator/paginator.d.ts +2 -0
  350. package/esm/paginator/paginator.js +2 -0
  351. package/esm/popup/popup.d.ts +5 -0
  352. package/esm/popup/popup.js +5 -0
  353. package/esm/product-icon/product-icon.d.ts +5 -0
  354. package/esm/product-icon/product-icon.js +5 -0
  355. package/esm/profile-card/profile-card.d.ts +5 -0
  356. package/esm/profile-card/profile-card.js +5 -0
  357. package/esm/quantity-field/quantity-field.d.ts +5 -0
  358. package/esm/quantity-field/quantity-field.js +5 -0
  359. package/esm/radio/radio.d.ts +2 -0
  360. package/esm/radio/radio.js +2 -0
  361. package/esm/ripple/ripple.d.ts +5 -0
  362. package/esm/ripple/ripple.js +5 -0
  363. package/esm/scaffold/scaffold.d.ts +2 -0
  364. package/esm/scaffold/scaffold.js +2 -0
  365. package/esm/select/option/option.d.ts +2 -0
  366. package/esm/select/option/option.js +2 -0
  367. package/esm/select/option-group/option-group.d.ts +2 -0
  368. package/esm/select/option-group/option-group.js +2 -0
  369. package/esm/select/select/select.d.ts +2 -0
  370. package/esm/select/select/select.js +2 -0
  371. package/esm/select/select-dropdown/select-dropdown.d.ts +5 -0
  372. package/esm/select/select-dropdown/select-dropdown.js +5 -0
  373. package/esm/skeleton/skeleton.d.ts +5 -0
  374. package/esm/skeleton/skeleton.js +5 -0
  375. package/esm/slider/slider.d.ts +2 -0
  376. package/esm/slider/slider.js +2 -0
  377. package/esm/stepper/step/step.d.ts +5 -0
  378. package/esm/stepper/step/step.js +5 -0
  379. package/esm/stepper/stepper/stepper.d.ts +5 -0
  380. package/esm/stepper/stepper/stepper.js +5 -0
  381. package/esm/switch/switch.d.ts +2 -0
  382. package/esm/switch/switch.js +2 -0
  383. package/esm/table/table.d.ts +3 -1
  384. package/esm/table/table.js +3 -1
  385. package/esm/tabs/tab/tab.d.ts +5 -0
  386. package/esm/tabs/tab/tab.js +5 -0
  387. package/esm/tabs/tab-bar/tab-bar.d.ts +2 -0
  388. package/esm/tabs/tab-bar/tab-bar.js +2 -0
  389. package/esm/text-field/text-field.d.ts +5 -0
  390. package/esm/text-field/text-field.js +5 -0
  391. package/esm/time-picker/time-picker.d.ts +5 -0
  392. package/esm/time-picker/time-picker.js +5 -0
  393. package/esm/toast/toast.d.ts +2 -0
  394. package/esm/toast/toast.js +2 -0
  395. package/esm/toolbar/toolbar.d.ts +5 -0
  396. package/esm/toolbar/toolbar.js +5 -0
  397. package/esm/tooltip/tooltip.d.ts +5 -1
  398. package/esm/tooltip/tooltip.js +5 -1
  399. package/esm/view-switcher/view/view.d.ts +5 -0
  400. package/esm/view-switcher/view/view.js +5 -0
  401. package/esm/view-switcher/view-switcher.d.ts +5 -0
  402. package/esm/view-switcher/view-switcher.js +5 -0
  403. package/package.json +3 -2
  404. package/dist/esm/chunks/chunk.3ZKORL4I.js.map +0 -7
  405. package/dist/esm/chunks/chunk.SSFSLBBM.js.map +0 -7
  406. package/dist/esm/chunks/chunk.XN65LPA3.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/quantity-field/quantity-field-constants.ts", "../../src/quantity-field/quantity-field-adapter.ts", "../../src/quantity-field/quantity-field-foundation.ts", "../../src/quantity-field/quantity-field.ts", "../../src/quantity-field/quantity-field-component-delegate.ts", "../../src/quantity-field/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}quantity-field`;\n\nconst attributes = {\n INVALID: 'invalid',\n REQUIRED: 'required',\n DISABLED: 'disabled'\n};\n\nconst classes = {\n ROOT: 'forge-quantity-field',\n INVALID: 'forge-quantity-field--invalid',\n REQUIRED: 'forge-quantity-field--required'\n};\n\nconst slots = {\n INCREMENT_BUTTON: 'increment-button',\n DECREMENT_BUTTON: 'decrement-button',\n LABEL: 'label',\n HELPER_TEXT: 'helper-text'\n};\n\nconst selectors = {\n ROOT: `.${classes.ROOT}`,\n INCREMENT_BUTTON_SLOT: `slot[name=${slots.INCREMENT_BUTTON}]`,\n DECREMENT_BUTTON_SLOT: `slot[name=${slots.DECREMENT_BUTTON}]`,\n INCREMENT_BUTTON: `[slot=${slots.INCREMENT_BUTTON}] button, button[slot=${slots.INCREMENT_BUTTON}]`,\n DECREMENT_BUTTON: `[slot=${slots.DECREMENT_BUTTON}] button, button[slot=${slots.DECREMENT_BUTTON}]`,\n TEXT_FIELD: 'forge-text-field',\n INPUT: 'input[type=number]',\n LABEL: `[slot=${slots.LABEL}]`,\n HELPER_TEXT: `[slot=${slots.HELPER_TEXT}]`\n};\n\nexport const QUANTITY_FIELD_CONSTANTS = {\n elementName,\n classes,\n slots,\n selectors,\n attributes\n};\n", "import { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { IQuantityFieldComponent } from './quantity-field';\nimport { getShadowElement, Platform } from '@tylertech/forge-core';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { TextFieldComponent } from '../text-field';\n\nexport interface IQuantityFieldAdapter extends IBaseAdapter {\n addRootClass(name: string): void;\n removeRootClass(name: string): void;\n inputHasAttribute(name: string): boolean;\n addIncrementButtonSlotListener(listener: () => void): void;\n removeIncrementButtonSlotListener(listener: () => void): void;\n addDecrementButtonSlotListener(listener: (evt: Event) => void): void;\n removeDecrementButtonSlotListener(listener: (evt: Event) => void): void;\n addIncrementEventListener(event: string, callback: (event: Event) => void): void;\n addDecrementEventListener(event: string, callback: (event: Event) => void): void;\n removeIncrementEventListener(event: string, callback: (event: Event) => void): void;\n removeDecrementEventListener(event: string, callback: (event: Event) => void): void;\n addIncrementButtonAttribute(name: string, value?: string): void;\n removeIncrementButtonAttribute(name: string): void;\n addDecrementButtonAttribute(name: string, value?: string): void;\n removeDecrementButtonAttribute(name: string): void;\n addInputDisabledAttributeChangeListener(callback: () => void): void;\n addTextFieldAttribute(name: string, value?: string): void;\n removeTextFieldAttribute(name: string): void;\n removeInputDisabledAttributeChangeListener(): void;\n setLabelAsRequired(required: boolean): void;\n increment(): void;\n decrement(): void;\n}\n\nexport class QuantityFieldAdapter extends BaseAdapter<IQuantityFieldComponent> implements IQuantityFieldAdapter {\n private _rootElement: HTMLElement;\n private _incrementButtonSlot: HTMLSlotElement;\n private _decrementButtonSlot: HTMLSlotElement;\n private _incrementButton: HTMLButtonElement;\n private _decrementButton: HTMLButtonElement;\n private _textField: TextFieldComponent;\n private _inputElement: HTMLInputElement | null;\n private _inputAttributeMutationObserver: MutationObserver | undefined;\n\n constructor(component: IQuantityFieldComponent) {\n super(component);\n this._rootElement = getShadowElement(component, QUANTITY_FIELD_CONSTANTS.selectors.ROOT);\n this._incrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON_SLOT) as HTMLSlotElement;\n this._decrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON_SLOT) as HTMLSlotElement;\n }\n\n public addRootClass(name: string): void {\n this._rootElement.classList.add(name);\n }\n\n public removeRootClass(name: string): void {\n this._rootElement.classList.remove(name);\n }\n\n public inputHasAttribute(name: string): boolean {\n if (!this.inputElement) {\n return false;\n }\n\n return this.inputElement.hasAttribute(name);\n }\n\n public addIncrementButtonSlotListener(listener: () => void): void {\n this._incrementButtonSlot.addEventListener('slotchange', listener);\n }\n\n public removeIncrementButtonSlotListener(listener: () => void): void {\n if (this._incrementButtonSlot) {\n this._incrementButtonSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addDecrementButtonSlotListener(listener: (evt: Event) => void): void {\n this._decrementButtonSlot.addEventListener('slotchange', listener);\n }\n\n public removeDecrementButtonSlotListener(listener: (evt: Event) => void): void {\n if (this._decrementButtonSlot) {\n this._decrementButtonSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addTextFieldAttribute(name: string, value = ''): void {\n if (this._textFieldComponent) {\n this._textFieldComponent.setAttribute(name, value);\n }\n }\n\n public removeTextFieldAttribute(name: string): void {\n if (this._textFieldComponent) {\n this._textFieldComponent.removeAttribute(name);\n }\n }\n\n public addIncrementEventListener(event: string, callback: (event: Event) => void): void {\n this._incrementButtonElement.addEventListener(event, callback);\n }\n\n public removeIncrementEventListener(event: string, callback: (event: Event) => void): void {\n if (this._incrementButtonElement) {\n this._incrementButtonElement.removeEventListener(event, callback);\n }\n }\n\n public addDecrementEventListener(event: string, callback: (event: Event) => void): void {\n this._decrementButtonElement.addEventListener(event, callback);\n }\n\n public removeDecrementEventListener(event: string, callback: (event: Event) => void): void {\n if (this._decrementButtonElement) {\n this._decrementButtonElement.removeEventListener(event, callback);\n }\n }\n\n public addIncrementButtonAttribute(name: string, value = ''): void {\n this._incrementButtonElement.setAttribute(name, value);\n }\n\n public removeIncrementButtonAttribute(name: string): void {\n this._incrementButtonElement.removeAttribute(name);\n }\n\n public addDecrementButtonAttribute(name: string, value = ''): void {\n this._decrementButtonElement.setAttribute(name, value);\n }\n\n public removeDecrementButtonAttribute(name: string): void {\n this._decrementButtonElement.removeAttribute(name);\n }\n\n public setLabelAsRequired(required: boolean): void {\n const labelElement = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.LABEL) as HTMLLabelElement;\n\n // Due to a Safari bug with ::slotted::after selectors, we need to manually append the required \"asterisk\" to the label text\n // https://bugs.webkit.org/show_bug.cgi?id=178237\n if (required && Platform.WEBKIT && labelElement && !labelElement.innerText.endsWith('*')) {\n const asterisk = document.createElement('span');\n asterisk.style.color = 'var(--mdc-theme-error)';\n asterisk.style.marginLeft = '1px';\n asterisk.textContent = '*';\n labelElement.appendChild(asterisk);\n }\n }\n\n public increment(): void {\n const input = this.inputElement;\n if (!input) {\n return;\n }\n\n const curValue = +input.value;\n const precision = this._calcPrecision(this._inputStep);\n let newValue = parseFloat((curValue + this._inputStep).toFixed(precision));\n if (!!this._inputMax && this._inputMax < newValue) {\n newValue = this._inputMax;\n }\n\n this._setInputValue(newValue);\n }\n\n public decrement(): void {\n const input = this.inputElement;\n if (!input) {\n return;\n }\n\n const curValue = +input.value;\n const precision = this._calcPrecision(this._inputStep);\n let newValue = parseFloat((curValue - this._inputStep).toFixed(precision));\n if (!!this._inputMin && this._inputMin > newValue) {\n newValue = this._inputMin;\n }\n\n this._setInputValue(newValue);\n }\n\n public addInputDisabledAttributeChangeListener(callback: () => void): void {\n this._setupInputDisabledAttributeMutationObserver(callback);\n }\n\n public removeInputDisabledAttributeChangeListener(): void {\n this._cleanupInputDisabledAttributeMutationObserver();\n }\n\n private _setInputValue(value: string | number): void {\n if (!this.inputElement) {\n return;\n }\n\n this.inputElement.value = `${value}`;\n this.inputElement.dispatchEvent(new Event('input'));\n this.inputElement.dispatchEvent(new Event('change'));\n }\n\n private _isNullOrUndefinedOrEmpty(value: any): value is null | undefined {\n return value === null || value === undefined || value === '';\n }\n\n private _setupInputDisabledAttributeMutationObserver(callback: () => void): void {\n if (!this.inputElement) {\n return;\n }\n\n this._cleanupInputDisabledAttributeMutationObserver();\n const mutationCallback = (mutationRecords: MutationRecord[]): void => this._inputDisabledAttributeMutationCallback(mutationRecords, callback);\n this._inputAttributeMutationObserver = new MutationObserver(mutationCallback);\n const mutationOptions: MutationObserverInit = {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: [QUANTITY_FIELD_CONSTANTS.attributes.DISABLED]\n };\n this._inputAttributeMutationObserver.observe(this.inputElement, mutationOptions);\n }\n\n private _cleanupInputDisabledAttributeMutationObserver(): void {\n if (this._inputAttributeMutationObserver) {\n this._inputAttributeMutationObserver.disconnect();\n delete this._inputAttributeMutationObserver;\n }\n }\n\n private _inputDisabledAttributeMutationCallback(mutationRecords: MutationRecord[], callback: () => void): void {\n for (const mutationRecord of mutationRecords) {\n // Skip:\n // - Non-attribute mutations.\n // - Mutations without an attribute name.\n // - Mutations without a matching attribute name.\n // - Mutations that did not change the attribute value.\n if (mutationRecord.type !== 'attributes'\n || !mutationRecord.attributeName\n || mutationRecord.attributeName !== QUANTITY_FIELD_CONSTANTS.attributes.DISABLED\n || mutationRecord.target[mutationRecord.attributeName] === mutationRecord.oldValue) {\n continue;\n }\n\n callback();\n }\n }\n\n private get _incrementButtonElement(): HTMLButtonElement {\n if (!this._incrementButton) {\n this._incrementButton = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON) as HTMLButtonElement;\n }\n return this._incrementButton;\n }\n\n private get _decrementButtonElement(): HTMLButtonElement {\n if (!this._decrementButton) {\n this._decrementButton = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON) as HTMLButtonElement;\n }\n return this._decrementButton;\n }\n\n private get _textFieldComponent(): TextFieldComponent {\n if (!this._textField) {\n this._textField = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.TEXT_FIELD) as TextFieldComponent;\n }\n return this._textField;\n }\n\n public get inputElement(): HTMLInputElement | null {\n if (!this._inputElement) {\n this._inputElement = this._component.querySelector<HTMLInputElement>(QUANTITY_FIELD_CONSTANTS.selectors.INPUT);\n }\n return this._inputElement;\n }\n\n private get _inputStep(): number {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.step)) {\n return 1;\n }\n\n return +input.step;\n }\n\n private get _inputMax(): number | null {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.max)) {\n return null;\n }\n\n return +input.max;\n }\n\n private get _inputMin(): number | null {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.min)) {\n return null;\n }\n\n return +input.min;\n }\n\n private _calcPrecision(value: number): number {\n const strVal = String(value);\n if (strVal.includes('.')) {\n return strVal.split('.')[1].length;\n }\n return 0;\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IQuantityFieldAdapter } from './quantity-field-adapter';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\n\nexport interface IQuantityFieldFoundation extends ICustomElementFoundation {\n required: boolean;\n invalid: boolean;\n}\n\nexport class QuantityFieldFoundation implements IQuantityFieldFoundation {\n private _required: boolean;\n private _invalid: boolean;\n private _incrementButtonSlotChanged: () => void;\n private _decrementButtonSlotChanged: () => void;\n private _incrementValue: () => void;\n private _decrementValue: () => void;\n\n constructor(private _adapter: IQuantityFieldAdapter) {\n this._incrementValue = () => this._adapter.increment();\n this._decrementValue = () => this._adapter.decrement();\n this._incrementButtonSlotChanged = () => this._onIncrementButtonSlotChanged();\n this._decrementButtonSlotChanged = () => this._onDecrementButtonSlotChanged();\n\n this._adapter.addIncrementButtonSlotListener(this._incrementButtonSlotChanged);\n this._adapter.addDecrementButtonSlotListener(this._decrementButtonSlotChanged);\n }\n\n public connect(): void {\n this._adapter.addInputDisabledAttributeChangeListener(() => this._syncDisabledStateOfButtons());\n this._syncDisabledStateOfButtons();\n }\n\n public disconnect(): void {\n this._removeIncrementEventListener();\n this._removeDecrementEventListener();\n this._removeIncrementButtonSlotListener();\n this._removeDecrementButtonSlotListener();\n this._adapter.removeInputDisabledAttributeChangeListener();\n }\n\n private _onIncrementButtonSlotChanged(): void {\n this._addIncrementEventListener();\n }\n\n private _onDecrementButtonSlotChanged(): void {\n this._addDecrementEventListener();\n }\n\n private _addIncrementEventListener(): void {\n this._adapter.addIncrementEventListener('click', this._incrementValue);\n }\n\n private _addDecrementEventListener(): void {\n this._adapter.addDecrementEventListener('click', this._decrementValue);\n }\n\n private _removeIncrementEventListener(): void {\n this._adapter.removeIncrementEventListener('click', this._incrementValue);\n }\n\n private _removeDecrementEventListener(): void {\n this._adapter.removeDecrementEventListener('click', this._decrementValue);\n }\n\n private _removeIncrementButtonSlotListener(): void {\n this._adapter.removeIncrementButtonSlotListener(this._incrementButtonSlotChanged);\n }\n\n private _removeDecrementButtonSlotListener(): void {\n this._adapter.removeDecrementButtonSlotListener(this._decrementButtonSlotChanged);\n }\n\n private _syncDisabledStateOfButtons(): void {\n const isDisabled = this._adapter.inputHasAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n if (isDisabled) {\n this._adapter.addDecrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n this._adapter.addIncrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeIncrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n this._adapter.removeDecrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n }\n }\n\n public get required(): boolean {\n return this._required;\n }\n public set required(value: boolean) {\n if (this._required === value) {\n return;\n }\n\n this._required = value;\n\n if (this._required) {\n this._adapter.setHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED);\n this._adapter.addRootClass(QUANTITY_FIELD_CONSTANTS.classes.REQUIRED);\n } else {\n this._adapter.removeHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED);\n this._adapter.removeRootClass(QUANTITY_FIELD_CONSTANTS.classes.REQUIRED);\n }\n\n this._adapter.setLabelAsRequired(this._required);\n }\n\n public get invalid(): boolean {\n return this._invalid;\n }\n public set invalid(value: boolean) {\n if (this._invalid === value) {\n return;\n }\n\n this._invalid = value;\n\n if (this._invalid) {\n this._adapter.setHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n this._adapter.addRootClass(QUANTITY_FIELD_CONSTANTS.classes.INVALID);\n this._adapter.addTextFieldAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n } else {\n this._adapter.removeHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n this._adapter.removeRootClass(QUANTITY_FIELD_CONSTANTS.classes.INVALID);\n this._adapter.removeTextFieldAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n }\n }\n\n}\n", "import { CustomElement, attachShadowTemplate, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { QuantityFieldAdapter } from './quantity-field-adapter';\nimport { QuantityFieldFoundation } from './quantity-field-foundation';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { IconButtonComponent } from '../icon-button';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-quantity-field\\\" part=\\\"root\\\"><slot name=\\\"label\\\"></slot><div class=\\\"forge-quantity-field__row\\\" part=\\\"row\\\"><slot name=\\\"decrement-button\\\"></slot><slot></slot><slot name=\\\"increment-button\\\"></slot></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-quantity-field ::slotted([slot=label]){-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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);height:1rem;color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-field ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}.forge-quantity-field__row{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.forge-quantity-field ::slotted(forge-icon-button:first-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-right:4px}.forge-quantity-field ::slotted(forge-icon-button:last-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-left:4px}.forge-quantity-field ::slotted(forge-text-field){--forge-text-field-margin-top:0;--forge-text-field-margin-bottom:0}.forge-quantity-field--required ::slotted([slot=label])::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:1px}.forge-quantity-field--invalid ::slotted([slot=label]){-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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);height:1rem;color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}:host{display:inline-block}:host([hidden]){display:none}';\n\nexport interface IQuantityFieldComponent extends IBaseComponent {\n invalid: boolean;\n required: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-quantity-field': IQuantityFieldComponent;\n }\n}\n\n@CustomElement({\n name: QUANTITY_FIELD_CONSTANTS.elementName,\n dependencies: [\n IconButtonComponent\n ]\n})\nexport class QuantityFieldComponent extends BaseComponent implements IQuantityFieldComponent {\n public static get observedAttributes(): string[] {\n return [\n QUANTITY_FIELD_CONSTANTS.attributes.INVALID,\n QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED\n ];\n }\n\n private _foundation: QuantityFieldFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new QuantityFieldFoundation(new QuantityFieldAdapter(this));\n }\n\n public connectedCallback(): void {\n if (this._requiredElementsPresent()) {\n this._foundation.connect();\n } else {\n this._ensureElementsPresent().then(() => {\n this._foundation.connect();\n });\n }\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 QUANTITY_FIELD_CONSTANTS.attributes.INVALID:\n this.invalid = coerceBoolean(newValue);\n break;\n case QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED:\n this.required = coerceBoolean(newValue);\n break;\n }\n }\n\n private _ensureElementsPresent(): Promise<void> {\n return new Promise<void>(resolve => {\n if (this._requiredElementsPresent()) {\n resolve();\n return;\n }\n\n const observer = new MutationObserver(changes => {\n const hasAddedNodes = changes.reduce((prev, curr) => prev + curr.addedNodes.length, 0) > 0;\n if (hasAddedNodes) {\n if (this._requiredElementsPresent()) {\n observer.disconnect();\n resolve();\n }\n }\n });\n observer.observe(this, { childList: true, subtree: true });\n });\n }\n\n private _requiredElementsPresent(): boolean {\n const inputElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INPUT);\n const decrementElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON);\n const incrementElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON);\n return !!inputElement && !!decrementElement && !!incrementElement;\n }\n\n /** Gets/sets the invalid state. */\n @FoundationProperty()\n public invalid: boolean;\n\n /** Gets/sets the required state which controls the visibility of the asterisk in the label. */\n @FoundationProperty()\n public required: boolean;\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { IconButtonComponentDelegate } from '../icon-button';\nimport { ITextFieldComponentDelegateConfig, TextFieldComponentDelegate } from '../text-field/text-field-component-delegate';\nimport { IQuantityFieldComponent } from './quantity-field';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { tylIconRemoveCircleOutline, tylIconControlPoint } from '@tylertech/tyler-icons/standard';\nimport { IconRegistry } from '../icon';\n\nexport type QuantityFieldComponentDelegateProps = Partial<IQuantityFieldComponent>;\nexport interface IQuantityFieldComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n id?: string;\n label?: string;\n value?: string;\n step?: string;\n helperText?: string;\n textFieldDelegateConfig?: ITextFieldComponentDelegateConfig;\n}\nexport interface IQuantityFieldComponentDelegateConfig extends IBaseComponentDelegateConfig<IQuantityFieldComponent, IQuantityFieldComponentDelegateOptions> {}\n\nexport class QuantityFieldComponentDelegate extends FormFieldComponentDelegate<IQuantityFieldComponent, IQuantityFieldComponentDelegateOptions> {\n private _textFieldDelegate: TextFieldComponentDelegate;\n private _labelElement: HTMLLabelElement | undefined;\n private _helperTextElement: HTMLSpanElement | undefined;\n\n constructor(config?: IQuantityFieldComponentDelegateConfig) {\n super(config);\n IconRegistry.define([tylIconRemoveCircleOutline, tylIconControlPoint]);\n }\n\n protected _build(): IQuantityFieldComponent {\n const quantityField = document.createElement(QUANTITY_FIELD_CONSTANTS.elementName);\n this._attachButton(quantityField, tylIconRemoveCircleOutline.name, 'decrement-button');\n this._attachTextField(quantityField);\n this._attachButton(quantityField, tylIconControlPoint.name, 'increment-button');\n return quantityField;\n }\n\n protected override _configure(): void {\n this.inputElement.value = this._config.options?.value ?? '0';\n this.inputElement.style.textAlign = 'center';\n this.inputElement.style.width = '64px';\n\n if (this._config.options?.helperText) {\n this.setHelperText(this._config.options.helperText);\n }\n if (typeof this._config.options?.label === 'string') {\n this._createLabel(this._config.options.label);\n }\n if (this._config.options?.step !== undefined) {\n this.inputElement.step = this._config.options.step;\n }\n }\n\n public get value(): string {\n return this._textFieldDelegate.inputElement.value;\n }\n public set value(value: string) {\n this._textFieldDelegate.inputElement.value = value;\n }\n\n public get disabled(): boolean {\n return this._textFieldDelegate.inputElement.disabled;\n }\n public set disabled(value: boolean) {\n this._textFieldDelegate.inputElement.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._element.invalid || false;\n }\n public set invalid(value: boolean) {\n this._element.invalid = value;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._textFieldDelegate.inputElement;\n }\n\n public get labelElement(): HTMLLabelElement | undefined {\n return this._labelElement;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('input', evt => listener((evt.target as HTMLInputElement).value));\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('blur', evt => listener(evt));\n }\n\n private _attachTextField(quantityField: IQuantityFieldComponent): void {\n const textFieldConfig: ITextFieldComponentDelegateConfig = {\n props: { ...this._config.options?.textFieldDelegateConfig?.props },\n options: {\n ...this._config.options?.textFieldDelegateConfig?.options,\n id: this._config.options?.id,\n type: 'number'\n }\n };\n this._textFieldDelegate = new TextFieldComponentDelegate(textFieldConfig);\n quantityField.appendChild(this._textFieldDelegate.element);\n }\n\n public setLabel(text: string | null): void {\n if (text) {\n if (this._labelElement) {\n this._labelElement.textContent = text;\n } else {\n this._createLabel(text);\n }\n } else if (this._labelElement) {\n this._element.removeChild(this._labelElement);\n this._labelElement = undefined;\n }\n }\n\n public setHelperText(text: string | null): void {\n if (text) {\n if (!this._helperTextElement) {\n this._helperTextElement = document.createElement('span');\n this._helperTextElement.slot = 'helper-text';\n this._element.appendChild(this._helperTextElement);\n }\n this._helperTextElement.textContent = text;\n } else if (this._helperTextElement) {\n this._element.removeChild(this._helperTextElement);\n this._helperTextElement = undefined;\n }\n }\n\n private _createLabel(text: string): void {\n this._labelElement = document.createElement('label');\n this._labelElement.textContent = text;\n this._labelElement.slot = 'label';\n if (this._config.options?.id) {\n this._labelElement.setAttribute('for', this._config.options.id);\n }\n this._element.appendChild(this._labelElement);\n }\n\n private _attachButton(parent: HTMLElement, iconName: string, slot: string): IconButtonComponentDelegate {\n const iconButtonDelegate = new IconButtonComponentDelegate({\n options: {\n iconName,\n parent,\n attributes: { slot }\n }\n });\n return iconButtonDelegate;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { QuantityFieldComponent } from './quantity-field';\n\nexport * from './quantity-field-adapter';\nexport * from './quantity-field-constants';\nexport * from './quantity-field-foundation';\nexport * from './quantity-field';\nexport * from './quantity-field-component-delegate';\n\nexport function defineQuantityFieldComponent(): void {\n defineCustomElement(QuantityFieldComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}quantity-field`;\n\nconst attributes = {\n INVALID: 'invalid',\n REQUIRED: 'required',\n DISABLED: 'disabled'\n};\n\nconst classes = {\n ROOT: 'forge-quantity-field',\n INVALID: 'forge-quantity-field--invalid',\n REQUIRED: 'forge-quantity-field--required'\n};\n\nconst slots = {\n INCREMENT_BUTTON: 'increment-button',\n DECREMENT_BUTTON: 'decrement-button',\n LABEL: 'label',\n HELPER_TEXT: 'helper-text'\n};\n\nconst selectors = {\n ROOT: `.${classes.ROOT}`,\n INCREMENT_BUTTON_SLOT: `slot[name=${slots.INCREMENT_BUTTON}]`,\n DECREMENT_BUTTON_SLOT: `slot[name=${slots.DECREMENT_BUTTON}]`,\n INCREMENT_BUTTON: `[slot=${slots.INCREMENT_BUTTON}] button, button[slot=${slots.INCREMENT_BUTTON}]`,\n DECREMENT_BUTTON: `[slot=${slots.DECREMENT_BUTTON}] button, button[slot=${slots.DECREMENT_BUTTON}]`,\n TEXT_FIELD: 'forge-text-field',\n INPUT: 'input[type=number]',\n LABEL: `[slot=${slots.LABEL}]`,\n HELPER_TEXT: `[slot=${slots.HELPER_TEXT}]`\n};\n\nexport const QUANTITY_FIELD_CONSTANTS = {\n elementName,\n classes,\n slots,\n selectors,\n attributes\n};\n", "import { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { IQuantityFieldComponent } from './quantity-field';\nimport { getShadowElement, Platform } from '@tylertech/forge-core';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { TextFieldComponent } from '../text-field';\n\nexport interface IQuantityFieldAdapter extends IBaseAdapter {\n addRootClass(name: string): void;\n removeRootClass(name: string): void;\n inputHasAttribute(name: string): boolean;\n addIncrementButtonSlotListener(listener: () => void): void;\n removeIncrementButtonSlotListener(listener: () => void): void;\n addDecrementButtonSlotListener(listener: (evt: Event) => void): void;\n removeDecrementButtonSlotListener(listener: (evt: Event) => void): void;\n addIncrementEventListener(event: string, callback: (event: Event) => void): void;\n addDecrementEventListener(event: string, callback: (event: Event) => void): void;\n removeIncrementEventListener(event: string, callback: (event: Event) => void): void;\n removeDecrementEventListener(event: string, callback: (event: Event) => void): void;\n addIncrementButtonAttribute(name: string, value?: string): void;\n removeIncrementButtonAttribute(name: string): void;\n addDecrementButtonAttribute(name: string, value?: string): void;\n removeDecrementButtonAttribute(name: string): void;\n addInputDisabledAttributeChangeListener(callback: () => void): void;\n addTextFieldAttribute(name: string, value?: string): void;\n removeTextFieldAttribute(name: string): void;\n removeInputDisabledAttributeChangeListener(): void;\n setLabelAsRequired(required: boolean): void;\n increment(): void;\n decrement(): void;\n}\n\nexport class QuantityFieldAdapter extends BaseAdapter<IQuantityFieldComponent> implements IQuantityFieldAdapter {\n private _rootElement: HTMLElement;\n private _incrementButtonSlot: HTMLSlotElement;\n private _decrementButtonSlot: HTMLSlotElement;\n private _incrementButton: HTMLButtonElement;\n private _decrementButton: HTMLButtonElement;\n private _textField: TextFieldComponent;\n private _inputElement: HTMLInputElement | null;\n private _inputAttributeMutationObserver: MutationObserver | undefined;\n\n constructor(component: IQuantityFieldComponent) {\n super(component);\n this._rootElement = getShadowElement(component, QUANTITY_FIELD_CONSTANTS.selectors.ROOT);\n this._incrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON_SLOT) as HTMLSlotElement;\n this._decrementButtonSlot = getShadowElement(this._component, QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON_SLOT) as HTMLSlotElement;\n }\n\n public addRootClass(name: string): void {\n this._rootElement.classList.add(name);\n }\n\n public removeRootClass(name: string): void {\n this._rootElement.classList.remove(name);\n }\n\n public inputHasAttribute(name: string): boolean {\n if (!this.inputElement) {\n return false;\n }\n\n return this.inputElement.hasAttribute(name);\n }\n\n public addIncrementButtonSlotListener(listener: () => void): void {\n this._incrementButtonSlot.addEventListener('slotchange', listener);\n }\n\n public removeIncrementButtonSlotListener(listener: () => void): void {\n if (this._incrementButtonSlot) {\n this._incrementButtonSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addDecrementButtonSlotListener(listener: (evt: Event) => void): void {\n this._decrementButtonSlot.addEventListener('slotchange', listener);\n }\n\n public removeDecrementButtonSlotListener(listener: (evt: Event) => void): void {\n if (this._decrementButtonSlot) {\n this._decrementButtonSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addTextFieldAttribute(name: string, value = ''): void {\n if (this._textFieldComponent) {\n this._textFieldComponent.setAttribute(name, value);\n }\n }\n\n public removeTextFieldAttribute(name: string): void {\n if (this._textFieldComponent) {\n this._textFieldComponent.removeAttribute(name);\n }\n }\n\n public addIncrementEventListener(event: string, callback: (event: Event) => void): void {\n this._incrementButtonElement.addEventListener(event, callback);\n }\n\n public removeIncrementEventListener(event: string, callback: (event: Event) => void): void {\n if (this._incrementButtonElement) {\n this._incrementButtonElement.removeEventListener(event, callback);\n }\n }\n\n public addDecrementEventListener(event: string, callback: (event: Event) => void): void {\n this._decrementButtonElement.addEventListener(event, callback);\n }\n\n public removeDecrementEventListener(event: string, callback: (event: Event) => void): void {\n if (this._decrementButtonElement) {\n this._decrementButtonElement.removeEventListener(event, callback);\n }\n }\n\n public addIncrementButtonAttribute(name: string, value = ''): void {\n this._incrementButtonElement.setAttribute(name, value);\n }\n\n public removeIncrementButtonAttribute(name: string): void {\n this._incrementButtonElement.removeAttribute(name);\n }\n\n public addDecrementButtonAttribute(name: string, value = ''): void {\n this._decrementButtonElement.setAttribute(name, value);\n }\n\n public removeDecrementButtonAttribute(name: string): void {\n this._decrementButtonElement.removeAttribute(name);\n }\n\n public setLabelAsRequired(required: boolean): void {\n const labelElement = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.LABEL) as HTMLLabelElement;\n\n // Due to a Safari bug with ::slotted::after selectors, we need to manually append the required \"asterisk\" to the label text\n // https://bugs.webkit.org/show_bug.cgi?id=178237\n if (required && Platform.WEBKIT && labelElement && !labelElement.innerText.endsWith('*')) {\n const asterisk = document.createElement('span');\n asterisk.style.color = 'var(--mdc-theme-error)';\n asterisk.style.marginLeft = '1px';\n asterisk.textContent = '*';\n labelElement.appendChild(asterisk);\n }\n }\n\n public increment(): void {\n const input = this.inputElement;\n if (!input) {\n return;\n }\n\n const curValue = +input.value;\n const precision = this._calcPrecision(this._inputStep);\n let newValue = parseFloat((curValue + this._inputStep).toFixed(precision));\n if (!!this._inputMax && this._inputMax < newValue) {\n newValue = this._inputMax;\n }\n\n this._setInputValue(newValue);\n }\n\n public decrement(): void {\n const input = this.inputElement;\n if (!input) {\n return;\n }\n\n const curValue = +input.value;\n const precision = this._calcPrecision(this._inputStep);\n let newValue = parseFloat((curValue - this._inputStep).toFixed(precision));\n if (!!this._inputMin && this._inputMin > newValue) {\n newValue = this._inputMin;\n }\n\n this._setInputValue(newValue);\n }\n\n public addInputDisabledAttributeChangeListener(callback: () => void): void {\n this._setupInputDisabledAttributeMutationObserver(callback);\n }\n\n public removeInputDisabledAttributeChangeListener(): void {\n this._cleanupInputDisabledAttributeMutationObserver();\n }\n\n private _setInputValue(value: string | number): void {\n if (!this.inputElement) {\n return;\n }\n\n this.inputElement.value = `${value}`;\n this.inputElement.dispatchEvent(new Event('input'));\n this.inputElement.dispatchEvent(new Event('change'));\n }\n\n private _isNullOrUndefinedOrEmpty(value: any): value is null | undefined {\n return value === null || value === undefined || value === '';\n }\n\n private _setupInputDisabledAttributeMutationObserver(callback: () => void): void {\n if (!this.inputElement) {\n return;\n }\n\n this._cleanupInputDisabledAttributeMutationObserver();\n const mutationCallback = (mutationRecords: MutationRecord[]): void => this._inputDisabledAttributeMutationCallback(mutationRecords, callback);\n this._inputAttributeMutationObserver = new MutationObserver(mutationCallback);\n const mutationOptions: MutationObserverInit = {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: [QUANTITY_FIELD_CONSTANTS.attributes.DISABLED]\n };\n this._inputAttributeMutationObserver.observe(this.inputElement, mutationOptions);\n }\n\n private _cleanupInputDisabledAttributeMutationObserver(): void {\n if (this._inputAttributeMutationObserver) {\n this._inputAttributeMutationObserver.disconnect();\n delete this._inputAttributeMutationObserver;\n }\n }\n\n private _inputDisabledAttributeMutationCallback(mutationRecords: MutationRecord[], callback: () => void): void {\n for (const mutationRecord of mutationRecords) {\n // Skip:\n // - Non-attribute mutations.\n // - Mutations without an attribute name.\n // - Mutations without a matching attribute name.\n // - Mutations that did not change the attribute value.\n if (mutationRecord.type !== 'attributes'\n || !mutationRecord.attributeName\n || mutationRecord.attributeName !== QUANTITY_FIELD_CONSTANTS.attributes.DISABLED\n || mutationRecord.target[mutationRecord.attributeName] === mutationRecord.oldValue) {\n continue;\n }\n\n callback();\n }\n }\n\n private get _incrementButtonElement(): HTMLButtonElement {\n if (!this._incrementButton) {\n this._incrementButton = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON) as HTMLButtonElement;\n }\n return this._incrementButton;\n }\n\n private get _decrementButtonElement(): HTMLButtonElement {\n if (!this._decrementButton) {\n this._decrementButton = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON) as HTMLButtonElement;\n }\n return this._decrementButton;\n }\n\n private get _textFieldComponent(): TextFieldComponent {\n if (!this._textField) {\n this._textField = this._component.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.TEXT_FIELD) as TextFieldComponent;\n }\n return this._textField;\n }\n\n public get inputElement(): HTMLInputElement | null {\n if (!this._inputElement) {\n this._inputElement = this._component.querySelector<HTMLInputElement>(QUANTITY_FIELD_CONSTANTS.selectors.INPUT);\n }\n return this._inputElement;\n }\n\n private get _inputStep(): number {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.step)) {\n return 1;\n }\n\n return +input.step;\n }\n\n private get _inputMax(): number | null {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.max)) {\n return null;\n }\n\n return +input.max;\n }\n\n private get _inputMin(): number | null {\n const input = this.inputElement;\n if (!input || this._isNullOrUndefinedOrEmpty(input.min)) {\n return null;\n }\n\n return +input.min;\n }\n\n private _calcPrecision(value: number): number {\n const strVal = String(value);\n if (strVal.includes('.')) {\n return strVal.split('.')[1].length;\n }\n return 0;\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IQuantityFieldAdapter } from './quantity-field-adapter';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\n\nexport interface IQuantityFieldFoundation extends ICustomElementFoundation {\n required: boolean;\n invalid: boolean;\n}\n\nexport class QuantityFieldFoundation implements IQuantityFieldFoundation {\n private _required: boolean;\n private _invalid: boolean;\n private _incrementButtonSlotChanged: () => void;\n private _decrementButtonSlotChanged: () => void;\n private _incrementValue: () => void;\n private _decrementValue: () => void;\n\n constructor(private _adapter: IQuantityFieldAdapter) {\n this._incrementValue = () => this._adapter.increment();\n this._decrementValue = () => this._adapter.decrement();\n this._incrementButtonSlotChanged = () => this._onIncrementButtonSlotChanged();\n this._decrementButtonSlotChanged = () => this._onDecrementButtonSlotChanged();\n\n this._adapter.addIncrementButtonSlotListener(this._incrementButtonSlotChanged);\n this._adapter.addDecrementButtonSlotListener(this._decrementButtonSlotChanged);\n }\n\n public connect(): void {\n this._adapter.addInputDisabledAttributeChangeListener(() => this._syncDisabledStateOfButtons());\n this._syncDisabledStateOfButtons();\n }\n\n public disconnect(): void {\n this._removeIncrementEventListener();\n this._removeDecrementEventListener();\n this._removeIncrementButtonSlotListener();\n this._removeDecrementButtonSlotListener();\n this._adapter.removeInputDisabledAttributeChangeListener();\n }\n\n private _onIncrementButtonSlotChanged(): void {\n this._addIncrementEventListener();\n }\n\n private _onDecrementButtonSlotChanged(): void {\n this._addDecrementEventListener();\n }\n\n private _addIncrementEventListener(): void {\n this._adapter.addIncrementEventListener('click', this._incrementValue);\n }\n\n private _addDecrementEventListener(): void {\n this._adapter.addDecrementEventListener('click', this._decrementValue);\n }\n\n private _removeIncrementEventListener(): void {\n this._adapter.removeIncrementEventListener('click', this._incrementValue);\n }\n\n private _removeDecrementEventListener(): void {\n this._adapter.removeDecrementEventListener('click', this._decrementValue);\n }\n\n private _removeIncrementButtonSlotListener(): void {\n this._adapter.removeIncrementButtonSlotListener(this._incrementButtonSlotChanged);\n }\n\n private _removeDecrementButtonSlotListener(): void {\n this._adapter.removeDecrementButtonSlotListener(this._decrementButtonSlotChanged);\n }\n\n private _syncDisabledStateOfButtons(): void {\n const isDisabled = this._adapter.inputHasAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n if (isDisabled) {\n this._adapter.addDecrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n this._adapter.addIncrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeIncrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n this._adapter.removeDecrementButtonAttribute(QUANTITY_FIELD_CONSTANTS.attributes.DISABLED);\n }\n }\n\n public get required(): boolean {\n return this._required;\n }\n public set required(value: boolean) {\n if (this._required === value) {\n return;\n }\n\n this._required = value;\n\n if (this._required) {\n this._adapter.setHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED);\n this._adapter.addRootClass(QUANTITY_FIELD_CONSTANTS.classes.REQUIRED);\n } else {\n this._adapter.removeHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED);\n this._adapter.removeRootClass(QUANTITY_FIELD_CONSTANTS.classes.REQUIRED);\n }\n\n this._adapter.setLabelAsRequired(this._required);\n }\n\n public get invalid(): boolean {\n return this._invalid;\n }\n public set invalid(value: boolean) {\n if (this._invalid === value) {\n return;\n }\n\n this._invalid = value;\n\n if (this._invalid) {\n this._adapter.setHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n this._adapter.addRootClass(QUANTITY_FIELD_CONSTANTS.classes.INVALID);\n this._adapter.addTextFieldAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n } else {\n this._adapter.removeHostAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n this._adapter.removeRootClass(QUANTITY_FIELD_CONSTANTS.classes.INVALID);\n this._adapter.removeTextFieldAttribute(QUANTITY_FIELD_CONSTANTS.attributes.INVALID);\n }\n }\n\n}\n", "import { CustomElement, attachShadowTemplate, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { QuantityFieldAdapter } from './quantity-field-adapter';\nimport { QuantityFieldFoundation } from './quantity-field-foundation';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { IconButtonComponent } from '../icon-button';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-quantity-field\\\" part=\\\"root\\\"><slot name=\\\"label\\\"></slot><div class=\\\"forge-quantity-field__row\\\" part=\\\"row\\\"><slot name=\\\"decrement-button\\\"></slot><slot></slot><slot name=\\\"increment-button\\\"></slot></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-quantity-field ::slotted([slot=label]){-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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);height:1rem;color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-quantity-field ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}.forge-quantity-field__row{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.forge-quantity-field ::slotted(forge-icon-button:first-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-right:4px}.forge-quantity-field ::slotted(forge-icon-button:last-of-type){color:var(--mdc-theme-text-secondary-on-light);margin-left:4px}.forge-quantity-field ::slotted(forge-text-field){--forge-text-field-margin-top:0;--forge-text-field-margin-bottom:0}.forge-quantity-field--required ::slotted([slot=label])::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:1px}.forge-quantity-field--invalid ::slotted([slot=label]){-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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::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));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);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);height:1rem;color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-quantity-field--invalid ::slotted([slot=helper-text])::before{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:0}:host{display:inline-block}:host([hidden]){display:none}';\n\nexport interface IQuantityFieldComponent extends IBaseComponent {\n invalid: boolean;\n required: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-quantity-field': IQuantityFieldComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-quantity-field>` custom element.\n * \n * @tag forge-quantity-field\n */\n@CustomElement({\n name: QUANTITY_FIELD_CONSTANTS.elementName,\n dependencies: [\n IconButtonComponent\n ]\n})\nexport class QuantityFieldComponent extends BaseComponent implements IQuantityFieldComponent {\n public static get observedAttributes(): string[] {\n return [\n QUANTITY_FIELD_CONSTANTS.attributes.INVALID,\n QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED\n ];\n }\n\n private _foundation: QuantityFieldFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new QuantityFieldFoundation(new QuantityFieldAdapter(this));\n }\n\n public connectedCallback(): void {\n if (this._requiredElementsPresent()) {\n this._foundation.connect();\n } else {\n this._ensureElementsPresent().then(() => {\n this._foundation.connect();\n });\n }\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 QUANTITY_FIELD_CONSTANTS.attributes.INVALID:\n this.invalid = coerceBoolean(newValue);\n break;\n case QUANTITY_FIELD_CONSTANTS.attributes.REQUIRED:\n this.required = coerceBoolean(newValue);\n break;\n }\n }\n\n private _ensureElementsPresent(): Promise<void> {\n return new Promise<void>(resolve => {\n if (this._requiredElementsPresent()) {\n resolve();\n return;\n }\n\n const observer = new MutationObserver(changes => {\n const hasAddedNodes = changes.reduce((prev, curr) => prev + curr.addedNodes.length, 0) > 0;\n if (hasAddedNodes) {\n if (this._requiredElementsPresent()) {\n observer.disconnect();\n resolve();\n }\n }\n });\n observer.observe(this, { childList: true, subtree: true });\n });\n }\n\n private _requiredElementsPresent(): boolean {\n const inputElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INPUT);\n const decrementElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.DECREMENT_BUTTON);\n const incrementElement = this.querySelector(QUANTITY_FIELD_CONSTANTS.selectors.INCREMENT_BUTTON);\n return !!inputElement && !!decrementElement && !!incrementElement;\n }\n\n /** Gets/sets the invalid state. */\n @FoundationProperty()\n public invalid: boolean;\n\n /** Gets/sets the required state which controls the visibility of the asterisk in the label. */\n @FoundationProperty()\n public required: boolean;\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { IconButtonComponentDelegate } from '../icon-button';\nimport { ITextFieldComponentDelegateConfig, TextFieldComponentDelegate } from '../text-field/text-field-component-delegate';\nimport { IQuantityFieldComponent } from './quantity-field';\nimport { QUANTITY_FIELD_CONSTANTS } from './quantity-field-constants';\nimport { tylIconRemoveCircleOutline, tylIconControlPoint } from '@tylertech/tyler-icons/standard';\nimport { IconRegistry } from '../icon';\n\nexport type QuantityFieldComponentDelegateProps = Partial<IQuantityFieldComponent>;\nexport interface IQuantityFieldComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n id?: string;\n label?: string;\n value?: string;\n step?: string;\n helperText?: string;\n textFieldDelegateConfig?: ITextFieldComponentDelegateConfig;\n}\nexport interface IQuantityFieldComponentDelegateConfig extends IBaseComponentDelegateConfig<IQuantityFieldComponent, IQuantityFieldComponentDelegateOptions> {}\n\nexport class QuantityFieldComponentDelegate extends FormFieldComponentDelegate<IQuantityFieldComponent, IQuantityFieldComponentDelegateOptions> {\n private _textFieldDelegate: TextFieldComponentDelegate;\n private _labelElement: HTMLLabelElement | undefined;\n private _helperTextElement: HTMLSpanElement | undefined;\n\n constructor(config?: IQuantityFieldComponentDelegateConfig) {\n super(config);\n IconRegistry.define([tylIconRemoveCircleOutline, tylIconControlPoint]);\n }\n\n protected _build(): IQuantityFieldComponent {\n const quantityField = document.createElement(QUANTITY_FIELD_CONSTANTS.elementName);\n this._attachButton(quantityField, tylIconRemoveCircleOutline.name, 'decrement-button');\n this._attachTextField(quantityField);\n this._attachButton(quantityField, tylIconControlPoint.name, 'increment-button');\n return quantityField;\n }\n\n protected override _configure(): void {\n this.inputElement.value = this._config.options?.value ?? '0';\n this.inputElement.style.textAlign = 'center';\n this.inputElement.style.width = '64px';\n\n if (this._config.options?.helperText) {\n this.setHelperText(this._config.options.helperText);\n }\n if (typeof this._config.options?.label === 'string') {\n this._createLabel(this._config.options.label);\n }\n if (this._config.options?.step !== undefined) {\n this.inputElement.step = this._config.options.step;\n }\n }\n\n public get value(): string {\n return this._textFieldDelegate.inputElement.value;\n }\n public set value(value: string) {\n this._textFieldDelegate.inputElement.value = value;\n }\n\n public get disabled(): boolean {\n return this._textFieldDelegate.inputElement.disabled;\n }\n public set disabled(value: boolean) {\n this._textFieldDelegate.inputElement.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._element.invalid || false;\n }\n public set invalid(value: boolean) {\n this._element.invalid = value;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._textFieldDelegate.inputElement;\n }\n\n public get labelElement(): HTMLLabelElement | undefined {\n return this._labelElement;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('input', evt => listener((evt.target as HTMLInputElement).value));\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('blur', evt => listener(evt));\n }\n\n private _attachTextField(quantityField: IQuantityFieldComponent): void {\n const textFieldConfig: ITextFieldComponentDelegateConfig = {\n props: { ...this._config.options?.textFieldDelegateConfig?.props },\n options: {\n ...this._config.options?.textFieldDelegateConfig?.options,\n id: this._config.options?.id,\n type: 'number'\n }\n };\n this._textFieldDelegate = new TextFieldComponentDelegate(textFieldConfig);\n quantityField.appendChild(this._textFieldDelegate.element);\n }\n\n public setLabel(text: string | null): void {\n if (text) {\n if (this._labelElement) {\n this._labelElement.textContent = text;\n } else {\n this._createLabel(text);\n }\n } else if (this._labelElement) {\n this._element.removeChild(this._labelElement);\n this._labelElement = undefined;\n }\n }\n\n public setHelperText(text: string | null): void {\n if (text) {\n if (!this._helperTextElement) {\n this._helperTextElement = document.createElement('span');\n this._helperTextElement.slot = 'helper-text';\n this._element.appendChild(this._helperTextElement);\n }\n this._helperTextElement.textContent = text;\n } else if (this._helperTextElement) {\n this._element.removeChild(this._helperTextElement);\n this._helperTextElement = undefined;\n }\n }\n\n private _createLabel(text: string): void {\n this._labelElement = document.createElement('label');\n this._labelElement.textContent = text;\n this._labelElement.slot = 'label';\n if (this._config.options?.id) {\n this._labelElement.setAttribute('for', this._config.options.id);\n }\n this._element.appendChild(this._labelElement);\n }\n\n private _attachButton(parent: HTMLElement, iconName: string, slot: string): IconButtonComponentDelegate {\n const iconButtonDelegate = new IconButtonComponentDelegate({\n options: {\n iconName,\n parent,\n attributes: { slot }\n }\n });\n return iconButtonDelegate;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { QuantityFieldComponent } from './quantity-field';\n\nexport * from './quantity-field-adapter';\nexport * from './quantity-field-constants';\nexport * from './quantity-field-foundation';\nexport * from './quantity-field';\nexport * from './quantity-field-component-delegate';\n\nexport function defineQuantityFieldComponent(): void {\n defineCustomElement(QuantityFieldComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -6,7 +6,7 @@
6
6
  import {
7
7
  ForgeRipple,
8
8
  ForgeRippleFoundation
9
- } from "./chunk.C2MR3RDF.js";
9
+ } from "./chunk.56BNM7F2.js";
10
10
  import {
11
11
  FoundationProperty
12
12
  } from "./chunk.MMIZOYAS.js";
@@ -447,4 +447,4 @@ export {
447
447
  RadioComponent,
448
448
  defineRadioComponent
449
449
  };
450
- //# sourceMappingURL=chunk.VTXXZ5KT.js.map
450
+ //# sourceMappingURL=chunk.4PF7WRP4.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/radio/radio-constants.ts", "../../src/radio/radio-foundation.ts", "../../src/radio/radio-adapter.ts", "../../src/radio/radio.ts", "../../src/radio/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}radio`;\n\nconst classes = {\n RADIO: 'mdc-radio',\n RADIO_DENSE: 'forge-radio--dense',\n DISABLED: 'mdc-radio--disabled',\n WRAPPER_DISABLED: 'forge-radio-wrapper--disabled',\n CHECKED: 'forge-radio--checked',\n FOCUSED: 'forge-radio--focused',\n ENABLED: 'forge-radio--enabled'\n};\n\nconst selectors = {\n WRAPPER: '.forge-radio-wrapper',\n RADIO: '.mdc-radio',\n RADIO_INPUT: 'input[type=\"radio\"]',\n LABEL: 'label'\n};\n\nconst attributes = {\n DENSE: 'dense',\n ROLE: 'role',\n RADIOGROUP_ROLE: 'radiogroup',\n SLOT: 'slot'\n};\n\nconst inputProperties = ['checked', 'disabled'];\n\nexport const RADIO_CONSTANTS = {\n elementName,\n classes,\n selectors,\n attributes,\n inputProperties\n};\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\n\nimport { IRadioAdapter } from './radio-adapter';\nimport { RADIO_CONSTANTS } from './radio-constants';\n\nexport interface IRadioFoundation extends ICustomElementFoundation {\n dense: boolean;\n}\n\nexport class RadioFoundation implements IRadioFoundation {\n private _dense = false;\n private _focusListenerCallback: () => void;\n private _disabledListenerCallback: () => void;\n private _syncRadiogroupCheckStyles: () => void;\n\n constructor(private _adapter: IRadioAdapter) {}\n\n public connect(): void {\n this._adapter.connect();\n this._adapter.initializeRipple();\n this._focusListenerCallback = () => this._adapter.syncFocusedStateWithInput();\n this._disabledListenerCallback = () => this._adapter.syncDisabledStateWithInput();\n this._syncRadiogroupCheckStyles = () => this._adapter.syncRadiogroupCheckStyles();\n this._addFocusEventListeners();\n this._addInputDisabledListener();\n this._extendNativeInputSetter();\n this._addRadioChangeListener();\n this._adapter.syncCheckedStateWithInput();\n this._adapter.syncDisabledStateWithInput();\n this._adapter.syncFocusedStateWithInput();\n this._applyDense();\n this.syncCheckedState();\n }\n\n public disconnect(): void {\n this._removeFocusEventListeners();\n this._removeInputDisabledListener();\n this._adapter.revertNativeInputSetter();\n this._removeRadioChangeListener();\n this._adapter.destroyRipple();\n }\n\n public syncCheckedState(): void {\n this._adapter.syncCheckedStateWithInput();\n }\n\n private _applyDense(): void {\n if (this._dense) {\n this._adapter.addRootClass(RADIO_CONSTANTS.classes.RADIO_DENSE);\n this._adapter.setHostAttribute(RADIO_CONSTANTS.attributes.DENSE);\n } else {\n this._adapter.removeRootClass(RADIO_CONSTANTS.classes.RADIO_DENSE);\n this._adapter.removeHostAttribute(RADIO_CONSTANTS.attributes.DENSE);\n }\n }\n\n private _extendNativeInputSetter(): void {\n this._adapter.extendNativeInputSetter(this._syncRadiogroupCheckStyles);\n }\n\n private _addRadioChangeListener(): void {\n this._adapter.addInputEventListener('change', this._syncRadiogroupCheckStyles);\n }\n\n private _removeRadioChangeListener(): void {\n this._adapter.removeInputEventListener('change', this._syncRadiogroupCheckStyles);\n }\n\n private _addFocusEventListeners(): void {\n this._adapter.addInputEventListener('focus', this._focusListenerCallback);\n this._adapter.addInputEventListener('blur', this._focusListenerCallback);\n }\n\n private _removeFocusEventListeners(): void {\n this._adapter.removeInputEventListener('focus', this._focusListenerCallback);\n this._adapter.removeInputEventListener('blur', this._focusListenerCallback);\n }\n\n private _addInputDisabledListener(): void {\n this._adapter.addInputDisabledAttributeChangeListener(this._disabledListenerCallback);\n }\n\n private _removeInputDisabledListener(): void {\n this._adapter.removeInputDisabledAttributeChangeListener();\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._applyDense();\n }\n }\n}\n", "import { addClass, getShadowElement, removeClass, getActiveElement } from '@tylertech/forge-core';\nimport { IRadioComponent } from './radio';\nimport { RADIO_CONSTANTS } from './radio-constants';\nimport { ForgeRipple, ForgeRippleAdapter, ForgeRippleCapableSurface, ForgeRippleFoundation } from '../ripple';\n\nexport interface IRadioAdapter {\n connect(): void;\n initializeRipple(): void;\n destroyRipple(): void;\n setHostAttribute(name: string, value?: string): void;\n removeHostAttribute(name: string): void;\n addRootClass(className: string): void;\n removeRootClass(className: string): void;\n addContainerClass(className: string): void;\n removeContainerClass(className: string): void;\n syncCheckedStateWithInput(): void;\n syncFocusedStateWithInput(): void;\n syncDisabledStateWithInput(): void;\n addInputEventListener(event: string, callback: (event: Event) => void): void;\n removeInputEventListener(event: string, callback: (event: Event) => void): void;\n addInputDisabledAttributeChangeListener(callback: () => void): void;\n removeInputDisabledAttributeChangeListener(): void;\n extendNativeInputSetter(callback: () => void): void;\n revertNativeInputSetter(): void;\n syncRadiogroupCheckStyles(): void;\n}\n\nexport class RadioAdapter implements IRadioAdapter, ForgeRippleCapableSurface {\n private _shadowRoot: HTMLElement;\n private _containerElement: HTMLElement;\n private _nativeInputElement: HTMLInputElement | null;\n private _inputAttributeMutationObserver?: MutationObserver;\n private _rippleInstance: ForgeRipple;\n\n constructor(private _component: IRadioComponent) {\n this._shadowRoot = getShadowElement(this._component, RADIO_CONSTANTS.selectors.RADIO);\n this._containerElement = getShadowElement(this._component, RADIO_CONSTANTS.selectors.WRAPPER);\n }\n\n // ForgeRippleCapableSurface\n public get root(): Element {\n return this._shadowRoot;\n }\n\n public get unbounded(): boolean | undefined {\n return true;\n }\n\n public get disabled(): boolean | undefined {\n return this._isDisabled();\n }\n\n public connect(): void {\n const labelElement = this._component.querySelector(RADIO_CONSTANTS.selectors.LABEL) as HTMLLabelElement;\n if (labelElement) {\n labelElement.setAttribute(RADIO_CONSTANTS.attributes.SLOT, RADIO_CONSTANTS.selectors.LABEL);\n }\n }\n\n public initializeRipple(): void {\n this._rippleInstance = this._createRipple();\n\n requestAnimationFrame(() => {\n if (this._rippleInstance) {\n this._rippleInstance.layout();\n }\n });\n }\n\n public destroyRipple(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n }\n\n public setHostAttribute(name: string, value = ''): void {\n this._component.setAttribute(name, value);\n }\n\n public removeHostAttribute(name: string): void {\n this._component.removeAttribute(name);\n }\n\n public addRootClass(className: string): void {\n this._shadowRoot.classList.add(className);\n }\n\n public removeRootClass(className: string): void {\n this._shadowRoot.classList.remove(className);\n }\n\n public addContainerClass(className: string): void {\n this._containerElement.classList.add(className);\n }\n\n public removeContainerClass(className: string): void {\n this._containerElement.classList.remove(className);\n }\n\n public syncDisabledStateWithInput(): void {\n if (this.inputDisabled) {\n this.addRootClass(RADIO_CONSTANTS.classes.DISABLED);\n this.removeRootClass(RADIO_CONSTANTS.classes.ENABLED);\n this.addContainerClass(RADIO_CONSTANTS.classes.WRAPPER_DISABLED);\n } else {\n this.addRootClass(RADIO_CONSTANTS.classes.ENABLED);\n this.removeRootClass(RADIO_CONSTANTS.classes.DISABLED);\n this.removeContainerClass(RADIO_CONSTANTS.classes.WRAPPER_DISABLED);\n }\n }\n\n public syncFocusedStateWithInput(): void {\n if (getActiveElement() === this._inputElement) {\n this.addRootClass(RADIO_CONSTANTS.classes.FOCUSED);\n } else {\n this.removeRootClass(RADIO_CONSTANTS.classes.FOCUSED);\n }\n }\n\n public syncCheckedStateWithInput(): void {\n if (this.inputChecked) {\n this.addRootClass(RADIO_CONSTANTS.classes.CHECKED);\n } else {\n this.removeRootClass(RADIO_CONSTANTS.classes.CHECKED);\n }\n }\n\n public addInputEventListener(event: string, callback: (event: Event) => void): void {\n if (!this._inputElement) {\n return;\n }\n\n this._inputElement.addEventListener(event, callback);\n }\n\n public removeInputEventListener(event: string, callback: (event: Event) => void): void {\n if (!this._inputElement) {\n return;\n }\n\n this._inputElement.removeEventListener(event, callback);\n }\n\n public addInputDisabledAttributeChangeListener(callback: () => void): void {\n this._setupInputDisabledAttributeMutationObserver(callback);\n }\n\n public removeInputDisabledAttributeChangeListener(): void {\n this._cleanupInputDisabledAttributeMutationObserver();\n }\n\n // Get the collection of all forge-radios under the containing radiogroup ancestor.\n public getRadiosFromContainingRadiogroup(): NodeListOf<IRadioComponent> | null {\n const radioGroup = this._getContainingRadioGroup(this._component);\n if (radioGroup == null) {\n return null;\n }\n\n return radioGroup.querySelectorAll(RADIO_CONSTANTS.elementName);\n }\n\n public syncRadiogroupCheckStyles(): void {\n const radios = this.getRadiosFromContainingRadiogroup();\n if (radios) {\n radios.forEach(x => x.syncCheckedState());\n }\n }\n\n public extendNativeInputSetter(callback: () => void): void {\n if (!this._inputElement) {\n return;\n }\n\n const nativeInput = this._inputElement;\n const inputProto = Object.getPrototypeOf(nativeInput);\n RADIO_CONSTANTS.inputProperties.forEach(controlState => {\n const desc = Object.getOwnPropertyDescriptor(inputProto, controlState) as PropertyDescriptor;\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!this._validPropertyDescriptor(desc)) {\n return;\n }\n\n if (desc) {\n const nativeInputDesc = {\n configurable: desc.configurable,\n enumerable: desc.enumerable,\n get: desc.get,\n set: (state: boolean) => {\n desc.set?.call(nativeInput, state);\n callback();\n }\n };\n Object.defineProperty(nativeInput, controlState, nativeInputDesc);\n }\n });\n }\n\n public revertNativeInputSetter(): void {\n if (!this._inputElement) {\n return;\n }\n\n const nativeInput = this._inputElement;\n const inputProto = Object.getPrototypeOf(nativeInput);\n RADIO_CONSTANTS.inputProperties.forEach(controlState => {\n const desc = Object.getOwnPropertyDescriptor(inputProto, controlState) as PropertyDescriptor;\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!this._validPropertyDescriptor(desc)) {\n return;\n }\n Object.defineProperty(nativeInput, controlState, desc);\n });\n }\n\n private _validPropertyDescriptor(inputPropDesc: PropertyDescriptor | undefined): boolean {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n }\n\n // Recursively crawl up the node tree looking for the containing radiogroup ancestor element.\n private _getContainingRadioGroup(element: HTMLElement): HTMLElement | null {\n if (!element || !element.parentElement) {\n throw new Error('Unable to locate ancestor element with role=\"radiogroup\". When using radios, a parent with this attribute must be applied.');\n }\n\n const parentElement = element.parentElement;\n const roleValue = parentElement.getAttribute(RADIO_CONSTANTS.attributes.ROLE);\n if (!!roleValue && roleValue.toLocaleLowerCase() === RADIO_CONSTANTS.attributes.RADIOGROUP_ROLE.toLocaleLowerCase()) {\n return parentElement;\n }\n\n return this._getContainingRadioGroup(parentElement);\n }\n\n private _setupInputDisabledAttributeMutationObserver(callback: () => void): void {\n if (!this._inputElement) {\n return;\n }\n\n this._cleanupInputDisabledAttributeMutationObserver();\n const mutationCallback = (mutationRecords: MutationRecord[]): void => this._inputDisabledAttributeMutationCallback(mutationRecords, callback);\n this._inputAttributeMutationObserver = new MutationObserver(mutationCallback);\n const mutationOptions: MutationObserverInit = {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['disabled']\n };\n this._inputAttributeMutationObserver.observe(this._inputElement, mutationOptions);\n }\n\n private _cleanupInputDisabledAttributeMutationObserver(): void {\n if (this._inputAttributeMutationObserver) {\n this._inputAttributeMutationObserver.disconnect();\n delete this._inputAttributeMutationObserver;\n }\n }\n\n private _inputDisabledAttributeMutationCallback(mutationRecords: MutationRecord[], callback: () => void): void {\n for (const mutationRecord of mutationRecords) {\n // Skip:\n // - Non-attribute mutations.\n // - Mutations without an attribute name.\n // - Mutations without a matching attribute name.\n // - Mutations that did not change the attribute value.\n if (mutationRecord.type !== 'attributes'\n || !mutationRecord.attributeName\n || mutationRecord.attributeName !== 'disabled'\n || mutationRecord.target[mutationRecord.attributeName] === mutationRecord.oldValue) {\n continue;\n }\n\n callback();\n }\n }\n\n public get inputDisabled(): boolean {\n if (!this._inputElement) {\n return false;\n }\n\n return this._inputElement.disabled;\n }\n\n public get inputChecked(): boolean {\n if (!this._inputElement) {\n return false;\n }\n\n return this._inputElement.checked;\n }\n\n private get _inputElement(): HTMLInputElement | null {\n if (!this._nativeInputElement) {\n this._nativeInputElement = this._component.querySelector<HTMLInputElement>(RADIO_CONSTANTS.selectors.RADIO_INPUT);\n }\n\n return this._nativeInputElement;\n }\n\n private _isDisabled(): boolean {\n return this._inputElement ? this._inputElement.disabled : false;\n }\n\n private _createRipple(): ForgeRipple {\n const adapter: ForgeRippleAdapter = {\n ...ForgeRipple.createAdapter(this),\n deregisterInteractionHandler: (evtType, handler) => {\n if (this._inputElement) {\n this._inputElement.removeEventListener(evtType, handler, { passive: true } as AddEventListenerOptions);\n }\n },\n isSurfaceActive: () => this._inputElement ? this._inputElement.matches(':active') : false,\n isUnbounded: () => Boolean(this.unbounded),\n registerInteractionHandler: (evtType, handler) => {\n if (this._inputElement) {\n this._inputElement.addEventListener(evtType, handler, { passive: true });\n }\n },\n isSurfaceDisabled: () => this._inputElement ? this._inputElement.disabled : false,\n addClass: (className: string) => addClass(className, this._shadowRoot),\n removeClass: (className: string) => removeClass(className, this._shadowRoot),\n updateCssVariable: (varName: string, value: string | null) => this._shadowRoot.style.setProperty(varName, value)\n };\n return new ForgeRipple(this._shadowRoot, new ForgeRippleFoundation(adapter));\n }\n}\n", "import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean } from '@tylertech/forge-core';\nimport { RADIO_CONSTANTS } from './radio-constants';\nimport { RadioFoundation } from './radio-foundation';\nimport { RadioAdapter } from './radio-adapter';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-radio-wrapper forge-form-field\\\" part=\\\"root\\\"><div class=\\\"mdc-radio\\\" part=\\\"container\\\"><slot></slot><div class=\\\"mdc-radio__background\\\" part=\\\"background\\\"><div class=\\\"mdc-radio__outer-circle\\\" part=\\\"outer-circle\\\"></div><div class=\\\"mdc-radio__inner-circle\\\" part=\\\"inner-circle\\\"></div></div><div class=\\\"mdc-radio__ripple\\\" part=\\\"ripple-container\\\"></div></div><slot name=\\\"label\\\"></slot></div></template>';\nconst styles = '.mdc-radio{padding:10px;display:inline-block;position:relative;-webkit-box-flex:0;flex:0 0 auto;-webkit-box-sizing:content-box;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color}.mdc-radio.forge-radio--enabled .mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.54);border-color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.mdc-radio.forge-radio--enabled.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle{border-color:#3d5afe;border-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio.forge-radio--enabled .mdc-radio__background .mdc-radio__inner-circle{border-color:#3d5afe;border-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.26);border-color:var(--forge-theme-form-field-icon-disabled-on-background,rgba(0,0,0,.26))}.mdc-radio.mdc-radio--disabled.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.26);border-color:var(--forge-theme-form-field-icon-disabled-on-background,rgba(0,0,0,.26))}.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__inner-circle{border-color:rgba(0,0,0,.26);border-color:var(--forge-theme-form-field-icon-disabled-on-background,rgba(0,0,0,.26))}.mdc-radio .mdc-radio__background::before{background-color:#3d5afe;background-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio .mdc-radio__background::before{top:-10px;left:-10px;width:40px;height:40px}.mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}@media screen and (forced-colors:active),(-ms-high-contrast:active){.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__outer-circle{border-color:GrayText}.mdc-radio.mdc-radio--disabled.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle{border-color:GrayText}.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__inner-circle{border-color:GrayText}}.mdc-radio__background{display:inline-block;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:20px;height:20px}.mdc-radio__background::before{position:absolute;-webkit-transform:scale(0,0);transform:scale(0,0);border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\";-webkit-transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),transform 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1)}.mdc-radio__outer-circle{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;-webkit-transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1)}.mdc-radio__inner-circle{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transform:scale(0,0);transform:scale(0,0);border-width:10px;border-style:solid;border-radius:50%;-webkit-transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:transform 120ms 0s cubic-bezier(.4, 0, .6, 1),border-color 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:transform 120ms 0s cubic-bezier(.4, 0, .6, 1),border-color 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1)}.mdc-radio ::slotted(input[type=radio]){position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;top:0;right:0;left:0;width:40px;height:40px}.mdc-radio.forge-radio--dense{padding:4px;margin:0}.mdc-radio.forge-radio--dense .mdc-radio__background::before{top:-4px;left:-4px;width:28px;height:28px}.mdc-radio.forge-radio--dense .mdc-radio__native-control{top:0;right:0;left:0;width:28px;height:28px}.mdc-radio.forge-radio--dense ::slotted(input[type=radio]){width:28px;height:28px}.mdc-radio--disabled+::slotted(label){color:rgba(0,0,0,.38);color:var(--forge-theme-label-disabled-on-background,rgba(0,0,0,.38))}.forge-radio--checked .mdc-radio__background,.mdc-radio--disabled .mdc-radio__background{-webkit-transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle,.mdc-radio--disabled .mdc-radio__background .mdc-radio__outer-circle{-webkit-transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1);transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1)}.forge-radio--checked .mdc-radio__background .mdc-radio__inner-circle,.mdc-radio--disabled .mdc-radio__background .mdc-radio__inner-circle{-webkit-transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}.mdc-radio--disabled{cursor:default;pointer-events:none}.forge-radio--checked .mdc-radio__background .mdc-radio__inner-circle{-webkit-transform:scale(.5);transform:scale(.5);-webkit-transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}.mdc-radio--disabled .mdc-radio__background{cursor:default}.forge-radio--focused .mdc-radio__background::before{-webkit-transform:scale(1);transform:scale(1);opacity:.12;-webkit-transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-radio{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity}.mdc-radio .mdc-radio__ripple::after,.mdc-radio .mdc-radio__ripple::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\"}.mdc-radio .mdc-radio__ripple::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-radio .mdc-radio__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-radio.mdc-ripple-upgraded--unbounded .mdc-radio__ripple::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-radio.mdc-ripple-upgraded--foreground-activation .mdc-radio__ripple::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-radio.mdc-ripple-upgraded--foreground-deactivation .mdc-radio__ripple::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-radio .mdc-radio__ripple::after,.mdc-radio .mdc-radio__ripple::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after,.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-radio .mdc-radio__ripple::after,.mdc-radio .mdc-radio__ripple::before{background-color:#3d5afe;background-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio.mdc-ripple-surface--hover .mdc-radio__ripple::before,.mdc-radio:hover .mdc-radio__ripple::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__ripple::before,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__ripple::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-radio:not(.mdc-ripple-upgraded) .mdc-radio__ripple::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-radio:not(.mdc-ripple-upgraded):active .mdc-radio__ripple::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-radio.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__background::before,.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__background::before{content:none}.mdc-radio__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.forge-radio-wrapper--disabled{cursor:not-allowed}.forge-radio-wrapper--disabled ::slotted(label){cursor:not-allowed}.forge-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.875rem;font-size:var(--mdc-typography-body2-font-size, .875rem);line-height:1.25rem;line-height:var(--mdc-typography-body2-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight,400);letter-spacing:.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform,inherit);color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;vertical-align:middle}.forge-form-field ::slotted([slot=label]){-webkit-box-ordinal-group:1;order:0;margin-right:auto;padding-left:4px}.forge-form-field forge-switch~::slotted([slot=label]){padding-left:8px}.forge-form-field--align-end ::slotted([slot=label]){-webkit-box-ordinal-group:0;order:-1;margin-left:auto;padding-right:4px}:host{display:inline-block}:host([hidden]){display:none}';\n\nexport interface IRadioComponent extends IBaseComponent {\n dense: boolean;\n syncCheckedState(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-radio': IRadioComponent;\n }\n}\n\n/**\n * The custom element class behind the `<forge-radio>` element.\n */\n@CustomElement({\n name: RADIO_CONSTANTS.elementName\n})\nexport class RadioComponent extends BaseComponent implements IRadioComponent {\n public static get observedAttributes(): string[] {\n return [\n RADIO_CONSTANTS.attributes.DENSE\n ];\n }\n\n protected _foundation: RadioFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new RadioFoundation(new RadioAdapter(this));\n }\n\n public connectedCallback(): void {\n this._ensureRadioInputElement().then(() => this._foundation.connect());\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 RADIO_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n }\n }\n\n private _ensureRadioInputElement(): Promise<void> {\n // Not using core function ensureChild because it was not selecting the input properly\n return new Promise<void>(resolve => {\n const element = this.querySelector(RADIO_CONSTANTS.selectors.RADIO_INPUT);\n if (element) {\n resolve();\n return;\n }\n\n const observer = new MutationObserver(changes => {\n const hasAddedNodes = changes.reduce((prev, curr) => prev + curr.addedNodes.length, 0) > 0;\n if (hasAddedNodes) {\n if (this.querySelector(RADIO_CONSTANTS.selectors.RADIO_INPUT)) {\n observer.disconnect();\n resolve();\n }\n }\n });\n observer.observe(this, { childList: true, subtree: true });\n });\n }\n\n public syncCheckedState(): void {\n this._foundation.syncCheckedState();\n }\n\n /** Gets/sets whether the radio button is dense. */\n @FoundationProperty()\n public dense: boolean;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { RadioComponent } from './radio';\n\nexport * from './radio-constants';\nexport * from './radio';\n\nexport function defineRadioComponent(): void {\n defineCustomElement(RadioComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}radio`;\n\nconst classes = {\n RADIO: 'mdc-radio',\n RADIO_DENSE: 'forge-radio--dense',\n DISABLED: 'mdc-radio--disabled',\n WRAPPER_DISABLED: 'forge-radio-wrapper--disabled',\n CHECKED: 'forge-radio--checked',\n FOCUSED: 'forge-radio--focused',\n ENABLED: 'forge-radio--enabled'\n};\n\nconst selectors = {\n WRAPPER: '.forge-radio-wrapper',\n RADIO: '.mdc-radio',\n RADIO_INPUT: 'input[type=\"radio\"]',\n LABEL: 'label'\n};\n\nconst attributes = {\n DENSE: 'dense',\n ROLE: 'role',\n RADIOGROUP_ROLE: 'radiogroup',\n SLOT: 'slot'\n};\n\nconst inputProperties = ['checked', 'disabled'];\n\nexport const RADIO_CONSTANTS = {\n elementName,\n classes,\n selectors,\n attributes,\n inputProperties\n};\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\n\nimport { IRadioAdapter } from './radio-adapter';\nimport { RADIO_CONSTANTS } from './radio-constants';\n\nexport interface IRadioFoundation extends ICustomElementFoundation {\n dense: boolean;\n}\n\nexport class RadioFoundation implements IRadioFoundation {\n private _dense = false;\n private _focusListenerCallback: () => void;\n private _disabledListenerCallback: () => void;\n private _syncRadiogroupCheckStyles: () => void;\n\n constructor(private _adapter: IRadioAdapter) {}\n\n public connect(): void {\n this._adapter.connect();\n this._adapter.initializeRipple();\n this._focusListenerCallback = () => this._adapter.syncFocusedStateWithInput();\n this._disabledListenerCallback = () => this._adapter.syncDisabledStateWithInput();\n this._syncRadiogroupCheckStyles = () => this._adapter.syncRadiogroupCheckStyles();\n this._addFocusEventListeners();\n this._addInputDisabledListener();\n this._extendNativeInputSetter();\n this._addRadioChangeListener();\n this._adapter.syncCheckedStateWithInput();\n this._adapter.syncDisabledStateWithInput();\n this._adapter.syncFocusedStateWithInput();\n this._applyDense();\n this.syncCheckedState();\n }\n\n public disconnect(): void {\n this._removeFocusEventListeners();\n this._removeInputDisabledListener();\n this._adapter.revertNativeInputSetter();\n this._removeRadioChangeListener();\n this._adapter.destroyRipple();\n }\n\n public syncCheckedState(): void {\n this._adapter.syncCheckedStateWithInput();\n }\n\n private _applyDense(): void {\n if (this._dense) {\n this._adapter.addRootClass(RADIO_CONSTANTS.classes.RADIO_DENSE);\n this._adapter.setHostAttribute(RADIO_CONSTANTS.attributes.DENSE);\n } else {\n this._adapter.removeRootClass(RADIO_CONSTANTS.classes.RADIO_DENSE);\n this._adapter.removeHostAttribute(RADIO_CONSTANTS.attributes.DENSE);\n }\n }\n\n private _extendNativeInputSetter(): void {\n this._adapter.extendNativeInputSetter(this._syncRadiogroupCheckStyles);\n }\n\n private _addRadioChangeListener(): void {\n this._adapter.addInputEventListener('change', this._syncRadiogroupCheckStyles);\n }\n\n private _removeRadioChangeListener(): void {\n this._adapter.removeInputEventListener('change', this._syncRadiogroupCheckStyles);\n }\n\n private _addFocusEventListeners(): void {\n this._adapter.addInputEventListener('focus', this._focusListenerCallback);\n this._adapter.addInputEventListener('blur', this._focusListenerCallback);\n }\n\n private _removeFocusEventListeners(): void {\n this._adapter.removeInputEventListener('focus', this._focusListenerCallback);\n this._adapter.removeInputEventListener('blur', this._focusListenerCallback);\n }\n\n private _addInputDisabledListener(): void {\n this._adapter.addInputDisabledAttributeChangeListener(this._disabledListenerCallback);\n }\n\n private _removeInputDisabledListener(): void {\n this._adapter.removeInputDisabledAttributeChangeListener();\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._applyDense();\n }\n }\n}\n", "import { addClass, getShadowElement, removeClass, getActiveElement } from '@tylertech/forge-core';\nimport { IRadioComponent } from './radio';\nimport { RADIO_CONSTANTS } from './radio-constants';\nimport { ForgeRipple, ForgeRippleAdapter, ForgeRippleCapableSurface, ForgeRippleFoundation } from '../ripple';\n\nexport interface IRadioAdapter {\n connect(): void;\n initializeRipple(): void;\n destroyRipple(): void;\n setHostAttribute(name: string, value?: string): void;\n removeHostAttribute(name: string): void;\n addRootClass(className: string): void;\n removeRootClass(className: string): void;\n addContainerClass(className: string): void;\n removeContainerClass(className: string): void;\n syncCheckedStateWithInput(): void;\n syncFocusedStateWithInput(): void;\n syncDisabledStateWithInput(): void;\n addInputEventListener(event: string, callback: (event: Event) => void): void;\n removeInputEventListener(event: string, callback: (event: Event) => void): void;\n addInputDisabledAttributeChangeListener(callback: () => void): void;\n removeInputDisabledAttributeChangeListener(): void;\n extendNativeInputSetter(callback: () => void): void;\n revertNativeInputSetter(): void;\n syncRadiogroupCheckStyles(): void;\n}\n\nexport class RadioAdapter implements IRadioAdapter, ForgeRippleCapableSurface {\n private _shadowRoot: HTMLElement;\n private _containerElement: HTMLElement;\n private _nativeInputElement: HTMLInputElement | null;\n private _inputAttributeMutationObserver?: MutationObserver;\n private _rippleInstance: ForgeRipple;\n\n constructor(private _component: IRadioComponent) {\n this._shadowRoot = getShadowElement(this._component, RADIO_CONSTANTS.selectors.RADIO);\n this._containerElement = getShadowElement(this._component, RADIO_CONSTANTS.selectors.WRAPPER);\n }\n\n // ForgeRippleCapableSurface\n public get root(): Element {\n return this._shadowRoot;\n }\n\n public get unbounded(): boolean | undefined {\n return true;\n }\n\n public get disabled(): boolean | undefined {\n return this._isDisabled();\n }\n\n public connect(): void {\n const labelElement = this._component.querySelector(RADIO_CONSTANTS.selectors.LABEL) as HTMLLabelElement;\n if (labelElement) {\n labelElement.setAttribute(RADIO_CONSTANTS.attributes.SLOT, RADIO_CONSTANTS.selectors.LABEL);\n }\n }\n\n public initializeRipple(): void {\n this._rippleInstance = this._createRipple();\n\n requestAnimationFrame(() => {\n if (this._rippleInstance) {\n this._rippleInstance.layout();\n }\n });\n }\n\n public destroyRipple(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n }\n\n public setHostAttribute(name: string, value = ''): void {\n this._component.setAttribute(name, value);\n }\n\n public removeHostAttribute(name: string): void {\n this._component.removeAttribute(name);\n }\n\n public addRootClass(className: string): void {\n this._shadowRoot.classList.add(className);\n }\n\n public removeRootClass(className: string): void {\n this._shadowRoot.classList.remove(className);\n }\n\n public addContainerClass(className: string): void {\n this._containerElement.classList.add(className);\n }\n\n public removeContainerClass(className: string): void {\n this._containerElement.classList.remove(className);\n }\n\n public syncDisabledStateWithInput(): void {\n if (this.inputDisabled) {\n this.addRootClass(RADIO_CONSTANTS.classes.DISABLED);\n this.removeRootClass(RADIO_CONSTANTS.classes.ENABLED);\n this.addContainerClass(RADIO_CONSTANTS.classes.WRAPPER_DISABLED);\n } else {\n this.addRootClass(RADIO_CONSTANTS.classes.ENABLED);\n this.removeRootClass(RADIO_CONSTANTS.classes.DISABLED);\n this.removeContainerClass(RADIO_CONSTANTS.classes.WRAPPER_DISABLED);\n }\n }\n\n public syncFocusedStateWithInput(): void {\n if (getActiveElement() === this._inputElement) {\n this.addRootClass(RADIO_CONSTANTS.classes.FOCUSED);\n } else {\n this.removeRootClass(RADIO_CONSTANTS.classes.FOCUSED);\n }\n }\n\n public syncCheckedStateWithInput(): void {\n if (this.inputChecked) {\n this.addRootClass(RADIO_CONSTANTS.classes.CHECKED);\n } else {\n this.removeRootClass(RADIO_CONSTANTS.classes.CHECKED);\n }\n }\n\n public addInputEventListener(event: string, callback: (event: Event) => void): void {\n if (!this._inputElement) {\n return;\n }\n\n this._inputElement.addEventListener(event, callback);\n }\n\n public removeInputEventListener(event: string, callback: (event: Event) => void): void {\n if (!this._inputElement) {\n return;\n }\n\n this._inputElement.removeEventListener(event, callback);\n }\n\n public addInputDisabledAttributeChangeListener(callback: () => void): void {\n this._setupInputDisabledAttributeMutationObserver(callback);\n }\n\n public removeInputDisabledAttributeChangeListener(): void {\n this._cleanupInputDisabledAttributeMutationObserver();\n }\n\n // Get the collection of all forge-radios under the containing radiogroup ancestor.\n public getRadiosFromContainingRadiogroup(): NodeListOf<IRadioComponent> | null {\n const radioGroup = this._getContainingRadioGroup(this._component);\n if (radioGroup == null) {\n return null;\n }\n\n return radioGroup.querySelectorAll(RADIO_CONSTANTS.elementName);\n }\n\n public syncRadiogroupCheckStyles(): void {\n const radios = this.getRadiosFromContainingRadiogroup();\n if (radios) {\n radios.forEach(x => x.syncCheckedState());\n }\n }\n\n public extendNativeInputSetter(callback: () => void): void {\n if (!this._inputElement) {\n return;\n }\n\n const nativeInput = this._inputElement;\n const inputProto = Object.getPrototypeOf(nativeInput);\n RADIO_CONSTANTS.inputProperties.forEach(controlState => {\n const desc = Object.getOwnPropertyDescriptor(inputProto, controlState) as PropertyDescriptor;\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!this._validPropertyDescriptor(desc)) {\n return;\n }\n\n if (desc) {\n const nativeInputDesc = {\n configurable: desc.configurable,\n enumerable: desc.enumerable,\n get: desc.get,\n set: (state: boolean) => {\n desc.set?.call(nativeInput, state);\n callback();\n }\n };\n Object.defineProperty(nativeInput, controlState, nativeInputDesc);\n }\n });\n }\n\n public revertNativeInputSetter(): void {\n if (!this._inputElement) {\n return;\n }\n\n const nativeInput = this._inputElement;\n const inputProto = Object.getPrototypeOf(nativeInput);\n RADIO_CONSTANTS.inputProperties.forEach(controlState => {\n const desc = Object.getOwnPropertyDescriptor(inputProto, controlState) as PropertyDescriptor;\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!this._validPropertyDescriptor(desc)) {\n return;\n }\n Object.defineProperty(nativeInput, controlState, desc);\n });\n }\n\n private _validPropertyDescriptor(inputPropDesc: PropertyDescriptor | undefined): boolean {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n }\n\n // Recursively crawl up the node tree looking for the containing radiogroup ancestor element.\n private _getContainingRadioGroup(element: HTMLElement): HTMLElement | null {\n if (!element || !element.parentElement) {\n throw new Error('Unable to locate ancestor element with role=\"radiogroup\". When using radios, a parent with this attribute must be applied.');\n }\n\n const parentElement = element.parentElement;\n const roleValue = parentElement.getAttribute(RADIO_CONSTANTS.attributes.ROLE);\n if (!!roleValue && roleValue.toLocaleLowerCase() === RADIO_CONSTANTS.attributes.RADIOGROUP_ROLE.toLocaleLowerCase()) {\n return parentElement;\n }\n\n return this._getContainingRadioGroup(parentElement);\n }\n\n private _setupInputDisabledAttributeMutationObserver(callback: () => void): void {\n if (!this._inputElement) {\n return;\n }\n\n this._cleanupInputDisabledAttributeMutationObserver();\n const mutationCallback = (mutationRecords: MutationRecord[]): void => this._inputDisabledAttributeMutationCallback(mutationRecords, callback);\n this._inputAttributeMutationObserver = new MutationObserver(mutationCallback);\n const mutationOptions: MutationObserverInit = {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['disabled']\n };\n this._inputAttributeMutationObserver.observe(this._inputElement, mutationOptions);\n }\n\n private _cleanupInputDisabledAttributeMutationObserver(): void {\n if (this._inputAttributeMutationObserver) {\n this._inputAttributeMutationObserver.disconnect();\n delete this._inputAttributeMutationObserver;\n }\n }\n\n private _inputDisabledAttributeMutationCallback(mutationRecords: MutationRecord[], callback: () => void): void {\n for (const mutationRecord of mutationRecords) {\n // Skip:\n // - Non-attribute mutations.\n // - Mutations without an attribute name.\n // - Mutations without a matching attribute name.\n // - Mutations that did not change the attribute value.\n if (mutationRecord.type !== 'attributes'\n || !mutationRecord.attributeName\n || mutationRecord.attributeName !== 'disabled'\n || mutationRecord.target[mutationRecord.attributeName] === mutationRecord.oldValue) {\n continue;\n }\n\n callback();\n }\n }\n\n public get inputDisabled(): boolean {\n if (!this._inputElement) {\n return false;\n }\n\n return this._inputElement.disabled;\n }\n\n public get inputChecked(): boolean {\n if (!this._inputElement) {\n return false;\n }\n\n return this._inputElement.checked;\n }\n\n private get _inputElement(): HTMLInputElement | null {\n if (!this._nativeInputElement) {\n this._nativeInputElement = this._component.querySelector<HTMLInputElement>(RADIO_CONSTANTS.selectors.RADIO_INPUT);\n }\n\n return this._nativeInputElement;\n }\n\n private _isDisabled(): boolean {\n return this._inputElement ? this._inputElement.disabled : false;\n }\n\n private _createRipple(): ForgeRipple {\n const adapter: ForgeRippleAdapter = {\n ...ForgeRipple.createAdapter(this),\n deregisterInteractionHandler: (evtType, handler) => {\n if (this._inputElement) {\n this._inputElement.removeEventListener(evtType, handler, { passive: true } as AddEventListenerOptions);\n }\n },\n isSurfaceActive: () => this._inputElement ? this._inputElement.matches(':active') : false,\n isUnbounded: () => Boolean(this.unbounded),\n registerInteractionHandler: (evtType, handler) => {\n if (this._inputElement) {\n this._inputElement.addEventListener(evtType, handler, { passive: true });\n }\n },\n isSurfaceDisabled: () => this._inputElement ? this._inputElement.disabled : false,\n addClass: (className: string) => addClass(className, this._shadowRoot),\n removeClass: (className: string) => removeClass(className, this._shadowRoot),\n updateCssVariable: (varName: string, value: string | null) => this._shadowRoot.style.setProperty(varName, value)\n };\n return new ForgeRipple(this._shadowRoot, new ForgeRippleFoundation(adapter));\n }\n}\n", "import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean } from '@tylertech/forge-core';\nimport { RADIO_CONSTANTS } from './radio-constants';\nimport { RadioFoundation } from './radio-foundation';\nimport { RadioAdapter } from './radio-adapter';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><div class=\\\"forge-radio-wrapper forge-form-field\\\" part=\\\"root\\\"><div class=\\\"mdc-radio\\\" part=\\\"container\\\"><slot></slot><div class=\\\"mdc-radio__background\\\" part=\\\"background\\\"><div class=\\\"mdc-radio__outer-circle\\\" part=\\\"outer-circle\\\"></div><div class=\\\"mdc-radio__inner-circle\\\" part=\\\"inner-circle\\\"></div></div><div class=\\\"mdc-radio__ripple\\\" part=\\\"ripple-container\\\"></div></div><slot name=\\\"label\\\"></slot></div></template>';\nconst styles = '.mdc-radio{padding:10px;display:inline-block;position:relative;-webkit-box-flex:0;flex:0 0 auto;-webkit-box-sizing:content-box;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color}.mdc-radio.forge-radio--enabled .mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.54);border-color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.mdc-radio.forge-radio--enabled.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle{border-color:#3d5afe;border-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio.forge-radio--enabled .mdc-radio__background .mdc-radio__inner-circle{border-color:#3d5afe;border-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.26);border-color:var(--forge-theme-form-field-icon-disabled-on-background,rgba(0,0,0,.26))}.mdc-radio.mdc-radio--disabled.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle{border-color:rgba(0,0,0,.26);border-color:var(--forge-theme-form-field-icon-disabled-on-background,rgba(0,0,0,.26))}.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__inner-circle{border-color:rgba(0,0,0,.26);border-color:var(--forge-theme-form-field-icon-disabled-on-background,rgba(0,0,0,.26))}.mdc-radio .mdc-radio__background::before{background-color:#3d5afe;background-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio .mdc-radio__background::before{top:-10px;left:-10px;width:40px;height:40px}.mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}@media screen and (forced-colors:active),(-ms-high-contrast:active){.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__outer-circle{border-color:GrayText}.mdc-radio.mdc-radio--disabled.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle{border-color:GrayText}.mdc-radio.mdc-radio--disabled .mdc-radio__background .mdc-radio__inner-circle{border-color:GrayText}}.mdc-radio__background{display:inline-block;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:20px;height:20px}.mdc-radio__background::before{position:absolute;-webkit-transform:scale(0,0);transform:scale(0,0);border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\";-webkit-transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:opacity 120ms 0s cubic-bezier(.4, 0, .6, 1),transform 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1)}.mdc-radio__outer-circle{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;-webkit-transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1)}.mdc-radio__inner-circle{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transform:scale(0,0);transform:scale(0,0);border-width:10px;border-style:solid;border-radius:50%;-webkit-transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:border-color 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:transform 120ms 0s cubic-bezier(.4, 0, .6, 1),border-color 120ms 0s cubic-bezier(.4, 0, .6, 1);transition:transform 120ms 0s cubic-bezier(.4, 0, .6, 1),border-color 120ms 0s cubic-bezier(.4, 0, .6, 1),-webkit-transform 120ms 0s cubic-bezier(.4, 0, .6, 1)}.mdc-radio ::slotted(input[type=radio]){position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1;top:0;right:0;left:0;width:40px;height:40px}.mdc-radio.forge-radio--dense{padding:4px;margin:0}.mdc-radio.forge-radio--dense .mdc-radio__background::before{top:-4px;left:-4px;width:28px;height:28px}.mdc-radio.forge-radio--dense .mdc-radio__native-control{top:0;right:0;left:0;width:28px;height:28px}.mdc-radio.forge-radio--dense ::slotted(input[type=radio]){width:28px;height:28px}.mdc-radio--disabled+::slotted(label){color:rgba(0,0,0,.38);color:var(--forge-theme-label-disabled-on-background,rgba(0,0,0,.38))}.forge-radio--checked .mdc-radio__background,.mdc-radio--disabled .mdc-radio__background{-webkit-transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}.forge-radio--checked .mdc-radio__background .mdc-radio__outer-circle,.mdc-radio--disabled .mdc-radio__background .mdc-radio__outer-circle{-webkit-transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1);transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1)}.forge-radio--checked .mdc-radio__background .mdc-radio__inner-circle,.mdc-radio--disabled .mdc-radio__background .mdc-radio__inner-circle{-webkit-transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}.mdc-radio--disabled{cursor:default;pointer-events:none}.forge-radio--checked .mdc-radio__background .mdc-radio__inner-circle{-webkit-transform:scale(.5);transform:scale(.5);-webkit-transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1);transition:transform 120ms 0s cubic-bezier(0, 0, .2, 1),border-color 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}.mdc-radio--disabled .mdc-radio__background{cursor:default}.forge-radio--focused .mdc-radio__background::before{-webkit-transform:scale(1);transform:scale(1);opacity:.12;-webkit-transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1);transition:opacity 120ms 0s cubic-bezier(0, 0, .2, 1),transform 120ms 0s cubic-bezier(0, 0, .2, 1),-webkit-transform 120ms 0s cubic-bezier(0, 0, .2, 1)}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-radio{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity}.mdc-radio .mdc-radio__ripple::after,.mdc-radio .mdc-radio__ripple::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\"}.mdc-radio .mdc-radio__ripple::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-radio .mdc-radio__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-radio.mdc-ripple-upgraded--unbounded .mdc-radio__ripple::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-radio.mdc-ripple-upgraded--foreground-activation .mdc-radio__ripple::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-radio.mdc-ripple-upgraded--foreground-deactivation .mdc-radio__ripple::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-radio .mdc-radio__ripple::after,.mdc-radio .mdc-radio__ripple::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after,.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__ripple::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-radio .mdc-radio__ripple::after,.mdc-radio .mdc-radio__ripple::before{background-color:#3d5afe;background-color:var(--forge-theme-tertiary,#3d5afe)}.mdc-radio.mdc-ripple-surface--hover .mdc-radio__ripple::before,.mdc-radio:hover .mdc-radio__ripple::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__ripple::before,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__ripple::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-radio:not(.mdc-ripple-upgraded) .mdc-radio__ripple::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-radio:not(.mdc-ripple-upgraded):active .mdc-radio__ripple::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-radio.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-radio.mdc-ripple-upgraded .mdc-radio__background::before,.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__background::before{content:none}.mdc-radio__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.forge-radio-wrapper--disabled{cursor:not-allowed}.forge-radio-wrapper--disabled ::slotted(label){cursor:not-allowed}.forge-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.875rem;font-size:var(--mdc-typography-body2-font-size, .875rem);line-height:1.25rem;line-height:var(--mdc-typography-body2-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight,400);letter-spacing:.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform,inherit);color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;vertical-align:middle}.forge-form-field ::slotted([slot=label]){-webkit-box-ordinal-group:1;order:0;margin-right:auto;padding-left:4px}.forge-form-field forge-switch~::slotted([slot=label]){padding-left:8px}.forge-form-field--align-end ::slotted([slot=label]){-webkit-box-ordinal-group:0;order:-1;margin-left:auto;padding-right:4px}:host{display:inline-block}:host([hidden]){display:none}';\n\nexport interface IRadioComponent extends IBaseComponent {\n dense: boolean;\n syncCheckedState(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-radio': IRadioComponent;\n }\n}\n\n/**\n * The custom element class behind the `<forge-radio>` element.\n * \n * @tag forge-radio\n */\n@CustomElement({\n name: RADIO_CONSTANTS.elementName\n})\nexport class RadioComponent extends BaseComponent implements IRadioComponent {\n public static get observedAttributes(): string[] {\n return [\n RADIO_CONSTANTS.attributes.DENSE\n ];\n }\n\n protected _foundation: RadioFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new RadioFoundation(new RadioAdapter(this));\n }\n\n public connectedCallback(): void {\n this._ensureRadioInputElement().then(() => this._foundation.connect());\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 RADIO_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n }\n }\n\n private _ensureRadioInputElement(): Promise<void> {\n // Not using core function ensureChild because it was not selecting the input properly\n return new Promise<void>(resolve => {\n const element = this.querySelector(RADIO_CONSTANTS.selectors.RADIO_INPUT);\n if (element) {\n resolve();\n return;\n }\n\n const observer = new MutationObserver(changes => {\n const hasAddedNodes = changes.reduce((prev, curr) => prev + curr.addedNodes.length, 0) > 0;\n if (hasAddedNodes) {\n if (this.querySelector(RADIO_CONSTANTS.selectors.RADIO_INPUT)) {\n observer.disconnect();\n resolve();\n }\n }\n });\n observer.observe(this, { childList: true, subtree: true });\n });\n }\n\n public syncCheckedState(): void {\n this._foundation.syncCheckedState();\n }\n\n /** Gets/sets whether the radio button is dense. */\n @FoundationProperty()\n public dense: boolean;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { RadioComponent } from './radio';\n\nexport * from './radio-constants';\nexport * from './radio';\n\nexport function defineRadioComponent(): void {\n defineCustomElement(RadioComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  TabComponent
8
- } from "./chunk.EWQENJ4W.js";
8
+ } from "./chunk.HMM7PGGZ.js";
9
9
  import {
10
10
  defineCustomElement
11
11
  } from "./chunk.K2PCTUVN.js";
@@ -18,4 +18,4 @@ function defineTabComponent() {
18
18
  export {
19
19
  defineTabComponent
20
20
  };
21
- //# sourceMappingURL=chunk.KZ2QNQK2.js.map
21
+ //# sourceMappingURL=chunk.4WLVFWKI.js.map
@@ -199,4 +199,4 @@ export {
199
199
  RippleComponent,
200
200
  defineRippleComponent
201
201
  };
202
- //# sourceMappingURL=chunk.C2MR3RDF.js.map
202
+ //# sourceMappingURL=chunk.56BNM7F2.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/ripple/ripple-constants.ts", "../../src/ripple/forge-ripple.ts", "../../src/ripple/ripple-adapter.ts", "../../src/ripple/ripple-foundation.ts", "../../src/ripple/ripple.ts", "../../src/ripple/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}ripple`;\n\nconst classes = {\n SURFACE: 'mdc-ripple-surface'\n};\n\nconst attributes = {\n TARGET: 'target',\n UNBOUNDED: 'unbounded'\n};\n\nexport const RIPPLE_CONSTANTS = {\n elementName,\n classes,\n attributes\n};\n", "import { MDCRipple, MDCRippleAdapter, MDCRippleFoundation, MDCRippleCapableSurface } from '@material/ripple';\n\nexport class ForgeRipple extends MDCRipple {}\nexport class ForgeRippleFoundation extends MDCRippleFoundation {}\nexport {\n MDCRippleAdapter as ForgeRippleAdapter,\n MDCRippleCapableSurface as ForgeRippleCapableSurface\n};\n", "import { addClass, removeClass } from '@tylertech/forge-core';\n\nimport { IRippleComponent } from './ripple';\nimport { RIPPLE_CONSTANTS } from './ripple-constants';\nimport { ForgeRipple } from './forge-ripple';\n\nexport interface IRippleAdapter {\n initialize(target: string, unbounded: boolean): void;\n destroy(): void;\n activate(): void;\n deactivate(): void;\n}\n\nexport class RippleAdapter implements IRippleAdapter {\n private _target: HTMLElement | undefined;\n private _ripple: ForgeRipple | undefined;\n\n constructor(private _component: IRippleComponent) {}\n\n private _tryFindTarget(): HTMLElement {\n return this._component.parentElement as HTMLElement;\n }\n\n public initialize(target: string, unbounded: boolean): void {\n if (target) {\n this._target = (this._component.ownerDocument || document).querySelector(target) as HTMLElement;\n }\n\n if (!this._target) {\n this._target = this._tryFindTarget();\n }\n\n if (this._target) {\n this._ripple = new ForgeRipple(this._target);\n this._ripple.unbounded = unbounded;\n addClass(RIPPLE_CONSTANTS.classes.SURFACE, this._target);\n }\n }\n\n public destroy(): void {\n if (this._ripple) {\n this._ripple.destroy();\n this._ripple = undefined;\n }\n\n if (this._target) {\n removeClass(RIPPLE_CONSTANTS.classes.SURFACE, this._target);\n }\n \n this._target = undefined;\n }\n\n public activate(): void {\n this._ripple?.activate();\n }\n\n public deactivate(): void {\n this._ripple?.deactivate();\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IRippleAdapter } from './ripple-adapter';\n\nexport interface IRippleFoundation extends ICustomElementFoundation {\n target: string;\n unbounded: boolean;\n layout(): void;\n activate(): void;\n deactivate(): void;\n}\n\nexport class RippleFoundation implements IRippleFoundation {\n private _target: string;\n private _unbounded = false;\n\n constructor(private _adapter: IRippleAdapter) {}\n\n public initialize(): void {\n this._adapter.initialize(this._target, this._unbounded);\n }\n\n public disconnect(): void {\n this._adapter.destroy();\n }\n\n public layout(): void {\n this._applyTarget();\n }\n\n public activate(): void {\n this._adapter.activate();\n }\n\n public deactivate(): void {\n this._adapter.deactivate();\n }\n\n private _applyTarget(): void {\n this._adapter.destroy();\n this._adapter.initialize(this._target, this._unbounded);\n }\n\n public get target(): string {\n return this._target;\n }\n public set target(value: string) {\n if (this._target !== value) {\n this._target = value;\n this._applyTarget();\n }\n }\n\n public get unbounded(): boolean {\n return this._unbounded;\n }\n public set unbounded(value: boolean) {\n if (this._unbounded !== value) {\n this._unbounded = value;\n this._applyTarget();\n }\n }\n}\n", "import { coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { RippleAdapter } from './ripple-adapter';\nimport { RIPPLE_CONSTANTS } from './ripple-constants';\nimport { RippleFoundation } from './ripple-foundation';\n\nexport interface IRippleComponent extends IBaseComponent {\n target: string;\n unbounded: boolean;\n layout(): void;\n activate(): void;\n deactivate(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-ripple': IRippleComponent;\n }\n}\n\n@CustomElement({\n name: RIPPLE_CONSTANTS.elementName\n})\nexport class RippleComponent extends HTMLElement implements IRippleComponent {\n public static get observedAttributes(): string[] {\n return [\n RIPPLE_CONSTANTS.attributes.TARGET,\n RIPPLE_CONSTANTS.attributes.UNBOUNDED\n ];\n }\n\n private _foundation: RippleFoundation;\n\n constructor() {\n super();\n this._foundation = new RippleFoundation(new RippleAdapter(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 RIPPLE_CONSTANTS.attributes.TARGET:\n this.target = newValue;\n break;\n case RIPPLE_CONSTANTS.attributes.UNBOUNDED:\n this.unbounded = coerceBoolean(newValue);\n break;\n }\n }\n\n public layout(): void {\n this._foundation.layout();\n }\n\n public activate(): void {\n return this._foundation.activate();\n }\n\n public deactivate(): void {\n return this._foundation.deactivate();\n }\n\n @FoundationProperty()\n public target: string;\n\n @FoundationProperty()\n public unbounded: boolean;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { RippleComponent } from './ripple';\n\nexport * from './ripple-adapter';\nexport * from './ripple-constants';\nexport * from './ripple-foundation';\nexport * from './ripple';\nexport * from './forge-ripple';\n\nexport function defineRippleComponent(): void {\n defineCustomElement(RippleComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}ripple`;\n\nconst classes = {\n SURFACE: 'mdc-ripple-surface'\n};\n\nconst attributes = {\n TARGET: 'target',\n UNBOUNDED: 'unbounded'\n};\n\nexport const RIPPLE_CONSTANTS = {\n elementName,\n classes,\n attributes\n};\n", "import { MDCRipple, MDCRippleAdapter, MDCRippleFoundation, MDCRippleCapableSurface } from '@material/ripple';\n\nexport class ForgeRipple extends MDCRipple {}\nexport class ForgeRippleFoundation extends MDCRippleFoundation {}\nexport {\n MDCRippleAdapter as ForgeRippleAdapter,\n MDCRippleCapableSurface as ForgeRippleCapableSurface\n};\n", "import { addClass, removeClass } from '@tylertech/forge-core';\n\nimport { IRippleComponent } from './ripple';\nimport { RIPPLE_CONSTANTS } from './ripple-constants';\nimport { ForgeRipple } from './forge-ripple';\n\nexport interface IRippleAdapter {\n initialize(target: string, unbounded: boolean): void;\n destroy(): void;\n activate(): void;\n deactivate(): void;\n}\n\nexport class RippleAdapter implements IRippleAdapter {\n private _target: HTMLElement | undefined;\n private _ripple: ForgeRipple | undefined;\n\n constructor(private _component: IRippleComponent) {}\n\n private _tryFindTarget(): HTMLElement {\n return this._component.parentElement as HTMLElement;\n }\n\n public initialize(target: string, unbounded: boolean): void {\n if (target) {\n this._target = (this._component.ownerDocument || document).querySelector(target) as HTMLElement;\n }\n\n if (!this._target) {\n this._target = this._tryFindTarget();\n }\n\n if (this._target) {\n this._ripple = new ForgeRipple(this._target);\n this._ripple.unbounded = unbounded;\n addClass(RIPPLE_CONSTANTS.classes.SURFACE, this._target);\n }\n }\n\n public destroy(): void {\n if (this._ripple) {\n this._ripple.destroy();\n this._ripple = undefined;\n }\n\n if (this._target) {\n removeClass(RIPPLE_CONSTANTS.classes.SURFACE, this._target);\n }\n \n this._target = undefined;\n }\n\n public activate(): void {\n this._ripple?.activate();\n }\n\n public deactivate(): void {\n this._ripple?.deactivate();\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IRippleAdapter } from './ripple-adapter';\n\nexport interface IRippleFoundation extends ICustomElementFoundation {\n target: string;\n unbounded: boolean;\n layout(): void;\n activate(): void;\n deactivate(): void;\n}\n\nexport class RippleFoundation implements IRippleFoundation {\n private _target: string;\n private _unbounded = false;\n\n constructor(private _adapter: IRippleAdapter) {}\n\n public initialize(): void {\n this._adapter.initialize(this._target, this._unbounded);\n }\n\n public disconnect(): void {\n this._adapter.destroy();\n }\n\n public layout(): void {\n this._applyTarget();\n }\n\n public activate(): void {\n this._adapter.activate();\n }\n\n public deactivate(): void {\n this._adapter.deactivate();\n }\n\n private _applyTarget(): void {\n this._adapter.destroy();\n this._adapter.initialize(this._target, this._unbounded);\n }\n\n public get target(): string {\n return this._target;\n }\n public set target(value: string) {\n if (this._target !== value) {\n this._target = value;\n this._applyTarget();\n }\n }\n\n public get unbounded(): boolean {\n return this._unbounded;\n }\n public set unbounded(value: boolean) {\n if (this._unbounded !== value) {\n this._unbounded = value;\n this._applyTarget();\n }\n }\n}\n", "import { coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { RippleAdapter } from './ripple-adapter';\nimport { RIPPLE_CONSTANTS } from './ripple-constants';\nimport { RippleFoundation } from './ripple-foundation';\n\nexport interface IRippleComponent extends IBaseComponent {\n target: string;\n unbounded: boolean;\n layout(): void;\n activate(): void;\n deactivate(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-ripple': IRippleComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-ripple>` custom element.\n * \n * @tag forge-ripple\n */\n@CustomElement({\n name: RIPPLE_CONSTANTS.elementName\n})\nexport class RippleComponent extends HTMLElement implements IRippleComponent {\n public static get observedAttributes(): string[] {\n return [\n RIPPLE_CONSTANTS.attributes.TARGET,\n RIPPLE_CONSTANTS.attributes.UNBOUNDED\n ];\n }\n\n private _foundation: RippleFoundation;\n\n constructor() {\n super();\n this._foundation = new RippleFoundation(new RippleAdapter(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 RIPPLE_CONSTANTS.attributes.TARGET:\n this.target = newValue;\n break;\n case RIPPLE_CONSTANTS.attributes.UNBOUNDED:\n this.unbounded = coerceBoolean(newValue);\n break;\n }\n }\n\n public layout(): void {\n this._foundation.layout();\n }\n\n public activate(): void {\n return this._foundation.activate();\n }\n\n public deactivate(): void {\n return this._foundation.deactivate();\n }\n\n @FoundationProperty()\n public target: string;\n\n @FoundationProperty()\n public unbounded: boolean;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { RippleComponent } from './ripple';\n\nexport * from './ripple-adapter';\nexport * from './ripple-constants';\nexport * from './ripple-foundation';\nexport * from './ripple';\nexport * from './forge-ripple';\n\nexport function defineRippleComponent(): void {\n defineCustomElement(RippleComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }