@tylertech/forge 2.7.0 → 2.9.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 (296) hide show
  1. package/custom-elements.json +4428 -86
  2. package/dist/esm/accordion/index.js +7 -7
  3. package/dist/esm/app-bar/help-button/index.js +9 -9
  4. package/dist/esm/app-bar/index.js +15 -15
  5. package/dist/esm/app-bar/menu-button/index.js +6 -6
  6. package/dist/esm/app-bar/notification-button/index.js +6 -6
  7. package/dist/esm/app-bar/profile-button/index.js +7 -7
  8. package/dist/esm/app-bar/search/index.js +5 -5
  9. package/dist/esm/autocomplete/index.js +13 -13
  10. package/dist/esm/banner/index.js +6 -6
  11. package/dist/esm/bottom-sheet/index.js +5 -5
  12. package/dist/esm/busy-indicator/index.js +4 -4
  13. package/dist/esm/button/index.js +3 -3
  14. package/dist/esm/calendar/calendar-dropdown/index.js +2 -2
  15. package/dist/esm/calendar/calendar-menu/index.js +2 -2
  16. package/dist/esm/calendar/index.js +7 -7
  17. package/dist/esm/checkbox/index.js +2 -2
  18. package/dist/esm/chip-field/index.js +9 -9
  19. package/dist/esm/chips/chip/index.js +6 -6
  20. package/dist/esm/chips/chip-set/index.js +6 -6
  21. package/dist/esm/chips/index.js +7 -7
  22. package/dist/esm/chunks/{chunk.VXVE7KEM.js → chunk.2QB3WXEH.js} +4 -4
  23. package/dist/esm/chunks/{chunk.VXVE7KEM.js.map → chunk.2QB3WXEH.js.map} +0 -0
  24. package/dist/esm/chunks/{chunk.3QXCVTCP.js → chunk.2Z23LQVW.js} +2 -2
  25. package/dist/esm/chunks/{chunk.3QXCVTCP.js.map → chunk.2Z23LQVW.js.map} +0 -0
  26. package/dist/esm/chunks/{chunk.GL72QT42.js → chunk.35BJJH5E.js} +2 -2
  27. package/dist/esm/chunks/{chunk.GL72QT42.js.map → chunk.35BJJH5E.js.map} +1 -1
  28. package/dist/esm/chunks/{chunk.BEAJZPWS.js → chunk.3TFBNPQF.js} +2 -2
  29. package/dist/esm/chunks/{chunk.BEAJZPWS.js.map → chunk.3TFBNPQF.js.map} +0 -0
  30. package/dist/esm/chunks/{chunk.2MBI5DLT.js → chunk.3ULPDQ2I.js} +71 -15
  31. package/dist/esm/chunks/chunk.3ULPDQ2I.js.map +7 -0
  32. package/dist/esm/chunks/{chunk.JC2PZ4TS.js → chunk.5DJS3K7V.js} +10 -8
  33. package/dist/esm/chunks/chunk.5DJS3K7V.js.map +7 -0
  34. package/dist/esm/chunks/{chunk.GHZ75UPO.js → chunk.5EBM357P.js} +3 -3
  35. package/dist/esm/chunks/{chunk.GHZ75UPO.js.map → chunk.5EBM357P.js.map} +0 -0
  36. package/dist/esm/chunks/{chunk.J5NUYQ4D.js → chunk.5XUOWRCK.js} +3 -3
  37. package/dist/esm/chunks/{chunk.J5NUYQ4D.js.map → chunk.5XUOWRCK.js.map} +0 -0
  38. package/dist/esm/chunks/{chunk.6EGTLHJS.js → chunk.65ZCTZEM.js} +6 -2
  39. package/dist/esm/chunks/{chunk.6EGTLHJS.js.map → chunk.65ZCTZEM.js.map} +2 -2
  40. package/dist/esm/chunks/chunk.A5GIQB6E.js +20 -0
  41. package/dist/esm/chunks/{chunk.JUXKYUD4.js.map → chunk.A5GIQB6E.js.map} +3 -3
  42. package/dist/esm/chunks/{chunk.PM7D2SUE.js → chunk.A6YZB7UK.js} +33 -2
  43. package/dist/esm/chunks/{chunk.PM7D2SUE.js.map → chunk.A6YZB7UK.js.map} +2 -2
  44. package/dist/esm/chunks/chunk.AJJILT3A.js +6 -0
  45. package/dist/esm/chunks/chunk.AJJILT3A.js.map +7 -0
  46. package/dist/esm/chunks/chunk.CGKWQIL3.js +1236 -0
  47. package/dist/esm/chunks/chunk.CGKWQIL3.js.map +7 -0
  48. package/dist/esm/chunks/chunk.CGOYP37Z.js +345 -0
  49. package/dist/esm/chunks/chunk.CGOYP37Z.js.map +7 -0
  50. package/dist/esm/chunks/{chunk.QYWAZCBX.js → chunk.CTMCTMRO.js} +2 -2
  51. package/dist/esm/chunks/{chunk.QYWAZCBX.js.map → chunk.CTMCTMRO.js.map} +0 -0
  52. package/dist/esm/chunks/{chunk.JUXKYUD4.js → chunk.D2AL6QLF.js} +60 -40
  53. package/dist/esm/chunks/chunk.D2AL6QLF.js.map +7 -0
  54. package/dist/esm/chunks/{chunk.U5ECVIX5.js → chunk.D3MXPNTL.js} +2 -2
  55. package/dist/esm/chunks/{chunk.U5ECVIX5.js.map → chunk.D3MXPNTL.js.map} +0 -0
  56. package/dist/esm/chunks/{chunk.HAWYW54W.js → chunk.D45QN7JA.js} +5 -5
  57. package/dist/esm/chunks/{chunk.HAWYW54W.js.map → chunk.D45QN7JA.js.map} +0 -0
  58. package/dist/esm/chunks/{chunk.2WBHHTUM.js → chunk.EFQZGAM5.js} +2 -2
  59. package/dist/esm/chunks/{chunk.2WBHHTUM.js.map → chunk.EFQZGAM5.js.map} +0 -0
  60. package/dist/esm/chunks/{chunk.L344BPCW.js → chunk.F5O63UF4.js} +2 -2
  61. package/dist/esm/chunks/{chunk.L344BPCW.js.map → chunk.F5O63UF4.js.map} +0 -0
  62. package/dist/esm/chunks/{chunk.RL7ZFLMG.js → chunk.FRT7RD5L.js} +2 -2
  63. package/dist/esm/chunks/{chunk.RL7ZFLMG.js.map → chunk.FRT7RD5L.js.map} +0 -0
  64. package/dist/esm/chunks/{chunk.LK2DN5KX.js → chunk.GG3O42UP.js} +4 -4
  65. package/dist/esm/chunks/{chunk.LK2DN5KX.js.map → chunk.GG3O42UP.js.map} +0 -0
  66. package/dist/esm/chunks/{chunk.WSH4S3GM.js → chunk.GVR5LXMJ.js} +2 -2
  67. package/dist/esm/chunks/{chunk.WSH4S3GM.js.map → chunk.GVR5LXMJ.js.map} +0 -0
  68. package/dist/esm/chunks/{chunk.LHWZ4KZU.js → chunk.HL2ORG3A.js} +4 -4
  69. package/dist/esm/chunks/{chunk.LHWZ4KZU.js.map → chunk.HL2ORG3A.js.map} +1 -1
  70. package/dist/esm/chunks/{chunk.65GHMPX2.js → chunk.J2FCOFOE.js} +6 -6
  71. package/dist/esm/chunks/chunk.J2FCOFOE.js.map +7 -0
  72. package/dist/esm/chunks/{chunk.PKZ43JNW.js → chunk.JM6SZSUI.js} +50 -4
  73. package/dist/esm/chunks/{chunk.PKZ43JNW.js.map → chunk.JM6SZSUI.js.map} +2 -2
  74. package/dist/esm/chunks/{chunk.VXAPRFMK.js → chunk.K4B7NJ2G.js} +4 -4
  75. package/dist/esm/chunks/{chunk.VXAPRFMK.js.map → chunk.K4B7NJ2G.js.map} +0 -0
  76. package/dist/esm/chunks/{chunk.67B6JDOJ.js → chunk.KVOXJKCU.js} +3 -3
  77. package/dist/esm/chunks/{chunk.67B6JDOJ.js.map → chunk.KVOXJKCU.js.map} +0 -0
  78. package/dist/esm/chunks/{chunk.ITQ55IPH.js → chunk.LTN47GWQ.js} +4 -4
  79. package/dist/esm/chunks/{chunk.ITQ55IPH.js.map → chunk.LTN47GWQ.js.map} +0 -0
  80. package/dist/esm/chunks/{chunk.UPW5HUKB.js → chunk.NU3XRT37.js} +5 -5
  81. package/dist/esm/chunks/{chunk.UPW5HUKB.js.map → chunk.NU3XRT37.js.map} +0 -0
  82. package/dist/esm/chunks/{chunk.I6PJGNJS.js → chunk.NWPH4FRE.js} +6 -6
  83. package/dist/esm/chunks/chunk.NWPH4FRE.js.map +7 -0
  84. package/dist/esm/chunks/{chunk.KNR5DXE4.js → chunk.OTJJU35B.js} +2 -2
  85. package/dist/esm/chunks/{chunk.KNR5DXE4.js.map → chunk.OTJJU35B.js.map} +0 -0
  86. package/dist/esm/chunks/{chunk.BVGJFMEG.js → chunk.PRRL5C6Z.js} +7 -7
  87. package/dist/esm/chunks/{chunk.BVGJFMEG.js.map → chunk.PRRL5C6Z.js.map} +0 -0
  88. package/dist/esm/chunks/{chunk.TIUNGGBF.js → chunk.QFG7SPQV.js} +3 -3
  89. package/dist/esm/chunks/{chunk.TIUNGGBF.js.map → chunk.QFG7SPQV.js.map} +0 -0
  90. package/dist/esm/chunks/{chunk.C73AZRT4.js → chunk.QKCIMRRG.js} +36 -19
  91. package/dist/esm/chunks/chunk.QKCIMRRG.js.map +7 -0
  92. package/dist/esm/chunks/{chunk.IGBDDH3J.js → chunk.QRGWP6Z2.js} +3 -3
  93. package/dist/esm/chunks/chunk.QRGWP6Z2.js.map +7 -0
  94. package/dist/esm/chunks/{chunk.MUP3NY6M.js → chunk.QSFE3J74.js} +5 -5
  95. package/dist/esm/chunks/{chunk.MUP3NY6M.js.map → chunk.QSFE3J74.js.map} +0 -0
  96. package/dist/esm/chunks/{chunk.ZXMJB7OW.js → chunk.R357QRWX.js} +54 -50
  97. package/dist/esm/chunks/chunk.R357QRWX.js.map +7 -0
  98. package/dist/esm/chunks/{chunk.46BED43J.js → chunk.SVS3G6Y7.js} +5 -19
  99. package/dist/esm/chunks/chunk.SVS3G6Y7.js.map +7 -0
  100. package/dist/esm/chunks/{chunk.S3UVF647.js → chunk.TBQ72CBS.js} +3 -3
  101. package/dist/esm/chunks/{chunk.S3UVF647.js.map → chunk.TBQ72CBS.js.map} +0 -0
  102. package/dist/esm/chunks/{chunk.MF3IZXQG.js → chunk.TSHHEAIC.js} +2 -2
  103. package/dist/esm/chunks/{chunk.MF3IZXQG.js.map → chunk.TSHHEAIC.js.map} +0 -0
  104. package/dist/esm/chunks/{chunk.EBC2HGO3.js → chunk.UAW46BWM.js} +3 -3
  105. package/dist/esm/chunks/{chunk.EBC2HGO3.js.map → chunk.UAW46BWM.js.map} +0 -0
  106. package/dist/esm/chunks/{chunk.FJJVIMZ2.js → chunk.V6ESTGWD.js} +5 -5
  107. package/dist/esm/chunks/chunk.V6ESTGWD.js.map +7 -0
  108. package/dist/esm/chunks/{chunk.5OYAJ36F.js → chunk.VLAUYV76.js} +2 -2
  109. package/dist/esm/chunks/{chunk.5OYAJ36F.js.map → chunk.VLAUYV76.js.map} +0 -0
  110. package/dist/esm/chunks/{chunk.L4OUV7W6.js → chunk.VSKPHQZE.js} +4 -4
  111. package/dist/esm/chunks/{chunk.L4OUV7W6.js.map → chunk.VSKPHQZE.js.map} +0 -0
  112. package/dist/esm/chunks/{chunk.GS2AXUCN.js → chunk.WOL4KRZK.js} +6 -1
  113. package/dist/esm/chunks/{chunk.GS2AXUCN.js.map → chunk.WOL4KRZK.js.map} +1 -1
  114. package/dist/esm/chunks/{chunk.TM46MNYN.js → chunk.WQRR5OGK.js} +5 -5
  115. package/dist/esm/chunks/{chunk.TM46MNYN.js.map → chunk.WQRR5OGK.js.map} +0 -0
  116. package/dist/esm/chunks/chunk.X2RP4QW3.js +6 -0
  117. package/dist/esm/chunks/chunk.X2RP4QW3.js.map +7 -0
  118. package/dist/esm/chunks/{chunk.GOWHXADJ.js → chunk.X3TV6IHS.js} +23 -15
  119. package/dist/esm/chunks/chunk.X3TV6IHS.js.map +7 -0
  120. package/dist/esm/chunks/{chunk.U37G47LH.js → chunk.XC56O73Q.js} +6 -6
  121. package/dist/esm/chunks/{chunk.U37G47LH.js.map → chunk.XC56O73Q.js.map} +0 -0
  122. package/dist/esm/chunks/{chunk.QWW6A7AF.js → chunk.XRK62M5E.js} +2 -2
  123. package/dist/esm/chunks/{chunk.QWW6A7AF.js.map → chunk.XRK62M5E.js.map} +0 -0
  124. package/dist/esm/chunks/{chunk.ZLF2G3YT.js → chunk.XSS7BYJS.js} +3 -3
  125. package/dist/esm/chunks/{chunk.ZLF2G3YT.js.map → chunk.XSS7BYJS.js.map} +0 -0
  126. package/dist/esm/chunks/{chunk.XHMNHBZD.js → chunk.YCHKXJLN.js} +3 -3
  127. package/dist/esm/chunks/{chunk.XHMNHBZD.js.map → chunk.YCHKXJLN.js.map} +1 -1
  128. package/dist/esm/chunks/{chunk.UQ3QTUUB.js → chunk.YMP3JQQQ.js} +2 -2
  129. package/dist/esm/chunks/{chunk.UQ3QTUUB.js.map → chunk.YMP3JQQQ.js.map} +0 -0
  130. package/dist/esm/chunks/{chunk.7I2XNJBL.js → chunk.YTFOQNFU.js} +6 -16
  131. package/dist/esm/chunks/chunk.YTFOQNFU.js.map +7 -0
  132. package/dist/esm/chunks/{chunk.IJW2YKP3.js → chunk.Z5KLXKMB.js} +21 -15
  133. package/dist/esm/chunks/chunk.Z5KLXKMB.js.map +7 -0
  134. package/dist/esm/chunks/{chunk.MBZLA635.js → chunk.ZIZGRSAX.js} +6 -6
  135. package/dist/esm/chunks/{chunk.MBZLA635.js.map → chunk.ZIZGRSAX.js.map} +1 -1
  136. package/dist/esm/chunks/{chunk.CLEUHAZ6.js → chunk.ZLX3L6KW.js} +2 -2
  137. package/dist/esm/chunks/{chunk.CLEUHAZ6.js.map → chunk.ZLX3L6KW.js.map} +0 -0
  138. package/dist/esm/color-picker/index.js +6 -6
  139. package/dist/esm/core/index.js +14 -2
  140. package/dist/esm/core/utils/index.js +14 -2
  141. package/dist/esm/date-picker/index.js +11 -11
  142. package/dist/esm/date-range-picker/index.js +11 -11
  143. package/dist/esm/dialog/index.js +5 -5
  144. package/dist/esm/drawer/base/index.js +2 -2
  145. package/dist/esm/drawer/drawer/index.js +3 -3
  146. package/dist/esm/drawer/index.js +5 -5
  147. package/dist/esm/drawer/mini-drawer/index.js +3 -3
  148. package/dist/esm/drawer/modal-drawer/index.js +3 -3
  149. package/dist/esm/expansion-panel/index.js +6 -6
  150. package/dist/esm/file-picker/index.js +4 -4
  151. package/dist/esm/icon/index.js +3 -3
  152. package/dist/esm/icon-button/index.js +4 -4
  153. package/dist/esm/index.js +169 -94
  154. package/dist/esm/inline-message/index.js +1 -1
  155. package/dist/esm/list-dropdown/index.js +5 -5
  156. package/dist/esm/menu/index.js +7 -7
  157. package/dist/esm/open-icon/index.js +5 -5
  158. package/dist/esm/paginator/index.js +12 -12
  159. package/dist/esm/profile-card/index.js +4 -4
  160. package/dist/esm/quantity-field/index.js +6 -7
  161. package/dist/esm/select/core/index.js +7 -7
  162. package/dist/esm/select/index.js +11 -11
  163. package/dist/esm/select/select/index.js +9 -9
  164. package/dist/esm/select/select-dropdown/index.js +9 -9
  165. package/dist/esm/slider/index.js +2 -2
  166. package/dist/esm/split-view/core/index.js +7 -0
  167. package/dist/esm/split-view/core/index.js.map +7 -0
  168. package/dist/esm/split-view/index.js +92 -0
  169. package/dist/esm/split-view/index.js.map +7 -0
  170. package/dist/esm/split-view/split-view/index.js +44 -0
  171. package/dist/esm/split-view/split-view/index.js.map +7 -0
  172. package/dist/esm/split-view/split-view-panel/index.js +78 -0
  173. package/dist/esm/split-view/split-view-panel/index.js.map +7 -0
  174. package/dist/esm/stepper/index.js +6 -6
  175. package/dist/esm/stepper/step/index.js +5 -5
  176. package/dist/esm/stepper/stepper/index.js +6 -6
  177. package/dist/esm/switch/index.js +2 -2
  178. package/dist/esm/table/index.js +7 -7
  179. package/dist/esm/tabs/index.js +6 -6
  180. package/dist/esm/tabs/tab-bar/index.js +6 -6
  181. package/dist/esm/text-field/index.js +2 -2
  182. package/dist/esm/time-picker/index.js +11 -10
  183. package/dist/esm/toast/index.js +7 -7
  184. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +6 -1
  185. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +30 -12
  186. package/esm/app-bar/profile-button/app-bar-profile-button-constants.d.ts +4 -0
  187. package/esm/app-bar/profile-button/app-bar-profile-button-constants.js +2 -0
  188. package/esm/app-bar/profile-button/app-bar-profile-button-foundation.d.ts +8 -0
  189. package/esm/app-bar/profile-button/app-bar-profile-button-foundation.js +22 -0
  190. package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +4 -0
  191. package/esm/app-bar/profile-button/app-bar-profile-button.js +14 -0
  192. package/esm/autocomplete/autocomplete-adapter.d.ts +2 -0
  193. package/esm/autocomplete/autocomplete-adapter.js +4 -0
  194. package/esm/autocomplete/autocomplete-foundation.js +10 -7
  195. package/esm/chip-field/chip-field-adapter.d.ts +1 -1
  196. package/esm/chip-field/chip-field-adapter.js +2 -2
  197. package/esm/chip-field/chip-field.js +1 -1
  198. package/esm/chips/chip/chip.js +1 -1
  199. package/esm/core/utils/event-utils.d.ts +1 -0
  200. package/esm/core/utils/event-utils.js +3 -0
  201. package/esm/core/utils/utils.d.ts +36 -0
  202. package/esm/core/utils/utils.js +57 -0
  203. package/esm/date-picker/date-picker-foundation.js +3 -1
  204. package/esm/drawer/base/base-drawer-foundation.d.ts +4 -2
  205. package/esm/drawer/base/base-drawer-foundation.js +22 -14
  206. package/esm/drawer/modal-drawer/modal-drawer-foundation.d.ts +2 -2
  207. package/esm/drawer/modal-drawer/modal-drawer-foundation.js +4 -4
  208. package/esm/field/field-adapter.d.ts +4 -4
  209. package/esm/field/field-adapter.js +4 -13
  210. package/esm/field/field-foundation.js +2 -2
  211. package/esm/file-picker/file-picker.js +1 -1
  212. package/esm/index.d.ts +1 -0
  213. package/esm/index.js +3 -0
  214. package/esm/inline-message/inline-message.js +1 -1
  215. package/esm/profile-card/profile-card-adapter.d.ts +4 -0
  216. package/esm/profile-card/profile-card-adapter.js +6 -0
  217. package/esm/profile-card/profile-card-constants.d.ts +4 -0
  218. package/esm/profile-card/profile-card-constants.js +5 -1
  219. package/esm/profile-card/profile-card-foundation.d.ts +6 -0
  220. package/esm/profile-card/profile-card-foundation.js +22 -0
  221. package/esm/profile-card/profile-card.d.ts +4 -0
  222. package/esm/profile-card/profile-card.js +15 -1
  223. package/esm/quantity-field/quantity-field-adapter.d.ts +0 -2
  224. package/esm/quantity-field/quantity-field-adapter.js +1 -13
  225. package/esm/quantity-field/quantity-field-foundation.js +0 -1
  226. package/esm/quantity-field/quantity-field.js +1 -1
  227. package/esm/select/select/select.js +1 -1
  228. package/esm/split-view/core/index.d.ts +6 -0
  229. package/esm/split-view/core/index.js +6 -0
  230. package/esm/split-view/core/split-view-base.d.ts +14 -0
  231. package/esm/split-view/core/split-view-base.js +6 -0
  232. package/esm/split-view/index.d.ts +8 -0
  233. package/esm/split-view/index.js +8 -0
  234. package/esm/split-view/split-view/index.d.ts +10 -0
  235. package/esm/split-view/split-view/index.js +14 -0
  236. package/esm/split-view/split-view/split-view-adapter.d.ts +29 -0
  237. package/esm/split-view/split-view/split-view-adapter.js +62 -0
  238. package/esm/split-view/split-view/split-view-constants.d.ts +41 -0
  239. package/esm/split-view/split-view/split-view-constants.js +40 -0
  240. package/esm/split-view/split-view/split-view-foundation.d.ts +86 -0
  241. package/esm/split-view/split-view/split-view-foundation.js +179 -0
  242. package/esm/split-view/split-view/split-view.d.ts +67 -0
  243. package/esm/split-view/split-view/split-view.js +103 -0
  244. package/esm/split-view/split-view-panel/index.d.ts +11 -0
  245. package/esm/split-view/split-view-panel/index.js +15 -0
  246. package/esm/split-view/split-view-panel/split-view-panel-adapter.d.ts +171 -0
  247. package/esm/split-view/split-view-panel/split-view-panel-adapter.js +295 -0
  248. package/esm/split-view/split-view-panel/split-view-panel-constants.d.ts +97 -0
  249. package/esm/split-view/split-view-panel/split-view-panel-constants.js +78 -0
  250. package/esm/split-view/split-view-panel/split-view-panel-foundation.d.ts +235 -0
  251. package/esm/split-view/split-view-panel/split-view-panel-foundation.js +667 -0
  252. package/esm/split-view/split-view-panel/split-view-panel-utils.d.ts +130 -0
  253. package/esm/split-view/split-view-panel/split-view-panel-utils.js +300 -0
  254. package/esm/split-view/split-view-panel/split-view-panel.d.ts +105 -0
  255. package/esm/split-view/split-view-panel/split-view-panel.js +173 -0
  256. package/esm/table/table-utils.d.ts +2 -2
  257. package/esm/table/table-utils.js +30 -14
  258. package/esm/table/table.js +3 -1
  259. package/esm/text-field/text-field-adapter.d.ts +1 -1
  260. package/esm/text-field/text-field-adapter.js +2 -2
  261. package/esm/text-field/text-field.js +1 -1
  262. package/esm/time-picker/time-picker-constants.d.ts +1 -0
  263. package/esm/time-picker/time-picker-constants.js +1 -0
  264. package/esm/time-picker/time-picker-foundation.d.ts +4 -0
  265. package/esm/time-picker/time-picker-foundation.js +44 -29
  266. package/esm/time-picker/time-picker.d.ts +3 -0
  267. package/esm/time-picker/time-picker.js +7 -0
  268. package/package.json +2 -2
  269. package/styles/chip-field/_base.scss +2 -2
  270. package/styles/chip-field/_selector.scss +1 -1
  271. package/styles/chip-field/_variables.scss +1 -1
  272. package/styles/chips/chip/_mixins.scss +4 -3
  273. package/styles/chips/chip/_variables.scss +3 -2
  274. package/styles/field/_base.scss +16 -4
  275. package/styles/field/_selector.scss +4 -4
  276. package/styles/file-picker/_mixins.scss +3 -1
  277. package/styles/inline-message/inline-message.scss +4 -0
  278. package/styles/quantity-field/_mixins.scss +1 -1
  279. package/styles/select/select/_selector.scss +1 -1
  280. package/styles/split-view/split-view/_mixins.scss +48 -0
  281. package/styles/split-view/split-view/split-view.scss +25 -0
  282. package/styles/split-view/split-view-panel/_mixins.scss +260 -0
  283. package/styles/split-view/split-view-panel/_variables.scss +7 -0
  284. package/styles/split-view/split-view-panel/split-view-panel.scss +23 -0
  285. package/dist/esm/chunks/chunk.2MBI5DLT.js.map +0 -7
  286. package/dist/esm/chunks/chunk.46BED43J.js.map +0 -7
  287. package/dist/esm/chunks/chunk.65GHMPX2.js.map +0 -7
  288. package/dist/esm/chunks/chunk.7I2XNJBL.js.map +0 -7
  289. package/dist/esm/chunks/chunk.C73AZRT4.js.map +0 -7
  290. package/dist/esm/chunks/chunk.FJJVIMZ2.js.map +0 -7
  291. package/dist/esm/chunks/chunk.GOWHXADJ.js.map +0 -7
  292. package/dist/esm/chunks/chunk.I6PJGNJS.js.map +0 -7
  293. package/dist/esm/chunks/chunk.IGBDDH3J.js.map +0 -7
  294. package/dist/esm/chunks/chunk.IJW2YKP3.js.map +0 -7
  295. package/dist/esm/chunks/chunk.JC2PZ4TS.js.map +0 -7
  296. package/dist/esm/chunks/chunk.ZXMJB7OW.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../node_modules/@tylertech/forge-core/esm/resize/resize-observer.js", "../../src/split-view/split-view/split-view-adapter.ts", "../../src/split-view/split-view/split-view-foundation.ts", "../../src/split-view/split-view/split-view.ts", "../../src/split-view/split-view/index.ts"],
4
+ "sourcesContent": ["/**\n * Provides a set of methods for observing and responding to resizing of elements.\n */\nexport class ForgeResizeObserver {\n /**\n * Initiates the observing of a specified `Element`. Calling with an already observed `Element`\n * overwrites the exisiting observation. It is expected that the consumer will eventually\n * {@link unobserve} the `Element` to avoid memory leaks.\n *\n * @param target An `Element` reference.\n * @param callback A function that accepts a `ResizeObserverEntry` for the `Element`.\n * @param options An options object allowing you to set options for the observation.\n */\n static observe(target, callback, options) {\n var _a, _b;\n if (ForgeResizeObserver._targets.has(target)) {\n (_a = ForgeResizeObserver._observer) === null || _a === void 0 ? void 0 : _a.unobserve(target);\n }\n ForgeResizeObserver._targets.set(target, callback);\n ForgeResizeObserver._countTargets();\n (_b = ForgeResizeObserver._observer) === null || _b === void 0 ? void 0 : _b.observe(target, options);\n }\n /**\n * Ends the observing of a specified `Element`.\n *\n * @param target An `Element` reference.\n */\n static unobserve(target) {\n var _a;\n ForgeResizeObserver._targets.delete(target);\n (_a = ForgeResizeObserver._observer) === null || _a === void 0 ? void 0 : _a.unobserve(target);\n ForgeResizeObserver._countTargets();\n }\n /**\n * Creates or destroys the `ResizeObserver` based on whether targets exist.\n */\n static _countTargets() {\n if (ForgeResizeObserver._observer) {\n // If there are no targets destroy the observer\n if (ForgeResizeObserver._targets.size < 1) {\n ForgeResizeObserver._observer = undefined;\n }\n }\n else {\n // If there are targets create the observer\n if (ForgeResizeObserver._targets.size) {\n ForgeResizeObserver._observer = new ResizeObserver(ForgeResizeObserver._handleResize);\n }\n }\n }\n}\nForgeResizeObserver._targets = new Map();\n/**\n * Runs the callback function of targets when they are resized.\n *\n * @param entries An array of `ResizeObserverEntry`s.\n */\nForgeResizeObserver._handleResize = entries => {\n entries.forEach(entry => {\n var _a;\n (_a = ForgeResizeObserver._targets.get(entry.target)) === null || _a === void 0 ? void 0 : _a(entry);\n });\n};\n", "import { ForgeResizeObserver, getShadowElement } from '@tylertech/forge-core';\n\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { ISplitViewPanelComponent, SPLIT_VIEW_PANEL_CONSTANTS } from '../split-view-panel';\nimport { ISplitViewComponent } from './split-view';\nimport { SplitViewOrientation, SPLIT_VIEW_CONSTANTS } from './split-view-constants';\n\nexport interface ISplitViewAdapter extends IBaseAdapter {\n registerSlotListener(listener: (evt: Event) => void): void;\n observeResize(callback: (entry: ResizeObserverEntry) => void): void;\n unobserveResize(): void;\n getSlottedPanels(): ISplitViewPanelComponent[];\n refitSlottedPanels(orientation: SplitViewOrientation): void;\n}\n\nexport class SplitViewAdapter extends BaseAdapter<ISplitViewComponent> implements ISplitViewAdapter {\n private _root: HTMLElement;\n\n constructor(component: ISplitViewComponent) {\n super(component);\n this._root = getShadowElement(component, SPLIT_VIEW_CONSTANTS.selectors.ROOT);\n }\n\n public registerSlotListener(listener: (evt: Event) => void): void {\n this._root.addEventListener('slotchange', listener);\n }\n\n public observeResize(callback: (entry: ResizeObserverEntry) => void): void {\n ForgeResizeObserver.observe(this._root, callback);\n }\n \n public unobserveResize(): void {\n ForgeResizeObserver.unobserve(this._root);\n }\n \n /**\n * Gets all child panels.\n * @returns All child panels.\n */\n public getSlottedPanels(): ISplitViewPanelComponent[] {\n const nodeList = this._component.querySelectorAll<ISplitViewPanelComponent>(SPLIT_VIEW_CONSTANTS.selectors.PANEL);\n return Array.from(nodeList);\n }\n\n public refitSlottedPanels(orientation: SplitViewOrientation): void {\n // Check if the combined panel size is greater than the split view size along the relevant axis\n const size = orientation === 'horizontal' ? this._root.clientWidth : this._root.clientHeight;\n const panels = this.getSlottedPanels();\n const combinedPanelSize = panels.map(panel => {\n const panelRoot = panel.shadowRoot?.querySelector(SPLIT_VIEW_PANEL_CONSTANTS.selectors.ROOT);\n const panelSize = orientation === 'horizontal' ? panelRoot?.clientWidth : panelRoot?.clientHeight;\n return panelSize ?? 0;\n }).reduce((cur, acc) => cur + acc, 0);\n\n // Do nothing if all the panels fit\n if (combinedPanelSize <= size) {\n return;\n }\n\n // Get the size adjustment needed to fit\n let diff = combinedPanelSize - size;\n\n // Size down the panels as needed in reverse order, adjusting diff accordingly\n panels.reverse().forEach(panel => {\n if (diff <= 0) {\n return;\n }\n\n const panelSize = panel.getContentSize();\n const collapsibleSize = panel.getCollapsibleSize();\n const reduceBy = Math.min(diff, collapsibleSize);\n const newSize = panelSize - reduceBy;\n\n panel.setContentSize(newSize);\n\n diff -= reduceBy;\n });\n\n // If there's still overflow nothing else can be done\n }\n}\n", "import { ForgeResizeObserverCallback, ICustomElementFoundation, throttle } from '@tylertech/forge-core';\n\nimport { ISplitViewBase } from '../core/split-view-base';\nimport { ISplitViewPanelComponent, SplitViewAnimatingLayer } from '../split-view-panel';\nimport { ISplitViewAdapter } from './split-view-adapter';\nimport { ISplitViewUpdateConfig, SplitViewOrientation, SPLIT_VIEW_CONSTANTS } from './split-view-constants';\n\nexport interface ISplitViewFoundation extends ISplitViewBase, ICustomElementFoundation {\n orientation: SplitViewOrientation;\n layerSlottedPanels(target: ISplitViewPanelComponent): void;\n unlayerSlottedPanels(): void;\n update(config: ISplitViewUpdateConfig): void;\n refitSlottedPanels(): void;\n}\n\nexport class SplitViewFoundation implements ISplitViewFoundation {\n private _orientation: SplitViewOrientation = 'horizontal';\n private _disabled = false;\n private _allowClose = false;\n private _autoClose = false;\n private _autoCloseThreshold = 0;\n private _slotListener: (evt: Event) => void;\n private _resizeObserverCallback: ForgeResizeObserverCallback;\n private _isInitialized = false;\n\n constructor(private _adapter: ISplitViewAdapter) {\n this._slotListener = evt => this._onSlotChange(evt);\n this._resizeObserverCallback = throttle((entry: ResizeObserverEntry) => this._onResize(entry), SPLIT_VIEW_CONSTANTS.numbers.RESIZE_THROTTLE_THRESHOLD);\n }\n\n public initialize(): void {\n this._adapter.registerSlotListener(this._slotListener);\n this._adapter.observeResize(this._resizeObserverCallback);\n \n this._applyOrientation();\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._adapter.unobserveResize();\n }\n\n private _onSlotChange(evt: Event): void {\n this._layoutSlottedPanels();\n this.update({ accessibility: true, cursor: true, orientation: this._orientation });\n }\n\n private _onResize(entry: ResizeObserverEntry): void {\n this.update({ accessibility: true, cursor: true, size: true });\n }\n\n /**\n * Sets the resizable value of slotted panels with no resizable value set.\n */\n private _layoutSlottedPanels(): void {\n const panels = this._adapter.getSlottedPanels();\n\n // A single panel should have resizable set to off. Just leave it alone.\n if (panels.length < 2) {\n return;\n }\n\n // Don't change any panels if resizable is already set.\n if (panels.some(panel => panel.resizable !== 'off')) {\n return;\n }\n\n // All panels after the first have resizable set to start.\n panels.slice(1).forEach(panel => panel.resizable = 'start');\n }\n\n /**\n * Get/set whether panels are arranged horizontally or vertically.\n */\n public get orientation(): SplitViewOrientation {\n return this._orientation;\n }\n public set orientation(value: SplitViewOrientation) {\n if (this._orientation !== value) {\n this._orientation = value;\n this._applyOrientation();\n }\n }\n\n private _applyOrientation(): void {\n this._adapter.setHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.ORIENTATION, this._orientation);\n this.update({ orientation: this._orientation });\n\n if (this._isInitialized) {\n this._adapter.refitSlottedPanels(this._orientation);\n }\n this.update({ accessibility: true, cursor: true });\n }\n\n /**\n * Get/set whether interactions are disabled.\n */\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._applyDisabled();\n }\n }\n\n private _applyDisabled(): void {\n this._adapter.toggleHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.DISABLED, this._disabled);\n this.update({ properties: { disabled: this._disabled } });\n }\n\n /**\n * Get/set whether closing the panel is disabled.\n */\n public get allowClose(): boolean {\n return this._allowClose;\n }\n public set allowClose(value: boolean) {\n if (this._allowClose !== value) {\n this._allowClose = value;\n this._applyAllowClose();\n }\n }\n\n private _applyAllowClose(): void {\n this._adapter.toggleHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.ALLOW_CLOSE, this._allowClose);\n this.update({ properties: { allowClose: this._allowClose } });\n }\n\n /**\n * Get/set whether the panel closes when a threshold size is reached.\n */\n public get autoClose(): boolean {\n return this._autoClose;\n }\n public set autoClose(value: boolean) {\n if (this._autoClose !== value) {\n this._autoClose = value;\n this._applyAutoClose();\n }\n }\n\n private _applyAutoClose(): void {\n this._adapter.toggleHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE, this._autoClose);\n this.update({ properties: { autoClose: this._autoClose } });\n }\n\n /**\n * Get/set the size at which panels auto close.\n */\n public get autoCloseThreshold(): number {\n return this._autoCloseThreshold;\n }\n public set autoCloseThreshold(value: number) {\n if (this._autoCloseThreshold !== value) {\n this._autoCloseThreshold = value;\n this._applyAutoCloseThreshold();\n }\n }\n\n private _applyAutoCloseThreshold(): void {\n this._adapter.setHostAttribute(SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE_THRESHOLD, this._autoCloseThreshold.toString());\n this.update({ properties: { autoCloseThreshold: this._autoCloseThreshold } });\n }\n\n /**\n * Layers panels in a set order during an animation. Panels that the target is animating toward\n * stack above it and other layers stack under it.\n * @param target The animating panel.\n */\n public layerSlottedPanels(target: ISplitViewPanelComponent): void {\n const panels = this._adapter.getSlottedPanels();\n const increment = target.resizable === 'start' ? 1 : -1;\n let layer = target.resizable === 'start' ? SplitViewAnimatingLayer.Under : SplitViewAnimatingLayer.Above;\n\n panels.forEach(panel => {\n // Increment the layer if moving into or out of the target panel\n if (panel === target || layer === SplitViewAnimatingLayer.Active) {\n layer += increment;\n }\n panel.style.setProperty(SPLIT_VIEW_CONSTANTS.customCssProperties.ANIMATING_LAYER, layer.toString());\n });\n }\n\n /**\n * Removes layering after an animation.\n */\n public unlayerSlottedPanels(): void {\n const panels = this._adapter.getSlottedPanels();\n panels.forEach(panel => {\n panel.style.removeProperty(SPLIT_VIEW_CONSTANTS.customCssProperties.ANIMATING_LAYER);\n });\n }\n\n /**\n * Updates the provided characteristics of each panel.\n * @param config An update configuration.\n */\n public update(config: ISplitViewUpdateConfig): void {\n const panels = this._adapter.getSlottedPanels();\n panels.forEach(panel => {\n panel.update(config);\n });\n }\n\n /**\n * Resizes panels within the split view to avoid overflow.\n */\n public refitSlottedPanels(): void {\n this._adapter.refitSlottedPanels(this._orientation);\n }\n}\n", "import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean, coerceNumber } from '@tylertech/forge-core';\n\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { SplitViewAdapter } from './split-view-adapter';\nimport { SplitViewFoundation } from './split-view-foundation';\nimport { ISplitViewUpdateConfig, SplitViewOrientation, SPLIT_VIEW_CONSTANTS } from './split-view-constants';\nimport { ISplitViewPanelComponent, SplitViewPanelComponent } from '../split-view-panel';\nimport { ISplitViewBase } from '../core/split-view-base';\n\nconst template = '<template><div class=\\\"forge-split-view\\\" id=\\\"root\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = '@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:relative;outline:0;overflow:hidden}.mdc-ripple-surface::after,.mdc-ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\"}.mdc-ripple-surface::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface::after,.mdc-ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-upgraded--unbounded::after,.mdc-ripple-upgraded--unbounded::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{background-color:#000;background-color:var(--mdc-ripple-color,#000)}.mdc-ripple-surface.mdc-ripple-surface--hover::before,.mdc-ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{--mdc-ripple-color:var(--mdc-theme-on-surface)}.forge-split-view{display:-webkit-box;display:flex;width:100%;height:100%}:host{--forge-split-view-handle-width:8px;display:block;height:100%;width:100%;overflow:hidden;contain:paint size}:host([hidden]){display:none}:host([orientation=horizontal]) .forge-split-view{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}:host([orientation=vertical]) .forge-split-view{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}';\n\nexport interface ISplitViewComponent extends ISplitViewBase, IBaseComponent {\n orientation: SplitViewOrientation;\n layerSlottedPanels(target: ISplitViewPanelComponent): void;\n unlayerSlottedPanels(): void;\n update(config: ISplitViewUpdateConfig): void;\n refit(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-split-view': ISplitViewComponent;\n }\n}\n\n@CustomElement({\n name: SPLIT_VIEW_CONSTANTS.elementName,\n dependencies: [SplitViewPanelComponent]\n})\nexport class SplitViewComponent extends BaseComponent implements ISplitViewComponent {\n public static get observedAttributes(): string[] {\n return [\n SPLIT_VIEW_CONSTANTS.attributes.ORIENTATION,\n SPLIT_VIEW_CONSTANTS.attributes.DISABLED,\n SPLIT_VIEW_CONSTANTS.attributes.ALLOW_CLOSE,\n SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE,\n SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE_THRESHOLD\n ];\n }\n\n private _foundation: SplitViewFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new SplitViewFoundation(new SplitViewAdapter(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 SPLIT_VIEW_CONSTANTS.attributes.ORIENTATION:\n this.orientation = newValue as SplitViewOrientation;\n break;\n case SPLIT_VIEW_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n case SPLIT_VIEW_CONSTANTS.attributes.ALLOW_CLOSE:\n this.allowClose = coerceBoolean(newValue);\n break;\n case SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE:\n this.autoClose = coerceBoolean(newValue);\n break;\n case SPLIT_VIEW_CONSTANTS.attributes.AUTO_CLOSE_THRESHOLD:\n this.autoCloseThreshold = coerceNumber(newValue);\n break;\n }\n }\n\n /**\n * Whether child split view panels are laid out and resize horizontally or vertically.\n */\n @FoundationProperty()\n public orientation: SplitViewOrientation;\n\n /**\n * Whether child split view panels have resize interactions disabled or enabled.\n */\n @FoundationProperty()\n public disabled: boolean;\n\n /**\n * Whether child split view panels can be closed via keyboard interaction.\n */\n @FoundationProperty()\n public allowClose: boolean;\n\n /**\n * Whether child split view panels automatically close when they reach a size of 0.\n */\n @FoundationProperty()\n public autoClose: boolean;\n\n /**\n * The size at which panels auto close.\n */\n @FoundationProperty()\n public autoCloseThreshold: number;\n\n /**\n * Arranges split view panels to avoid overlapping during animations.\n * @param target The originating split view panel component.\n */\n public layerSlottedPanels(target: ISplitViewPanelComponent): void {\n this._foundation.layerSlottedPanels(target);\n }\n\n /**\n * Removes presentation data set during an animation.\n */\n public unlayerSlottedPanels(): void {\n this._foundation.unlayerSlottedPanels();\n }\n\n /**\n * Updates the provided characteristics of each slotted panel.\n * @param config An update configuration.\n */\n public update(config: ISplitViewUpdateConfig): void {\n this._foundation.update(config);\n }\n\n /**\n * Resizes panels within the split view to avoid overflow.\n */\n public refit(): void {\n this._foundation.refitSlottedPanels();\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { SplitViewComponent } from './split-view';\n\nexport * from './split-view-adapter';\nexport * from './split-view-constants';\nexport * from './split-view-foundation';\nexport * from './split-view';\n\nexport function defineSplitViewComponent(): void {\n defineCustomElement(SplitViewComponent);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk.56BNM7F2.js";
9
9
  import {
10
10
  userInteractionListener
11
- } from "./chunk.PM7D2SUE.js";
11
+ } from "./chunk.A6YZB7UK.js";
12
12
  import {
13
13
  BaseComponentDelegate
14
14
  } from "./chunk.WT4W2IFT.js";
@@ -255,4 +255,4 @@ export {
255
255
  ButtonComponentDelegate,
256
256
  defineButtonComponent
257
257
  };
258
- //# sourceMappingURL=chunk.QYWAZCBX.js.map
258
+ //# sourceMappingURL=chunk.CTMCTMRO.js.map
@@ -3,16 +3,19 @@
3
3
  * Copyright 2022 Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
+ import {
7
+ tylIconClockOutline
8
+ } from "./chunk.A5GIQB6E.js";
6
9
  import {
7
10
  DialogComponent
8
- } from "./chunk.RL7ZFLMG.js";
11
+ } from "./chunk.FRT7RD5L.js";
9
12
  import {
10
13
  TEXT_FIELD_CONSTANTS,
11
14
  TextFieldComponentDelegate
12
15
  } from "./chunk.Q4YMHFRY.js";
13
16
  import {
14
17
  ListDropdown
15
- } from "./chunk.IGBDDH3J.js";
18
+ } from "./chunk.QRGWP6Z2.js";
16
19
  import {
17
20
  ListComponent
18
21
  } from "./chunk.5U6ZT6MC.js";
@@ -25,10 +28,10 @@ import {
25
28
  import {
26
29
  ICON_BUTTON_CONSTANTS,
27
30
  IconButtonComponent
28
- } from "./chunk.EBC2HGO3.js";
31
+ } from "./chunk.UAW46BWM.js";
29
32
  import {
30
33
  tylIconClose
31
- } from "./chunk.GS2AXUCN.js";
34
+ } from "./chunk.WOL4KRZK.js";
32
35
  import {
33
36
  Platform
34
37
  } from "./chunk.BYN27JXZ.js";
@@ -36,7 +39,7 @@ import {
36
39
  ICON_CONSTANTS,
37
40
  IconComponent,
38
41
  IconRegistry
39
- } from "./chunk.WSH4S3GM.js";
42
+ } from "./chunk.GVR5LXMJ.js";
40
43
  import {
41
44
  FormFieldComponentDelegate
42
45
  } from "./chunk.HZISALRH.js";
@@ -50,7 +53,7 @@ import {
50
53
  tokenize12HourTimeString,
51
54
  tokenize24HourTimeString,
52
55
  tryCoerceTimeString
53
- } from "./chunk.PM7D2SUE.js";
56
+ } from "./chunk.A6YZB7UK.js";
54
57
  import {
55
58
  BaseAdapter
56
59
  } from "./chunk.KZATVOA6.js";
@@ -86,12 +89,6 @@ import {
86
89
  __spreadValues
87
90
  } from "./chunk.LM5TVNZY.js";
88
91
 
89
- // node_modules/@tylertech/tyler-icons/extended/index.js
90
- var tylIconClockOutline = {
91
- name: "clock_outline",
92
- data: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 20a8 8 0 008-8 8 8 0 00-8-8 8 8 0 00-8 8 8 8 0 008 8m0-18a10 10 0 0110 10 10 10 0 01-10 10C6.47 22 2 17.5 2 12A10 10 0 0112 2m.5 5v5.25l4.5 2.67-.75 1.23L11 13V7h1.5z"/></svg>'
93
- };
94
-
95
92
  // dist/build/lib/staging/src/time-picker/time-picker-constants.ts
96
93
  var elementName = `${COMPONENT_NAME_PREFIX}time-picker`;
97
94
  var attributes = {
@@ -109,6 +106,7 @@ var attributes = {
109
106
  STEP: "step",
110
107
  ALLOW_INPUT: "allow-input",
111
108
  SHOW_NOW: "show-now",
109
+ SHOW_HOUR_OPTIONS: "show-hour-options",
112
110
  DISABLED: "disabled",
113
111
  POPUP_CLASSES: "popup-classes",
114
112
  ALLOW_DROPDOWN: "allow-dropdown"
@@ -456,6 +454,7 @@ var TimePickerFoundation = class {
456
454
  this._allowSeconds = false;
457
455
  this._allowInvalidTime = false;
458
456
  this._showNow = false;
457
+ this._showHourOptions = true;
459
458
  this._customOptions = [];
460
459
  this._disabled = false;
461
460
  this._popupClasses = [];
@@ -806,31 +805,33 @@ var TimePickerFoundation = class {
806
805
  return value;
807
806
  }
808
807
  _openDropdown() {
809
- if (!this.allowDropdown) {
808
+ const options = this._generateTimeOptions();
809
+ if (!this.allowDropdown || !options.length) {
810
810
  return;
811
811
  }
812
812
  this._formatInputValue();
813
813
  this._open = true;
814
814
  this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.OPEN);
815
- const options = this._generateTimeOptions();
816
815
  const selectableOptions = options.filter((o) => !o.divider && !o.disabled);
817
816
  let selectedValues = [];
818
817
  let activeStartIndex;
819
- if (this._value !== null) {
820
- const optionIndex = this._findClosestOptionIndex(this._value, selectableOptions);
821
- if (optionIndex >= 0) {
822
- const isExactMatch = selectableOptions[optionIndex].value.time === this._value;
823
- if (isExactMatch) {
824
- selectedValues = [selectableOptions[optionIndex].value];
825
- } else {
818
+ if (options.length) {
819
+ if (this._value !== null) {
820
+ const optionIndex = this._findClosestOptionIndex(this._value, selectableOptions);
821
+ if (optionIndex >= 0) {
822
+ const isExactMatch = selectableOptions[optionIndex].value.time === this._value;
823
+ if (isExactMatch) {
824
+ selectedValues = [selectableOptions[optionIndex].value];
825
+ } else {
826
+ activeStartIndex = optionIndex;
827
+ }
828
+ }
829
+ } else if (typeof this._startTime === "number") {
830
+ const optionIndex = this._findClosestOptionIndex(this._startTime, selectableOptions);
831
+ if (optionIndex >= 0 && optionIndex < selectableOptions.length) {
826
832
  activeStartIndex = optionIndex;
827
833
  }
828
834
  }
829
- } else if (typeof this._startTime === "number") {
830
- const optionIndex = this._findClosestOptionIndex(this._startTime, selectableOptions);
831
- if (optionIndex >= 0 && optionIndex < selectableOptions.length) {
832
- activeStartIndex = optionIndex;
833
- }
834
835
  }
835
836
  const config = {
836
837
  id: `forge-time-picker-${this._identifier}`,
@@ -879,19 +880,21 @@ var TimePickerFoundation = class {
879
880
  const minuteStep = this._step;
880
881
  const times = [];
881
882
  let leadingOptions = [];
882
- for (let totalMinutes = minMinutes; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {
883
- if (totalMinutes === TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) {
884
- break;
883
+ if (this._showHourOptions) {
884
+ for (let totalMinutes = minMinutes; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {
885
+ if (totalMinutes === TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) {
886
+ break;
887
+ }
888
+ const millis = minutesToMillis(totalMinutes);
889
+ const disabled = this._restrictedTimes.includes(millis);
890
+ const label = millisToTimeString(millis, this._use24HourTime, false) || "";
891
+ const value = { time: millis };
892
+ times.push({ label, value, disabled });
893
+ }
894
+ const firstPmIndex = times.findIndex((t) => t.value.time / 1e3 / 60 >= 720);
895
+ if (firstPmIndex >= 0 && firstPmIndex < times.length - 1) {
896
+ times.splice(firstPmIndex, 0, { label: "", value: null, divider: true });
885
897
  }
886
- const millis = minutesToMillis(totalMinutes);
887
- const disabled = this._restrictedTimes.includes(millis);
888
- const label = millisToTimeString(millis, this._use24HourTime, false) || "";
889
- const value = { time: millis };
890
- times.push({ label, value, disabled });
891
- }
892
- const firstPmIndex = times.findIndex((t) => t.value.time / 1e3 / 60 >= 720);
893
- if (firstPmIndex >= 0 && firstPmIndex < times.length - 1) {
894
- times.splice(firstPmIndex, 0, { label: "", value: null, divider: true });
895
898
  }
896
899
  if (this._showNow) {
897
900
  const value = { time: null, metadata: "now" };
@@ -905,7 +908,9 @@ var TimePickerFoundation = class {
905
908
  leadingOptions = [...leadingOptions, ...options];
906
909
  }
907
910
  if (leadingOptions.length) {
908
- times.splice(0, 0, { label: "", value: null, divider: true });
911
+ if (times.length) {
912
+ times.splice(0, 0, { label: "", value: null, divider: true });
913
+ }
909
914
  leadingOptions.forEach((o, index) => times.splice(index, 0, o));
910
915
  }
911
916
  return times;
@@ -1109,6 +1114,14 @@ var TimePickerFoundation = class {
1109
1114
  this._showNow = value;
1110
1115
  }
1111
1116
  }
1117
+ get showHourOptions() {
1118
+ return this._showHourOptions;
1119
+ }
1120
+ set showHourOptions(value) {
1121
+ if (this._showHourOptions !== value) {
1122
+ this._showHourOptions = value;
1123
+ }
1124
+ }
1112
1125
  get customOptions() {
1113
1126
  return this._customOptions;
1114
1127
  }
@@ -1199,6 +1212,7 @@ var TimePickerComponent = class extends BaseComponent {
1199
1212
  TIME_PICKER_CONSTANTS.attributes.STEP,
1200
1213
  TIME_PICKER_CONSTANTS.attributes.ALLOW_INPUT,
1201
1214
  TIME_PICKER_CONSTANTS.attributes.SHOW_NOW,
1215
+ TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS,
1202
1216
  TIME_PICKER_CONSTANTS.attributes.DISABLED,
1203
1217
  TIME_PICKER_CONSTANTS.attributes.POPUP_CLASSES,
1204
1218
  TIME_PICKER_CONSTANTS.attributes.ALLOW_DROPDOWN
@@ -1240,6 +1254,9 @@ var TimePickerComponent = class extends BaseComponent {
1240
1254
  case TIME_PICKER_CONSTANTS.attributes.SHOW_NOW:
1241
1255
  this.showNow = coerceBoolean(newValue);
1242
1256
  break;
1257
+ case TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS:
1258
+ this.showHourOptions = coerceBoolean(newValue);
1259
+ break;
1243
1260
  case TIME_PICKER_CONSTANTS.attributes.MIN:
1244
1261
  this.min = newValue;
1245
1262
  break;
@@ -1309,6 +1326,9 @@ __decorateClass([
1309
1326
  __decorateClass([
1310
1327
  FoundationProperty()
1311
1328
  ], TimePickerComponent.prototype, "showNow", 2);
1329
+ __decorateClass([
1330
+ FoundationProperty()
1331
+ ], TimePickerComponent.prototype, "showHourOptions", 2);
1312
1332
  __decorateClass([
1313
1333
  FoundationProperty()
1314
1334
  ], TimePickerComponent.prototype, "customOptions", 2);
@@ -1447,4 +1467,4 @@ export {
1447
1467
  TimePickerComponentDelegate,
1448
1468
  defineTimePickerComponent
1449
1469
  };
1450
- //# sourceMappingURL=chunk.JUXKYUD4.js.map
1470
+ //# sourceMappingURL=chunk.D2AL6QLF.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/time-picker/time-picker-constants.ts", "../../src/time-picker/time-picker-adapter.ts", "../../src/time-picker/time-picker-utils.ts", "../../src/time-picker/time-picker-foundation.ts", "../../src/time-picker/time-picker.ts", "../../src/time-picker/time-picker-component-delegate.ts", "../../src/time-picker/index.ts"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\nimport { IListDropdownOption } from '../list-dropdown/list-dropdown-constants';\nimport IMask, { Masked, InputMask } from 'imask';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}time-picker`;\n\nconst attributes = {\n TOGGLE: 'forge-time-picker-toggle',\n VALUE: 'value',\n OPEN: 'open',\n ALLOW_SECONDS: 'allow-seconds',\n MASKED: 'masked',\n SHOW_MASK_FORMAT: 'show-mask-format',\n USE_24_HOUR_TIME: 'use-24-hour-time',\n ALLOW_INVALID_TIME: 'allow-invalid-time',\n MIN: 'min',\n MAX: 'max',\n START_TIME: 'start-time',\n STEP: 'step',\n ALLOW_INPUT: 'allow-input',\n SHOW_NOW: 'show-now',\n SHOW_HOUR_OPTIONS: 'show-hour-options',\n DISABLED: 'disabled',\n POPUP_CLASSES: 'popup-classes',\n ALLOW_DROPDOWN: 'allow-dropdown'\n};\n\nconst selectors = {\n INPUT: 'input, input[forge-time-picker-input]',\n TOGGLE: `[${attributes.TOGGLE}]`\n};\n\nconst events = {\n OPEN: `${elementName}-open`,\n CLOSE: `${elementName}-close`,\n INPUT: `${elementName}-input`,\n CHANGE: `${elementName}-change`\n};\n\nconst numbers = {\n DEFAULT_MINUTE_STEP: 60,\n MAX_DAY_MILLIS: 86400000,\n MAX_DAY_MINUTES: 1440\n};\n\nexport const TIME_PICKER_CONSTANTS = {\n elementName,\n attributes,\n selectors,\n events,\n numbers\n};\n\nexport type TimePickerValidationCallback = (time: string) => boolean;\nexport type TimePickerParseCallback = (time: string) => number | null;\nexport type TimePickerFormatCallback = (value: number | null) => string;\nexport type TimePickerCustomOptionCallback<T> = (value: T, use24HourTime: boolean, allowSeconds: boolean) => number;\nexport type TimePickerCoercionCallback = (rawValue: string, coercedValue: string, allowSeconds: boolean) => string;\nexport type TimePickerPrepareMaskCallback = (value: string, masked: Masked<string>, flags: IMask.AppendFlags, maskInstance: InputMask<IMask.AnyMaskedOptions>) => string;\n\nexport interface ITimePickerOption<T = any> extends IListDropdownOption<T> {\n toMilliseconds: TimePickerCustomOptionCallback<T>;\n}\nexport interface ITimePickerOptionValue {\n time: number | null;\n metadata?: any;\n isCustom?: boolean;\n customCallback?: TimePickerCustomOptionCallback<any>;\n}\n", "import { getShadowElement, emitEvent, getActiveElement, toggleAttribute } from '@tylertech/forge-core';\nimport { ITimePickerComponent } from './time-picker';\nimport { BaseAdapter } from '../core';\nimport { TIME_PICKER_CONSTANTS } from './time-picker-constants';\nimport { ITimeInputMaskOptions, TimeInputMask } from '../core/mask/time-input-mask';\nimport { TEXT_FIELD_CONSTANTS, ITextFieldComponent } from '../text-field';\nimport { ICON_BUTTON_CONSTANTS, IIconButtonComponent } from '../icon-button';\nimport { ICON_CONSTANTS, IIconComponent } from '../icon';\nimport { IListDropdownConfig, IListDropdownOption } from '../list-dropdown/list-dropdown-constants';\nimport { IListDropdown, ListDropdown } from '../list-dropdown';\n\nexport interface ITimePickerAdapter extends BaseAdapter<ITimePickerComponent> {\n initialize(): void;\n initializeMask(options: ITimeInputMaskOptions): void;\n destroy(): void;\n destroyMask(): void;\n initializeAccessibility(identifier: string): void;\n addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n addToggleListener(type: string, listener: (event: Event) => void): void;\n removeToggleListener(type: string, listener: (event: Event) => void): void;\n hasInputElement(): boolean;\n tryCreateToggle(): void;\n tryFocusInput(): void;\n tryBlurInput(): void;\n selectInputText(): void;\n getInputValue(): string;\n setInputValue(value: string, emitEvents: boolean): void;\n isInputDisabled(): boolean;\n isInputFocused(): boolean;\n setDisabled(isDisabled: boolean): void;\n attachDropdown(config: IListDropdownConfig): void;\n detachDropdown(): void;\n setActiveDescendant(id: string): void;\n propagateKey(key: string): void;\n getTargetElementWidth(selector: string): number;\n emitInputEvent(type: string, data?: any): void;\n setInputReadonly(value: boolean): void;\n setToggleDisabled(value: boolean): void;\n activateFirstOption(): void;\n getActiveOption(): IListDropdownOption | undefined;\n}\n\nexport class TimePickerAdapter extends BaseAdapter<ITimePickerComponent> implements ITimePickerAdapter {\n private _inputElement: HTMLInputElement;\n private _toggleElement?: HTMLElement;\n private _inputMask?: TimeInputMask;\n private _listDropdown?: IListDropdown;\n private _targetElement?: HTMLElement;\n\n constructor(component: ITimePickerComponent) {\n super(component);\n }\n\n public initialize(): void {\n this._inputElement = this._component.querySelector(TIME_PICKER_CONSTANTS.selectors.INPUT) as HTMLInputElement;\n }\n\n public initializeMask(options: ITimeInputMaskOptions): void {\n if (this._inputMask) {\n this._inputMask.destroy();\n }\n this._inputMask = new TimeInputMask(this._inputElement, options);\n }\n\n public destroy(): void {\n this._targetElement = undefined;\n this._toggleElement = undefined as any;\n this._inputElement = undefined as any;\n }\n\n public destroyMask(): void {\n if (this._inputMask) {\n this._inputMask.destroy();\n this._inputMask = undefined;\n }\n }\n\n public initializeAccessibility(identifier: string): void {\n this._inputElement.setAttribute('autocomplete', 'off');\n this._inputElement.setAttribute('autocorrect', 'off');\n this._inputElement.setAttribute('autocapitalize', 'off');\n this._inputElement.setAttribute('spellcheck', 'false');\n this._inputElement.setAttribute('role', 'combobox');\n this._inputElement.setAttribute('aria-live', 'assertive');\n this._inputElement.setAttribute('aria-atomic', 'true');\n this._inputElement.setAttribute('aria-haspopup', 'true');\n this._inputElement.setAttribute('aria-expanded', 'false');\n }\n\n public addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void {\n this._inputElement.addEventListener(type, listener, { capture });\n }\n\n public removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void {\n if (this._inputElement) {\n this._inputElement.removeEventListener(type, listener, { capture });\n }\n }\n\n public addToggleListener(type: string, listener: (event: Event) => void): void {\n if (this._toggleElement) {\n this._toggleElement.addEventListener(type, listener);\n }\n }\n\n public removeToggleListener(type: string, listener: (event: Event) => void): void {\n if (this._toggleElement) {\n this._toggleElement.removeEventListener(type, listener);\n }\n }\n\n public hasInputElement(): boolean {\n return !!this._inputElement;\n }\n\n public tryCreateToggle(): void {\n const textField = this._component.querySelector(TEXT_FIELD_CONSTANTS.elementName) as ITextFieldComponent;\n const toggleElement = this._component.querySelector(TIME_PICKER_CONSTANTS.selectors.TOGGLE);\n if (textField) {\n const existingIconButton = textField.querySelector(`${ICON_BUTTON_CONSTANTS.elementName}[slot=trailing]`);\n if (existingIconButton || toggleElement) {\n this._toggleElement = (existingIconButton || toggleElement) as IIconButtonComponent;\n return;\n }\n\n const iconButtonElement = document.createElement(ICON_BUTTON_CONSTANTS.elementName) as IIconButtonComponent;\n iconButtonElement.slot = 'trailing';\n iconButtonElement.dense = true;\n iconButtonElement.densityLevel = 3;\n iconButtonElement.style.marginRight = '4px'; // Override default trailing slot margin in text-field\n\n const buttonElement = document.createElement('button');\n buttonElement.type = 'button';\n buttonElement.tabIndex = -1;\n buttonElement.setAttribute('aria-label', 'Toggle time dropdown');\n\n const iconElement = document.createElement(ICON_CONSTANTS.elementName) as IIconComponent;\n iconElement.name = 'clock_outline';\n buttonElement.appendChild(iconElement);\n iconButtonElement.appendChild(buttonElement);\n\n textField.appendChild(iconButtonElement);\n this._toggleElement = iconButtonElement;\n } else if (toggleElement) {\n this._toggleElement = toggleElement as HTMLElement;\n }\n }\n\n public tryFocusInput(): void {\n this._inputElement.select();\n }\n\n public tryBlurInput(): void {\n this._inputElement.blur();\n }\n\n public selectInputText(): void {\n this._inputElement.select();\n }\n\n public isInputDisabled(): boolean {\n return this._inputElement.disabled;\n }\n\n public isInputFocused(): boolean {\n return getActiveElement() === this._inputElement;\n }\n\n public setInputValue(value: string, emitEvents: boolean): void {\n if (this._inputElement.value === value) {\n return;\n }\n\n this._inputElement.value = value;\n\n if (this._inputMask) {\n this._inputMask.update();\n }\n\n if (emitEvents) {\n this._emitInputEvent('change');\n this._emitInputEvent('input');\n }\n }\n\n public getInputValue(): string {\n return this._inputMask ? this._inputMask.maskedValue : this._inputElement.value;\n }\n\n public setDisabled(isDisabled: boolean): void {\n this._inputElement.disabled = isDisabled;\n this._inputElement.setAttribute('aria-disabled', isDisabled.toString());\n this.setToggleDisabled(isDisabled);\n }\n\n public attachDropdown(config: IListDropdownConfig): void {\n this._listDropdown = new ListDropdown(this._inputElement, config);\n this._listDropdown.open();\n this._inputElement.setAttribute('aria-controls', `list-dropdown-popup-${config.id}`);\n }\n \n public detachDropdown(): void {\n if (this._listDropdown) {\n this._listDropdown.close();\n this._listDropdown.destroy();\n this._listDropdown = undefined;\n }\n this._inputElement.removeAttribute('aria-controls');\n }\n\n public propagateKey(key: string): void {\n this._listDropdown?.handleKey(key);\n }\n\n public setActiveDescendant(id: string): void {\n toggleAttribute(this._inputElement, !!id, 'aria-activedescendant', id);\n }\n\n public getTargetElementWidth(selector: string): number {\n const targetElement = this._getTargetElement(selector);\n return targetElement.getBoundingClientRect().width;\n }\n\n private _emitInputEvent(type: string): void {\n this._inputElement.dispatchEvent(new Event(type));\n }\n\n public emitInputEvent(type: string, data?: any): void {\n emitEvent(this._inputElement, type, data);\n }\n\n public setInputReadonly(value: boolean): void {\n this._inputElement.readOnly = value;\n }\n\n public setToggleDisabled(value: boolean): void {\n if (this._toggleElement) {\n this._toggleElement.setAttribute('aria-disabled', value.toString());\n if ('disabled' in this._toggleElement) {\n (this._toggleElement as HTMLButtonElement).disabled = value;\n } else {\n const button = this._toggleElement.querySelector('button') as HTMLButtonElement;\n if (button) {\n button.disabled = value;\n }\n }\n }\n }\n\n public activateFirstOption(): void {\n this._listDropdown?.activateFirstOption();\n }\n\n public getActiveOption(): IListDropdownOption | undefined {\n return this._listDropdown?.getActiveOption();\n }\n\n private _getTargetElement(selector?: string): HTMLElement {\n if (this._targetElement) {\n return this._targetElement;\n }\n this._targetElement = selector ? this._component.querySelector(selector) as HTMLElement || this._getDefaultTargetElement() : this._getDefaultTargetElement();\n return this._targetElement;\n }\n\n private _getDefaultTargetElement(): HTMLElement {\n // This component is often used with the text-field, if so, let's target our popup around one if its internal elements for proper alignnment\n const textField = this._component.querySelector(TEXT_FIELD_CONSTANTS.elementName) as HTMLElement;\n if (textField && textField.shadowRoot) {\n const textFieldRoot = getShadowElement(textField, TEXT_FIELD_CONSTANTS.selectors.ROOT) as HTMLElement;\n if (textFieldRoot) {\n return textFieldRoot;\n }\n }\n return this._component; // Otherwise we just use the time-picker host as the target\n }\n}\n", "import { tokenize24HourTimeString, tokenize12HourTimeString, TWENTY_FOUR_HOUR_TIME_REGEX, TWELVE_HOUR_TIME_REGEX } from '../core/utils/time-utils';\n\nexport function timeStringToMillis(time: string | null, use24HourTime: boolean, allowSeconds: boolean): number | null {\n if (!time || /^\\s*$/.test(time)) {\n return null;\n }\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (TWENTY_FOUR_HOUR_TIME_REGEX.test(time)) {\n const tokens = tokenize24HourTimeString(time);\n hours = +tokens.hours || 0;\n minutes = +tokens.minutes || 0;\n seconds = +tokens.seconds || 0;\n } else if (TWELVE_HOUR_TIME_REGEX.test(time)) {\n const tokens = tokenize12HourTimeString(time);\n hours = +tokens.hours || 0;\n minutes = +tokens.minutes || 0;\n seconds = +tokens.seconds || 0;\n if (hours === 12 && tokens.meridiem === 'AM') {\n hours = 0;\n }\n if (hours < 12 && tokens.meridiem === 'PM') {\n hours += 12;\n }\n } else {\n return null;\n }\n\n return hoursToMillis(hours) + minutesToMillis(minutes) + (allowSeconds ? secondsToMillis(seconds) : 0);\n}\n\nexport function millisToTimeString(value: number | null, use24HourTime: boolean, allowSeconds: boolean): string | null {\n if (typeof value !== 'number' || value < 0) {\n return null;\n }\n\n let hours = Math.min(millisToHours(value), 23);\n const minutes = Math.min(millisToMinutesClamped(value), 59);\n const totalMinutes = value / (1000 * 60);\n const meridiem = totalMinutes < 720 ? 'AM' : 'PM';\n\n if (!use24HourTime) {\n hours = hours <= 12 ? hours : hours - 12;\n if (hours === 0) {\n hours = 12;\n }\n }\n\n let time = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;\n\n if (allowSeconds) {\n const seconds = Math.min(millisToSecondsClamped(value), 59);\n time += `:${String(seconds).padStart(2, '0')}`;\n }\n\n if (!use24HourTime) {\n time += ` ${meridiem}`;\n }\n\n return time;\n}\n\nexport function millisToHours(millis: number): number {\n return Math.abs(Math.floor(millis / (1000 * 60 * 60)));\n}\n\nexport function millisToMinutesClamped(millis: number): number {\n return Math.abs(Math.floor(millisToMinutes(millis) % 60));\n}\n\nexport function millisToMinutes(millis: number): number {\n return millis / (1000 * 60);\n}\n\nexport function millisToSecondsClamped(millis: number): number {\n return Math.abs(Math.floor(millisToSeconds(millis) % 60));\n}\n\nexport function millisToSeconds(millis: number): number {\n return millis / 1000;\n}\n\nexport function hoursToMillis(hours: number): number {\n return hours * 60 * 60 * 1000;\n}\n\nexport function minutesToMillis(minutes: number): number {\n return minutes * 60 * 1000;\n}\n\nexport function secondsToMillis(seconds: number): number {\n return seconds * 1000;\n}\n\nexport function stripSecondsFromMillis(millis: number): number {\n return millis - secondsToMillis(millisToSecondsClamped(millis));\n}\n\nexport function getCurrentTimeOfDayMillis(allowSeconds: boolean): number {\n const date = new Date();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return hoursToMillis(hours) + minutesToMillis(minutes) + (allowSeconds ? secondsToMillis(date.getSeconds()) : 0);\n}\n\n/**\n * Combines a `Date` object with a 24-hour time string from the time-picker component.\n * @param date The `Date` object to adjust.\n * @param time The 24-hour time string.\n * @param useSeconds If your 24-hour time string contains seconds, set this to `true`.\n * @returns The same `Date` object that was provided, with the newly adjusted time.\n */\nexport function mergeDateWithTime(date: Date, time: string, useSeconds = false): Date {\n if (!date) {\n date = new Date();\n }\n\n const millis = timeStringToMillis(time, true, useSeconds);\n if (!millis) {\n date.setHours(0, 0, 0);\n return date;\n }\n\n let hours = millisToHours(millis);\n \n const twentyThreeHoursInMillis = 82800000;\n if (hours > twentyThreeHoursInMillis) {\n hours = twentyThreeHoursInMillis;\n } else if (hours < 0) {\n hours = 0;\n }\n\n const minutes = millisToMinutesClamped(millis);\n const seconds = useSeconds ? millisToSecondsClamped(millis) : 0;\n date.setHours(hours, minutes, seconds);\n\n return date;\n}\n", "import { ICustomElementFoundation, Platform, debounce, randomChars } from '@tylertech/forge-core';\nimport { ITimePickerAdapter } from './time-picker-adapter';\nimport { ITimeInputMaskOptions } from '../core/mask/time-input-mask';\nimport { isSupportedTimeFormat, TWENTY_FOUR_HOUR_TIME_REGEX, tryCoerceTimeString } from '../core/utils/time-utils';\nimport {\n TIME_PICKER_CONSTANTS,\n ITimePickerOptionValue,\n ITimePickerOption,\n TimePickerValidationCallback,\n TimePickerParseCallback,\n TimePickerFormatCallback,\n TimePickerCoercionCallback,\n TimePickerPrepareMaskCallback\n} from './time-picker-constants';\nimport { IListDropdownConfig, ListDropdownType, IListDropdownOption } from '../list-dropdown/list-dropdown-constants';\nimport { timeStringToMillis, millisToTimeString, minutesToMillis, getCurrentTimeOfDayMillis, millisToMinutes, stripSecondsFromMillis } from './time-picker-utils';\n\nexport interface ITimePickerFoundation extends ICustomElementFoundation {\n value: string | null;\n open: boolean;\n allowSeconds: boolean;\n masked: boolean;\n showMaskFormat: boolean;\n use24HourTime: boolean;\n allowInvalidTime: boolean;\n min: string | null;\n max: string | null;\n restrictedTimes: string[];\n startTime: string | null;\n step: number;\n allowInput: boolean;\n showNow: boolean;\n showHourOptions: boolean;\n customOptions: ITimePickerOption[];\n validationCallback: TimePickerValidationCallback;\n parseCallback: TimePickerParseCallback;\n formatCallback: TimePickerFormatCallback;\n coercionCallback: TimePickerCoercionCallback;\n prepareMaskCallback: TimePickerPrepareMaskCallback;\n disabled: boolean;\n popupClasses: string | string[];\n allowDropdown: boolean;\n}\n\nexport class TimePickerFoundation implements ITimePickerFoundation {\n // State vars\n private _value: number | null = null;\n private _masked = true;\n private _use24HourTime = false;\n private _showMaskFormat = false;\n private _min: number | null = null;\n private _max: number | null = null;\n private _restrictedTimes: number[] = [];\n private _startTime: number | null = null;\n private _step = TIME_PICKER_CONSTANTS.numbers.DEFAULT_MINUTE_STEP;\n private _allowInput = true;\n private _identifier: string;\n private _open = false;\n private _allowSeconds = false;\n private _allowInvalidTime = false;\n private _popupTarget: string;\n private _showNow = false;\n private _showHourOptions = true;\n private _customOptions: ITimePickerOption[] = [];\n private _validationCallback: TimePickerValidationCallback;\n private _parseCallback: TimePickerParseCallback;\n private _formatCallback: TimePickerFormatCallback;\n private _coercionCallback: TimePickerCoercionCallback;\n private _prepareMaskCallback: TimePickerPrepareMaskCallback;\n private _disabled = false;\n private _popupClasses: string[] = [];\n private _allowDropdown = true;\n \n // Internal state vars\n private _isInitialized = false;\n\n // Listeners\n private _inputListener: (evt: Event) => void;\n private _inputKeydownListener: (evt: KeyboardEvent) => void;\n private _toggleMousedownListener: (evt: MouseEvent) => void;\n private _inputFocusListener: (evt: Event) => void;\n private _inputBlurListener: (evt: Event) => void;\n private _inputMousedownListener: (evt: MouseEvent) => void;\n \n constructor(private _adapter: ITimePickerAdapter) {\n this._identifier = randomChars(); // This is a unique identifier for this instance of the time picker (used for a11y purposes)\n\n // Set up listeners\n this._inputListener = evt => this._onInput(evt);\n this._inputKeydownListener = evt => this._onInputKeydown(evt);\n this._toggleMousedownListener = evt => this._onToggleMousedown(evt);\n this._inputFocusListener = evt => this._onInputFocus(evt);\n this._inputBlurListener = evt => this._onInputBlur(evt);\n this._inputMousedownListener = evt => this._onInputMousedown(evt);\n }\n\n public initialize(): void {\n this._adapter.initialize();\n \n // We require an input element to be a child of this component\n if (!this._adapter.hasInputElement()) {\n throw new Error('Unable to locate <input> element to attach to.');\n }\n\n this._adapter.initializeAccessibility(this._identifier);\n\n // Detect if a value already exists in the input and set our values based on that\n if (!this._value) {\n const inputValue = this._adapter.getInputValue();\n this._setValue(this._convertTimeStringToMillis(inputValue, this._use24HourTime, this._allowSeconds));\n }\n\n // Attach required listeners\n this._adapter.addInputListener('focus', this._inputFocusListener);\n this._adapter.addInputListener('blur', this._inputBlurListener);\n this._adapter.addInputListener('keydown', this._inputKeydownListener, true);\n\n // Ensure our input has the correct time format (make sure not to emit input events manually at this point)\n this._formatInputValue(false);\n\n // Apply our state\n if (typeof this._value === 'number') {\n this._applyValue(this._value, false);\n }\n this._applyAllowInput();\n this._applyAllowDropdown();\n this._applyDisabled();\n this._applyMask();\n\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n\n // Remove listeners\n this._adapter.removeInputListener('input', this._inputListener);\n this._adapter.removeInputListener('focus', this._inputFocusListener);\n this._adapter.removeInputListener('blur', this._inputBlurListener);\n this._adapter.removeToggleListener('mousedown', this._toggleMousedownListener);\n this._adapter.removeInputListener('keydown', this._inputKeydownListener, true);\n\n // If we are using an input mask, let's destroy that now\n if (this._masked) {\n this._adapter.destroyMask();\n }\n\n // Ensure we remove our dropdown\n this._closeDropdown();\n\n // Cleanup any resources used in the adapter\n this._adapter.destroy();\n }\n\n /** Called when the input mask changes or the `input` event occurs on our `<input>` element. */\n private _onInput(evt: Event): void {\n this._handleInput(this._adapter.getInputValue());\n }\n\n private _onInputKeydown(evt: KeyboardEvent): void {\n if (evt.shiftKey) {\n switch (evt.code) {\n case 'Backspace':\n case 'Delete':\n evt.preventDefault();\n const result = this._trySetValue(null);\n if (result) {\n this._formatInputValue();\n }\n return;\n }\n }\n\n switch (evt.code) {\n case 'Tab':\n if (this._open) {\n this._selectActiveOption();\n }\n break;\n case 'Esc':\n case 'Escape':\n if (this._open) {\n evt.preventDefault();\n this._closeDropdown(true);\n }\n break;\n case 'Down':\n case 'ArrowDown':\n if (this._allowDropdown) {\n evt.preventDefault();\n if (!this._open) {\n this._openDropdown();\n this._adapter.activateFirstOption();\n // TODO: Should we cycle the hours, minutes, seconds, or meridiem where the cursor is instead of opening the dropdown?\n } else {\n this._adapter.propagateKey(evt.code);\n }\n }\n break;\n case 'Up':\n case 'ArrowUp':\n if (this._allowDropdown) {\n evt.preventDefault();\n if (this._open) {\n this._adapter.propagateKey(evt.code);\n } else {\n // TODO: cycle the hours, minutes, seconds, or meridiem where the cursor is\n }\n }\n break;\n case 'Enter':\n case 'Home':\n case 'End':\n if (this._open) {\n if (evt.code === 'Enter') {\n evt.stopPropagation();\n }\n evt.preventDefault();\n this._adapter.propagateKey(evt.code);\n }\n break;\n case 'KeyN':\n evt.preventDefault();\n const nowMillis = getCurrentTimeOfDayMillis(this._allowSeconds);\n if (this._value !== nowMillis) {\n const timeString = millisToTimeString(nowMillis, true, this._allowSeconds);\n const canContinue = this._emitChangeEvent(timeString);\n if (canContinue) {\n this._applyValue(nowMillis);\n this._selectInputText();\n }\n }\n break;\n }\n }\n\n private _selectActiveOption(): void {\n const activeOption = this._adapter.getActiveOption();\n if (activeOption) {\n this._onSelect(activeOption.value);\n }\n }\n\n private _onToggleMousedown(evt: Event): void {\n if (this._disabled || !this.allowDropdown) {\n return;\n }\n\n evt.stopPropagation();\n\n if (this._adapter.isInputDisabled()) {\n return;\n }\n\n evt.preventDefault();\n\n if (this._open) {\n this._closeDropdown(true);\n } else {\n if (!Platform.isMobile) {\n this._adapter.tryFocusInput();\n } else {\n this._adapter.tryBlurInput();\n }\n this._openDropdown();\n }\n }\n\n private _onInputFocus(evt: Event): void {\n if (this._allowInput) {\n this._adapter.selectInputText();\n }\n }\n\n private _onInputBlur(evt: Event): void {\n this._formatInputValue();\n if (this._open && !this._adapter.isInputFocused()) {\n this._closeDropdown(true);\n }\n }\n\n private _onInputMousedown(evt: MouseEvent): void {\n if (!this._allowInput && !this._open) {\n this._openDropdown();\n this._adapter.tryFocusInput();\n window.requestAnimationFrame(() => this._adapter.selectInputText());\n }\n }\n\n private _applyDisabled(): void {\n this._adapter.setDisabled(this._disabled);\n }\n\n private _applyMask(): void {\n if (this._masked && this._allowInput) {\n const options: ITimeInputMaskOptions = {\n showMaskFormat: this._showMaskFormat,\n use24HourTime: this._use24HourTime,\n showSeconds: this._allowSeconds,\n prepareCallback: this._prepareMaskCallback,\n onChange: debounce((value: string) => this._handleInput(value), 0, true) // debounce this to avoid multiple callbacks for same value\n };\n this._adapter.initializeMask(options);\n } else {\n this._adapter.destroyMask();\n this._formatInputValue();\n }\n }\n\n private _applyAllowInput(): void {\n this._adapter.setInputReadonly(!this._allowInput);\n if (this._allowInput) {\n this._adapter.removeInputListener('mousedown', this._inputMousedownListener);\n // If not using an input mask we need to attach our own `input` listener, otherwise\n // we use the mask to notify us of changes\n if (!this._masked) {\n this._adapter.addInputListener('input', this._inputListener);\n }\n } else {\n this._adapter.addInputListener('mousedown', this._inputMousedownListener);\n this._adapter.removeInputListener('input', this._inputListener);\n }\n }\n\n private _applyAllowDropdown(): void {\n this._adapter.setToggleDisabled(!this._allowDropdown);\n if (this._allowDropdown) {\n this._adapter.removeToggleListener('mousedown', this._toggleMousedownListener);\n this._adapter.tryCreateToggle();\n this._adapter.addToggleListener('mousedown', this._toggleMousedownListener);\n } else if (this._open) {\n this._closeDropdown(true);\n }\n }\n\n private _applyAllowSeconds(): void {\n const originalValue = this._value;\n if (!this._allowSeconds) {\n // If we are not using seconds, we need to remove our seconds from the value\n if (typeof this._value !== 'number') {\n return;\n }\n\n this._setValue(stripSecondsFromMillis(this._value));\n\n if (this._isInitialized && originalValue !== this._value) {\n // We need to emit a change event with our new value which does not include the seconds\n const timeString = millisToTimeString(this._value, true, false);\n this._emitChangeEvent(timeString);\n }\n } else if (this._isInitialized && originalValue !== this._value) {\n // We need to emit a change event with our new value which includes the seconds\n const timeString = millisToTimeString(this._value, true, true);\n this._emitChangeEvent(timeString);\n }\n }\n\n private _handleInput(value: string): void {\n const rawValue = value;\n\n if (!this._allowInput) {\n return;\n }\n\n if (this._open) {\n this._closeDropdown(true);\n }\n\n // Let's attempt to coerce our time string into a known format to help with ease of entry\n value = tryCoerceTimeString(value, this._use24HourTime, this._allowSeconds);\n\n // If we were provided a custom coercion callback then we need to call that now to perform any further coercion by the consumer\n if (typeof this._coercionCallback === 'function') {\n value = this._coercionCallback.call(null, rawValue, value, this._allowSeconds);\n }\n\n // Validate the time format and make sure it's supported\n if (!this._isValidTimeFormat(value)) {\n value = '';\n }\n\n // Convert the time string to milliseconds\n let millis: number | null;\n if (!this._masked && typeof this._parseCallback === 'function') {\n millis = this._parseCallback.call(null, value);\n } else {\n millis = this._convertTimeStringToMillis(value, this._use24HourTime, this._allowSeconds);\n }\n\n // Validate that our time can be chosen as a valid value\n millis = this._validateMillis(millis);\n\n // Update our value\n this._trySetValue(millis);\n }\n\n private _emitChangeEvent(value: string | null, force = false): boolean {\n return this._adapter.emitHostEvent(TIME_PICKER_CONSTANTS.events.CHANGE, value, true, !force);\n }\n\n private _trySetValue(millis: number | null): boolean {\n // If our value hasn't changed, we can just return\n if (millis === this._value) {\n return false;\n }\n\n // Convert our milliseconds to a 24-hour time string to use as our normalized value\n const timeString = millisToTimeString(millis, true, this._allowSeconds);\n\n // If we are using an input mask, we need to dispatch our custom input event to let consumers know input happened (before our change event)\n if (this._masked) {\n this._adapter.emitInputEvent(TIME_PICKER_CONSTANTS.events.INPUT, timeString);\n }\n\n // Only emit our change event if the value is different\n if (this._value !== millis) {\n const canContinue = this._emitChangeEvent(timeString);\n if (canContinue) {\n this._setValue(millis);\n return true;\n }\n }\n\n return false;\n }\n\n private _setValue(value: number | null): void {\n this._value = this._normalizeTimeValue(value);\n }\n\n private _validateMillis(millis: number | null): number | null {\n // Trap for min/max validation\n if (typeof millis === 'number') {\n const isBelowMin = typeof this._min === 'number' && millis < this._min;\n const isAboveMax = typeof this._max === 'number' && millis > this._max;\n if (isBelowMin || isAboveMax) {\n millis = null;\n }\n }\n \n // Trap for restricted times\n if (typeof millis === 'number' && this._restrictedTimes.length) {\n if (this._restrictedTimes.includes(millis)) {\n millis = null;\n }\n }\n\n return millis;\n }\n\n private _isValidTimeFormat(value: string): boolean {\n if (!this._masked && typeof this._validationCallback === 'function') {\n return this._validationCallback.call(this, value);\n }\n return isSupportedTimeFormat(value);\n }\n\n private _isValidInputValue(value: string): boolean {\n return TWENTY_FOUR_HOUR_TIME_REGEX.test(value);\n }\n\n private _onSelect(value: ITimePickerOptionValue): void {\n this._closeDropdown(true);\n\n // Check if the \"Now\" option was selected\n if (!value.isCustom && value.metadata === 'now') {\n value.time = getCurrentTimeOfDayMillis(this._allowSeconds);\n }\n\n // Check if this is a custom option, and then call the provided callback for it\n if (value.isCustom) {\n if (typeof value.customCallback === 'function') {\n const result = value.customCallback.call(null, value.metadata);\n if (typeof result !== 'number') {\n throw new Error('Custom options must provide a time of day value in milliseconds.');\n }\n value.time = result;\n } else {\n throw new Error('You must implement a `toMilliseconds` callback that returns the time value to use for this custom option.');\n }\n }\n\n // Make sure the time is different than what is already populated or we can just return\n if (this._value === value.time) {\n return;\n }\n\n // Emit the change event\n const timeString = millisToTimeString(value.time, true, this._allowSeconds);\n const canContinue = this._emitChangeEvent(timeString);\n if (!canContinue) {\n return;\n }\n\n // This will update our state and the UI at once\n this._applyValue(value.time);\n\n // Select full input text\n this._selectInputText();\n }\n\n private _selectInputText(): void {\n // We need to select the text of the input in the next cycle to allow time for the UI to update\n // with the selected text (assuming it still has focus)\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n if (this._adapter.isInputFocused()) {\n this._adapter.selectInputText();\n }\n });\n });\n }\n\n private _applyValue(value: number | null, emitEvents = true): void {\n this._setValue(value);\n const formattedValue = this._formatValue(this._value);\n if (this._adapter.getInputValue() !== formattedValue) {\n this._adapter.setInputValue(formattedValue, emitEvents);\n }\n }\n\n private _normalizeTimeValue(value: number | null): number | null {\n if (value === null || value === undefined) {\n return null;\n } else if (value < 0) {\n return 0;\n } else if (value > TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MILLIS) {\n return TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MILLIS;\n }\n return value;\n }\n\n private _openDropdown(): void {\n const options = this._generateTimeOptions();\n\n if (!this.allowDropdown || !options.length) {\n return;\n }\n \n this._formatInputValue();\n this._open = true;\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.OPEN);\n \n const selectableOptions = options.filter(o => !o.divider && !o.disabled);\n let selectedValues: ITimePickerOptionValue[] = [];\n let activeStartIndex: number | undefined;\n \n // Find closest match in list of time options and activate/select it\n if (options.length) {\n if (this._value !== null) {\n const optionIndex = this._findClosestOptionIndex(this._value, selectableOptions);\n if (optionIndex >= 0) {\n const isExactMatch = selectableOptions[optionIndex].value.time === this._value;\n if (isExactMatch) {\n selectedValues = [selectableOptions[optionIndex].value];\n } else {\n activeStartIndex = optionIndex;\n }\n }\n } else if (typeof this._startTime === 'number') {\n const optionIndex = this._findClosestOptionIndex(this._startTime, selectableOptions);\n if (optionIndex >= 0 && optionIndex < selectableOptions.length) {\n activeStartIndex = optionIndex;\n }\n }\n }\n\n const config: IListDropdownConfig<ITimePickerOptionValue> = {\n id: `forge-time-picker-${this._identifier}`,\n selectedValues,\n syncWidth: true,\n activeStartIndex,\n popupClasses: this._popupClasses,\n popupStatic: true,\n type: ListDropdownType.Standard,\n options,\n selectCallback: value => this._onSelect(value),\n closeCallback: () => this._closeDropdown(true),\n activeChangeCallback: id => this._adapter.setActiveDescendant(id),\n targetWidthCallback: () => this._adapter.getTargetElementWidth(this._popupTarget)\n };\n this._adapter.attachDropdown(config);\n this._adapter.emitHostEvent(TIME_PICKER_CONSTANTS.events.OPEN, undefined, false);\n }\n\n private _closeDropdown(emitCloseEvent = false): void {\n this._open = false;\n this._adapter.removeHostAttribute(TIME_PICKER_CONSTANTS.attributes.OPEN);\n this._adapter.detachDropdown();\n if (emitCloseEvent) {\n this._adapter.emitHostEvent(TIME_PICKER_CONSTANTS.events.CLOSE, true, false);\n }\n }\n\n private _findClosestOptionIndex(value: number, options: Array<IListDropdownOption<ITimePickerOptionValue>>): number {\n const closestItem = options.reduce((prev, curr) => {\n return Math.abs((curr.value.time || 0) - value) < Math.abs((prev.value.time || 0) - value) ? curr : prev;\n });\n return options.indexOf(closestItem);\n }\n\n private _formatInputValue(emitEvents = true): void {\n const inputValue = this._adapter.getInputValue();\n \n // If we allow invalid times, we can leave the input value as-is (only when unmasked)\n if (this._allowInvalidTime && !this._masked && inputValue && !this._value) {\n return;\n }\n\n const formattedValue = this._formatValue(this._value);\n \n if (inputValue !== formattedValue) {\n this._adapter.setInputValue(formattedValue, emitEvents);\n }\n }\n\n private _generateTimeOptions(): Array<IListDropdownOption<ITimePickerOptionValue>> {\n const minMinutes = this._min !== null ? Math.max(millisToMinutes(this._min), 0) : 0;\n const maxMinutes = this._max !== null ? Math.min(millisToMinutes(this._max), TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) : TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES;\n const minuteStep = this._step;\n const times: IListDropdownOption[] = [];\n let leadingOptions: IListDropdownOption[] = [];\n \n if (this._showHourOptions) {\n for (let totalMinutes = minMinutes; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {\n if (totalMinutes === TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) {\n break;\n }\n const millis = minutesToMillis(totalMinutes);\n const disabled = this._restrictedTimes.includes(millis);\n const label = millisToTimeString(millis, this._use24HourTime, false) || '';\n const value: ITimePickerOptionValue = { time: millis };\n times.push({ label, value, disabled });\n }\n\n // Add divider between AM/PM times\n const firstPmIndex = times.findIndex(t => t.value.time / 1000 / 60 >= 720);\n if (firstPmIndex >= 0 && firstPmIndex < times.length - 1) {\n times.splice(firstPmIndex, 0, { label: '', value: null, divider: true });\n }\n }\n\n\n // Check if we need to prepend a \"Now\" option\n if (this._showNow) {\n const value: ITimePickerOptionValue = { time: null, metadata: 'now' };\n leadingOptions.push({ label: 'Now', value });\n }\n\n // Check for any custom provided options to prepend\n if (Array.isArray(this._customOptions) && this._customOptions.length) {\n const options = this._customOptions.map(o => {\n const value: ITimePickerOptionValue = { time: null, metadata: o.value, isCustom: true, customCallback: o.toMilliseconds };\n return { label: o.label, value };\n });\n leadingOptions = [...leadingOptions, ...options];\n }\n\n // Append all leading options\n if (leadingOptions.length) {\n if (times.length) {\n times.splice(0, 0, { label: '', value: null, divider: true });\n }\n leadingOptions.forEach((o, index) => times.splice(index, 0, o));\n }\n\n return times;\n }\n\n private _convertTimeStringToMillis(value: string | null, use24HourTime: boolean, allowSeconds: boolean): number | null {\n if (!value || !this._isValidTimeFormat(value)) {\n value = '';\n }\n return timeStringToMillis(value, use24HourTime, allowSeconds);\n }\n\n private _formatValue(value: number | null): string {\n if (!this._masked && typeof this._formatCallback === 'function') {\n return this._formatCallback.call(null, value, this._use24HourTime, this._allowSeconds);\n }\n return millisToTimeString(this._value, this._use24HourTime, this._allowSeconds) || '';\n }\n\n private _warnInvalidFormat(value: string): void {\n console.warn(`The specified value \"${value}\" does not conform to the required format. The format is \"HH:mm\", \"HH:mm:ss\" where HH is 00-23, mm is 00-59, and ss is 00-59.`);\n }\n\n public get open(): boolean {\n return this._open;\n }\n public set open(value: boolean) {\n if (this._open !== value) {\n if (this._isInitialized) {\n this._open = value;\n if (this._open) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n }\n }\n }\n\n public get masked(): boolean {\n return this._masked;\n }\n public set masked(value: boolean) {\n if (this._masked !== value) {\n this._masked = value;\n if (this._isInitialized) {\n if (this._masked) {\n this._adapter.removeInputListener('input', this._inputListener);\n this._applyMask();\n } else {\n this._adapter.destroyMask();\n this._formatInputValue();\n this._adapter.addInputListener('input', this._inputListener);\n }\n }\n }\n }\n\n public get showMaskFormat(): boolean {\n return this._showMaskFormat;\n }\n public set showMaskFormat(value: boolean) {\n if (this._showMaskFormat !== value) {\n this._showMaskFormat = value;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n }\n\n public get allowSeconds(): boolean {\n return this._allowSeconds;\n }\n public set allowSeconds(value: boolean) {\n if (this._allowSeconds !== value) {\n this._allowSeconds = !!value;\n this._applyAllowSeconds();\n if (this._isInitialized) {\n this._applyMask();\n this._formatInputValue();\n }\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.ALLOW_SECONDS, `${!!value}`);\n }\n }\n\n public get use24HourTime(): boolean {\n return this._use24HourTime;\n }\n public set use24HourTime(value: boolean) {\n if (this._use24HourTime !== value) {\n this._use24HourTime = !!value;\n if (this._isInitialized) {\n this._adapter.destroyMask();\n this._formatInputValue();\n this._applyMask();\n }\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME, `${!!value}`);\n }\n }\n\n public get allowInvalidTime(): boolean {\n return this._allowInvalidTime;\n }\n public set allowInvalidTime(value: boolean) {\n if (this._allowInvalidTime !== value) {\n this._allowInvalidTime = !!value;\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.ALLOW_INVALID_TIME, `${!!value}`);\n }\n }\n\n public get value(): string | null {\n return millisToTimeString(this._value, true, this._allowSeconds);\n }\n public set value(value: string | null) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n const millis = this._validateMillis(this._convertTimeStringToMillis(value, true, true));\n this._setValue(millis);\n if (this._isInitialized) {\n this._applyValue(this._value);\n }\n }\n\n public get min(): string | null {\n return millisToTimeString(this._min, true, this._allowSeconds);\n }\n public set min(value: string | null) {\n if (this._min !== value) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n this._min = this._convertTimeStringToMillis(value, true, this._allowSeconds);\n\n // Validate and reset our millis to ensure within range\n const millis = this._validateMillis(this._value);\n this._setValue(millis);\n\n if (this._isInitialized) {\n this._applyValue(millis);\n }\n }\n }\n\n public get max(): string | null {\n return millisToTimeString(this._max, true, this._allowSeconds);\n }\n public set max(value: string | null) {\n if (this._max !== value) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n this._max = this._convertTimeStringToMillis(value, true, this._allowSeconds);\n \n // Validate and reset our millis to ensure within range\n const millis = this._validateMillis(this._value);\n this._setValue(millis);\n\n if (this._isInitialized) {\n this._applyValue(millis);\n }\n }\n }\n\n public get restrictedTimes(): string[] {\n return this._restrictedTimes\n .map(t => millisToTimeString(t, true, this._allowSeconds))\n .filter(v => typeof v === 'string') as string[];\n }\n public set restrictedTimes(value: string[]) {\n if (!Array.isArray(value)) {\n value = [];\n }\n this._restrictedTimes = value\n .filter(v => typeof v === 'string')\n .map(v => this._convertTimeStringToMillis(v, true, true))\n .filter(v => typeof v === 'number') as number[];\n }\n\n public get startTime(): string | null {\n return millisToTimeString(this._startTime, true, this._allowSeconds);\n }\n public set startTime(value: string | null) {\n if (this._startTime !== value) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n this._startTime = this._convertTimeStringToMillis(value, true, this._allowSeconds);\n }\n }\n\n public get step(): number {\n return this._step;\n }\n public set step(value: number) {\n this._step = value;\n }\n\n public get allowInput(): boolean {\n return this._allowInput;\n }\n public set allowInput(value: boolean) {\n if (this._allowInput !== value) {\n this._allowInput = value;\n if (this._isInitialized) {\n this._applyAllowInput();\n this._applyMask();\n }\n }\n }\n\n public get popupTarget(): string {\n return this._popupTarget;\n }\n public set popupTarget(value: string) {\n if (this._popupTarget !== value) {\n this._popupTarget = value;\n }\n }\n\n public get showNow(): boolean {\n return this._showNow;\n }\n public set showNow(value: boolean) {\n if (this._showNow !== value) {\n this._showNow = value;\n }\n }\n\n public get showHourOptions(): boolean {\n return this._showHourOptions;\n }\n public set showHourOptions(value: boolean) {\n if (this._showHourOptions !== value) {\n this._showHourOptions = value;\n }\n }\n\n public get customOptions(): ITimePickerOption[] {\n return this._customOptions;\n }\n public set customOptions(value: ITimePickerOption[]) {\n this._customOptions = Array.isArray(value) ? value : [];\n }\n\n public set validationCallback(cb: TimePickerValidationCallback) {\n this._validationCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n\n public set parseCallback(cb: TimePickerParseCallback) {\n this._parseCallback = cb;\n }\n\n public set formatCallback(cb: TimePickerFormatCallback) {\n this._formatCallback = cb;\n }\n\n public set coercionCallback(cb: TimePickerCoercionCallback) {\n this._coercionCallback = cb;\n }\n\n public set prepareMaskCallback(cb: TimePickerPrepareMaskCallback) {\n this._prepareMaskCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = !!value;\n if (this._isInitialized) {\n this._applyDisabled();\n }\n this._adapter.toggleHostAttribute(TIME_PICKER_CONSTANTS.attributes.DISABLED, this._disabled);\n }\n }\n\n public get popupClasses(): string | string[] {\n if (Array.isArray(this._popupClasses)) {\n return [...this._popupClasses];\n }\n\n return this._popupClasses;\n }\n public set popupClasses(value: string | string[]) {\n if (Array.isArray(value)) {\n this._popupClasses = [...value];\n } else {\n this._popupClasses = [value];\n }\n }\n\n public get allowDropdown(): boolean {\n return this._allowDropdown;\n }\n public set allowDropdown(value: boolean) {\n if (this._allowDropdown !== value) {\n this._allowDropdown = value;\n if (this._isInitialized) {\n this._applyAllowDropdown();\n }\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean, coerceNumber, ensureChild } from '@tylertech/forge-core';\nimport { tylIconClockOutline } from '@tylertech/tyler-icons/extended';\nimport { tylIconClose } from '@tylertech/tyler-icons/standard';\nimport { TimePickerAdapter } from './time-picker-adapter';\nimport { TimePickerFoundation } from './time-picker-foundation';\nimport {\n TIME_PICKER_CONSTANTS,\n ITimePickerOption,\n TimePickerParseCallback,\n TimePickerValidationCallback,\n TimePickerFormatCallback,\n TimePickerCoercionCallback,\n TimePickerPrepareMaskCallback\n} from './time-picker-constants';\nimport { IconRegistry, IconComponent } from '../icon';\nimport { IconButtonComponent } from '../icon-button';\nimport { PopupComponent } from '../popup';\nimport { DialogComponent } from '../dialog';\nimport { ListComponent, ListItemComponent } from '../list';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><slot></slot></template>';\nconst styles = ':host{display:block}:host([hidden]){display:none}';\n\nexport interface ITimePickerComponent extends IBaseComponent {\n value: string | null;\n open: boolean;\n allowSeconds: boolean;\n masked: boolean;\n showMaskFormat: boolean;\n use24HourTime: boolean;\n allowInvalidTime: boolean;\n min: string | null;\n max: string | null;\n restrictedTimes: string[];\n startTime: string | null;\n step: number;\n allowInput: boolean;\n showNow: boolean;\n showHourOptions: boolean;\n customOptions: ITimePickerOption[];\n validationCallback: TimePickerValidationCallback;\n parseCallback: TimePickerParseCallback;\n formatCallback: TimePickerFormatCallback;\n coercionCallback: TimePickerCoercionCallback;\n prepareMaskCallback: TimePickerPrepareMaskCallback;\n disabled: boolean;\n popupClasses: string | string[];\n allowDropdown: boolean;\n popupTarget: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-time-picker': ITimePickerComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-time-picker-open': CustomEvent<void>;\n 'forge-time-picker-close': CustomEvent<void>;\n 'forge-time-picker-input': Event;\n 'forge-time-picker-change': CustomEvent<string | null>;\n }\n}\n\n/**\n * The web component class behind the `<forge-time-picker>` custom element.\n * \n * @tag forge-time-picker\n */\n@CustomElement({\n name: TIME_PICKER_CONSTANTS.elementName,\n dependencies: [\n ListComponent,\n ListItemComponent,\n IconButtonComponent,\n IconComponent,\n PopupComponent,\n IconComponent,\n DialogComponent\n ]\n})\nexport class TimePickerComponent extends BaseComponent implements ITimePickerComponent {\n public static get observedAttributes(): string[] {\n return [\n TIME_PICKER_CONSTANTS.attributes.VALUE,\n TIME_PICKER_CONSTANTS.attributes.OPEN,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_SECONDS,\n TIME_PICKER_CONSTANTS.attributes.MASKED,\n TIME_PICKER_CONSTANTS.attributes.SHOW_MASK_FORMAT,\n TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_INVALID_TIME,\n TIME_PICKER_CONSTANTS.attributes.MIN,\n TIME_PICKER_CONSTANTS.attributes.MAX,\n TIME_PICKER_CONSTANTS.attributes.START_TIME,\n TIME_PICKER_CONSTANTS.attributes.STEP,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_INPUT,\n TIME_PICKER_CONSTANTS.attributes.SHOW_NOW,\n TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS,\n TIME_PICKER_CONSTANTS.attributes.DISABLED,\n TIME_PICKER_CONSTANTS.attributes.POPUP_CLASSES,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_DROPDOWN\n ];\n }\n\n private _foundation: TimePickerFoundation;\n\n constructor() {\n super();\n IconRegistry.define([tylIconClockOutline, tylIconClose]);\n attachShadowTemplate(this, template, styles);\n this._foundation = new TimePickerFoundation(new TimePickerAdapter(this));\n }\n\n public connectedCallback(): void {\n if (this.querySelector(TIME_PICKER_CONSTANTS.selectors.INPUT)) {\n this._foundation.initialize();\n } else {\n ensureChild(this, TIME_PICKER_CONSTANTS.selectors.INPUT).then(() => this._foundation.initialize());\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 TIME_PICKER_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.OPEN:\n this.open = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_SECONDS:\n this.allowSeconds = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.MASKED:\n this.masked = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.SHOW_MASK_FORMAT:\n this.showMaskFormat = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME:\n this.use24HourTime = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_INVALID_TIME:\n this.allowInvalidTime = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.SHOW_NOW:\n this.showNow = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS:\n this.showHourOptions = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.MIN:\n this.min = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.MAX:\n this.max = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.START_TIME:\n this.startTime = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.STEP:\n this.step = coerceNumber(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_INPUT:\n this.allowInput = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.POPUP_CLASSES:\n this.popupClasses = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_DROPDOWN:\n this.allowDropdown = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public value: string | null;\n\n @FoundationProperty()\n public open: boolean;\n\n @FoundationProperty()\n public allowSeconds: boolean;\n\n @FoundationProperty()\n public masked: boolean;\n\n @FoundationProperty()\n public showMaskFormat: boolean;\n\n @FoundationProperty()\n public use24HourTime: boolean;\n\n @FoundationProperty()\n public allowInvalidTime: boolean;\n\n @FoundationProperty()\n public min: string | null;\n\n @FoundationProperty()\n public max: string | null;\n\n @FoundationProperty()\n public restrictedTimes: string[];\n\n @FoundationProperty()\n public startTime: string | null;\n\n @FoundationProperty()\n public step: number;\n\n @FoundationProperty()\n public allowInput: boolean;\n\n @FoundationProperty()\n public showNow: boolean;\n\n /** Whether or not to display hour options in dropdown */\n @FoundationProperty()\n public showHourOptions: boolean;\n\n @FoundationProperty()\n public customOptions: ITimePickerOption[];\n\n @FoundationProperty()\n public validationCallback: TimePickerValidationCallback;\n \n @FoundationProperty()\n public parseCallback: TimePickerParseCallback;\n\n @FoundationProperty()\n public formatCallback: TimePickerFormatCallback;\n\n @FoundationProperty()\n public coercionCallback: TimePickerCoercionCallback;\n\n @FoundationProperty()\n public prepareMaskCallback: TimePickerPrepareMaskCallback;\n\n @FoundationProperty()\n public disabled: boolean;\n\n @FoundationProperty()\n public popupClasses: string | string[];\n\n @FoundationProperty()\n public allowDropdown: boolean;\n\n @FoundationProperty()\n public popupTarget: string;\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { ITextFieldComponent, ITextFieldComponentDelegateConfig, TextFieldComponentDelegate } from '../text-field';\nimport { ITimePickerComponent } from './time-picker';\nimport { TIME_PICKER_CONSTANTS } from './time-picker-constants';\n\nexport type TimePickerComponentDelegateProps = Partial<ITimePickerComponent>;\nexport interface ITimePickerComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n textFieldDelegateConfig?: ITextFieldComponentDelegateConfig;\n}\nexport interface ITimePickerComponentDelegateConfig extends IBaseComponentDelegateConfig<ITimePickerComponent, ITimePickerComponentDelegateOptions> {}\n\nexport class TimePickerComponentDelegate extends FormFieldComponentDelegate<ITimePickerComponent, ITimePickerComponentDelegateOptions> {\n private _textFieldDelegate: TextFieldComponentDelegate;\n\n constructor(config?: ITimePickerComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): ITimePickerComponent {\n const timePicker = document.createElement(TIME_PICKER_CONSTANTS.elementName);\n this._attachTextField(timePicker);\n return timePicker;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._textFieldDelegate.inputElement;\n }\n\n public get textFieldElement(): ITextFieldComponent {\n return this._textFieldDelegate.element;\n }\n\n public get value(): any {\n return this._element.value;\n }\n public set value(value: any) {\n this._element.value = value;\n }\n\n public get disabled(): boolean {\n return this._element.disabled;\n }\n public set disabled(value: boolean) {\n this._element.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._textFieldDelegate.invalid || false;\n }\n public set invalid(value: boolean) {\n this._textFieldDelegate.invalid = value;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._element.addEventListener(TIME_PICKER_CONSTANTS.events.CHANGE, (evt: CustomEvent<string>) => listener(evt.detail ?? ''));\n }\n\n public onInput(listener: (value: string) => void): void {\n if (this._element.masked) {\n this._element.addEventListener(TIME_PICKER_CONSTANTS.events.INPUT, (evt: CustomEvent<string>) => listener(evt.detail ?? ''));\n } else {\n this._textFieldDelegate.inputElement.addEventListener('input', evt => listener((evt.target as HTMLInputElement).value));\n }\n }\n\n public onFocus(listener: (evt: FocusEvent) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('focus', (evt: FocusEvent) => listener(evt));\n }\n\n public onBlur(listener: (evt: FocusEvent) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('blur', (evt: FocusEvent) => listener(evt));\n }\n\n private _attachTextField(component: ITimePickerComponent): void {\n const textFieldConfig: ITextFieldComponentDelegateConfig = {\n props: { ...this._config.options?.textFieldDelegateConfig?.props },\n options: { ...this._config.options?.textFieldDelegateConfig?.options }\n };\n this._textFieldDelegate = new TextFieldComponentDelegate(textFieldConfig);\n component.appendChild(this._textFieldDelegate.element);\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { TimePickerComponent } from './time-picker';\n\nexport * from './time-picker-adapter';\nexport * from './time-picker-component-delegate';\nexport * from './time-picker-constants';\nexport * from './time-picker-foundation';\nexport * from './time-picker-utils';\nexport * from './time-picker';\n\nexport function defineTimePickerComponent(): void {\n defineCustomElement(TimePickerComponent);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk.WNVZQDNS.js";
17
17
  import {
18
18
  ButtonComponent
19
- } from "./chunk.QYWAZCBX.js";
19
+ } from "./chunk.CTMCTMRO.js";
20
20
  import {
21
21
  BaseAdapter
22
22
  } from "./chunk.KZATVOA6.js";
@@ -558,4 +558,4 @@ export {
558
558
  BusyIndicatorComponent,
559
559
  defineBusyIndicatorComponent
560
560
  };
561
- //# sourceMappingURL=chunk.U5ECVIX5.js.map
561
+ //# sourceMappingURL=chunk.D3MXPNTL.js.map
@@ -5,23 +5,23 @@
5
5
  */
6
6
  import {
7
7
  SelectComponent
8
- } from "./chunk.MBZLA635.js";
8
+ } from "./chunk.ZIZGRSAX.js";
9
9
  import {
10
10
  IconButtonComponent
11
- } from "./chunk.EBC2HGO3.js";
11
+ } from "./chunk.UAW46BWM.js";
12
12
  import {
13
13
  tylIconFirstPage,
14
14
  tylIconKeyboardArrowLeft,
15
15
  tylIconKeyboardArrowRight,
16
16
  tylIconLastPage
17
- } from "./chunk.GS2AXUCN.js";
17
+ } from "./chunk.WOL4KRZK.js";
18
18
  import {
19
19
  TooltipComponent
20
20
  } from "./chunk.OXS2O7RG.js";
21
21
  import {
22
22
  IconComponent,
23
23
  IconRegistry
24
- } from "./chunk.WSH4S3GM.js";
24
+ } from "./chunk.GVR5LXMJ.js";
25
25
  import {
26
26
  BaseAdapter
27
27
  } from "./chunk.KZATVOA6.js";
@@ -725,4 +725,4 @@ export {
725
725
  PaginatorComponent,
726
726
  definePaginatorComponent
727
727
  };
728
- //# sourceMappingURL=chunk.HAWYW54W.js.map
728
+ //# sourceMappingURL=chunk.D45QN7JA.js.map
@@ -7,7 +7,7 @@ import {
7
7
  CHIP_CONSTANTS,
8
8
  CHIP_SET_CONSTANTS,
9
9
  ChipComponent
10
- } from "./chunk.LHWZ4KZU.js";
10
+ } from "./chunk.HL2ORG3A.js";
11
11
  import {
12
12
  BaseAdapter
13
13
  } from "./chunk.KZATVOA6.js";
@@ -197,4 +197,4 @@ export {
197
197
  ChipSetComponent,
198
198
  defineChipSetComponent
199
199
  };
200
- //# sourceMappingURL=chunk.2WBHHTUM.js.map
200
+ //# sourceMappingURL=chunk.EFQZGAM5.js.map
@@ -7,7 +7,7 @@ import {
7
7
  BaseDrawerAdapter,
8
8
  BaseDrawerComponent,
9
9
  BaseDrawerFoundation
10
- } from "./chunk.GOWHXADJ.js";
10
+ } from "./chunk.X3TV6IHS.js";
11
11
  import {
12
12
  COMPONENT_NAME_PREFIX,
13
13
  CustomElement
@@ -52,4 +52,4 @@ export {
52
52
  DrawerComponent,
53
53
  defineDrawerComponent
54
54
  };
55
- //# sourceMappingURL=chunk.L344BPCW.js.map
55
+ //# sourceMappingURL=chunk.F5O63UF4.js.map