@tylertech/forge 2.16.6 → 3.0.0-next.10

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 (734) hide show
  1. package/custom-elements.json +17659 -12326
  2. package/dist/button/forge-button.css +1 -1
  3. package/dist/esm/accordion/index.js +1 -1
  4. package/dist/esm/app-bar/help-button/index.js +1 -1
  5. package/dist/esm/app-bar/index.js +1 -1
  6. package/dist/esm/app-bar/menu-button/index.js +1 -1
  7. package/dist/esm/app-bar/notification-button/index.js +1 -1
  8. package/dist/esm/app-bar/profile-button/index.js +1 -1
  9. package/dist/esm/app-bar/search/index.js +1 -1
  10. package/dist/esm/autocomplete/index.js +1 -1
  11. package/dist/esm/avatar/index.js +1 -1
  12. package/dist/esm/backdrop/index.js +1 -1
  13. package/dist/esm/badge/index.js +1 -1
  14. package/dist/esm/banner/index.js +1 -1
  15. package/dist/esm/bottom-sheet/index.js +1 -1
  16. package/dist/esm/busy-indicator/index.js +1 -1
  17. package/dist/esm/button/index.js +1 -1
  18. package/dist/esm/button-toggle/button-toggle/index.js +1 -1
  19. package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
  20. package/dist/esm/button-toggle/index.js +1 -1
  21. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  22. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  23. package/dist/esm/calendar/core/index.js +1 -1
  24. package/dist/esm/calendar/index.js +1 -1
  25. package/dist/esm/card/index.js +1 -1
  26. package/dist/esm/checkbox/index.js +1 -1
  27. package/dist/esm/chip-field/index.js +1 -1
  28. package/dist/esm/chips/chip/index.js +1 -1
  29. package/dist/esm/chips/chip-set/index.js +1 -1
  30. package/dist/esm/chips/index.js +1 -1
  31. package/dist/esm/chunks/chunk.2O6IZ7XZ.js +7 -0
  32. package/dist/esm/chunks/chunk.2O6IZ7XZ.js.map +7 -0
  33. package/dist/esm/chunks/{chunk.3YT72ZWJ.js → chunk.2QSDH3PC.js} +2 -2
  34. package/dist/esm/chunks/{chunk.3YT72ZWJ.js.map → chunk.2QSDH3PC.js.map} +1 -1
  35. package/dist/esm/chunks/{chunk.FOLQAW63.js → chunk.2TQONIPK.js} +2 -2
  36. package/dist/esm/chunks/{chunk.FOLQAW63.js.map → chunk.2TQONIPK.js.map} +1 -1
  37. package/dist/esm/chunks/chunk.2VP57RZO.js +7 -0
  38. package/dist/esm/chunks/chunk.2VP57RZO.js.map +7 -0
  39. package/dist/esm/chunks/{chunk.3FAYFYXF.js → chunk.2ZTERGYF.js} +2 -2
  40. package/dist/esm/chunks/{chunk.3FAYFYXF.js.map → chunk.2ZTERGYF.js.map} +1 -1
  41. package/dist/esm/chunks/chunk.33EJTOVA.js +7 -0
  42. package/dist/esm/chunks/chunk.33EJTOVA.js.map +7 -0
  43. package/dist/esm/chunks/{chunk.BJZ7RB5F.js → chunk.3CTKWBV2.js} +1 -1
  44. package/dist/esm/chunks/{chunk.BJZ7RB5F.js.map → chunk.3CTKWBV2.js.map} +1 -1
  45. package/dist/esm/chunks/chunk.3JDFBEF7.js +7 -0
  46. package/dist/esm/chunks/chunk.44IUAOBP.js +7 -0
  47. package/dist/esm/chunks/{chunk.YPZNIYQL.js.map → chunk.44IUAOBP.js.map} +2 -2
  48. package/dist/esm/chunks/chunk.44UCSD46.js +7 -0
  49. package/dist/esm/chunks/{chunk.CN4XKIQI.js.map → chunk.44UCSD46.js.map} +3 -3
  50. package/dist/esm/chunks/chunk.46VQ2S2Z.js +7 -0
  51. package/dist/esm/chunks/{chunk.UVW3YDEX.js.map → chunk.46VQ2S2Z.js.map} +2 -2
  52. package/dist/esm/chunks/{chunk.P4Z7NC6O.js → chunk.4WB3FGEL.js} +2 -2
  53. package/dist/esm/chunks/{chunk.P4Z7NC6O.js.map → chunk.4WB3FGEL.js.map} +1 -1
  54. package/dist/esm/chunks/chunk.4WVHON6T.js +129 -0
  55. package/dist/esm/chunks/chunk.4WVHON6T.js.map +7 -0
  56. package/dist/esm/chunks/{chunk.76PI42C5.js → chunk.57IVD67K.js} +2 -2
  57. package/dist/esm/chunks/{chunk.76PI42C5.js.map → chunk.57IVD67K.js.map} +1 -1
  58. package/dist/esm/chunks/{chunk.RUK5PIER.js → chunk.5CMQ7DNL.js} +2 -2
  59. package/dist/esm/chunks/{chunk.SATUJNQX.js → chunk.5IQGVS6U.js} +2 -2
  60. package/dist/esm/chunks/{chunk.SATUJNQX.js.map → chunk.5IQGVS6U.js.map} +2 -2
  61. package/dist/esm/chunks/chunk.5M6Y2RU6.js +7 -0
  62. package/dist/esm/chunks/{chunk.KII37K76.js.map → chunk.5M6Y2RU6.js.map} +1 -1
  63. package/dist/esm/chunks/chunk.5V5ABSHI.js +7 -0
  64. package/dist/esm/chunks/{chunk.5KC43VFL.js.map → chunk.5V5ABSHI.js.map} +1 -1
  65. package/dist/esm/chunks/{chunk.D24CE6KE.js → chunk.6MPXRRMB.js} +2 -2
  66. package/dist/esm/chunks/{chunk.D24CE6KE.js.map → chunk.6MPXRRMB.js.map} +1 -1
  67. package/dist/esm/chunks/{chunk.7SULS4D2.js → chunk.6VDF54LZ.js} +2 -2
  68. package/dist/esm/chunks/{chunk.7SULS4D2.js.map → chunk.6VDF54LZ.js.map} +1 -1
  69. package/dist/esm/chunks/chunk.74DEHKGT.js +12 -0
  70. package/dist/esm/chunks/chunk.74DEHKGT.js.map +7 -0
  71. package/dist/esm/chunks/{chunk.NEFQWOLN.js → chunk.7DHFTAWI.js} +2 -2
  72. package/dist/esm/chunks/chunk.7G72CBOJ.js +7 -0
  73. package/dist/esm/chunks/chunk.7G72CBOJ.js.map +7 -0
  74. package/dist/esm/chunks/{chunk.JDLEPQKN.js → chunk.7TGGJGTG.js} +2 -2
  75. package/dist/esm/chunks/{chunk.JDLEPQKN.js.map → chunk.7TGGJGTG.js.map} +2 -2
  76. package/dist/esm/chunks/chunk.7WVTJIVR.js +7 -0
  77. package/dist/esm/chunks/{chunk.FFVZ6JMP.js.map → chunk.7WVTJIVR.js.map} +1 -1
  78. package/dist/esm/chunks/chunk.7ZQMJLHE.js +7 -0
  79. package/dist/esm/chunks/{chunk.274MFEUZ.js → chunk.AHHNJSZK.js} +2 -2
  80. package/dist/esm/chunks/{chunk.274MFEUZ.js.map → chunk.AHHNJSZK.js.map} +1 -1
  81. package/dist/esm/chunks/chunk.BBKRPL6R.js +7 -0
  82. package/dist/esm/chunks/chunk.BBKRPL6R.js.map +7 -0
  83. package/dist/esm/chunks/chunk.BIFQ4VOJ.js +7 -0
  84. package/dist/esm/chunks/chunk.BIFQ4VOJ.js.map +7 -0
  85. package/dist/esm/chunks/chunk.BNFJRFLW.js +7 -0
  86. package/dist/esm/chunks/chunk.BNFJRFLW.js.map +7 -0
  87. package/dist/esm/chunks/{chunk.4LA6HEA7.js → chunk.CFDK4RCW.js} +2 -2
  88. package/dist/esm/chunks/{chunk.4LA6HEA7.js.map → chunk.CFDK4RCW.js.map} +3 -3
  89. package/dist/esm/chunks/chunk.CRWP7H46.js +7 -0
  90. package/dist/esm/chunks/chunk.CRWP7H46.js.map +7 -0
  91. package/dist/esm/chunks/{chunk.PW7IGEHF.js → chunk.D2Y2CRRY.js} +2 -2
  92. package/dist/esm/chunks/{chunk.PW7IGEHF.js.map → chunk.D2Y2CRRY.js.map} +2 -2
  93. package/dist/esm/chunks/{chunk.U6WGJELL.js → chunk.DMCBAYQX.js} +1 -1
  94. package/dist/esm/chunks/{chunk.U6WGJELL.js.map → chunk.DMCBAYQX.js.map} +1 -1
  95. package/dist/esm/chunks/{chunk.QOA2O575.js → chunk.DTZFWZPB.js} +2 -2
  96. package/dist/esm/chunks/{chunk.QOA2O575.js.map → chunk.DTZFWZPB.js.map} +1 -1
  97. package/dist/esm/chunks/chunk.DXZ5LVFJ.js +7 -0
  98. package/dist/esm/chunks/chunk.DXZ5LVFJ.js.map +7 -0
  99. package/dist/esm/chunks/chunk.E6KWYFZG.js +7 -0
  100. package/dist/esm/chunks/{chunk.YMBLWKRP.js.map → chunk.E6KWYFZG.js.map} +1 -1
  101. package/dist/esm/chunks/{chunk.NLXSZNQI.js → chunk.E7Z3IRWV.js} +2 -2
  102. package/dist/esm/chunks/{chunk.USXO7YKN.js → chunk.ECRL6O3V.js} +2 -2
  103. package/dist/esm/chunks/{chunk.USXO7YKN.js.map → chunk.ECRL6O3V.js.map} +1 -1
  104. package/dist/esm/chunks/{chunk.4R6NK524.js → chunk.EDEYCLDU.js} +2 -2
  105. package/dist/esm/chunks/chunk.EYZ25QUP.js +7 -0
  106. package/dist/esm/chunks/chunk.EYZ25QUP.js.map +7 -0
  107. package/dist/esm/chunks/chunk.F776DWXU.js +7 -0
  108. package/dist/esm/chunks/chunk.F776DWXU.js.map +7 -0
  109. package/dist/esm/chunks/{chunk.3KQL7VAZ.js → chunk.FDZSLGIW.js} +2 -2
  110. package/dist/esm/chunks/{chunk.3KQL7VAZ.js.map → chunk.FDZSLGIW.js.map} +1 -1
  111. package/dist/esm/chunks/chunk.FIBGOPNP.js +7 -0
  112. package/dist/esm/chunks/chunk.FIBGOPNP.js.map +7 -0
  113. package/dist/esm/chunks/chunk.FUPNTFG7.js +7 -0
  114. package/dist/esm/chunks/chunk.FUPNTFG7.js.map +7 -0
  115. package/dist/esm/chunks/{chunk.MZLPUI6R.js → chunk.FYWPZFLJ.js} +2 -2
  116. package/dist/esm/chunks/{chunk.MZLPUI6R.js.map → chunk.FYWPZFLJ.js.map} +2 -2
  117. package/dist/esm/chunks/{chunk.2KXSGD3S.js → chunk.G4IN6Y46.js} +2 -2
  118. package/dist/esm/chunks/chunk.GT3XBPZY.js +7 -0
  119. package/dist/esm/chunks/chunk.GT3XBPZY.js.map +7 -0
  120. package/dist/esm/chunks/chunk.H5D54EHO.js +7 -0
  121. package/dist/esm/chunks/{chunk.S2YVOMLW.js.map → chunk.H5D54EHO.js.map} +1 -1
  122. package/dist/esm/chunks/{chunk.AVKCWA7I.js → chunk.HRGTAVNA.js} +2 -2
  123. package/dist/esm/chunks/{chunk.AVKCWA7I.js.map → chunk.HRGTAVNA.js.map} +1 -1
  124. package/dist/esm/chunks/chunk.HXJCTE47.js +7 -0
  125. package/dist/esm/chunks/{chunk.K7HRCGML.js → chunk.IDD54B5P.js} +2 -2
  126. package/dist/esm/chunks/chunk.ISC7SZSP.js +7 -0
  127. package/dist/esm/chunks/chunk.ISC7SZSP.js.map +7 -0
  128. package/dist/esm/chunks/{chunk.A4UN74PV.js → chunk.IWA3CYIB.js} +2 -2
  129. package/dist/esm/chunks/{chunk.A4UN74PV.js.map → chunk.IWA3CYIB.js.map} +1 -1
  130. package/dist/esm/chunks/{chunk.SAQSXX2T.js → chunk.J3UFSHDY.js} +2 -2
  131. package/dist/esm/chunks/{chunk.SAQSXX2T.js.map → chunk.J3UFSHDY.js.map} +2 -2
  132. package/dist/esm/chunks/chunk.JL4XB4RI.js +7 -0
  133. package/dist/esm/chunks/chunk.JL4XB4RI.js.map +7 -0
  134. package/dist/esm/chunks/chunk.JTIPXKV6.js +7 -0
  135. package/dist/esm/chunks/{chunk.G4DG233F.js.map → chunk.JTIPXKV6.js.map} +2 -2
  136. package/dist/esm/chunks/chunk.KSCUIS5C.js +7 -0
  137. package/dist/esm/chunks/chunk.KSCUIS5C.js.map +7 -0
  138. package/dist/esm/chunks/chunk.L3M6DPQB.js +12 -0
  139. package/dist/esm/chunks/chunk.L3M6DPQB.js.map +7 -0
  140. package/dist/esm/chunks/{chunk.4DAIIJ37.js → chunk.LEVFMI2Q.js} +1 -1
  141. package/dist/esm/chunks/{chunk.4DAIIJ37.js.map → chunk.LEVFMI2Q.js.map} +1 -1
  142. package/dist/esm/chunks/chunk.LHBF47UY.js +7 -0
  143. package/dist/esm/chunks/chunk.LHBF47UY.js.map +7 -0
  144. package/dist/esm/chunks/chunk.LM57DOG3.js +7 -0
  145. package/dist/esm/chunks/chunk.LM57DOG3.js.map +7 -0
  146. package/dist/esm/chunks/chunk.LYYWQGS6.js +7 -0
  147. package/dist/esm/chunks/chunk.LYYWQGS6.js.map +7 -0
  148. package/dist/esm/chunks/chunk.M2M47T4L.js +7 -0
  149. package/dist/esm/chunks/chunk.M2M47T4L.js.map +7 -0
  150. package/dist/esm/chunks/chunk.M3QDAYD2.js +7 -0
  151. package/dist/esm/chunks/chunk.MF36FG2X.js +7 -0
  152. package/dist/esm/chunks/{chunk.IZSUW7WG.js.map → chunk.MF36FG2X.js.map} +1 -1
  153. package/dist/esm/chunks/chunk.MGLWXAZO.js +18 -0
  154. package/dist/esm/chunks/{chunk.YI4JTY4T.js.map → chunk.MGLWXAZO.js.map} +2 -2
  155. package/dist/esm/chunks/{chunk.YJTE34LC.js → chunk.MGWY7YIL.js} +2 -2
  156. package/dist/esm/chunks/{chunk.YJTE34LC.js.map → chunk.MGWY7YIL.js.map} +2 -2
  157. package/dist/esm/chunks/{chunk.PADHAJLS.js → chunk.MJSLXZBM.js} +2 -2
  158. package/dist/esm/chunks/{chunk.PADHAJLS.js.map → chunk.MJSLXZBM.js.map} +2 -2
  159. package/dist/esm/chunks/{chunk.Q5YD3PKM.js → chunk.N7PQ2MUQ.js} +2 -2
  160. package/dist/esm/chunks/{chunk.Q5YD3PKM.js.map → chunk.N7PQ2MUQ.js.map} +2 -2
  161. package/dist/esm/chunks/chunk.NF4J3Q5X.js +7 -0
  162. package/dist/esm/chunks/chunk.NF4J3Q5X.js.map +7 -0
  163. package/dist/esm/chunks/chunk.NK7H3MMM.js +7 -0
  164. package/dist/esm/chunks/{chunk.HOXFK44F.js.map → chunk.NK7H3MMM.js.map} +3 -3
  165. package/dist/esm/chunks/{chunk.KTGSZEAG.js → chunk.NVUMRW44.js} +1 -1
  166. package/dist/esm/chunks/{chunk.KTGSZEAG.js.map → chunk.NVUMRW44.js.map} +1 -1
  167. package/dist/esm/chunks/{chunk.AMWDVFAU.js → chunk.OAHA3QOH.js} +2 -2
  168. package/dist/esm/chunks/{chunk.VUOTKGLB.js → chunk.OTD2SFQJ.js} +2 -2
  169. package/dist/esm/chunks/{chunk.VUOTKGLB.js.map → chunk.OTD2SFQJ.js.map} +1 -1
  170. package/dist/esm/chunks/{chunk.UW2HWAVL.js → chunk.P5QIB6OY.js} +2 -2
  171. package/dist/esm/chunks/{chunk.UW2HWAVL.js.map → chunk.P5QIB6OY.js.map} +1 -1
  172. package/dist/esm/chunks/{chunk.F5CFD2NG.js → chunk.PHBOQRF6.js} +2 -2
  173. package/dist/esm/chunks/{chunk.F5CFD2NG.js.map → chunk.PHBOQRF6.js.map} +1 -1
  174. package/dist/esm/chunks/{chunk.NMKDIHFB.js → chunk.PHTOULRR.js} +2 -2
  175. package/dist/esm/chunks/chunk.QI3GKORL.js +7 -0
  176. package/dist/esm/chunks/chunk.QI3GKORL.js.map +7 -0
  177. package/dist/esm/chunks/{chunk.6TTAKWXI.js → chunk.QL45FKVJ.js} +2 -2
  178. package/dist/esm/chunks/{chunk.6TTAKWXI.js.map → chunk.QL45FKVJ.js.map} +2 -2
  179. package/dist/esm/chunks/chunk.QLJBPFP5.js +7 -0
  180. package/dist/esm/chunks/chunk.QLJBPFP5.js.map +7 -0
  181. package/dist/esm/chunks/{chunk.XQ5CDWDY.js → chunk.QZK3WEH6.js} +2 -2
  182. package/dist/esm/chunks/chunk.RFLASSCI.js +7 -0
  183. package/dist/esm/chunks/{chunk.BESB4RGK.js.map → chunk.RFLASSCI.js.map} +1 -1
  184. package/dist/esm/chunks/{chunk.H3IPTBWM.js → chunk.RGPNNISQ.js} +2 -2
  185. package/dist/esm/chunks/{chunk.H3IPTBWM.js.map → chunk.RGPNNISQ.js.map} +1 -1
  186. package/dist/esm/chunks/chunk.SAXRW6GB.js +7 -0
  187. package/dist/esm/chunks/chunk.SAXRW6GB.js.map +7 -0
  188. package/dist/esm/chunks/chunk.SEP3L4QL.js +7 -0
  189. package/dist/esm/chunks/{chunk.T6NVM7TN.js.map → chunk.SEP3L4QL.js.map} +2 -2
  190. package/dist/esm/chunks/chunk.SN5LPTHH.js +7 -0
  191. package/dist/esm/chunks/chunk.SN5LPTHH.js.map +7 -0
  192. package/dist/esm/chunks/chunk.SQVBT7HU.js +7 -0
  193. package/dist/esm/chunks/{chunk.XMAKEISF.js.map → chunk.SQVBT7HU.js.map} +3 -3
  194. package/dist/esm/chunks/chunk.SZIM4KFZ.js +7 -0
  195. package/dist/esm/chunks/chunk.SZIM4KFZ.js.map +7 -0
  196. package/dist/esm/chunks/chunk.T5X6UNH7.js +7 -0
  197. package/dist/esm/chunks/{chunk.6CO3CIUY.js.map → chunk.T5X6UNH7.js.map} +1 -1
  198. package/dist/esm/chunks/{chunk.ZCQO3N25.js → chunk.TL6WVBGT.js} +2 -2
  199. package/dist/esm/chunks/{chunk.ZCQO3N25.js.map → chunk.TL6WVBGT.js.map} +1 -1
  200. package/dist/esm/chunks/chunk.TT2VTZJ6.js +7 -0
  201. package/dist/esm/chunks/chunk.TT2VTZJ6.js.map +7 -0
  202. package/dist/esm/chunks/{chunk.VTB27IL7.js → chunk.U4GYQOPY.js} +2 -2
  203. package/dist/esm/chunks/{chunk.ON2K3O3I.js → chunk.UCM6CGFM.js} +2 -2
  204. package/dist/esm/chunks/{chunk.ON2K3O3I.js.map → chunk.UCM6CGFM.js.map} +1 -1
  205. package/dist/esm/chunks/chunk.UKFJHDO7.js +7 -0
  206. package/dist/esm/chunks/{chunk.BKAZC53W.js.map → chunk.UKFJHDO7.js.map} +2 -2
  207. package/dist/esm/chunks/{chunk.DONAMICM.js → chunk.UV3WIHCM.js} +1 -1
  208. package/dist/esm/chunks/{chunk.DONAMICM.js.map → chunk.UV3WIHCM.js.map} +1 -1
  209. package/dist/esm/chunks/chunk.VNOJO2PF.js +7 -0
  210. package/dist/esm/chunks/{chunk.SQTM36C3.js.map → chunk.VNOJO2PF.js.map} +1 -1
  211. package/dist/esm/chunks/{chunk.EMV7JGHB.js → chunk.WBYXVMYI.js} +2 -2
  212. package/dist/esm/chunks/{chunk.EMV7JGHB.js.map → chunk.WBYXVMYI.js.map} +1 -1
  213. package/dist/esm/chunks/chunk.WH6C36MO.js +7 -0
  214. package/dist/esm/chunks/chunk.WH6C36MO.js.map +7 -0
  215. package/dist/esm/chunks/{chunk.3IXTRC6Z.js → chunk.WO7KEM5K.js} +2 -2
  216. package/dist/esm/chunks/{chunk.M6PJ3PNN.js → chunk.WYP2M5FR.js} +2 -2
  217. package/dist/esm/chunks/chunk.X3YNJSDT.js +7 -0
  218. package/dist/esm/chunks/{chunk.73GVVX4K.js.map → chunk.X3YNJSDT.js.map} +1 -1
  219. package/dist/esm/chunks/chunk.XATLSSAW.js +7 -0
  220. package/dist/esm/chunks/{chunk.D5OLAPHE.js.map → chunk.XATLSSAW.js.map} +2 -2
  221. package/dist/esm/chunks/chunk.XIQFHO5R.js +7 -0
  222. package/dist/esm/chunks/{chunk.FVRSGKJD.js.map → chunk.XIQFHO5R.js.map} +2 -2
  223. package/dist/esm/chunks/{chunk.QAWXAPHR.js → chunk.XOM2FYQ2.js} +2 -2
  224. package/dist/esm/chunks/{chunk.NX4EECNP.js → chunk.XRESQBNE.js} +2 -2
  225. package/dist/esm/chunks/{chunk.7K44O5RO.js → chunk.Y5UJ23LB.js} +2 -2
  226. package/dist/esm/chunks/chunk.YDY2IGBF.js +7 -0
  227. package/dist/esm/chunks/chunk.YDY2IGBF.js.map +7 -0
  228. package/dist/esm/chunks/{chunk.GQCUI7YS.js → chunk.YQXX5KSW.js} +2 -2
  229. package/dist/esm/chunks/{chunk.GQCUI7YS.js.map → chunk.YQXX5KSW.js.map} +1 -1
  230. package/dist/esm/chunks/chunk.YWCLKUK7.js +7 -0
  231. package/dist/esm/chunks/chunk.YWCLKUK7.js.map +7 -0
  232. package/dist/esm/chunks/chunk.YZLASVCK.js +177 -0
  233. package/dist/esm/chunks/chunk.YZLASVCK.js.map +7 -0
  234. package/dist/esm/chunks/chunk.Z4J4D5FD.js +7 -0
  235. package/dist/esm/chunks/{chunk.MSFGXRCM.js.map → chunk.Z4J4D5FD.js.map} +2 -2
  236. package/dist/esm/chunks/chunk.ZAJB7G4V.js +7 -0
  237. package/dist/esm/chunks/{chunk.MWHVRJW5.js.map → chunk.ZAJB7G4V.js.map} +1 -1
  238. package/dist/esm/chunks/chunk.ZDAXNM2P.js +7 -0
  239. package/dist/esm/chunks/{chunk.EAGRODVX.js.map → chunk.ZDAXNM2P.js.map} +2 -2
  240. package/dist/esm/chunks/chunk.ZMRDW25U.js +7 -0
  241. package/dist/esm/circular-progress/index.js +1 -1
  242. package/dist/esm/color-picker/index.js +1 -1
  243. package/dist/esm/core/base/index.js +1 -1
  244. package/dist/esm/core/delegates/index.js +1 -1
  245. package/dist/esm/core/index.js +1 -1
  246. package/dist/esm/core/mask/index.js +1 -1
  247. package/dist/esm/core/utils/index.js +1 -1
  248. package/dist/esm/date-picker/index.js +1 -1
  249. package/dist/esm/date-range-picker/index.js +1 -1
  250. package/dist/esm/dialog/index.js +1 -1
  251. package/dist/esm/divider/index.js +1 -1
  252. package/dist/esm/drawer/base/index.js +1 -1
  253. package/dist/esm/drawer/drawer/index.js +1 -1
  254. package/dist/esm/drawer/index.js +1 -1
  255. package/dist/esm/drawer/mini-drawer/index.js +1 -1
  256. package/dist/esm/drawer/modal-drawer/index.js +1 -1
  257. package/dist/esm/expansion-panel/index.js +1 -1
  258. package/dist/esm/file-picker/index.js +1 -1
  259. package/dist/esm/floating-action-button/index.js +1 -1
  260. package/dist/esm/floating-label/index.js +1 -1
  261. package/dist/esm/focus-indicator/index.js +7 -0
  262. package/dist/esm/focus-indicator/index.js.map +7 -0
  263. package/dist/esm/icon/index.js +1 -1
  264. package/dist/esm/icon-button/index.js +1 -1
  265. package/dist/esm/index.js +1 -1
  266. package/dist/esm/inline-message/index.js +1 -1
  267. package/dist/esm/keyboard-shortcut/index.js +1 -1
  268. package/dist/esm/label-value/index.js +1 -1
  269. package/dist/esm/linear-progress/index.js +1 -1
  270. package/dist/esm/list/index.js +1 -1
  271. package/dist/esm/list/list/index.js +1 -1
  272. package/dist/esm/list/list-item/index.js +1 -1
  273. package/dist/esm/list-dropdown/index.js +1 -1
  274. package/dist/esm/menu/index.js +1 -1
  275. package/dist/esm/open-icon/index.js +1 -1
  276. package/dist/esm/page-state/index.js +1 -1
  277. package/dist/esm/paginator/index.js +1 -1
  278. package/dist/esm/popup/index.js +1 -1
  279. package/dist/esm/product-icon/index.js +1 -1
  280. package/dist/esm/profile-card/index.js +1 -1
  281. package/dist/esm/quantity-field/index.js +1 -1
  282. package/dist/esm/radio/index.js +1 -1
  283. package/dist/esm/ripple/index.js +1 -1
  284. package/dist/esm/scaffold/index.js +1 -1
  285. package/dist/esm/select/core/index.js +1 -1
  286. package/dist/esm/select/index.js +1 -1
  287. package/dist/esm/select/option/index.js +1 -1
  288. package/dist/esm/select/option-group/index.js +1 -1
  289. package/dist/esm/select/select/index.js +1 -1
  290. package/dist/esm/select/select-dropdown/index.js +1 -1
  291. package/dist/esm/skeleton/index.js +1 -1
  292. package/dist/esm/slider/index.js +1 -1
  293. package/dist/esm/split-view/index.js +1 -1
  294. package/dist/esm/split-view/split-view/index.js +1 -1
  295. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  296. package/dist/esm/stack/index.js +1 -1
  297. package/dist/esm/state-layer/index.js +7 -0
  298. package/dist/esm/state-layer/index.js.map +7 -0
  299. package/dist/esm/stepper/index.js +1 -1
  300. package/dist/esm/stepper/step/index.js +1 -1
  301. package/dist/esm/stepper/stepper/index.js +1 -1
  302. package/dist/esm/switch/index.js +1 -1
  303. package/dist/esm/table/index.js +1 -1
  304. package/dist/esm/tabs/index.js +1 -1
  305. package/dist/esm/tabs/tab/index.js +1 -1
  306. package/dist/esm/tabs/tab-bar/index.js +1 -1
  307. package/dist/esm/text-field/index.js +1 -1
  308. package/dist/esm/theme/index.js +1 -1
  309. package/dist/esm/time-picker/index.js +1 -1
  310. package/dist/esm/toast/index.js +1 -1
  311. package/dist/esm/toolbar/index.js +1 -1
  312. package/dist/esm/tooltip/index.js +1 -1
  313. package/dist/esm/utils/index.js +1 -1
  314. package/dist/esm/view-switcher/index.js +1 -1
  315. package/dist/esm/view-switcher/view/index.js +1 -1
  316. package/dist/forge-dark.css +1 -1
  317. package/dist/forge.css +1 -1
  318. package/dist/icon-button/forge-icon-button.css +1 -1
  319. package/dist/table/forge-table.css +1 -1
  320. package/dist/theme/forge-theme.css +1 -1
  321. package/esm/accordion/accordion.js +4 -4
  322. package/esm/app-bar/app-bar.js +6 -6
  323. package/esm/app-bar/notification-button/app-bar-notification-button.js +5 -5
  324. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +1 -1
  325. package/esm/app-bar/profile-button/app-bar-profile-button-constants.d.ts +1 -1
  326. package/esm/app-bar/profile-button/app-bar-profile-button.js +4 -4
  327. package/esm/app-bar/search/app-bar-search.js +6 -6
  328. package/esm/autocomplete/autocomplete-adapter.js +1 -1
  329. package/esm/autocomplete/autocomplete-component-delegate.d.ts +1 -1
  330. package/esm/autocomplete/autocomplete-constants.d.ts +4 -4
  331. package/esm/autocomplete/autocomplete.js +6 -6
  332. package/esm/avatar/avatar-component-delegate.d.ts +1 -1
  333. package/esm/avatar/avatar.js +5 -5
  334. package/esm/backdrop/backdrop-constants.d.ts +1 -1
  335. package/esm/backdrop/backdrop.js +5 -5
  336. package/esm/badge/badge-component-delegate.d.ts +1 -1
  337. package/esm/badge/badge.js +5 -5
  338. package/esm/banner/banner.js +7 -7
  339. package/esm/bottom-sheet/bottom-sheet.js +6 -6
  340. package/esm/busy-indicator/busy-indicator-adapter.js +1 -1
  341. package/esm/busy-indicator/busy-indicator-constants.d.ts +1 -1
  342. package/esm/busy-indicator/busy-indicator.js +6 -6
  343. package/esm/button/button-component-delegate.d.ts +1 -1
  344. package/esm/button/button.d.ts +1 -0
  345. package/esm/button/button.js +11 -5
  346. package/esm/button-toggle/button-toggle/button-toggle.js +7 -7
  347. package/esm/button-toggle/button-toggle-group/button-toggle-group-constants.d.ts +2 -2
  348. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +5 -5
  349. package/esm/calendar/calendar-component-delegate.d.ts +1 -1
  350. package/esm/calendar/calendar-constants.d.ts +10 -10
  351. package/esm/calendar/calendar-dropdown/calendar-dropdown.d.ts +0 -3
  352. package/esm/calendar/calendar-dropdown/calendar-dropdown.js +4 -13
  353. package/esm/calendar/calendar-menu/calendar-menu-constants.d.ts +2 -2
  354. package/esm/calendar/calendar-menu/calendar-menu.js +6 -6
  355. package/esm/calendar/calendar.js +7 -7
  356. package/esm/card/card-constants.d.ts +2 -2
  357. package/esm/card/card-constants.js +2 -2
  358. package/esm/card/card.d.ts +19 -8
  359. package/esm/card/card.js +34 -25
  360. package/esm/checkbox/checkbox-adapter.d.ts +1 -0
  361. package/esm/checkbox/checkbox-adapter.js +9 -2
  362. package/esm/checkbox/checkbox-component-delegate.d.ts +1 -1
  363. package/esm/checkbox/checkbox.js +4 -4
  364. package/esm/chip-field/chip-field-component-delegate.d.ts +1 -1
  365. package/esm/chip-field/chip-field-foundation.js +1 -1
  366. package/esm/chip-field/chip-field.js +1 -1
  367. package/esm/chips/chip/chip-adapter.js +2 -2
  368. package/esm/chips/chip/chip.js +7 -7
  369. package/esm/chips/chip-set/chip-set.js +5 -5
  370. package/esm/circular-progress/circular-progress-adapter.d.ts +7 -14
  371. package/esm/circular-progress/circular-progress-adapter.js +25 -25
  372. package/esm/circular-progress/circular-progress-constants.d.ts +6 -2
  373. package/esm/circular-progress/circular-progress-constants.js +8 -3
  374. package/esm/circular-progress/circular-progress-foundation.d.ts +0 -8
  375. package/esm/circular-progress/circular-progress-foundation.js +9 -27
  376. package/esm/circular-progress/circular-progress.d.ts +24 -5
  377. package/esm/circular-progress/circular-progress.js +33 -21
  378. package/esm/color-picker/color-picker-constants.d.ts +2 -2
  379. package/esm/color-picker/color-picker-foundation.d.ts +1 -0
  380. package/esm/color-picker/color-picker-foundation.js +5 -2
  381. package/esm/color-picker/color-picker.js +7 -7
  382. package/esm/core/base/base-component.d.ts +1 -2
  383. package/esm/core/delegates/base-component-delegate.d.ts +1 -1
  384. package/esm/core/delegates/base-component-delegate.js +3 -3
  385. package/esm/core/delegates/form-field-component-delegate.d.ts +1 -1
  386. package/esm/core/mask/time-segment-parser.d.ts +1 -1
  387. package/esm/core/testing/pointer.d.ts +13 -0
  388. package/esm/core/testing/pointer.js +42 -0
  389. package/esm/core/utils/utils.d.ts +33 -2
  390. package/esm/core/utils/utils.js +74 -6
  391. package/esm/date-picker/base/base-date-picker-adapter.d.ts +0 -2
  392. package/esm/date-picker/base/base-date-picker-adapter.js +0 -6
  393. package/esm/date-picker/base/base-date-picker-constants.d.ts +0 -1
  394. package/esm/date-picker/base/base-date-picker-constants.js +1 -2
  395. package/esm/date-picker/base/base-date-picker-foundation.d.ts +0 -4
  396. package/esm/date-picker/base/base-date-picker-foundation.js +1 -13
  397. package/esm/date-picker/base/base-date-picker.d.ts +0 -3
  398. package/esm/date-picker/base/base-date-picker.js +0 -6
  399. package/esm/date-picker/date-picker-adapter.js +1 -1
  400. package/esm/date-picker/date-picker-component-delegate.d.ts +1 -1
  401. package/esm/date-range-picker/date-range-picker-adapter.js +1 -1
  402. package/esm/date-range-picker/date-range-picker-component-delegate.d.ts +1 -1
  403. package/esm/dialog/dialog-adapter.d.ts +5 -5
  404. package/esm/dialog/dialog-adapter.js +31 -32
  405. package/esm/dialog/dialog-constants.d.ts +2 -2
  406. package/esm/dialog/dialog-foundation.d.ts +4 -2
  407. package/esm/dialog/dialog-foundation.js +62 -54
  408. package/esm/dialog/dialog.d.ts +4 -0
  409. package/esm/dialog/dialog.js +12 -6
  410. package/esm/drawer/base/base-drawer-constants.d.ts +1 -1
  411. package/esm/expansion-panel/expansion-panel.js +5 -5
  412. package/esm/field/field-adapter.js +1 -1
  413. package/esm/field/field-constants.d.ts +3 -3
  414. package/esm/field/field-foundation.js +0 -5
  415. package/esm/field/field.js +3 -3
  416. package/esm/file-picker/file-picker-component-delegate.d.ts +1 -1
  417. package/esm/file-picker/file-picker.js +6 -6
  418. package/esm/floating-action-button/floating-action-button-component-delegate.d.ts +1 -1
  419. package/esm/floating-action-button/floating-action-button.js +6 -6
  420. package/esm/focus-indicator/focus-indicator-adapter.d.ts +29 -0
  421. package/esm/focus-indicator/focus-indicator-adapter.js +39 -0
  422. package/esm/focus-indicator/focus-indicator-constants.d.ts +15 -0
  423. package/esm/focus-indicator/focus-indicator-constants.js +19 -0
  424. package/esm/focus-indicator/focus-indicator-foundation.d.ts +43 -0
  425. package/esm/focus-indicator/focus-indicator-foundation.js +110 -0
  426. package/esm/focus-indicator/focus-indicator.d.ts +67 -0
  427. package/esm/focus-indicator/focus-indicator.js +112 -0
  428. package/esm/focus-indicator/index.d.ts +10 -0
  429. package/esm/focus-indicator/index.js +14 -0
  430. package/esm/icon/icon.js +5 -5
  431. package/esm/icon-button/icon-button-component-delegate.d.ts +1 -1
  432. package/esm/icon-button/icon-button.d.ts +1 -0
  433. package/esm/icon-button/icon-button.js +16 -9
  434. package/esm/index.d.ts +2 -0
  435. package/esm/index.js +6 -0
  436. package/esm/keyboard-shortcut/keyboard-shortcut.js +4 -4
  437. package/esm/label-value/label-value-component-delegate.d.ts +1 -1
  438. package/esm/label-value/label-value-constants.d.ts +1 -1
  439. package/esm/label-value/label-value.js +5 -5
  440. package/esm/linear-progress/linear-progress-adapter.d.ts +23 -0
  441. package/esm/linear-progress/linear-progress-adapter.js +34 -0
  442. package/esm/linear-progress/linear-progress-constants.d.ts +6 -2
  443. package/esm/linear-progress/linear-progress-constants.js +8 -3
  444. package/esm/linear-progress/linear-progress-foundation.d.ts +26 -0
  445. package/esm/linear-progress/linear-progress-foundation.js +53 -0
  446. package/esm/linear-progress/linear-progress.d.ts +32 -25
  447. package/esm/linear-progress/linear-progress.js +49 -107
  448. package/esm/list/list/list-adapter.js +2 -2
  449. package/esm/list/list/list.js +5 -5
  450. package/esm/list/list-item/list-item-adapter.d.ts +3 -3
  451. package/esm/list/list-item/list-item-adapter.js +2 -2
  452. package/esm/list/list-item/list-item-foundation.d.ts +1 -0
  453. package/esm/list/list-item/list-item-foundation.js +8 -1
  454. package/esm/list/list-item/list-item.js +6 -6
  455. package/esm/list-dropdown/list-dropdown-adapter.js +3 -4
  456. package/esm/list-dropdown/list-dropdown-constants.d.ts +6 -6
  457. package/esm/menu/menu-constants.d.ts +3 -3
  458. package/esm/menu/menu.js +6 -6
  459. package/esm/open-icon/open-icon.js +6 -6
  460. package/esm/paginator/paginator-constants.d.ts +1 -1
  461. package/esm/paginator/paginator.js +12 -12
  462. package/esm/popup/popup-adapter.js +2 -2
  463. package/esm/popup/popup-constants.d.ts +2 -2
  464. package/esm/popup/popup.js +5 -5
  465. package/esm/product-icon/product-icon.js +5 -5
  466. package/esm/profile-card/profile-card.js +6 -6
  467. package/esm/quantity-field/quantity-field-component-delegate.d.ts +1 -1
  468. package/esm/quantity-field/quantity-field.js +6 -6
  469. package/esm/radio/radio-adapter.d.ts +1 -0
  470. package/esm/radio/radio-adapter.js +10 -4
  471. package/esm/radio/radio.js +5 -5
  472. package/esm/ripple/forge-ripple.d.ts +2 -0
  473. package/esm/ripple/forge-ripple.js +4 -0
  474. package/esm/ripple/ripple.js +4 -4
  475. package/esm/select/core/base-select-constants.d.ts +4 -4
  476. package/esm/select/option/option.js +4 -4
  477. package/esm/select/option-group/option-group.js +3 -3
  478. package/esm/select/select/select-adapter.d.ts +1 -1
  479. package/esm/select/select/select.js +1 -1
  480. package/esm/select/select-component-delegate.d.ts +1 -1
  481. package/esm/slider/slider-adapter.d.ts +79 -0
  482. package/esm/slider/slider-adapter.js +178 -0
  483. package/esm/slider/slider-component-delegate.d.ts +19 -3
  484. package/esm/slider/slider-component-delegate.js +48 -0
  485. package/esm/slider/slider-constants.d.ts +55 -19
  486. package/esm/slider/slider-constants.js +56 -14
  487. package/esm/slider/slider-foundation.d.ts +94 -0
  488. package/esm/slider/slider-foundation.js +313 -0
  489. package/esm/slider/slider-utils.d.ts +9 -0
  490. package/esm/slider/slider-utils.js +56 -0
  491. package/esm/slider/slider.d.ts +134 -66
  492. package/esm/slider/slider.js +240 -249
  493. package/esm/split-view/split-view/split-view-constants.d.ts +1 -1
  494. package/esm/split-view/split-view/split-view.js +5 -5
  495. package/esm/split-view/split-view-panel/split-view-panel-constants.d.ts +2 -2
  496. package/esm/split-view/split-view-panel/split-view-panel-foundation.js +18 -18
  497. package/esm/split-view/split-view-panel/split-view-panel.js +7 -7
  498. package/esm/stack/stack-constants.d.ts +1 -1
  499. package/esm/stack/stack.js +5 -5
  500. package/esm/state-layer/index.d.ts +10 -0
  501. package/esm/state-layer/index.js +14 -0
  502. package/esm/state-layer/state-layer-adapter.d.ts +41 -0
  503. package/esm/state-layer/state-layer-adapter.js +101 -0
  504. package/esm/state-layer/state-layer-constants.d.ts +79 -0
  505. package/esm/state-layer/state-layer-constants.js +89 -0
  506. package/esm/state-layer/state-layer-foundation.d.ts +57 -0
  507. package/esm/state-layer/state-layer-foundation.js +237 -0
  508. package/esm/state-layer/state-layer-utils.d.ts +26 -0
  509. package/esm/state-layer/state-layer-utils.js +54 -0
  510. package/esm/state-layer/state-layer.d.ts +66 -0
  511. package/esm/state-layer/state-layer.js +96 -0
  512. package/esm/stepper/core/stepper-utils.js +1 -2
  513. package/esm/stepper/step/step-constants.d.ts +1 -1
  514. package/esm/stepper/step/step.js +13 -13
  515. package/esm/stepper/stepper/stepper-adapter.js +1 -1
  516. package/esm/stepper/stepper/stepper-constants.d.ts +2 -2
  517. package/esm/stepper/stepper/stepper-foundation.js +0 -1
  518. package/esm/stepper/stepper/stepper.js +5 -5
  519. package/esm/switch/switch-component-delegate.d.ts +1 -1
  520. package/esm/switch/switch-constants.d.ts +1 -1
  521. package/esm/switch/switch.js +19 -12
  522. package/esm/table/table.js +5 -5
  523. package/esm/table/types.d.ts +4 -4
  524. package/esm/tabs/tab/tab-adapter.d.ts +14 -40
  525. package/esm/tabs/tab/tab-adapter.js +57 -79
  526. package/esm/tabs/tab/tab-constants.d.ts +13 -14
  527. package/esm/tabs/tab/tab-constants.js +17 -10
  528. package/esm/tabs/tab/tab-foundation.d.ts +23 -23
  529. package/esm/tabs/tab/tab-foundation.js +66 -62
  530. package/esm/tabs/tab/tab.d.ts +56 -20
  531. package/esm/tabs/tab/tab.js +88 -39
  532. package/esm/tabs/tab-bar/tab-bar-adapter.d.ts +49 -87
  533. package/esm/tabs/tab-bar/tab-bar-adapter.js +114 -188
  534. package/esm/tabs/tab-bar/tab-bar-constants.d.ts +15 -45
  535. package/esm/tabs/tab-bar/tab-bar-constants.js +22 -56
  536. package/esm/tabs/tab-bar/tab-bar-foundation.d.ts +56 -65
  537. package/esm/tabs/tab-bar/tab-bar-foundation.js +241 -302
  538. package/esm/tabs/tab-bar/tab-bar.d.ts +51 -36
  539. package/esm/tabs/tab-bar/tab-bar.js +89 -57
  540. package/esm/text-field/text-field-adapter.js +1 -2
  541. package/esm/text-field/text-field-component-delegate.d.ts +1 -1
  542. package/esm/text-field/text-field.js +1 -1
  543. package/esm/theme/theme-utils.d.ts +2 -2
  544. package/esm/time-picker/time-picker-adapter.js +1 -2
  545. package/esm/time-picker/time-picker-component-delegate.d.ts +1 -1
  546. package/esm/time-picker/time-picker-constants.d.ts +6 -6
  547. package/esm/time-picker/time-picker.js +6 -6
  548. package/esm/toast/toast-constants.d.ts +2 -2
  549. package/esm/toast/toast.js +7 -7
  550. package/esm/toolbar/toolbar.js +5 -5
  551. package/esm/tooltip/tooltip-constants.d.ts +1 -1
  552. package/esm/tooltip/tooltip.js +4 -4
  553. package/esm/view-switcher/view-switcher.js +5 -5
  554. package/package.json +2 -4
  555. package/styles/app-bar/_mixins.scss +8 -1
  556. package/styles/card/_mixins.scss +8 -7
  557. package/styles/chips/chip/_mixins.scss +0 -1
  558. package/styles/circular-progress/_animations.scss +69 -0
  559. package/styles/circular-progress/_configuration.scss +30 -0
  560. package/styles/circular-progress/_core.scss +122 -0
  561. package/styles/circular-progress/circular-progress.scss +92 -3
  562. package/styles/circular-progress/index.scss +8 -0
  563. package/styles/core/styles/core/_config.scss +6 -0
  564. package/styles/core/styles/elevation/index.scss +61 -0
  565. package/styles/core/styles/theme/index.scss +48 -0
  566. package/styles/core/styles/tokens/_color-palette.scss +299 -0
  567. package/styles/core/styles/tokens/_utils.scss +43 -0
  568. package/styles/core/styles/tokens/circular-progress/_tokens.scss +21 -0
  569. package/styles/core/styles/tokens/focus-indicator/_tokens.scss +30 -0
  570. package/styles/core/styles/tokens/index.scss +10 -0
  571. package/styles/core/styles/tokens/linear-progress/_tokens.scss +23 -0
  572. package/styles/core/styles/tokens/slider/_tokens.scss +47 -0
  573. package/styles/core/styles/tokens/state-layer/_tokens.scss +23 -0
  574. package/styles/core/styles/tokens/tabs/tab/_tokens.scss +71 -0
  575. package/styles/core/styles/tokens/tabs/tab-bar/_tokens.scss +19 -0
  576. package/styles/core/styles/tokens/theme/_elevation.scss +105 -0
  577. package/styles/core/styles/tokens/theme/_shape.scss +13 -0
  578. package/styles/core/styles/tokens/theme/_tokens.scss +133 -0
  579. package/styles/core/styles/tokens/typography/_tokens.scss +73 -0
  580. package/styles/focus-indicator/_animations.scss +36 -0
  581. package/styles/focus-indicator/_configuration.scss +23 -0
  582. package/styles/focus-indicator/_core.scss +52 -0
  583. package/styles/focus-indicator/focus-indicator.scss +55 -0
  584. package/styles/focus-indicator/index.scss +8 -0
  585. package/styles/linear-progress/_animations.scss +129 -0
  586. package/styles/linear-progress/_configuration.scss +29 -0
  587. package/styles/linear-progress/_core.scss +99 -0
  588. package/styles/linear-progress/index.scss +8 -0
  589. package/styles/linear-progress/linear-progress.scss +101 -18
  590. package/styles/list/list-item/_mixins.scss +1 -11
  591. package/styles/list/list-item/_variables.scss +0 -9
  592. package/styles/slider/_configuration.scss +60 -0
  593. package/styles/slider/_core.scss +343 -0
  594. package/styles/slider/index.scss +7 -0
  595. package/styles/slider/slider.scss +186 -14
  596. package/styles/state-layer/_configuration.scss +17 -0
  597. package/styles/state-layer/_core.scss +124 -0
  598. package/styles/state-layer/index.scss +7 -0
  599. package/styles/state-layer/state-layer.scss +38 -0
  600. package/styles/tabs/tab/_configuration.scss +64 -0
  601. package/styles/tabs/tab/_core.scss +189 -0
  602. package/styles/tabs/tab/index.scss +7 -0
  603. package/styles/tabs/tab/tab.scss +168 -15
  604. package/styles/tabs/tab-bar/_configuration.scss +13 -0
  605. package/styles/tabs/tab-bar/_core.scss +60 -0
  606. package/styles/tabs/tab-bar/index.scss +7 -0
  607. package/styles/tabs/tab-bar/tab-bar.scss +66 -5
  608. package/styles/theme/_theme-dark.scss +4 -8
  609. package/styles/theme/_theme.scss +3 -36
  610. package/dist/esm/chunks/chunk.2DAPNN6B.js +0 -29
  611. package/dist/esm/chunks/chunk.2DAPNN6B.js.map +0 -7
  612. package/dist/esm/chunks/chunk.2DXG2R3M.js +0 -73
  613. package/dist/esm/chunks/chunk.2DXG2R3M.js.map +0 -7
  614. package/dist/esm/chunks/chunk.4CWMNWZU.js +0 -7
  615. package/dist/esm/chunks/chunk.4CWMNWZU.js.map +0 -7
  616. package/dist/esm/chunks/chunk.5KC43VFL.js +0 -7
  617. package/dist/esm/chunks/chunk.6ATSOUJQ.js +0 -29
  618. package/dist/esm/chunks/chunk.6ATSOUJQ.js.map +0 -7
  619. package/dist/esm/chunks/chunk.6CO3CIUY.js +0 -7
  620. package/dist/esm/chunks/chunk.73GVVX4K.js +0 -7
  621. package/dist/esm/chunks/chunk.7BAO5IED.js +0 -7
  622. package/dist/esm/chunks/chunk.7GCT4NUC.js +0 -7
  623. package/dist/esm/chunks/chunk.7GCT4NUC.js.map +0 -7
  624. package/dist/esm/chunks/chunk.AMES2WWC.js +0 -7
  625. package/dist/esm/chunks/chunk.AMES2WWC.js.map +0 -7
  626. package/dist/esm/chunks/chunk.APHMTBRQ.js +0 -7
  627. package/dist/esm/chunks/chunk.APHMTBRQ.js.map +0 -7
  628. package/dist/esm/chunks/chunk.BESB4RGK.js +0 -7
  629. package/dist/esm/chunks/chunk.BKAZC53W.js +0 -7
  630. package/dist/esm/chunks/chunk.BL4IBI6G.js +0 -29
  631. package/dist/esm/chunks/chunk.BL4IBI6G.js.map +0 -7
  632. package/dist/esm/chunks/chunk.BTMBIAL2.js +0 -7
  633. package/dist/esm/chunks/chunk.BTMBIAL2.js.map +0 -7
  634. package/dist/esm/chunks/chunk.CE6NTUWI.js +0 -7
  635. package/dist/esm/chunks/chunk.CE6NTUWI.js.map +0 -7
  636. package/dist/esm/chunks/chunk.CG5CVENX.js +0 -7
  637. package/dist/esm/chunks/chunk.CG5CVENX.js.map +0 -7
  638. package/dist/esm/chunks/chunk.CN4XKIQI.js +0 -7
  639. package/dist/esm/chunks/chunk.CX7MOSLM.js +0 -7
  640. package/dist/esm/chunks/chunk.D5OLAPHE.js +0 -7
  641. package/dist/esm/chunks/chunk.DLALEZ73.js +0 -7
  642. package/dist/esm/chunks/chunk.DLALEZ73.js.map +0 -7
  643. package/dist/esm/chunks/chunk.DYF2MREZ.js +0 -7
  644. package/dist/esm/chunks/chunk.DYF2MREZ.js.map +0 -7
  645. package/dist/esm/chunks/chunk.EAGRODVX.js +0 -7
  646. package/dist/esm/chunks/chunk.F3MP6AXF.js +0 -29
  647. package/dist/esm/chunks/chunk.F3MP6AXF.js.map +0 -7
  648. package/dist/esm/chunks/chunk.FFVZ6JMP.js +0 -7
  649. package/dist/esm/chunks/chunk.FPLHVO6D.js +0 -7
  650. package/dist/esm/chunks/chunk.FPLHVO6D.js.map +0 -7
  651. package/dist/esm/chunks/chunk.FVRSGKJD.js +0 -7
  652. package/dist/esm/chunks/chunk.G4DG233F.js +0 -7
  653. package/dist/esm/chunks/chunk.HOXFK44F.js +0 -7
  654. package/dist/esm/chunks/chunk.HRNLQ7GB.js +0 -7
  655. package/dist/esm/chunks/chunk.HRNLQ7GB.js.map +0 -7
  656. package/dist/esm/chunks/chunk.HTH3CEDN.js +0 -7
  657. package/dist/esm/chunks/chunk.HTH3CEDN.js.map +0 -7
  658. package/dist/esm/chunks/chunk.IMEODSRH.js +0 -7
  659. package/dist/esm/chunks/chunk.IMEODSRH.js.map +0 -7
  660. package/dist/esm/chunks/chunk.ITXUKOKJ.js +0 -7
  661. package/dist/esm/chunks/chunk.ITXUKOKJ.js.map +0 -7
  662. package/dist/esm/chunks/chunk.IZSUW7WG.js +0 -7
  663. package/dist/esm/chunks/chunk.JD4APKZS.js +0 -29
  664. package/dist/esm/chunks/chunk.JD4APKZS.js.map +0 -7
  665. package/dist/esm/chunks/chunk.JRUIOKFS.js +0 -12
  666. package/dist/esm/chunks/chunk.JRUIOKFS.js.map +0 -7
  667. package/dist/esm/chunks/chunk.K4SWLH26.js +0 -7
  668. package/dist/esm/chunks/chunk.K4SWLH26.js.map +0 -7
  669. package/dist/esm/chunks/chunk.K6LBO4KJ.js +0 -7
  670. package/dist/esm/chunks/chunk.K6LBO4KJ.js.map +0 -7
  671. package/dist/esm/chunks/chunk.KII37K76.js +0 -7
  672. package/dist/esm/chunks/chunk.KRUEPHLG.js +0 -7
  673. package/dist/esm/chunks/chunk.KRUEPHLG.js.map +0 -7
  674. package/dist/esm/chunks/chunk.MCIQXNKY.js +0 -7
  675. package/dist/esm/chunks/chunk.MSFGXRCM.js +0 -7
  676. package/dist/esm/chunks/chunk.MWHVRJW5.js +0 -7
  677. package/dist/esm/chunks/chunk.PFYLJBUV.js +0 -7
  678. package/dist/esm/chunks/chunk.PFYLJBUV.js.map +0 -7
  679. package/dist/esm/chunks/chunk.PKVY6EWM.js +0 -29
  680. package/dist/esm/chunks/chunk.PKVY6EWM.js.map +0 -7
  681. package/dist/esm/chunks/chunk.RGAPFLQE.js +0 -7
  682. package/dist/esm/chunks/chunk.RGAPFLQE.js.map +0 -7
  683. package/dist/esm/chunks/chunk.ROQGMLH3.js +0 -7
  684. package/dist/esm/chunks/chunk.ROQGMLH3.js.map +0 -7
  685. package/dist/esm/chunks/chunk.S2YVOMLW.js +0 -7
  686. package/dist/esm/chunks/chunk.SQTM36C3.js +0 -7
  687. package/dist/esm/chunks/chunk.SXTM6OK4.js +0 -7
  688. package/dist/esm/chunks/chunk.SXTM6OK4.js.map +0 -7
  689. package/dist/esm/chunks/chunk.T6NVM7TN.js +0 -7
  690. package/dist/esm/chunks/chunk.UHU4FUIS.js +0 -7
  691. package/dist/esm/chunks/chunk.UVW3YDEX.js +0 -7
  692. package/dist/esm/chunks/chunk.V4TCOZLK.js +0 -29
  693. package/dist/esm/chunks/chunk.V4TCOZLK.js.map +0 -7
  694. package/dist/esm/chunks/chunk.VNLVFGQ2.js +0 -7
  695. package/dist/esm/chunks/chunk.VNLVFGQ2.js.map +0 -7
  696. package/dist/esm/chunks/chunk.VT2QJ7SM.js +0 -29
  697. package/dist/esm/chunks/chunk.VT2QJ7SM.js.map +0 -7
  698. package/dist/esm/chunks/chunk.XFAOB6LU.js +0 -7
  699. package/dist/esm/chunks/chunk.XMAKEISF.js +0 -7
  700. package/dist/esm/chunks/chunk.Y66GSZJB.js +0 -7
  701. package/dist/esm/chunks/chunk.Y66GSZJB.js.map +0 -7
  702. package/dist/esm/chunks/chunk.YG24YPYO.js +0 -7
  703. package/dist/esm/chunks/chunk.YG24YPYO.js.map +0 -7
  704. package/dist/esm/chunks/chunk.YI4JTY4T.js +0 -14
  705. package/dist/esm/chunks/chunk.YMBLWKRP.js +0 -7
  706. package/dist/esm/chunks/chunk.YPZNIYQL.js +0 -7
  707. package/styles/circular-progress/_keyframes.scss +0 -185
  708. package/styles/circular-progress/_mixins.scss +0 -320
  709. package/styles/circular-progress/_variables.scss +0 -50
  710. package/styles/linear-progress/_mixins.scss +0 -11
  711. package/styles/linear-progress/_variables.scss +0 -15
  712. package/styles/tabs/tab/_mixins.scss +0 -165
  713. package/styles/tabs/tab/_variables.scss +0 -9
  714. package/styles/tabs/tab-bar/_mixins.scss +0 -78
  715. /package/dist/esm/chunks/{chunk.7BAO5IED.js.map → chunk.3JDFBEF7.js.map} +0 -0
  716. /package/dist/esm/chunks/{chunk.RUK5PIER.js.map → chunk.5CMQ7DNL.js.map} +0 -0
  717. /package/dist/esm/chunks/{chunk.NEFQWOLN.js.map → chunk.7DHFTAWI.js.map} +0 -0
  718. /package/dist/esm/chunks/{chunk.CX7MOSLM.js.map → chunk.7ZQMJLHE.js.map} +0 -0
  719. /package/dist/esm/chunks/{chunk.NLXSZNQI.js.map → chunk.E7Z3IRWV.js.map} +0 -0
  720. /package/dist/esm/chunks/{chunk.4R6NK524.js.map → chunk.EDEYCLDU.js.map} +0 -0
  721. /package/dist/esm/chunks/{chunk.2KXSGD3S.js.map → chunk.G4IN6Y46.js.map} +0 -0
  722. /package/dist/esm/chunks/{chunk.XFAOB6LU.js.map → chunk.HXJCTE47.js.map} +0 -0
  723. /package/dist/esm/chunks/{chunk.K7HRCGML.js.map → chunk.IDD54B5P.js.map} +0 -0
  724. /package/dist/esm/chunks/{chunk.MCIQXNKY.js.map → chunk.M3QDAYD2.js.map} +0 -0
  725. /package/dist/esm/chunks/{chunk.AMWDVFAU.js.map → chunk.OAHA3QOH.js.map} +0 -0
  726. /package/dist/esm/chunks/{chunk.NMKDIHFB.js.map → chunk.PHTOULRR.js.map} +0 -0
  727. /package/dist/esm/chunks/{chunk.XQ5CDWDY.js.map → chunk.QZK3WEH6.js.map} +0 -0
  728. /package/dist/esm/chunks/{chunk.VTB27IL7.js.map → chunk.U4GYQOPY.js.map} +0 -0
  729. /package/dist/esm/chunks/{chunk.3IXTRC6Z.js.map → chunk.WO7KEM5K.js.map} +0 -0
  730. /package/dist/esm/chunks/{chunk.M6PJ3PNN.js.map → chunk.WYP2M5FR.js.map} +0 -0
  731. /package/dist/esm/chunks/{chunk.QAWXAPHR.js.map → chunk.XOM2FYQ2.js.map} +0 -0
  732. /package/dist/esm/chunks/{chunk.NX4EECNP.js.map → chunk.XRESQBNE.js.map} +0 -0
  733. /package/dist/esm/chunks/{chunk.7K44O5RO.js.map → chunk.Y5UJ23LB.js.map} +0 -0
  734. /package/dist/esm/chunks/{chunk.UHU4FUIS.js.map → chunk.ZMRDW25U.js.map} +0 -0
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../node_modules/@tylertech/forge-core/esm/utils/item-manager.js", "../../src/table/table-constants.ts", "../../src/table/types.ts", "../../src/table/table-utils.ts", "../../src/table/table-adapter.ts", "../../src/table/multi-sort-manager.ts", "../../src/table/table-row.ts", "../../src/table/table-foundation.ts", "../../src/table/table.ts", "../../src/table/index.ts"],
4
4
  "sourcesContent": ["import { findWhere, createPredicate } from './object-utils';\nexport class ItemManager {\n constructor(_key) {\n this._key = _key;\n this._items = [];\n }\n /**\n * Returns all items.\n */\n getItems() {\n return [...this._items];\n }\n /**\n * Returns the number of items.\n */\n count() {\n return this._items.length;\n }\n /**\n * Sets the item key.\n * @param key The item key(s).\n */\n setKey(key) {\n this._key = key;\n }\n /**\n * Addes the provided items.\n * @param data The item data.\n */\n add(data) {\n if (!(data instanceof Array)) {\n data = [data];\n }\n data.forEach(item => {\n if (!this.exists(item)) {\n this._items.push(item);\n }\n });\n return this;\n }\n /**\n * Removes an item from the selections.\n * @param data The data to be deselected.\n */\n remove(data) {\n if (!(data instanceof Array)) {\n data = [data];\n }\n for (let i = data.length - 1; i >= 0; i--) {\n if (this.exists(data[i])) {\n this._items.splice(this._items.indexOf(this._getItem(data[i])), 1);\n }\n }\n return this;\n }\n /**\n * Removes all selected items.\n */\n clear() {\n this._items = [];\n return this;\n }\n /**\n * Determines if the provided item exists in the selections or not.\n * @param data The data value.\n */\n exists(data) {\n return this._getItem(data) !== null;\n }\n /**\n * Gets the item from the items collection, or null if not found.\n * @param data The data value.\n */\n _getItem(data) {\n if (this._key) {\n return findWhere(this._items, createPredicate(this._key, data)) || null;\n }\n else {\n return this._items.find(item => item === data) || null;\n }\n }\n}\n", "import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}table`;\n\nconst classes = {\n TABLE: 'forge-table',\n TABLE_DENSE: 'forge-table--dense',\n TABLE_ROOMY: 'forge-table--roomy',\n TABLE_RESIZABLE: 'forge-table--resizable',\n TABLE_RESIZING: 'forge-table--resizing',\n TABLE_RESIZE_HANDLE: 'forge-table__resize-handle',\n TABLE_NO_WRAP_CONTENT: 'forge-table--no-wrap-content',\n TABLE_LAYOUT_FIXED: 'forge-table--layout-fixed',\n TABLE_FILTER_VISIBLE: 'forge-table--filter-visible',\n TABLE_FIXED: 'forge-table--fixed',\n TABLE_HEAD: 'forge-table-head',\n TABLE_HEAD_ROW: 'forge-table-head__row',\n TABLE_HEAD_ROW_FILTER: 'forge-table-head__row__filter',\n TABLE_HEAD_CELL: 'forge-table-head__cell',\n TABLE_HEAD_CELL_CONTAINER: 'forge-table-head__cell-container',\n TABLE_HEAD_CELL_SORTABLE: 'forge-table-head__cell--sortable',\n TABLE_HEAD_CELL_SORT_ICON: 'forge-table-head__cell-sort-icon',\n TABLE_HEAD_CELL_TEXT: 'forge-table-head__cell-text',\n TABLE_HEAD_CELL_SORT_ICON_ACTIVE: 'forge-table-head__cell-sort-icon--active',\n TABLE_HEAD_CELL_SORTED_ASCENDING: 'forge-table-head__cell--sorted-ascending',\n TABLE_HEAD_CELL_SORTED_DESCENDING: 'forge-table-head__cell--sorted-descending',\n TABLE_HEAD_CELL_SORT_ORDER: 'forge-table-head__cell__sort-order',\n TABLE_HEAD_CELL_SORT_ORDER_HIDDEN: 'forge-table-head__cell__sort-order--hidden',\n TABLE_BODY: 'forge-table-body',\n TABLE_BODY_ROW: 'forge-table-body__row',\n TABLE_BODY_ROW_SELECTED: 'forge-table-body__row--selected',\n TABLE_BODY_ROW_CLICKABLE: 'forge-table-body__row--clickable',\n TABLE_BODY_CELL: 'forge-table-body__cell',\n TABLE_ROW: 'forge-table-row',\n TABLE_ROW_EXPANDED: 'forge-table-row--expanded',\n TABLE_ROW_EXPANDABLE_CONTENT: 'forge-table-row__expandable-content',\n TABLE_ROW_EXPANDABLE_CONTENT_CELL: 'forge-table-row__expandable-content-cell',\n TABLE_CELL: 'forge-table-cell',\n TABLE_CELL_SELECT: 'forge-table-cell__select',\n TABLE_CELL_SELECT_CHECKBOX: 'forge-table-cell__select-checkbox',\n TABLE_CELL_SELECT_CHECKBOX_CONTAINER: 'forge-table-cell__select-checkbox-container',\n TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_RIGHT: 'forge-table-cell__select-checkbox-container--align-right',\n TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_LEFT: 'forge-table-cell__select-checkbox-container--align-left',\n TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_CENTER: 'forge-table-cell__select-checkbox-container--align-center',\n TABLE_CELL_CONTAINER: 'forge-table-cell__container',\n TABLE_CELL_CONTAINER_TEXT: 'forge-table-cell__container-text',\n TABLE_CELL_CENTER: 'forge-table-cell--center',\n TABLE_CELL_RIGHT: 'forge-table-cell--right',\n TABLE_CELL_RESIZABLE: 'forge-table-cell--resizing'\n};\n\nconst selectors = {\n TABLE: '.forge-table',\n CHECKBOX_INPUT: 'forge-checkbox > input[type=checkbox]:not([forge-ignore])',\n SELECT_ALL_TEMPLATE_CHECKBOX_INPUT: 'input[type=checkbox]:not([forge-ignore])',\n ROW_SELECTED: `.${classes.TABLE_BODY_ROW_SELECTED}`\n};\n\nconst attributes = {\n // External\n SELECT: 'select',\n MULTISELECT: 'multiselect',\n SELECT_KEY: 'select-key',\n DENSE: 'dense',\n ROOMY: 'roomy',\n FILTER: 'filter',\n FIXED_HEADERS: 'fixed-headers',\n LAYOUT_TYPE: 'layout-type',\n WRAP_CONTENT: 'wrap-content',\n RESIZABLE: 'resizable',\n MIN_RESIZE_WIDTH: 'min-resize-width',\n ALLOW_ROW_CLICK: 'allow-row-click',\n MULTI_COLUMN_SORT: 'multi-column-sort',\n SELECT_CHECKBOX_ALIGNMENT: 'select-checkbox-alignment',\n TOOLTIP_SELECT: 'tooltip-select',\n TOOLTIP_SELECT_ALL: 'tooltip-select-all',\n\n // Internal\n CHECKBOX_TYPE: 'forge-checkbox-type',\n CUSTOM_CELL_TEMPLATE: 'data-cell-template',\n CUSTOM_CELL_TEMPLATE_STOP_PROPAGATION: 'data-cell-template-stop-propagation'\n};\n\nconst events = {\n ROW_CLICK: `${elementName}-row-click`,\n SELECT: `${elementName}-select`,\n SELECT_DOUBLE: `${elementName}-select-double`,\n SELECT_ALL: `${elementName}-select-all`,\n SORT: `${elementName}-sort`,\n FILTER: `${elementName}-filter`,\n INITIALIZED: `${elementName}-initialized`,\n COLUMN_RESIZE: `${elementName}-column-resize`\n};\n\nconst strings = {\n SELECT_ALL: 'select-all',\n SELECT_ROW: 'select-row',\n DEFAULT_LAYOUT_TYPE: 'auto'\n};\n\nconst icons = {\n SORT_DOWN: 'arrow_downward'\n};\n\nconst numbers = {\n DEFAULT_FILTER_DEBOUNCE_TIME: 750,\n MIN_RESIZE_WIDTH: 100,\n RESIZE_HOVER_DURATION: 150\n};\n\nexport const TABLE_CONSTANTS = {\n elementName,\n classes,\n selectors,\n attributes,\n events,\n strings,\n icons,\n numbers\n};\n", "import { BaseComponentDelegate, IBaseComponentDelegate, IBaseComponentDelegateOptions } from '../core';\nimport { IFormFieldComponentDelegate } from '../core/delegates/form-field-component-delegate';\nimport { TableRow } from './table-row';\n\nexport declare type TableViewTemplate = string | HTMLElement | TableViewTemplateBuilder;\nexport declare type TableViewTemplateBuilder<T = any> = (rowIndex: number, div: HTMLElement, rowData: T) => HTMLElement | string | ITableViewTemplateBuilderResult | undefined | Promise<HTMLElement | string | undefined | ITableViewTemplateBuilderResult>;\nexport declare type TableTemplateBuilder<T = any> = (rowIndex: number, div: HTMLElement, rowData: T, columnIndex: number) => HTMLElement | string | ITableTemplateBuilderResult | undefined | Promise<HTMLElement | string | undefined | ITableTemplateBuilderResult>;\nexport declare type TableHeaderTemplateBuilder = (rowIndex: number, div: HTMLElement, columConfig: IColumnConfiguration) => HTMLElement | string | Promise<HTMLElement | string>;\nexport declare type TableHeaderSelectAllTemplate = () => HTMLElement | string | Promise<HTMLElement | string>;\nexport declare type TableRowCreatedCallback = (rowElement: HTMLTableRowElement, rowIndex: number, rowData: any) => void;\nexport declare type TableSelectTooltipCallback = (rowIndex: number, rowData: any) => string;\nexport declare type TableCellCreatedCallback = (rowElement: HTMLTableCellElement, rowIndex: number, columnIndex: number) => void;\n\nexport interface IColumnData<T = any> {\n config: IColumnConfiguration;\n data: T[];\n}\n\nexport interface ITableConfiguration {\n tableElement: HTMLTableElement;\n columnConfigurations: IColumnConfiguration[];\n data: TableRow[];\n sortedColumn: number;\n sortDirection: SortDirection | undefined;\n multiColumnSort: boolean;\n dense: boolean;\n filter: boolean;\n wrapContent: boolean;\n resizable: boolean;\n fixedHeaders: boolean;\n layoutType: TableLayoutType;\n selectCheckboxAlignment: CellAlign;\n tooltipSelect: string | TableSelectTooltipCallback;\n tooltipSelectAll: string;\n clickListener: ((evt: MouseEvent) => void) | null;\n doubleClickListener: ((evt: Event) => void) | null;\n selectListener: ((evt: Event) => void) | null;\n selectAllListener: ((evt: Event) => void) | null;\n headRowMouseDownListener: (evt: Event) => void;\n headRowContextMenuListener: (evt: Event) => void;\n filterListener: ((value: any, columnIndex: number) => void) | null;\n rowCreatedCallback: TableRowCreatedCallback;\n cellCreatedCallback: TableCellCreatedCallback;\n selectAllTemplate: TableHeaderSelectAllTemplate;\n}\n\nexport interface IColumnConfiguration {\n property?: string;\n template?: TableTemplateBuilder;\n headerTemplate?: TableHeaderTemplateBuilder;\n header?: string;\n hidden?: boolean;\n sortable?: boolean;\n preventUnsort?: boolean;\n initialSort?: boolean | ISortedColumn;\n sortDirection?: SortDirection;\n align?: CellAlign;\n width?: string | number;\n transform?: (value: any) => any | Promise<any>;\n filter?: boolean;\n filterDelegate?: IFormFieldComponentDelegate<any> | BaseComponentDelegate<HTMLElement, IBaseComponentDelegateOptions> | TableFilterDelegateFactory;\n filterDebounceTime?: number;\n cellStyle?: Partial<CSSStyleDeclaration>;\n headerCellStyle?: Partial<CSSStyleDeclaration>;\n resizable?: boolean;\n columnSpan?: 'all' | number;\n stopCellTemplateClickPropagation?: boolean;\n}\n\nexport interface ITableSelectEventData<T = any> {\n selected: boolean;\n index: number;\n data: T;\n}\n\nexport interface ITableSelectAllEventData<T = any> {\n status: boolean;\n count: number;\n data: T[];\n targetType: 'row' | 'select-all';\n}\n\nexport interface ITableRowClickEventData<T = any> {\n index: number;\n data: T;\n}\n\nexport interface ITableSelectDoubleEventData<T = any> {\n index: number;\n data: T;\n}\n\nexport interface ITableSortEventData {\n direction: SortDirection;\n columnIndex: number;\n}\n\nexport type ITableSortMultipleEventData = ITableSortedMultipleEventDataItem[];\nexport interface ITableSortedMultipleEventDataItem extends ISortedItem {}\n\nexport interface ITableColumnResizeEventData {\n index: number;\n width: number;\n}\n\nexport enum CellAlign {\n Left = 'left',\n Right = 'right',\n Center = 'center'\n}\n\nexport enum SortDirection {\n Ascending = 'ASC',\n Descending = 'DESC',\n Unset = 'UNSET'\n}\n\nexport interface ISortedItem {\n columnIndex: number;\n direction: SortDirection;\n propertyName: string;\n sortOrder?: number;\n}\n\nexport interface ISortedColumn {\n direction: SortDirection;\n sortOrder?: number;\n propertyName: string;\n}\n\nexport interface ISortedItemUpdate {\n columnIndex: number;\n direction: SortDirection;\n propertyName: string;\n}\n\nexport interface ITableFilterOption<T = any> {\n display: string | ITableDateFilterLabel;\n value: T;\n}\n\nexport interface ITableDateFilterLabel {\n from: string;\n to: string;\n}\n\nexport enum TableFilterType {\n InputText = 'text',\n InputNumber = 'number',\n Select = 'select',\n SelectMultiple = 'select-multiple',\n Date = 'date',\n DateRange = 'date-range'\n}\n\nexport type TableFilterListener<T = any> = (value: T, columnIndex: number) => void;\nexport type TableFilterDelegateFactory<T extends HTMLElement = any> = () => IFormFieldComponentDelegate<T> | IBaseComponentDelegate<HTMLElement>;\nexport type TableLayoutType = 'auto' | 'fixed';\n\nexport interface ITableFilterEventData<T = any> {\n value: T;\n columnIndex: number;\n}\n\nexport interface ITableResizeEventDescriptor {\n element: HTMLTableHeaderCellElement;\n startWidth: number;\n startX: number;\n index: number;\n width: number;\n}\n\nexport interface ITableTemplateBuilderResult {\n content: HTMLElement | string;\n stopClickPropagation?: boolean;\n}\n\nexport interface ITableViewTemplateBuilderResult extends ITableTemplateBuilderResult {}\n", "import {\n addClass,\n createPredicate,\n debounce,\n findWhere,\n getPropertyValue,\n isDefined,\n isFunction,\n isNumber,\n isObject,\n isString,\n removeAllChildren,\n removeClass,\n removeElement,\n replaceElement,\n safeCssWidth,\n toggleClass\n} from '@tylertech/forge-core';\nimport { CHECKBOX_CONSTANTS, ICheckboxComponent } from '../checkbox';\nimport { EXPANSION_PANEL_CONSTANTS, IExpansionPanelComponent } from '../expansion-panel';\nimport { TooltipComponent, TOOLTIP_CONSTANTS } from '../tooltip';\nimport { TABLE_CONSTANTS } from './table-constants';\nimport { TableRow } from './table-row';\nimport { CellAlign, IColumnConfiguration, IColumnData, ITableConfiguration, SortDirection, TableFilterDelegateFactory, TableFilterListener, TableHeaderSelectAllTemplate, TableTemplateBuilder, TableViewTemplate, TableSelectTooltipCallback, ITableTemplateBuilderResult, TableViewTemplateBuilder } from './types';\nimport { ICON_CONSTANTS, IIconComponent } from '../icon';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegate } from '../core/delegates/form-field-component-delegate';\nimport { BaseComponentDelegate, IBaseComponentDelegate, IBaseComponentDelegateOptions } from '../core';\n\nfunction isTemplateResultObject(val: any): val is ITableTemplateBuilderResult {\n return val && typeof val === 'object' && 'content' in val;\n}\n\n/**\n * Provides facilities for creating and manipulating a table component.\n */\nexport class TableUtils {\n /**\n * Creates a table using the provided configuration.\n * @param {ITableConfiguration} configuration The table configuration.\n */\n public static createTable(configuration: ITableConfiguration): void {\n // Reset the table back to its original unpopulated state\n TableUtils._resetTable(configuration.tableElement);\n\n // Create the header and body rows\n const thead = TableUtils._createTableHead(configuration);\n const tbody = TableUtils._createTableBody(configuration);\n\n // If we are allowing click events on the table rows then attach the row click listeners and attributes\n if (configuration.clickListener) {\n TableUtils._attachRowClickListeners(tbody, configuration.clickListener, configuration.doubleClickListener);\n TableUtils._addRowClickAttributes(tbody);\n }\n\n // Set the fixed state\n if (configuration.fixedHeaders) {\n TableUtils.setFixedHeaders(configuration);\n }\n\n // Set the resizable state\n if (configuration.resizable) {\n TableUtils.setResizable(configuration);\n }\n\n // Set the dense state\n if (configuration.dense) {\n TableUtils.setDenseState(configuration.tableElement, configuration.dense);\n }\n\n // Set the wrap state\n if (configuration.wrapContent) {\n TableUtils.setWrapContentState(configuration.tableElement, configuration.wrapContent);\n }\n\n // Add the select column\n if (configuration.selectListener) {\n TableUtils._addSelectColumn(thead, tbody, configuration.selectListener, configuration.selectAllListener, configuration.selectAllTemplate, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);\n }\n\n if (configuration.resizable || configuration.columnConfigurations.some(c => !!c.sortable)) {\n TableUtils._attachHeadRowMouseDownListener(thead, configuration.headRowMouseDownListener);\n if (TableUtils._isMac()) {\n TableUtils._attachHeadRowContextMenuListener(thead, configuration.headRowContextMenuListener);\n }\n }\n\n TableUtils.setLayoutType(configuration);\n TableUtils._setTableHead(configuration.tableElement, thead);\n\n // Add the filter row (must come after adding the select column and table head)\n if (configuration.filter) {\n TableUtils.setFilterRow(configuration);\n }\n\n TableUtils._setTableBody(configuration.tableElement, tbody);\n }\n\n private static _setTableHead(tableElement: HTMLTableElement, thead: HTMLTableSectionElement): void {\n if (tableElement.tHead) {\n replaceElement(thead, tableElement.tHead);\n } else {\n tableElement.appendChild(thead);\n }\n }\n\n private static _setTableBody(tableElement: HTMLTableElement, tbody: HTMLTableSectionElement): void {\n if (tableElement.tBodies.length) {\n replaceElement(tbody, tableElement.tBodies[0]);\n } else {\n tableElement.appendChild(tbody);\n }\n }\n\n /**\n * Destroys and recreates the table body section only.\n * @param {ITableConfiguration} configuration The table configuration.\n */\n public static recreateTableBody(configuration: ITableConfiguration): void {\n // Create the table body\n const tbody = TableUtils._createTableBody(configuration);\n\n // If we are allowing click events on the table rows then attach the row click listeners\n if (configuration.clickListener) {\n TableUtils._attachRowClickListeners(tbody, configuration.clickListener, configuration.doubleClickListener);\n TableUtils._addRowClickAttributes(tbody);\n }\n\n // Add the select column if necessary\n if (configuration.selectListener) {\n TableUtils._createBodySelectColumn(tbody, configuration.selectCheckboxAlignment, configuration.data, configuration.tooltipSelect, configuration.tooltipSelectAll);\n TableUtils._attachRowSelectListeners(tbody, configuration.selectListener);\n }\n\n TableUtils._setTableBody(configuration.tableElement, tbody);\n }\n\n /**\n * Removes all DOM nodes from the table.\n * @param {HTMLTableElement} tableElement The table element to remove all children from.\n */\n private static _resetTable(tableElement: HTMLTableElement): void {\n removeAllChildren(tableElement);\n }\n\n /**\n * Creates a `forge-tooltip` for multi sort column headers\n */\n private static _createMultisortTooltip(): TooltipComponent {\n const tooltip = document.createElement(TOOLTIP_CONSTANTS.elementName) as TooltipComponent;\n tooltip.textContent = 'Ctrl + click to sort multiple columns';\n tooltip.position = 'bottom';\n tooltip.delay = 0;\n return tooltip;\n }\n\n /**\n * Creates the table header section by adding a row for the column headers based on column configuration.\n * @param columnDataMap The column based data map.\n * @param tableElement The table element.\n */\n private static _createTableHead(tableConfiguration: ITableConfiguration): HTMLTableSectionElement {\n const thead = document.createElement('thead');\n\n // Create the table head row for our column headers with required class\n const tr = thead.insertRow();\n addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_HEAD_ROW], tr);\n\n // We use this to determine if the initial sort column has already been set during the loop.\n // We set the initial sort to the first column that requests it.\n let setInitialSort = false;\n\n // Create a header cell for each column in our column data map\n for (let i = 0; i < tableConfiguration.columnConfigurations.length; i++) {\n const columnConfig = tableConfiguration.columnConfigurations[i];\n\n // Create the th element with required classes\n const th = document.createElement('th');\n th.scope = 'col';\n addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);\n\n // We wrap the header text in a div for ease of alignment\n const cellContainer = document.createElement('div');\n cellContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER);\n\n // Add tooltip for multisort\n if (tableConfiguration.multiColumnSort) {\n const tooltip = TableUtils._createMultisortTooltip();\n cellContainer.appendChild(tooltip);\n }\n\n // Set the cell alignment from config\n if (columnConfig.align) {\n TableUtils._setCellAlignmentClass(cellContainer, columnConfig.align);\n }\n\n // Check if width was specified\n if (isDefined(columnConfig.width)) {\n const width = safeCssWidth(columnConfig.width as string | number);\n if (width) {\n th.style.width = width;\n }\n }\n\n // Check if the resizable column handle should be appended\n if (tableConfiguration.resizable && columnConfig.resizable !== false) {\n const resizeHandle = document.createElement('div');\n resizeHandle.classList.add(TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE);\n th.appendChild(resizeHandle);\n }\n\n // Check if we were provided any inline style declarations and apply to th AND wrapper content div\n if (isDefined(columnConfig.headerCellStyle) && isObject(columnConfig.headerCellStyle)) {\n Object.assign(th.style, columnConfig.headerCellStyle);\n Object.assign(cellContainer.style, columnConfig.headerCellStyle);\n }\n\n const span = document.createElement('span');\n span.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_TEXT);\n span.textContent = columnConfig.header && typeof columnConfig.header === 'string' ? columnConfig.header.trim() : '';\n\n // Add the sort icon if this column is sortable\n if (columnConfig.sortable) {\n th.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTABLE);\n const sortOrderElement = document.createElement('span');\n addClass([TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER_HIDDEN, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER], sortOrderElement);\n\n const iconElement = document.createElement(ICON_CONSTANTS.elementName) as IIconComponent;\n iconElement.name = TABLE_CONSTANTS.icons.SORT_DOWN;\n addClass([TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON], iconElement);\n // Ignore the initial sort when multi column sort is enabled\n if (tableConfiguration.multiColumnSort) {\n if (typeof columnConfig.initialSort === 'object' && columnConfig.initialSort.sortOrder) {\n sortOrderElement.textContent = columnConfig.initialSort.sortOrder.toString();\n\n if (tableConfiguration.columnConfigurations.filter(c => typeof c.initialSort === 'object').length > 1) {\n removeClass(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER_HIDDEN, sortOrderElement);\n }\n\n th.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);\n iconElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);\n TableUtils._setColumnSortDirection(th, columnConfig.initialSort.direction);\n }\n } else {\n if (tableConfiguration.sortedColumn === i && !setInitialSort && !tableConfiguration.multiColumnSort) {\n th.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);\n iconElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);\n TableUtils._setColumnSortDirection(th, tableConfiguration.sortDirection);\n setInitialSort = true;\n }\n }\n\n cellContainer.appendChild(iconElement);\n cellContainer.appendChild(sortOrderElement);\n }\n\n if (typeof columnConfig.headerTemplate === 'function') {\n Promise.resolve(columnConfig.headerTemplate(i, cellContainer, columnConfig)).then(element => {\n if (element) {\n const node = document.createElement('div');\n addClass(TABLE_CONSTANTS.classes.TABLE_CELL_CONTAINER, node);\n if (typeof element === 'string') {\n node.innerHTML = element;\n } else {\n TableUtils._prepend(element, node);\n }\n node.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE, '');\n TableUtils._prepend(node, cellContainer);\n }\n });\n } else {\n TableUtils._prepend(span, cellContainer);\n }\n\n th.appendChild(cellContainer);\n tr.appendChild(th);\n }\n\n return thead;\n }\n\n /**\n * Sets the sort direction on the table to the provided column.\n * @param tableElement\n * @param columnIndex\n * @param sortDirection\n */\n public static setSortDirection(tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection): void {\n const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);\n TableUtils._setColumnSortDirection(cell, sortDirection);\n }\n\n /**\n * Sets the sort direction on the provided table header cell element.\n * @param thElement\n * @param sortDirection\n */\n private static _setColumnSortDirection(thElement: HTMLTableHeaderCellElement, sortDirection: SortDirection | undefined): void {\n if (thElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING)) {\n thElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);\n }\n\n if (thElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING)) {\n thElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);\n }\n\n if (!sortDirection || sortDirection === SortDirection.Descending) {\n thElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);\n } else {\n thElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);\n }\n }\n\n /**\n * Creates the table body section by adding rows/cells for our data/column configuration.\n * @param columnDataMap The column based data map.\n * @param tableElement The table element.\n */\n private static _createTableBody(configuration: ITableConfiguration): HTMLTableSectionElement {\n const tbody = document.createElement('tbody');\n const rowData: any[][] = TableUtils._getOrderedRowData(configuration.columnConfigurations, configuration.data);\n\n // Create the rows\n rowData.forEach((cellData, rowIndex) => {\n const tr = tbody.insertRow();\n addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_BODY_ROW], tr);\n\n // Create the row data cells\n TableUtils._populateRowCells(configuration, tr, cellData, rowIndex);\n\n // Check if we need to call the row created callback to give consumers a chance to modify the new row element\n if (typeof configuration.rowCreatedCallback === 'function') {\n configuration.rowCreatedCallback(tr, rowIndex, { ...configuration.data[rowIndex].data });\n }\n });\n\n return tbody;\n }\n\n /**\n * Populates a table row element with provided data.\n * @param configuration\n * @param tr\n * @param cellData\n * @param rowIndex\n */\n private static _populateRowCells(configuration: ITableConfiguration, tr: HTMLTableRowElement, cellData: any, rowIndex: number): void {\n for (let i = 0; i < cellData.length; i++) {\n // Find the configuration for this column\n const columnConfig = configuration.columnConfigurations[i];\n\n // Create the row data cell with required classes\n const td = tr.insertCell();\n addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_BODY_CELL], td);\n\n // Check if width was specified\n if (isDefined(columnConfig.width)) {\n const width = safeCssWidth(columnConfig.width as string | number);\n if (width) {\n td.style.width = width;\n }\n }\n\n // We wrap the value in a div to allow for flex styling\n const div = document.createElement('div');\n div.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_CONTAINER);\n\n // Check if we were provided any inline style declarations and apply to BOTH td and content wrapper div\n if (isDefined(columnConfig.cellStyle) && isObject(columnConfig.cellStyle)) {\n Object.assign(td.style, columnConfig.cellStyle);\n Object.assign(div.style, columnConfig.cellStyle);\n }\n\n // Add the cell content. If there is a template function, then use that.\n // Otherwise use the property to go get the value from the row data...\n if (columnConfig.template && typeof columnConfig.template === 'function') {\n const rowData = configuration.data[rowIndex] ? configuration.data[rowIndex].data : undefined;\n Promise.resolve(columnConfig.template(rowIndex, div, rowData, i)).then(result => {\n const config = isTemplateResultObject(result) ? result : { content: result, stopClickPropagation: columnConfig.stopCellTemplateClickPropagation } as ITableTemplateBuilderResult;\n \n if (!config.content) {\n return;\n }\n\n if (typeof config.content === 'string') {\n div.innerHTML = config.content;\n } else {\n div.appendChild(config.content);\n }\n\n div.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE, '');\n\n if (config.stopClickPropagation) {\n div.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE_STOP_PROPAGATION, '');\n }\n });\n } else if (columnConfig.property) {\n // Place the text content in a span\n const span = document.createElement('span');\n span.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_CONTAINER_TEXT);\n div.appendChild(span);\n\n if (columnConfig.transform && typeof columnConfig.transform === 'function') {\n Promise.resolve(columnConfig.transform(cellData[i])).then(value => span.textContent = value);\n } else {\n if (cellData[i] == null) {\n span.textContent = '';\n } else {\n span.textContent = cellData[i].toString();\n }\n }\n }\n\n // Set the cell alignment from config\n if (columnConfig.align) {\n TableUtils._setCellAlignmentClass(div, columnConfig.align);\n }\n\n td.appendChild(div);\n\n // Check for column span\n if (isDefined(columnConfig.columnSpan)) {\n if (columnConfig.columnSpan === 'all') {\n td.colSpan = cellData.length - i;\n break;\n } else if (typeof columnConfig.columnSpan === 'number' && columnConfig.columnSpan > 0) {\n let colspan = columnConfig.columnSpan;\n if (columnConfig.columnSpan > cellData.length - i) {\n colspan = cellData.length;\n }\n td.colSpan = colspan;\n i = i + (colspan - 1);\n }\n }\n\n // Check if we need to call the cell created callback to give consumers a chance to modify the new cell element\n if (typeof configuration.cellCreatedCallback === 'function') {\n configuration.cellCreatedCallback(td, rowIndex, i);\n }\n }\n }\n\n /**\n * Sets the proper alignment class on the provided element.\n * @param el The element to add the class to.\n * @param align The alignment value.\n */\n private static _setCellAlignmentClass(el: HTMLElement, align: CellAlign): void {\n switch (align) {\n case CellAlign.Center:\n el.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_CENTER);\n break;\n case CellAlign.Right:\n el.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_RIGHT);\n break;\n }\n }\n\n /**\n * Returns all non-expanded rows in a tbody.\n * @param rows All rows in the tbody.\n */\n private static _getNonExpandedRows(rows: HTMLCollectionOf<HTMLTableRowElement>): HTMLTableRowElement[] {\n return Array.from(rows).filter(row => !row.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT));\n }\n\n /**\n * Returns all expanded rows in a tbody.\n * @param rows All rows in the tbody.\n */\n private static _getExpandedRows(rows: HTMLCollectionOf<HTMLTableRowElement>): HTMLTableRowElement[] {\n return Array.from(rows).filter(row => row.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT));\n }\n\n /**\n * Creates the column data map which organizes the data by column.\n * @param {IColumnConfiguration[]} columnConfigurations The column configurations.\n * @param {IColumnData[]} data The row data.\n */\n private static _createColumnDataMap(columnConfigurations: IColumnConfiguration[], data: TableRow[]): IColumnData[] {\n return columnConfigurations.map(columnConfig => {\n return {\n config: columnConfig,\n data: data.map(item => {\n if (columnConfig.property) {\n const value = getPropertyValue(item.data, columnConfig.property);\n return isDefined(value) ? value : null;\n }\n return null;\n })\n };\n });\n }\n\n /**\n * Returns the row data in a column ordered fashion.\n * @param columnConfigurations\n * @param data\n */\n private static _getOrderedRowData(columnConfigurations: IColumnConfiguration[], data: any[]): any[] {\n const columnDataMap = TableUtils._createColumnDataMap(columnConfigurations, data);\n const rowData: any[][] = [];\n\n for (const columnData of columnDataMap) {\n for (let j = 0; j < columnData.data.length; j++) {\n if (!rowData[j]) {\n rowData[j] = [];\n }\n rowData[j].push(columnData.data[j]);\n }\n }\n\n return rowData;\n }\n\n /**\n * Attaches a click listener to each row in the table.\n * @param tbodyElement\n * @param listener\n */\n private static _attachRowClickListeners(tbodyElement: HTMLTableSectionElement, clickListener: (evt: Event) => void, doubleClickListener: ((evt: Event) => void) | null): void {\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);\n nonExpandedRows.forEach(row => {\n row.addEventListener('click', clickListener);\n if (doubleClickListener) {\n row.addEventListener('dblclick', doubleClickListener);\n }\n });\n }\n\n /**\n * Sets attributes for each row in the table.\n * @param tbodyElement\n * @param clickListener \n */\n private static _addRowClickAttributes(tbodyElement: HTMLTableSectionElement): void {\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);\n nonExpandedRows.forEach(row => {\n row.classList.add(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_CLICKABLE);\n });\n }\n\n /**\n * Removes attributes for each row in the table.\n * @param tbodyElement\n * @param clickListener \n */\n private static _removeRowClickAttributes(tbodyElement: HTMLTableSectionElement): void {\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);\n nonExpandedRows.forEach(row => {\n row.classList.remove(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_CLICKABLE);\n });\n }\n\n /**\n * Attaches a click listener to each row checkbox in the table for handling selections.\n * @param tbodyElement\n * @param listener\n */\n private static _attachRowSelectListeners(tbodyElement: HTMLTableSectionElement, clickListener: (evt: Event) => void): void {\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);\n nonExpandedRows.forEach(row => TableUtils._attachRowSelectListener(row, clickListener));\n }\n\n private static _attachRowSelectListener(row: HTMLTableRowElement, clickListener: (evt: Event) => void): void {\n const checkboxElement = TableUtils._getCheckboxElement(row);\n checkboxElement?.addEventListener('click', clickListener);\n }\n\n /**\n * Removes the select listeners from every table row.\n * @param tbodyElement The table body element.\n * @param listener The click listener.\n */\n private static _detachRowSelectListeners(tbodyElement: HTMLTableSectionElement, clickListener: (evt: Event) => void): void {\n Array.from(tbodyElement.rows).forEach(row => {\n const checkboxElement = TableUtils._getCheckboxElement(row);\n checkboxElement?.removeEventListener('click', clickListener);\n });\n }\n\n /**\n * Removes the click listeners from every table row.\n * @param tbodyElement The table body element.\n * @param listener The click listener.\n */\n private static _detachRowClickListeners(tbodyElement: HTMLTableSectionElement, clickListener: (evt: Event) => void, doubleClickListener: (evt: Event) => void): void {\n Array.from(tbodyElement.rows).forEach(row => {\n row.removeEventListener('click', clickListener);\n row.removeEventListener('dblclick', doubleClickListener);\n });\n }\n\n /**\n * Attaches a click listener to the last table header row select all cell.\n */\n private static _attachSelectAllListener(theadElement: HTMLTableSectionElement, listener: (evt: Event) => void): void {\n const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];\n const checkboxElement = TableUtils._getCheckboxElement(lastTheadRow);\n\n if (!checkboxElement) {\n throw new Error('Checkbox element not found.');\n }\n\n checkboxElement.addEventListener('change', listener);\n }\n\n /**\n * Attaches a click listener to the last table header row select all cell.\n */\n private static _tryAttachSelectAllTemplateListener(theadElement: HTMLTableSectionElement, listener: (evt: Event) => void): void {\n const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];\n const checkboxElement = TableUtils._tryGetSelectAllCheckboxElement(lastTheadRow);\n\n if (checkboxElement) {\n checkboxElement.addEventListener('change', listener);\n }\n }\n\n /**\n * Removes the select all click listener.\n * @param theadElement The table head element.\n * @param listener The click listener.\n */\n private static _detachSelectAllListener(theadElement: HTMLTableSectionElement, listener: (evt: Event) => void): void {\n const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];\n const checkboxElement = TableUtils._tryGetSelectAllCheckboxElement(lastTheadRow);\n\n if (!checkboxElement) {\n return;\n }\n\n checkboxElement.removeEventListener('change', listener);\n }\n\n /**\n * Attaches a click listener to the first row of the table header to handle mouse events.\n * @param theadElement\n * @param listener\n */\n private static _attachHeadRowMouseDownListener(theadElement: HTMLTableSectionElement, listener: (evt: Event) => void): void {\n const firstRow = theadElement.rows[0];\n\n if (!firstRow) {\n throw new Error('Missing table header row. Unable to attach sort listener.');\n }\n\n firstRow.addEventListener('mousedown', listener);\n }\n\n /**\n * Attaches a click listener to the first row of the table header to handle context menu events.\n * @param theadElement\n * @param listener\n */\n private static _attachHeadRowContextMenuListener(theadElement: HTMLTableSectionElement, listener: (evt: Event) => void): void {\n const firstRow = theadElement.rows[0];\n\n if (!firstRow) {\n throw new Error('Missing table header row. Unable to attach sort listener.');\n }\n\n firstRow.addEventListener('contextmenu', listener);\n }\n\n /**\n * Creates the select column as the first column in the table.\n * @param theadElement\n * @param tbodyElement\n */\n private static _createSelectColumn(\n theadElement: HTMLTableSectionElement,\n tbodyElement: HTMLTableSectionElement,\n showSelectAll: boolean,\n selectAllTemplate: TableHeaderSelectAllTemplate | null,\n registerListener: () => void,\n selectCheckboxAlignment: CellAlign | null,\n data: TableRow[],\n tooltipSelect: string | TableSelectTooltipCallback | null,\n tooltipSelectAll: string | null): void {\n if (theadElement) {\n TableUtils._createHeadSelectColumn(theadElement, showSelectAll, selectAllTemplate, registerListener, selectCheckboxAlignment, tooltipSelectAll);\n }\n\n if (tbodyElement) {\n TableUtils._createBodySelectColumn(tbodyElement, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);\n }\n }\n\n /**\n * Creates the select column in the table head.\n * @param {HTMLTableSectionElement} theadElement The table head element.\n * @param {boolean} showSelectAll Whether to show the select all checkbox or not.\n */\n private static _createHeadSelectColumn(\n theadElement: HTMLTableSectionElement,\n showSelectAll: boolean,\n selectAllTemplate: TableHeaderSelectAllTemplate | null,\n registerListener: (() => void),\n selectCheckboxAlignment: CellAlign | null,\n tooltipSelectAll: string | null): void {\n Array.from(theadElement.rows).forEach(row => {\n const th = document.createElement('th');\n addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);\n row.insertBefore(th, row.cells.item(0));\n });\n\n if (showSelectAll) {\n const lastRowFirstCell = theadElement.rows.item(theadElement.rows.length - 1)?.cells.item(0) as HTMLTableHeaderCellElement;\n lastRowFirstCell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);\n\n if (typeof selectAllTemplate === 'function') {\n TableUtils._renderSelectAllTemplate(selectAllTemplate, theadElement).then(() => {\n if (typeof registerListener === 'function') {\n registerListener();\n }\n });\n } else {\n lastRowFirstCell?.appendChild(TableUtils._createCheckboxElement(true, selectCheckboxAlignment, null, null, null, tooltipSelectAll));\n }\n }\n }\n\n /**\n * Creates the select column in the table body.\n * @param {HTMLTableSectionElement} tbodyElement The table body element.\n */\n private static _createBodySelectColumn(\n tbodyElement: HTMLTableSectionElement,\n selectCheckboxAlignment: CellAlign | null,\n data: TableRow[],\n tooltipSelect: string | TableSelectTooltipCallback | null,\n tooltipSelectAll: string | null): void {\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);\n nonExpandedRows.forEach((row, rowIndex) => TableUtils._addRowSelectColumn(row, selectCheckboxAlignment, rowIndex, data[rowIndex], tooltipSelect, tooltipSelectAll));\n\n // Update the colspan on the expanded rows\n if (tbodyElement.rows.length) {\n const firstRow = tbodyElement.rows.item(0);\n if (firstRow) {\n TableUtils._updateExpandedRowColspan(tbodyElement.rows, firstRow.cells.length);\n }\n }\n }\n\n private static _addRowSelectColumn(\n row: HTMLTableRowElement,\n selectCheckboxAlignment: CellAlign | null,\n rowIndex: number,\n rowData: TableRow,\n tooltipSelect: string | TableSelectTooltipCallback | null,\n tooltipSelectAll: string | null): void {\n const td = row.insertCell(0);\n addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_BODY_CELL, TABLE_CONSTANTS.classes.TABLE_CELL_SELECT], td);\n\n td.appendChild(TableUtils._createCheckboxElement(false, selectCheckboxAlignment, rowIndex, rowData, tooltipSelect, tooltipSelectAll));\n }\n\n /**\n * Removes the first cell (select cell) in every row in the table head and table body elements.\n * @param {HTMLTableSectionElement} theadElement The table head element.\n * @param {HTMLTableSectionElement} tbodyElement The table body element.\n */\n private static _destroySelectColumn(theadElement: HTMLTableSectionElement, tbodyElement: HTMLTableSectionElement): void {\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbodyElement.rows);\n Array.from(theadElement.rows).forEach(row => row.removeChild(row.cells.item(0) as HTMLTableHeaderCellElement));\n Array.from(nonExpandedRows).forEach(row => row.removeChild(row.cells.item(0) as HTMLTableHeaderCellElement));\n\n // Update the colspan on the expanded rows\n if (tbodyElement.rows.length) {\n const firstRow = tbodyElement.rows.item(0);\n if (firstRow) {\n TableUtils._updateExpandedRowColspan(tbodyElement.rows, firstRow.cells.length);\n }\n }\n }\n\n /**\n * Determines if the table has the select column being rendered currently.\n */\n private static _hasSelectColumn(theadElement: HTMLTableSectionElement, tbodyElement: HTMLTableSectionElement): boolean {\n const tableRows = [...Array.from(theadElement.rows), ...Array.from(tbodyElement.rows)];\n return tableRows.some(row => {\n const firstCell = row.cells.item(0) as HTMLTableCellElement;\n return firstCell.classList.contains(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);\n });\n }\n\n /**\n * Creates a checkbox element for the select column.\n */\n private static _createCheckboxElement(\n isHeader: boolean,\n alignment: CellAlign | null,\n rowIndex: number | null,\n rowData: TableRow | null,\n tooltipSelect: string | TableSelectTooltipCallback | null,\n tooltipSelectAll: string | null): HTMLElement {\n const checkboxContainer = document.createElement('div');\n checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER);\n if (alignment) {\n switch (alignment) {\n case CellAlign.Center:\n checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_CENTER);\n break;\n case CellAlign.Left:\n checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_LEFT);\n break;\n case CellAlign.Right:\n checkboxContainer.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT_CHECKBOX_CONTAINER_ALIGN_RIGHT);\n break;\n }\n }\n\n const checkboxElement = document.createElement(CHECKBOX_CONSTANTS.elementName) as ICheckboxComponent;\n const checkboxInputElement = document.createElement('input');\n checkboxInputElement.type = 'checkbox';\n\n let tooltipText = tooltipSelect ? tooltipSelect : '';\n if (rowData && typeof tooltipSelect === 'function') {\n tooltipText = tooltipSelect.call(null, rowIndex, rowData.data);\n }\n\n const tooltip = document.createElement('forge-tooltip');\n tooltip.position = 'left';\n\n if (isHeader) {\n tooltip.textContent = tooltipSelectAll ? tooltipSelectAll : '';\n } else {\n tooltip.textContent = tooltipText as string;\n }\n\n checkboxInputElement.setAttribute('aria-label', 'Select row');\n checkboxElement.appendChild(checkboxInputElement);\n checkboxContainer.appendChild(tooltip);\n checkboxContainer.appendChild(checkboxElement);\n \n return checkboxContainer;\n }\n\n /**\n * Retrieves the checkbox element from the given table row. Used in select mode only.\n * @param rowElement\n */\n private static _getCheckboxElement(rowElement: HTMLTableRowElement): HTMLInputElement | null {\n const selectCell = rowElement.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_CELL_SELECT}`);\n if (!selectCell) {\n return null;\n }\n return selectCell.querySelector(TABLE_CONSTANTS.selectors.CHECKBOX_INPUT) as HTMLInputElement;\n }\n\n /**\n * Retrieves the select all checkbox element from the given table row. Used in select mode only.\n * @param rowElement\n */\n private static _tryGetSelectAllCheckboxElement(rowElement: HTMLTableRowElement): HTMLInputElement | null {\n const selectAllCell = rowElement.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_CELL_SELECT}`);\n if (!selectAllCell) {\n return null;\n }\n return selectAllCell.querySelector(TABLE_CONSTANTS.selectors.CHECKBOX_INPUT) as HTMLInputElement ||\n selectAllCell.querySelector(TABLE_CONSTANTS.selectors.SELECT_ALL_TEMPLATE_CHECKBOX_INPUT) as HTMLInputElement;\n }\n\n /**\n * Sets the checked state of the select checkbox.\n * @param checkboxElement\n * @param isSelected\n */\n private static _setSelectedCheckboxState(checkboxElement: HTMLInputElement, isSelected: boolean): void {\n if (checkboxElement) {\n checkboxElement.checked = isSelected;\n }\n }\n\n /**\n * Sets the indeterminate state of the select checkbox.\n * @param checkboxElement\n * @param isIndeterminate\n */\n private static _setIndeterminateCheckboxState(checkboxElement: HTMLInputElement, isIndeterminate: boolean): void {\n if (checkboxElement) {\n checkboxElement.indeterminate = isIndeterminate;\n }\n }\n\n /**\n * Updates the selected state on the provided table row element.\n * @param rowElement\n * @param isSelected\n */\n private static _setRowSelectedState(rowElement: HTMLTableRowElement, isSelected: boolean): void {\n if (isSelected) {\n if (!rowElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_SELECTED)) {\n rowElement.classList.add(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_SELECTED);\n }\n } else {\n rowElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_BODY_ROW_SELECTED);\n }\n }\n\n /**\n * Resets the colspan on all expanded rows to the proper value.\n */\n private static _updateExpandedRowColspan(rows: HTMLCollectionOf<HTMLTableRowElement>, cellCount: number): void {\n const expandedRows = TableUtils._getExpandedRows(rows);\n expandedRows.forEach(row => {\n const cell = row.cells.item(0);\n if (cell) {\n cell.colSpan = cellCount;\n }\n });\n }\n\n /**\n * Updates the state of a table row element to be selected or not.\n * @param {HTMLTableRowElement} rowElement The row element.\n * @param {boolean} isSelected Whether the row is selected or not.\n */\n public static updateSelectedState(rowElement: HTMLTableRowElement, isSelected: boolean): void {\n TableUtils._setRowSelectedState(rowElement, isSelected);\n const selectCheckbox = TableUtils._getCheckboxElement(rowElement);\n if (selectCheckbox) {\n TableUtils._setSelectedCheckboxState(selectCheckbox, isSelected);\n }\n }\n\n /**\n * Get a row from the first table body by index.\n */\n public static getRowByIndex(tableElement: HTMLTableElement, index: number): HTMLTableRowElement {\n return TableUtils._getNonExpandedRows(tableElement.tBodies[0].rows)[index] as HTMLTableRowElement;\n }\n\n /**\n * Updates the state of the select all checkbox.\n * @param {HTMLTableElement} tableElement The table element.\n * @param {boolean} isAllSelected Whether the checkboxes should be checked or not.\n */\n public static updateSelectAllState(tableElement: HTMLTableElement, isAllSelected: boolean, isIndeterminate?: boolean): void {\n if (!tableElement.tHead) {\n return;\n }\n\n const lastTheadRow = tableElement.tHead.rows[tableElement.tHead.rows.length - 1];\n const selectAllCheckboxElement = TableUtils._tryGetSelectAllCheckboxElement(lastTheadRow);\n\n if (selectAllCheckboxElement) {\n TableUtils._setSelectedCheckboxState(selectAllCheckboxElement, isAllSelected);\n TableUtils._setIndeterminateCheckboxState(selectAllCheckboxElement, !!isIndeterminate);\n }\n }\n\n /**\n * Sets the selected rows in the table.\n * @param tableElement\n * @param key\n * @param data\n * @param selectedRows\n * @param preserveExisting\n */\n public static setSelectedRows(tableElement: HTMLTableElement, key: string[], data: any[], selectedRows: any[], preserveExisting: boolean = false): void {\n if (!tableElement.tBodies.length) {\n return;\n }\n\n if (!preserveExisting) {\n TableUtils.clearSelectedRows(tableElement);\n }\n\n const rows = tableElement.tBodies[0].rows;\n let selectedRowCount = 0;\n\n if (selectedRows.length) {\n Array.from(rows).forEach((row, index) => {\n const rowData = data[index];\n const existingSelection = findWhere(selectedRows, createPredicate(key, rowData));\n if (existingSelection) {\n TableUtils._setRowSelectedState(row, true);\n const selectCheckbox = TableUtils._getCheckboxElement(row);\n if (selectCheckbox) {\n TableUtils._setSelectedCheckboxState(selectCheckbox, true);\n }\n selectedRowCount++;\n }\n });\n }\n\n TableUtils.updateSelectAllState(tableElement, selectedRowCount > 0 && rows.length === selectedRowCount);\n }\n\n /**\n * Clears all selected rows in the table.\n * @param tableElement\n */\n public static clearSelectedRows(tableElement: HTMLTableElement): void {\n if (!tableElement.tBodies.length) {\n return;\n }\n const nonExpandedRows = TableUtils._getNonExpandedRows(tableElement.tBodies[0].rows);\n nonExpandedRows.forEach(row => {\n TableUtils._setRowSelectedState(row, false);\n const selectCheckbox = TableUtils._getCheckboxElement(row);\n if (selectCheckbox) {\n TableUtils._setSelectedCheckboxState(selectCheckbox, false);\n }\n });\n }\n\n /**\n * Sets the sorted column in the table.\n * @param tableElement\n * @param columnIndex\n * @param sortDirection\n */\n public static setSortedColumn(tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection): void {\n const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);\n\n // Set the active class on the icon\n const iconElement = TableUtils._getSortIconElementFromHeaderCell(cell);\n iconElement.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);\n\n // Set the sort direction on the header cell\n TableUtils._setColumnSortDirection(cell, sortDirection);\n }\n\n /**\n * Sets the sorted column in the table.\n * @param tableElement\n * @param columnIndex\n * @param sortOrder\n */\n public static setMultiSortColumnSortNumber(tableElement: HTMLTableElement, hasMultipleColumnsSorted: boolean, columnIndex: number, sortOrder: number | null): void {\n const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);\n\n const cellContainer = cell.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER}`) as HTMLElement;\n const sortOrderElement = cellContainer.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER}`) as HTMLElement;\n\n if (sortOrderElement) {\n toggleClass(sortOrderElement, typeof sortOrder !== 'number' || !hasMultipleColumnsSorted, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ORDER_HIDDEN);\n if (sortOrder) {\n sortOrderElement.textContent = sortOrder.toString();\n }\n }\n }\n\n /**\n * Removes the sorted column in the table.\n * @param tableElement\n * @param columnIndex\n */\n public static removeColumnSort(tableElement: HTMLTableElement, columnIndex: number): void {\n const cell = TableUtils._getHeaderCellByIndex(tableElement, columnIndex);\n\n // Remove any existing sort direction classes from the existing th element\n if (cell.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING)) {\n cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_ASCENDING);\n }\n if (cell.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING)) {\n cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORTED_DESCENDING);\n }\n\n // Remove the active class from the existing active sorted icon element\n const existingIconElement = TableUtils._getSortIconElementFromHeaderCell(cell);\n if (existingIconElement && existingIconElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE)) {\n existingIconElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON_ACTIVE);\n }\n }\n\n /**\n * Retrieves a header cell from the table based on index.\n * @param {HTMLTableElement} tableElement The table element.\n * @param {number} index The column index.\n */\n private static _getHeaderCellByIndex(tableElement: HTMLTableElement, index: number): HTMLTableHeaderCellElement {\n if (!tableElement.tHead) {\n throw new Error('Table head element cannot be null.');\n }\n\n const headerRow = tableElement.tHead.rows.item(0) as HTMLTableRowElement;\n return headerRow.cells.item(index) as HTMLTableHeaderCellElement;\n }\n\n /**\n * Gets the sort icon element from the table cell that contains the select all checkbox.\n * @param {HTMLTableHeaderCellElement} cell The table header cell element.\n */\n private static _getSortIconElementFromHeaderCell(cell: HTMLTableHeaderCellElement): HTMLElement {\n return cell.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_SORT_ICON}`) as HTMLElement;\n }\n\n /**\n * Adds/removes the select column on the table.\n */\n public static setSelectColumnVisibility(\n tableElement: HTMLTableElement,\n isVisible: boolean,\n selectListener: ((evt: Event) => void) | null,\n selectAllListener: ((evt: Event) => void) | null,\n selectAllTemplate: TableHeaderSelectAllTemplate | null,\n selectCheckboxAlignment: CellAlign | null,\n data: TableRow[],\n tooltipSelect: string | TableSelectTooltipCallback | null,\n tooltipSelectAll: string | null): void {\n const theadElement = tableElement.tHead;\n const tbodyElement = tableElement.tBodies[0];\n\n if (!theadElement || !tbodyElement) {\n return;\n }\n\n if (isVisible) {\n TableUtils._addSelectColumn(theadElement, tbodyElement, selectListener, selectAllListener, selectAllTemplate, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);\n } else if (TableUtils._hasSelectColumn(theadElement, tbodyElement)) {\n if (selectListener) {\n TableUtils._detachRowSelectListeners(tbodyElement, selectListener);\n }\n\n if (selectAllListener) {\n TableUtils._detachSelectAllListener(theadElement, selectAllListener);\n }\n\n TableUtils._destroySelectColumn(theadElement, tbodyElement);\n }\n }\n\n /**\n * Adds the select column to the thead/tbody elements and attaches the provided click listeners.\n * @param theadElement The table head element.\n * @param tbodyElement The table body element.\n * @param selectListener The row select listener.\n * @param selectAllListener The select all checkbox listener.\n */\n private static _addSelectColumn(\n theadElement: HTMLTableSectionElement,\n tbodyElement: HTMLTableSectionElement,\n selectListener: ((evt: Event) => void) | null,\n selectAllListener: ((evt: Event) => void) | null,\n selectAllTemplate: TableHeaderSelectAllTemplate | null,\n selectCheckboxAlignment: CellAlign | null,\n data: TableRow[],\n tooltipSelect: string | TableSelectTooltipCallback | null,\n tooltipSelectAll: string | null\n ): void {\n TableUtils._createSelectColumn(theadElement, tbodyElement, !!selectAllListener, selectAllTemplate, () => {\n if (selectAllListener) {\n TableUtils._tryAttachSelectAllTemplateListener(theadElement, selectAllListener);\n }\n }, selectCheckboxAlignment, data, tooltipSelect, tooltipSelectAll);\n\n if (selectListener) {\n TableUtils._attachRowSelectListeners(tbodyElement, selectListener);\n }\n\n if (selectAllListener && !selectAllTemplate) {\n TableUtils._tryAttachSelectAllTemplateListener(theadElement, selectAllListener);\n }\n }\n\n /**\n * Adds/removes the dense class on the table.\n */\n public static setDenseState(tableElement: HTMLTableElement, isDense: boolean): void {\n if (tableElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_DENSE)) {\n tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_DENSE);\n }\n if (isDense) {\n tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_DENSE);\n }\n }\n\n /**\n * Adds/removes the roomy class on the table.\n */\n public static setRoomyState(tableElement: HTMLTableElement, isRoomy: boolean): void {\n if (tableElement.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROOMY)) {\n tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_ROOMY);\n }\n if (isRoomy) {\n tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_ROOMY);\n }\n }\n\n public static setResizable(configuration: ITableConfiguration): void {\n const thead = configuration.tableElement.tHead;\n if (configuration.resizable) {\n configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_RESIZABLE);\n TableUtils._addResizeHandles(thead, configuration);\n } else {\n configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_RESIZABLE);\n TableUtils._removeResizeHandles(thead, configuration);\n }\n }\n\n private static _addResizeHandles(thead: HTMLTableSectionElement | null, configuration: ITableConfiguration): void {\n if (!thead) {\n return;\n }\n\n const firstRow = thead.rows.item(0);\n if (firstRow) {\n let cells = Array.from(firstRow.cells);\n\n // If the select column is on, we need to skip the first cell\n if (configuration.selectListener) {\n cells = cells.slice(1);\n }\n\n for (const cell of cells) {\n const index = cells.indexOf(cell);\n const columnConfig = configuration.columnConfigurations[index];\n if (columnConfig.resizable !== false) {\n const resizeHandle = document.createElement('div');\n resizeHandle.classList.add(TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE);\n cell.appendChild(resizeHandle);\n }\n }\n }\n }\n\n private static _removeResizeHandles(thead: HTMLTableSectionElement | null, configuration: ITableConfiguration): void {\n if (!thead) {\n return;\n }\n const firstRow = thead.rows.item(0);\n if (firstRow) {\n let cells = Array.from(firstRow.cells);\n // If the select column is on, we need to skip the first cell\n if (configuration.selectListener) {\n cells = cells.slice(1);\n }\n for (const cell of cells) {\n const resizeHandle = document.querySelector(`.${TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE}`);\n if (resizeHandle) {\n cell.removeChild(resizeHandle);\n }\n }\n }\n }\n\n /**\n * Adds/removes the wrap class on the table.\n */\n public static setWrapContentState(tableElement: HTMLTableElement, wrapContent: boolean): void {\n if (wrapContent) {\n tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_NO_WRAP_CONTENT);\n } else {\n tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_NO_WRAP_CONTENT);\n }\n }\n\n /**\n *\n * @param {HTMLTableElement} tableElement The table element.\n * @param {boolean} isVisible Whether the select all option is visible or not.\n */\n public static setSelectAllVisibility(\n tableElement: HTMLTableElement,\n isVisible: boolean,\n listener: ((evt: Event) => void) | null,\n selectAllTemplate: TableHeaderSelectAllTemplate | null,\n selectCheckboxAlignment: CellAlign | null,\n tooltipSelectAll: string | null): void {\n const theadElement = tableElement.tHead;\n\n if (!theadElement) {\n return;\n }\n\n if (!isVisible && listener) {\n TableUtils._detachSelectAllListener(theadElement, listener);\n }\n\n const lastTheadRow = theadElement.rows[theadElement.rows.length - 1];\n const selectAllCell = lastTheadRow.cells.item(0) as HTMLTableHeaderCellElement;\n\n if (isVisible) {\n // Only add the checkbox if it doesn't already exist\n if (!selectAllCell.childElementCount) {\n selectAllCell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);\n\n if (selectAllTemplate) {\n TableUtils._renderSelectAllTemplate(selectAllTemplate, theadElement).then(() => {\n if (listener) {\n TableUtils._tryAttachSelectAllTemplateListener(theadElement, listener);\n }\n });\n } else {\n selectAllCell.appendChild(TableUtils._createCheckboxElement(true, selectCheckboxAlignment || null, null, null, null, tooltipSelectAll));\n }\n\n if (listener && !selectAllTemplate) {\n TableUtils._attachSelectAllListener(theadElement, listener);\n }\n }\n } else {\n if (listener) {\n TableUtils._detachSelectAllListener(theadElement, listener);\n }\n removeAllChildren(selectAllCell);\n }\n }\n\n /**\n * Controls the visibility of the table filter row.\n * @param {ITableConfiguration} configuration The table configuration.\n */\n public static setFilterRow(configuration: ITableConfiguration): void {\n if (!configuration.tableElement.tHead) {\n return;\n }\n\n const filterRowElement = TableUtils._getFilterRowElement(configuration.tableElement.tHead);\n let selectAllCell: HTMLTableCellElement | undefined;\n\n // Toggle the filter visible class on the table element to control styles of rows/cells\n if (configuration.filter) {\n configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_FILTER_VISIBLE);\n } else {\n configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_FILTER_VISIBLE);\n }\n\n if (configuration.filter && !filterRowElement) {\n // We can stop here if there are no filterable columns\n if (configuration.columnConfigurations.every(cc => !cc.filter)) {\n return;\n }\n\n // Gets the select all cell contents so it can be moved to the new filter row after creating the row element\n if (configuration.selectListener && configuration.selectAllListener) {\n const lastTheadRow = configuration.tableElement.tHead.rows[configuration.tableElement.tHead.rows.length - 1];\n selectAllCell = lastTheadRow.cells.item(0) as HTMLTableHeaderCellElement;\n }\n\n const rowElement = TableUtils._createFilterRowElement(configuration);\n\n // Move the select all cell to the new filter row\n if (rowElement && selectAllCell) {\n Array.from(selectAllCell.children).forEach(child => {\n rowElement.cells.item(0)?.appendChild(child);\n });\n }\n } else if (!configuration.filter && filterRowElement) {\n // Move the select all cell to the previous row\n if (configuration.selectListener && configuration.selectAllListener) {\n selectAllCell = filterRowElement.cells.item(0) as HTMLTableHeaderCellElement;\n\n const previousRowElementIndex = Array.from(configuration.tableElement.tHead.rows).indexOf(filterRowElement) - 1;\n const previousRowElement = configuration.tableElement.tHead.rows.item(previousRowElementIndex);\n\n if (previousRowElement) {\n Array.from(selectAllCell.children).forEach(child => {\n previousRowElement.cells.item(0)?.appendChild(child);\n });\n }\n }\n\n removeElement(filterRowElement);\n }\n }\n\n /**\n * Creates the table filter row element.\n * @param {ITableConfiguration} configuration The table configuration.\n */\n private static _createFilterRowElement(configuration: ITableConfiguration): HTMLTableRowElement {\n if (!configuration.tableElement.tHead) {\n throw new Error('Table head element cannot be null.');\n }\n\n const filterRow = configuration.tableElement.tHead.insertRow();\n addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_HEAD_ROW_FILTER], filterRow);\n\n if (configuration.selectListener) {\n const th = document.createElement('th');\n addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);\n\n filterRow.insertBefore(th, filterRow.cells[0]);\n th.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_SELECT);\n }\n\n configuration.columnConfigurations.forEach((columnConfig, columnIndex) => {\n const th = document.createElement('th');\n addClass([TABLE_CONSTANTS.classes.TABLE_CELL, TABLE_CONSTANTS.classes.TABLE_HEAD_CELL], th);\n\n if (columnConfig.filter && isDefined(columnConfig.filterDelegate)) {\n const container = document.createElement('div');\n container.classList.add(TABLE_CONSTANTS.classes.TABLE_HEAD_CELL_CONTAINER);\n\n if (columnConfig.align) {\n TableUtils._setCellAlignmentClass(container, columnConfig.align);\n }\n\n const element = TableUtils._createFilterElement(columnConfig, columnIndex, configuration.filterListener as TableFilterListener);\n container.appendChild(element);\n th.appendChild(container);\n }\n\n filterRow.appendChild(th);\n });\n\n return filterRow;\n }\n\n /**\n * Creates the element that will be used as the filter for this column.\n * @param {IColumnConfiguration} columnConfig The column configuration.\n */\n private static _createFilterElement(columnConfig: IColumnConfiguration, columnIndex: number, filterListener: TableFilterListener): HTMLElement {\n let delegate: IFormFieldComponentDelegate<any> | IBaseComponentDelegate<HTMLElement>;\n\n if (isFunction(columnConfig.filterDelegate)) {\n delegate = (columnConfig.filterDelegate as TableFilterDelegateFactory)();\n } else if (columnConfig.filterDelegate instanceof FormFieldComponentDelegate || columnConfig.filterDelegate instanceof BaseComponentDelegate) {\n delegate = columnConfig.filterDelegate;\n } else {\n throw new Error('Invalid filter delegate.');\n }\n\n // If this is a FormFieldComponentDelegate then we can listen for when the value changes, otherwise we just render the custom delegate element\n if (!!filterListener && delegate instanceof FormFieldComponentDelegate && isFunction(delegate.onChange)) {\n if (!isDefined(columnConfig.filterDebounceTime) || isNumber(columnConfig.filterDebounceTime)) {\n const debounceTime = isDefined(columnConfig.filterDebounceTime) ? (columnConfig.filterDebounceTime as number) : TABLE_CONSTANTS.numbers.DEFAULT_FILTER_DEBOUNCE_TIME;\n delegate.onChange(debounce((value: any) => filterListener(value, columnIndex), debounceTime));\n } else {\n delegate.onChange((value: any) => filterListener(value, columnIndex));\n }\n }\n\n return delegate.element;\n }\n\n /**\n * Gets the filter row from the table head element rows, or undefined if not found.\n * @param {HTMLTableRowElement | undefined} tHeadElement The thead element.\n */\n private static _getFilterRowElement(tHeadElement: HTMLTableSectionElement | null): HTMLTableRowElement | undefined {\n if (!tHeadElement) {\n return;\n }\n return Array.from(tHeadElement.rows).find(r => r.classList.contains(TABLE_CONSTANTS.classes.TABLE_HEAD_ROW_FILTER));\n }\n\n /**\n * Expands a row by inserting a new row beneath it and displaying the provided template content.\n * @param configuration The table configuration.\n * @param rowIndex The index of the row to expand.\n * @param template The template for the expanded row content.\n */\n public static async expandRow(configuration: ITableConfiguration, rowIndex: number, template: TableViewTemplate): Promise<void> {\n const tbody = configuration.tableElement.tBodies[0];\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbody.rows);\n const requestedRow = nonExpandedRows[rowIndex];\n requestedRow.classList.add(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED);\n\n const actualRowIndex = Array.from(tbody.rows).indexOf(requestedRow);\n const expandedRow = tbody.insertRow(actualRowIndex + 1);\n addClass([TABLE_CONSTANTS.classes.TABLE_ROW, TABLE_CONSTANTS.classes.TABLE_BODY_ROW, TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT], expandedRow);\n\n const td = expandedRow.insertCell();\n td.setAttribute('colspan', requestedRow.cells.length.toString());\n td.classList.add(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT_CELL);\n\n const contentDiv = document.createElement('div');\n\n const expansionPanel = document.createElement(EXPANSION_PANEL_CONSTANTS.elementName) as IExpansionPanelComponent;\n expansionPanel.appendChild(contentDiv);\n td.appendChild(expansionPanel);\n\n let content = template as string | HTMLElement | undefined;\n\n if (isFunction(template)) {\n const rowData = configuration.data[rowIndex] ? configuration.data[rowIndex].data : undefined;\n const templateValue = (template as TableViewTemplateBuilder)(rowIndex, contentDiv, rowData);\n try {\n const result = await Promise.resolve(templateValue);\n content = isTemplateResultObject(result) ? result.content : result;\n } catch (e) {\n console.error('Failed to load row template ' + e.message);\n content = '';\n }\n }\n\n if (content) {\n TableUtils._setRowTemplate(contentDiv, content);\n }\n\n window.requestAnimationFrame(() => expansionPanel.open = true);\n }\n\n /**\n * Sets the template content in the table row element.\n * @param {HTMLElement} element The element to the append the template to.\n * @param {string | HTMLElement} template The template content.\n */\n private static _setRowTemplate(element: HTMLElement, template: string | HTMLElement): void {\n if (isString(template)) {\n element.innerHTML = template as string;\n } else {\n element.appendChild(template as HTMLElement);\n }\n }\n\n /**\n * Collapses an expanded table row.\n * @param configuration The table configuration.\n * @param rowIndex The index of the row to collapse.\n */\n public static collapseRow(configuration: ITableConfiguration, rowIndex: number): Promise<void> {\n if (!configuration.tableElement || !configuration.tableElement.tBodies.length || !configuration.tableElement.tBodies[0].rows.length) {\n return Promise.resolve();\n }\n\n const tbody = configuration.tableElement.tBodies[0];\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbody.rows);\n const requestedRow = nonExpandedRows[rowIndex];\n const actualRowIndex = Array.from(tbody.rows).indexOf(requestedRow);\n\n if (requestedRow && requestedRow.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED)) {\n const expandableRow = tbody.rows[actualRowIndex + 1];\n const expansionPanel = expandableRow.querySelector(EXPANSION_PANEL_CONSTANTS.elementName) as IExpansionPanelComponent;\n if (expansionPanel && expansionPanel.open) {\n expansionPanel.open = false;\n return new Promise<void>(resolve => {\n setTimeout(() => {\n requestedRow.classList.remove(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED);\n removeElement(expandableRow);\n resolve();\n }, EXPANSION_PANEL_CONSTANTS.numbers.COLLAPSE_ANIMATION_DURATION);\n });\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Checks if a row is expanded or not.\n * @param configuration The table configuration.\n * @param rowIndex The row index.\n * @returns {boolean}\n */\n public static isRowExpanded(configuration: ITableConfiguration, rowIndex: number): boolean {\n const tbody = configuration.tableElement.tBodies[0];\n const nonExpandedRows = TableUtils._getNonExpandedRows(tbody.rows);\n const requestedRow = nonExpandedRows[rowIndex];\n return requestedRow && requestedRow.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDED);\n }\n\n /**\n * Sets the fixed class on the table element based on whether fixed headers were requested or not.\n * @param configuration The table configuration.\n */\n public static setFixedHeaders(configuration: ITableConfiguration): void {\n if (configuration.fixedHeaders) {\n configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_FIXED);\n } else {\n configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_FIXED);\n }\n }\n\n /**\n * Sets the table layout algorithm.\n * @param configuration The table configuration.\n */\n public static setLayoutType(configuration: ITableConfiguration): void {\n if (configuration.layoutType === 'fixed') {\n configuration.tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE_LAYOUT_FIXED);\n } else {\n configuration.tableElement.classList.remove(TABLE_CONSTANTS.classes.TABLE_LAYOUT_FIXED);\n }\n }\n\n /**\n * Ensures that any columns width styles are within the bounds of available space.\n * @param configuration The table configuration.\n */\n public static normalizeColumnWidths(configuration: ITableConfiguration): void {\n const tableElement = configuration.tableElement;\n if (tableElement.tHead && tableElement.tHead.rows.length) {\n const cells = Array.from(tableElement.tHead.rows[0].cells);\n for (const cell of cells) {\n const expectedWidth = getComputedStyle(cell).width;\n if (cell.style.width && cell.style.width !== expectedWidth) {\n cell.style.width = expectedWidth;\n }\n }\n }\n }\n\n /**\n * Toggles the visibility of the resize cell indicator for all table cells.\n * @param configuration The table configuration.\n * @param columnIndex The cell index of the column being resized.\n * @param isVisible Whether to show the indicator or not.\n */\n public static setColumnResizeIndicatorVisibility(configuration: ITableConfiguration, columnIndex: number, isVisible: boolean): void {\n const tableElement = configuration.tableElement;\n\n if (tableElement.tHead && tableElement.tHead.rows.length) {\n const rows = Array.from(tableElement.tHead.rows);\n for (const row of rows) {\n const cell = row.cells[columnIndex];\n if (cell) {\n if (isVisible) {\n cell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);\n } else {\n cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);\n }\n }\n }\n }\n\n if (tableElement.tBodies.length) {\n const rows = Array.from(tableElement.tBodies[0].rows);\n for (const row of rows) {\n const cell = row.cells[columnIndex];\n if (cell) {\n if (isVisible) {\n cell.classList.add(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);\n } else {\n cell.classList.remove(TABLE_CONSTANTS.classes.TABLE_CELL_RESIZABLE);\n }\n }\n }\n }\n }\n\n public static setRowClickListeners(tableElement: HTMLTableElement, allowClick: boolean, clickListener: (evt: Event) => void, doubleClickListener: (evt: Event) => void): void {\n const tbodyElement = tableElement.tBodies[0];\n\n if (!tbodyElement) {\n return;\n }\n\n if (allowClick) {\n TableUtils._attachRowClickListeners(tbodyElement, clickListener, doubleClickListener);\n } else {\n TableUtils._detachRowClickListeners(tbodyElement, clickListener, doubleClickListener);\n }\n }\n\n public static setRowClickAttributes(tableElement: HTMLTableElement, allowClick: boolean): void {\n const tbodyElement = tableElement.tBodies[0];\n\n if (!tbodyElement) {\n return;\n }\n\n if (allowClick) {\n TableUtils._addRowClickAttributes(tbodyElement);\n } else {\n TableUtils._removeRowClickAttributes(tbodyElement);\n }\n }\n\n public static getOwnerDocument(el: HTMLElement): Document {\n return el.ownerDocument || document;\n }\n\n private static _prepend(element: HTMLElement, target: HTMLElement): void {\n const elementToSetBefore = target.childNodes.item(0);\n\n if (elementToSetBefore) {\n target.insertBefore(element, elementToSetBefore);\n } else {\n target.appendChild(element);\n }\n }\n\n private static _isMac(): boolean {\n // Not checking for `MacIntel` because Apple Silicon\n return !!(navigator && navigator.platform && navigator.platform.substr(0, 3) === 'Mac');\n }\n\n private static _renderSelectAllTemplate(selectAllTemplate: TableHeaderSelectAllTemplate, theadElement: HTMLTableSectionElement): Promise<string | HTMLElement | void> {\n return Promise.resolve(selectAllTemplate()).then(element => {\n const lastTheadRow = theadElement.rows.item(theadElement.rows.length - 1);\n\n if (!lastTheadRow) {\n return;\n }\n\n const targetElement = lastTheadRow.cells.item(0);\n\n if (element && targetElement) {\n if (typeof element === 'string') {\n targetElement.innerHTML = element;\n } else if (element instanceof HTMLElement) {\n targetElement.appendChild(element);\n }\n\n targetElement.setAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE, '');\n }\n });\n }\n}\n", "import { addClass, removeAllChildren, removeClass } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { ITableComponent } from './table';\nimport { TABLE_CONSTANTS } from './table-constants';\nimport { TableUtils } from './table-utils';\nimport { CellAlign, ITableConfiguration, SortDirection, TableHeaderSelectAllTemplate, TableViewTemplate, TableSelectTooltipCallback } from './types';\nimport { TableRow } from './table-row';\n\nexport interface ITableAdapter extends IBaseAdapter {\n initialize: () => void;\n getTableElement: () => HTMLTableElement;\n createTable: (configuration: ITableConfiguration) => void;\n recreateTableBody: (configuration: ITableConfiguration) => void;\n setSelectedRows: (tableElement: HTMLTableElement, key: string[], data: any[], selectedRows: any[], preserveExisting?: boolean) => void;\n clearSelectedRows: (tableElement: HTMLTableElement) => void;\n updateSelectedState: (rowElement: HTMLTableRowElement, isSelected: boolean) => void;\n updateSelectAllState: (tableElement: HTMLTableElement, isAllSelected: boolean, isIndeterminate?: boolean) => void;\n setSortedColumn: (tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection) => void;\n removeColumnSort: (tableElement: HTMLTableElement, columnIndex: number) => void;\n setSortDirection: (tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection) => void;\n setSelectColumnVisibility: (tableElement: HTMLTableElement, isVisible: boolean, selectListener: (evt: Event) => void, selectAllListener?: (evt: Event) => void, selectAllTemplate?: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment?: CellAlign, data?: TableRow[], tooltipSelect?: string | TableSelectTooltipCallback, tooltipSelectAll?: string) => void;\n setDense: (tableElement: HTMLTableElement, isDense: boolean) => void;\n setRoomy(tableElement: HTMLTableElement, isRoomy: boolean): void;\n setResizable: (configuration: ITableConfiguration) => void;\n setSelectAllVisibility: (tableElement: HTMLTableElement, isVisible: boolean, listener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment?: CellAlign, tooltipSelectAll?: string) => void;\n setFilterRow: (configuration: ITableConfiguration) => void;\n expandRow(configuration: ITableConfiguration, rowIndex: number, template: TableViewTemplate): Promise<void>;\n collapseRow(configuration: ITableConfiguration, rowIndex: number): Promise<void>;\n isRowExpanded(configuration: ITableConfiguration, rowIndex: number): boolean;\n setFixedHeaders(configuration: ITableConfiguration): void;\n setTableLayoutType(configuration: ITableConfiguration): void;\n setWrapContentState(configuration: ITableConfiguration): void;\n addDocumentListener(type: string, listener: (evt: MouseEvent) => void): void;\n removeDocumentListener(type: string, listener: (evt: MouseEvent) => void): void;\n normalizeColumnWidths(configuration: ITableConfiguration): void;\n setResizeColumnVisibility(configuration: ITableConfiguration, columnIndex: number, isVisible: boolean): void;\n addTableClass(classes: string | string[]): void;\n removeTableClass(classes: string | string[]): void;\n setRowClickListeners(tableElement: HTMLTableElement, allowClick: boolean, clickListener: (evt: Event) => void, doubleClickListener: (evt: Event) => void): void;\n setRowClickAttributes(tableElement: HTMLTableElement, allowClick: boolean): void;\n}\n\n/**\n * Provides facilities for interacting with the internal DOM of `TableComponent`.\n */\nexport class TableAdapter extends BaseAdapter<ITableComponent> implements ITableAdapter {\n private _tableElement: HTMLTableElement;\n\n constructor(component: ITableComponent) {\n super(component);\n }\n\n public initialize(): void {\n if (!this._tableElement) {\n this._tableElement = document.createElement('table');\n this._tableElement.classList.add(TABLE_CONSTANTS.classes.TABLE);\n\n if (this._component.children.length) {\n removeAllChildren(this._component);\n }\n\n this._component.appendChild(this._tableElement);\n }\n }\n\n public getTableElement(): HTMLTableElement {\n if (!this._tableElement) {\n this.initialize();\n }\n return this._tableElement;\n }\n\n public createTable(configuration: ITableConfiguration): void {\n return TableUtils.createTable(configuration);\n }\n\n public recreateTableBody(configuration: ITableConfiguration): void {\n TableUtils.recreateTableBody(configuration);\n }\n\n public setSelectedRows(tableElement: HTMLTableElement, key: string[], data: any[], selectedRows: any[], preserveExisting: boolean = false): void {\n TableUtils.setSelectedRows(tableElement, key, data, selectedRows, preserveExisting);\n }\n\n public clearSelectedRows(tableElement: HTMLTableElement): void {\n TableUtils.clearSelectedRows(tableElement);\n }\n\n public updateSelectedState(rowElement: HTMLTableRowElement, isSelected: boolean): void {\n TableUtils.updateSelectedState(rowElement, isSelected);\n }\n\n public updateSelectAllState(tableElement: HTMLTableElement, isAllSelected: boolean, isIndeterminate?: boolean): void {\n TableUtils.updateSelectAllState(tableElement, isAllSelected, isIndeterminate);\n }\n\n public setSortedColumn(tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection): void {\n TableUtils.setSortedColumn(tableElement, columnIndex, sortDirection);\n }\n\n public removeColumnSort(tableElement: HTMLTableElement, columnIndex: number): void {\n TableUtils.removeColumnSort(tableElement, columnIndex);\n }\n\n public setSortDirection(tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection): void {\n TableUtils.setSortDirection(tableElement, columnIndex, sortDirection);\n }\n\n public setSelectColumnVisibility(\n tableElement: HTMLTableElement,\n isVisible: boolean,\n selectListener: (evt: Event) => void,\n selectAllListener?: (evt: Event) => void,\n selectAllTemplate?: TableHeaderSelectAllTemplate | null,\n selectCheckboxAlignment?: CellAlign,\n data?: TableRow[],\n tooltipSelect?: string | TableSelectTooltipCallback,\n tooltipSelectAll?: string): void {\n TableUtils.setSelectColumnVisibility(\n tableElement,\n isVisible,\n selectListener,\n selectAllListener || null,\n selectAllTemplate || null,\n selectCheckboxAlignment || null,\n data || [],\n tooltipSelect || null,\n tooltipSelectAll || null);\n }\n\n public setDense(tableElement: HTMLTableElement, isDense: boolean): void {\n TableUtils.setDenseState(tableElement, isDense);\n }\n\n public setRoomy(tableElement: HTMLTableElement, isRoomy: boolean): void {\n TableUtils.setRoomyState(tableElement, isRoomy);\n }\n\n public setResizable(configuration: ITableConfiguration): void {\n TableUtils.setResizable(configuration);\n }\n\n public setSelectAllVisibility(\n tableElement: HTMLTableElement,\n isVisible: boolean,\n listener: ((evt: Event) => void) | null,\n selectAllTemplate: TableHeaderSelectAllTemplate | null,\n selectCheckboxAlignment?: CellAlign,\n tooltipSelectAll: string | null = null): void {\n TableUtils.setSelectAllVisibility(\n tableElement,\n isVisible,\n listener,\n selectAllTemplate,\n selectCheckboxAlignment || null,\n tooltipSelectAll || null);\n }\n\n public setFilterRow(configuration: ITableConfiguration): void {\n TableUtils.setFilterRow(configuration);\n }\n\n public expandRow(configuration: ITableConfiguration, rowIndex: number, template: TableViewTemplate): Promise<void> {\n return TableUtils.expandRow(configuration, rowIndex, template);\n }\n\n public collapseRow(configuration: ITableConfiguration, rowIndex: number): Promise<void> {\n return TableUtils.collapseRow(configuration, rowIndex);\n }\n\n public isRowExpanded(configuration: ITableConfiguration, rowIndex: number): boolean {\n return TableUtils.isRowExpanded(configuration, rowIndex);\n }\n\n public setFixedHeaders(configuration: ITableConfiguration): void {\n TableUtils.setFixedHeaders(configuration);\n }\n\n public setTableLayoutType(configuration: ITableConfiguration): void {\n TableUtils.setLayoutType(configuration);\n }\n\n public setWrapContentState(configuration: ITableConfiguration): void {\n TableUtils.setWrapContentState(configuration.tableElement, configuration.wrapContent);\n }\n\n public addDocumentListener(type: string, listener: (evt: MouseEvent) => void): void {\n TableUtils.getOwnerDocument(this._component).addEventListener(type, listener);\n }\n\n public removeDocumentListener(type: string, listener: (evt: MouseEvent) => void): void {\n TableUtils.getOwnerDocument(this._component).removeEventListener(type, listener);\n }\n\n public normalizeColumnWidths(configuration: ITableConfiguration): void {\n TableUtils.normalizeColumnWidths(configuration);\n }\n\n public setResizeColumnVisibility(configuration: ITableConfiguration, columnIndex: number, isVisible: boolean): void {\n TableUtils.setColumnResizeIndicatorVisibility(configuration, columnIndex, isVisible);\n }\n\n public addTableClass(classes: string | string[]): void {\n addClass(classes, this._tableElement);\n }\n\n public removeTableClass(classes: string | string[]): void {\n removeClass(classes, this._tableElement);\n }\n\n public setRowClickListeners(tableElement: HTMLTableElement, allowClick: boolean, clickListener: (evt: Event) => void, doubleClickListener: (evt: Event) => void): void {\n TableUtils.setRowClickListeners(tableElement, allowClick, clickListener, doubleClickListener);\n }\n\n public setRowClickAttributes(tableElement: HTMLTableElement, allowClick: boolean): void {\n TableUtils.setRowClickAttributes(tableElement, allowClick);\n }\n}\n", "import { ColorPickerAdapter } from '../color-picker';\nimport { ISortedItem, ISortedItemUpdate, SortDirection } from './types';\n\nexport class MultiSortManager {\n private _sortedColumns: ISortedItem[] = [];\n\n public get sortedColumns(): ISortedItem[] {\n return [...this._sortedColumns.map(c => ({...c}))];\n }\n\n public addSortColumn(column: ISortedItem): void {\n this._sortedColumns.push({...column});\n this._updateSortNumbers();\n }\n\n public updateSortColumn(column: ISortedItemUpdate): void {\n const col = this._sortedColumns.find(c => c.columnIndex === column.columnIndex);\n if (col) {\n switch (col.direction) {\n case SortDirection.Ascending:\n this.removeSortColumn(column);\n break;\n case SortDirection.Descending:\n col.direction = SortDirection.Ascending;\n break;\n case SortDirection.Unset:\n col.direction = SortDirection.Descending;\n break;\n }\n }\n }\n\n public setSortColumns(columns: ISortedItem[]): void {\n this._sortedColumns = [...columns.map(c => ({...c}))];\n }\n\n public removeSortColumn(columnOrIndex: ISortedItem | number): void {\n if (typeof columnOrIndex === 'number') {\n this._sortedColumns.splice(columnOrIndex, 1);\n } else {\n this._sortedColumns.splice(this._sortedColumns.indexOf(columnOrIndex), 1);\n }\n\n this._updateSortNumbers();\n }\n\n public isSortColumn(columnOrIndex: ISortedItem | number): boolean {\n if (typeof columnOrIndex === 'number') {\n return this._sortedColumns.some(c => c.columnIndex === columnOrIndex);\n } else {\n return this._sortedColumns.includes(columnOrIndex);\n }\n }\n\n public clearMultiSort(): void {\n this._sortedColumns = [];\n }\n\n public getSortColumn(columnIndex: number): ISortedItem | undefined {\n return this._sortedColumns.find(c => c.columnIndex === columnIndex);\n }\n\n private _updateSortNumbers(): void {\n // only do a real sort if every sortNumber is actually a number\n if (this._sortedColumns.every(c => typeof c.sortOrder === 'number')) {\n this._sortedColumns.sort((col1, col2) => col1.sortOrder as number - (col2.sortOrder as number));\n }\n\n this._sortedColumns.forEach((column, index) => column.sortOrder = index + 1);\n }\n}\n", "/**\n * Represents a row within the table.\n */\nexport class TableRow {\n constructor(public data: any, public selected: boolean = false) {}\n}\n", "import { createPredicate, getEventPath, ICustomElementFoundation, isNumber, isObject, ItemManager, matchesPredicate } from '@tylertech/forge-core';\nimport { MultiSortManager } from './multi-sort-manager';\nimport { ITableAdapter } from './table-adapter';\nimport { TABLE_CONSTANTS } from './table-constants';\nimport { TableRow } from './table-row';\nimport { TableUtils } from './table-utils';\nimport {\n IColumnConfiguration,\n ITableConfiguration,\n ITableFilterEventData,\n ITableResizeEventDescriptor,\n ITableRowClickEventData,\n ITableSelectAllEventData,\n ITableSelectDoubleEventData,\n ITableSelectEventData,\n ITableSortEventData,\n SortDirection,\n TableFilterListener,\n TableLayoutType,\n TableViewTemplate,\n ITableColumnResizeEventData,\n ISortedItem,\n TableRowCreatedCallback,\n TableCellCreatedCallback,\n ITableSortMultipleEventData,\n TableHeaderSelectAllTemplate,\n CellAlign,\n TableSelectTooltipCallback\n} from './types';\n\nexport interface ITableFoundation extends ICustomElementFoundation {\n data: any[];\n columnConfigurations: IColumnConfiguration[];\n dense: boolean;\n select: boolean;\n multiselect: boolean;\n selectKey: string | string[];\n fixedHeaders: boolean;\n layoutType: TableLayoutType;\n wrapContent: boolean;\n resizable: boolean;\n minResizeWidth: number;\n allowRowClick: boolean;\n multiColumnSort: boolean;\n rowCreated: TableRowCreatedCallback;\n cellCreated: TableCellCreatedCallback;\n initialize(): void;\n connect(): void;\n hideColumn(columnIndex: number): void;\n showColumn(columnIndex: number): void;\n isColumnHidden(columnIndex: number): boolean;\n getSelectedRows(): any[];\n selectRows(data: any[], clearCurrentSelections: boolean): void;\n deselectRows(data: any[]): void;\n clearSelections(): void;\n render(): void;\n expandRow(rowIndex: number, template: TableViewTemplate): Promise<void>;\n collapseRow(rowIndex: number): Promise<void>;\n isRowExpanded(rowIndex: number): boolean;\n isRowSelected(rowData: { [key: string]: any }): boolean;\n selectRowsByIndex(indexes: number | number[], preserveExisting?: boolean): void;\n deselectRowsByIndex(indexes: number[]): void;\n selectAllTemplate: TableHeaderSelectAllTemplate;\n selectCheckboxAlignment: CellAlign;\n tooltipSelect: string | TableSelectTooltipCallback;\n tooltipSelectAll: string;\n}\n\ninterface IRowSelectedDescriptor {\n rowElement: HTMLTableRowElement;\n index: number;\n data: any;\n}\n\n/**\n * The state class behind the `TableComponent` custom element.\n */\nexport class TableFoundation implements ITableFoundation {\n // Backing model values\n private _tableRows: TableRow[] = [];\n private _data: any[] = [];\n private _columnConfigurations: IColumnConfiguration[] = [];\n private _select = false;\n private _multiselect = true;\n private _selectKey: string[];\n private _originalSelectKey: string | string[];\n private _dense = false;\n private _roomy = false;\n private _filter = false;\n private _fixedHeaders = false;\n private _layoutType: TableLayoutType = TABLE_CONSTANTS.strings.DEFAULT_LAYOUT_TYPE as TableLayoutType;\n private _wrapContent = true;\n private _resizable = false;\n private _minResizeWidth = TABLE_CONSTANTS.numbers.MIN_RESIZE_WIDTH;\n private _multiColumnSort = false;\n private _selectCheckboxAlignment: CellAlign = CellAlign.Center;\n private _tooltipSelect: string | TableSelectTooltipCallback;\n private _tooltipSelectAll: string;\n private _rowCreatedCallback: TableRowCreatedCallback;\n private _cellCreatedCallback: TableCellCreatedCallback;\n private _selectAllTemplate: TableHeaderSelectAllTemplate;\n\n // Listeners\n private _rowClickListener: (evt: MouseEvent) => void;\n private _rowDoubleClickListener: (evt: Event) => void;\n private _selectRowListener: (evt: Event) => void;\n private _selectAllListener: (evt: Event) => void;\n private _headRowMouseDownListener: (evt: MouseEvent) => void;\n private _headRowContextMenuListener: (evt: MouseEvent) => void;\n private _documentMouseMoveListener: (evt: MouseEvent) => void;\n private _documentMouseUpListener: (evt: MouseEvent) => void;\n private _filterListener: TableFilterListener;\n\n // State variables\n private _isAllSelected = false;\n private _sortedColumnIndex = -1;\n private _sortDirection: SortDirection | undefined;\n private _rendered = false;\n private _resizeDescriptor: ITableResizeEventDescriptor | undefined;\n private _headCellMouseDownIndex: number | undefined;\n private _allowRowClick = false;\n private _previouslyClickedRow: IRowSelectedDescriptor | undefined;\n private _multiSortManager = new MultiSortManager();\n\n // Helpers\n private _selectionManager: ItemManager<any>;\n private _hiddenColumnManager: ItemManager<IColumnConfiguration>;\n\n constructor(private _adapter: ITableAdapter) {\n // Create all listeners\n this._rowClickListener = evt => this._onRowClick(evt);\n this._rowDoubleClickListener = evt => this._onRowDoubleClick(evt);\n this._selectRowListener = evt => this._onRowSelected(evt);\n this._selectAllListener = evt => this._onSelectAll(evt);\n this._headRowMouseDownListener = evt => this._onHeadRowMouseDown(evt);\n this._headRowContextMenuListener = evt => this._onHeadRowContextMenu(evt);\n this._documentMouseMoveListener = evt => this._onMouseMove(evt);\n this._documentMouseUpListener = evt => this._onMouseUp(evt);\n this._filterListener = (value: any, columnIndex: number) => this._onFilter(value, columnIndex);\n\n // Create helpers\n this._selectionManager = new ItemManager<any>(this._selectKey);\n this._hiddenColumnManager = new ItemManager<IColumnConfiguration>();\n }\n\n /** Called when the component is connected to the DOM. */\n public initialize(): void {\n this.connect();\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.SELECT, this._select.toString());\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.MULTISELECT, this._multiselect.toString());\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.DENSE, this._dense.toString());\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.ROOMY, this._roomy.toString());\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.FILTER, this._filter.toString());\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.INITIALIZED, undefined, false);\n }\n\n public connect(): void {\n this._adapter.initialize();\n }\n\n public disconnect(): void {\n this._resizeDescriptor = undefined;\n this._adapter.removeDocumentListener('mousemove', this._documentMouseMoveListener);\n this._adapter.removeDocumentListener('mouseup', this._documentMouseUpListener);\n }\n\n /** The data to be displayed in the table body. */\n public set data(value: any[]) {\n if (Array.isArray(value) && value.length > 0) {\n if (isObject(value[0])) {\n this._data = value.map(v => ({ ...v }));\n } else {\n this._data = [...value];\n }\n } else {\n this._data = [];\n }\n\n this._tableRows = this._data.map(data => new TableRow(data, this._selectionManager.exists(data)));\n\n this._renderBody();\n }\n public get data(): any[] {\n return JSON.parse(JSON.stringify(this._data));\n }\n\n /** The column configuration options. */\n public set columnConfigurations(value: IColumnConfiguration[]) {\n // Intentional shallow copy of member properties. These member objects have properties that are references to functions.\n // The typical JSON.parse(JSON.stringify(object)) will not work here. If this becomes an issue we'll add a deepClone\n // function to the core library.\n this._columnConfigurations = value.map(cc => ({ ...cc }));\n\n // Update hidden column manager\n this._hiddenColumnManager.clear();\n this._columnConfigurations.forEach(cc => {\n if (cc.hidden) {\n this._hiddenColumnManager.add(cc);\n }\n });\n\n this._refreshTableSort(); // Must be called after updating the hidden columns\n this.render();\n }\n public get columnConfigurations(): IColumnConfiguration[] {\n // Intentional shallow copy of member properties. These member objects have properties that are references to functions.\n // The typical JSON.parse(JSON.stringify(object)) will not work here. If this becomes an issue we'll add a deepClone\n // function to the core library.\n return this._columnConfigurations.map(cc => ({ ...cc }));\n }\n\n /** Gets the visible column configurations. */\n private get _visibleColumnConfigurations(): IColumnConfiguration[] {\n return this._columnConfigurations.filter(cc => !this._hiddenColumnManager.exists(cc));\n }\n\n /** Gets the table configuration. */\n private get _tableConfiguration(): ITableConfiguration {\n return {\n tableElement: this._adapter.getTableElement(),\n columnConfigurations: this._visibleColumnConfigurations,\n data: this._tableRows,\n clickListener: this._allowRowClick ? this._rowClickListener : null,\n doubleClickListener: this._allowRowClick ? this._rowDoubleClickListener : null,\n selectListener: this._select ? this._selectRowListener : null,\n selectAllListener: this._multiselect ? this._selectAllListener : null,\n headRowMouseDownListener: this._headRowMouseDownListener,\n headRowContextMenuListener: this._headRowContextMenuListener,\n filterListener: this._filter ? this._filterListener : null,\n sortDirection: this._sortDirection,\n sortedColumn: this._sortedColumnIndex,\n multiColumnSort: this._multiColumnSort,\n filter: this._filter,\n wrapContent: this._wrapContent,\n fixedHeaders: this._fixedHeaders,\n layoutType: this._layoutType,\n dense: this._dense,\n resizable: this._resizable,\n rowCreatedCallback: this._rowCreatedCallback,\n cellCreatedCallback: this._cellCreatedCallback,\n selectAllTemplate: this._selectAllTemplate,\n selectCheckboxAlignment: this._selectCheckboxAlignment,\n tooltipSelect: this._tooltipSelect,\n tooltipSelectAll: this._tooltipSelectAll\n };\n }\n\n /** Controls the visibility of the select column. */\n public set select(value: boolean) {\n if (this._select !== value) {\n this._select = value;\n\n // Now we can add/remove the column\n this._adapter.setSelectColumnVisibility(\n this._adapter.getTableElement(),\n this._select,\n this._selectRowListener,\n this._multiselect ? this._selectAllListener : undefined,\n this._multiselect ? this._selectAllTemplate : null,\n this._selectCheckboxAlignment,\n this._tableRows,\n this._tooltipSelect,\n this._tooltipSelectAll\n );\n\n this._updateSelections(true);\n\n // Update the attribute on the host element\n if (this._select) {\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.SELECT, this._select.toString());\n } else {\n this._adapter.removeHostAttribute(TABLE_CONSTANTS.attributes.SELECT);\n }\n }\n }\n public get select(): boolean {\n return this._select;\n }\n\n /** Controls the visibility of the select all checkbox. */\n public set multiselect(value: boolean) {\n if (this._multiselect !== value) {\n this._multiselect = value;\n\n if (this._select) {\n this._adapter.setSelectAllVisibility(\n this._adapter.getTableElement(),\n this._multiselect,\n this._multiselect ? this._selectAllListener : null,\n this._multiselect ? this.selectAllTemplate : null,\n this._selectCheckboxAlignment,\n this._tooltipSelectAll);\n this._updateSelections(true);\n }\n\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.MULTISELECT, this._multiselect.toString());\n }\n }\n public get multiselect(): boolean {\n return this._multiselect;\n }\n\n /** The row key for matching data to selections. */\n public get selectKey(): string | string[] {\n if (Array.isArray(this._selectKey)) {\n return [...this._selectKey];\n }\n return this._selectKey;\n }\n public set selectKey(value: string | string[]) {\n if (this._originalSelectKey === value) {\n return;\n }\n\n if (Array.isArray(value)) {\n this._originalSelectKey = [...value];\n this._selectKey = [...value];\n } else {\n this._originalSelectKey = value;\n this._selectKey = [value];\n }\n\n this._selectionManager.setKey(this._selectKey);\n this._updateSelections(false);\n }\n\n /** Controls whether the table is dense or not. False by default. */\n public get dense(): boolean {\n return this._dense;\n }\n public set dense(value: boolean) {\n if (this._dense !== value) {\n this._dense = value;\n this._adapter.setDense(this._adapter.getTableElement(), this._dense);\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.DENSE, this._dense.toString());\n }\n }\n\n public get roomy(): boolean {\n return this._roomy;\n }\n\n public set roomy(value: boolean) {\n if (value !== this._roomy) {\n this._roomy = value;\n this._applyRoomy();\n }\n }\n\n /** Controls whether the table filters are visible or not. */\n public set filter(value: boolean) {\n if (this._filter !== value) {\n this._filter = value;\n this._adapter.setFilterRow(this._tableConfiguration);\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.FILTER, this._filter.toString());\n }\n }\n public get filter(): boolean {\n return this._filter;\n }\n\n /** Controls whether the table has fixed headers or not. */\n public set fixedHeaders(value: boolean) {\n if (this._fixedHeaders !== value) {\n this._fixedHeaders = value;\n this._adapter.setFixedHeaders(this._tableConfiguration);\n }\n }\n public get fixedHeaders(): boolean {\n return this._fixedHeaders;\n }\n\n /** Controls the table layout algorithm */\n public get layoutType(): TableLayoutType {\n return this._layoutType;\n }\n public set layoutType(value: TableLayoutType) {\n if (this._layoutType !== value) {\n this._layoutType = value;\n this._adapter.setTableLayoutType(this._tableConfiguration);\n }\n }\n\n /** Controls whether the content in each cell wraps or not */\n public get wrapContent(): boolean {\n return this._wrapContent;\n }\n public set wrapContent(value: boolean) {\n if (this._wrapContent !== value) {\n this._wrapContent = value;\n this._adapter.setWrapContentState(this._tableConfiguration);\n }\n }\n\n /** Controls whether the columns are resizable or not. */\n public get resizable(): boolean {\n return this._resizable;\n }\n public set resizable(value: boolean) {\n if (this._resizable !== value) {\n this._resizable = value;\n this._adapter.setResizable(this._tableConfiguration);\n }\n }\n\n /** Gets/sets the minimum width that a column can be resized to by the user dragging the resize handle. */\n public get minResizeWidth(): number {\n return this._minResizeWidth;\n }\n public set minResizeWidth(value: number) {\n if (this._minResizeWidth !== value) {\n this._minResizeWidth = value;\n if (!isNumber(this._minResizeWidth)) {\n this._minResizeWidth = TABLE_CONSTANTS.numbers.MIN_RESIZE_WIDTH;\n } else if (this._minResizeWidth < 0) {\n this._minResizeWidth = 0;\n }\n }\n }\n\n /** Gets/sets whether the rows respond to click events or not. */\n public get allowRowClick(): boolean {\n return this._allowRowClick;\n }\n public set allowRowClick(value: boolean) {\n if (this._allowRowClick !== value) {\n this._allowRowClick = value;\n if (this._rendered) {\n this._adapter.setRowClickListeners(this._adapter.getTableElement(), this._allowRowClick, this._rowClickListener, this._rowDoubleClickListener);\n this._adapter.setRowClickAttributes(this._adapter.getTableElement(), this._allowRowClick);\n }\n }\n }\n\n /** Gets/sets whether the table can sort multiple columns. */\n public get multiColumnSort(): boolean {\n return this._multiColumnSort;\n }\n public set multiColumnSort(value: boolean) {\n if (value !== this._multiColumnSort) {\n this._multiColumnSort = value;\n this._refreshTableSort();\n this.render();\n }\n }\n\n public get selectCheckboxAlignment(): CellAlign {\n return this._selectCheckboxAlignment;\n }\n public set selectCheckboxAlignment(value: CellAlign) {\n if (value !== this._selectCheckboxAlignment) {\n this._selectCheckboxAlignment = value;\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.SELECT_CHECKBOX_ALIGNMENT, value);\n this.render();\n }\n }\n\n public get tooltipSelect(): string | TableSelectTooltipCallback {\n return this._tooltipSelect;\n }\n public set tooltipSelect(value: string | TableSelectTooltipCallback) {\n if (value !== this._tooltipSelect) {\n this._tooltipSelect = value;\n\n if (typeof value === 'string') {\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.TOOLTIP_SELECT, value);\n }\n\n this.render();\n }\n }\n\n public get tooltipSelectAll(): string {\n return this._tooltipSelectAll;\n }\n public set tooltipSelectAll(value: string) {\n if (value !== this._tooltipSelectAll) {\n this._tooltipSelectAll = value;\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.TOOLTIP_SELECT_ALL, value);\n this.render();\n }\n }\n\n public get selectAllTemplate(): TableHeaderSelectAllTemplate {\n return this._selectAllTemplate;\n }\n\n public set selectAllTemplate(value: TableHeaderSelectAllTemplate) {\n if (value !== this._selectAllTemplate) {\n this._selectAllTemplate = value;\n this.render();\n }\n }\n\n public get rowCreated(): TableRowCreatedCallback {\n return this._rowCreatedCallback;\n }\n public set rowCreated(value: TableRowCreatedCallback) {\n this._rowCreatedCallback = value;\n }\n\n public get cellCreated(): TableCellCreatedCallback {\n return this._cellCreatedCallback;\n }\n public set cellCreated(value: TableCellCreatedCallback) {\n this._cellCreatedCallback = value;\n }\n\n public isRowSelected(rowData: { [key: string]: any }): boolean {\n const predicate = createPredicate(Array.isArray(this._selectKey) ? this._selectKey : [this._selectKey], rowData);\n return this.selectKey ? !!this._selectionManager.getItems().find(item => matchesPredicate(item, predicate)) : this._selectionManager.exists(rowData);\n }\n\n /** Returns the selected row instances. */\n public getSelectedRows(): any[] {\n return this._selectionManager.getItems();\n }\n\n /**\n * Sets the selected items in the table.\n * @param {any[]} data The data to select.\n * @param {boolean} clearCurrentSelections True to clear the current selections before setting the new selections.\n */\n public selectRows(data: any[], clearCurrentSelections: boolean): void {\n if (!this._selectKey) {\n throw new Error('You must set a selectKey to select rows.');\n }\n\n if (!this._multiselect || clearCurrentSelections) {\n this.clearSelections();\n }\n\n if (data && data.length) {\n this._selectionManager.add(data);\n this._updateSelections(!clearCurrentSelections);\n }\n }\n\n /**\n * Deselects rows from in the table data.\n * @param {any[]} data The array of items to deselect.\n */\n public deselectRows(data: any[]): void {\n if (data && data.length) {\n this._selectionManager.remove(data);\n this._updateSelections(false);\n }\n }\n\n /**\n * Clears all selections from the table.\n */\n public clearSelections(): void {\n const tableElement = this._adapter.getTableElement();\n\n this._selectionManager.clear();\n this._tableRows.forEach(tableRow => tableRow.selected = false);\n this._isAllSelected = false;\n\n this._adapter.clearSelectedRows(tableElement);\n\n if (this._select && this._multiselect) {\n this._adapter.updateSelectAllState(tableElement, false);\n }\n }\n\n /**\n * Hides a table column.\n * @param {number} columnIndex The index of the column to hide.\n */\n public hideColumn(columnIndex: number): void {\n const columnConfig = this._columnConfigurations[columnIndex];\n\n if (this._sortedColumnIndex === columnIndex) {\n this._sortedColumnIndex = -1;\n }\n\n if (!this._hiddenColumnManager.exists(columnConfig)) {\n this._hiddenColumnManager.add(columnConfig);\n this.render();\n }\n }\n\n /**\n * Shows a column that is currently hidden.\n * @param {number} columnIndex The index of the column to show.\n */\n public showColumn(columnIndex: number): void {\n const columnConfig = this._columnConfigurations[columnIndex];\n if (this._hiddenColumnManager.exists(columnConfig)) {\n this._hiddenColumnManager.remove(columnConfig);\n this.render();\n }\n }\n\n /**\n * Determines if a column at the given index is hidden or not.\n * @param {number} columnIndex The index of the column.\n * @returns {boolean} `true` if the column is hidden, `false` otherwise.\n */\n public isColumnHidden(columnIndex: number): boolean {\n const columnConfig = this._columnConfigurations[columnIndex];\n return !!columnConfig && this._hiddenColumnManager.exists(columnConfig);\n }\n\n /**\n * Creates and renders the table with the current column configuration and data.\n */\n public render(): void {\n this._adapter.createTable(this._tableConfiguration);\n this._renderSelections();\n this._rendered = true;\n }\n\n /**\n * Renders the table body only.\n */\n private _renderBody(): void {\n if (!this._rendered) {\n return;\n }\n this._adapter.recreateTableBody(this._tableConfiguration);\n this._renderSelections();\n }\n\n private _renderSelections(): void {\n if (this.select) {\n this._isAllSelected = this._getSelectAllState();\n\n if (this._multiselect) {\n this._adapter.updateSelectAllState(this._adapter.getTableElement(), this._isAllSelected, this._isIndeterminate(this._isAllSelected));\n }\n }\n\n const selections = this._selectionManager.getItems();\n if (selections.length) {\n this._adapter.setSelectedRows(this._adapter.getTableElement(), this._selectKey, this._data, selections, false);\n }\n }\n\n /**\n * Expands a collapsed row.\n * @param rowIndex The index of the row to expand.\n */\n public expandRow(rowIndex: number, template: TableViewTemplate): Promise<void> {\n if (!this._rendered) {\n throw new Error('Cannot expand a row before the table has rendered.');\n }\n\n if (rowIndex < 0 || rowIndex > this._tableRows.length) {\n throw new Error(`Invalid row index: ${rowIndex}.`);\n }\n\n return this._adapter.expandRow(this._tableConfiguration, rowIndex, template);\n }\n\n /**\n * Collapses an expanded row.\n * @param rowIndex The index of the row to expand.\n */\n public collapseRow(rowIndex: number): Promise<void> {\n if (!this._rendered) {\n return Promise.resolve();\n }\n\n if (rowIndex < 0 || rowIndex > this._tableRows.length) {\n return Promise.resolve();\n }\n\n return this._adapter.collapseRow(this._tableConfiguration, rowIndex);\n }\n\n /**\n * Check if a row is expanded or not.\n * @param rowIndex The row index to check.\n */\n public isRowExpanded(rowIndex: number): boolean {\n return this._adapter.isRowExpanded(this._tableConfiguration, rowIndex);\n }\n\n /**\n * Selects the rows by the index or indexes.\n * @param indexes The row indexes to select\n * @param preserveExisting Whether or not the existing selections should be preserved\n */\n public selectRowsByIndex(indexes: number[], preserveExisting?: boolean): void {\n const rowsToSelect = indexes.map(i => this._data[i]).filter(obj => !!obj);\n this.selectRows(rowsToSelect, !preserveExisting);\n }\n\n /**\n * Selects the rows by the index or indexes.\n * @param indexes The row indexes to deselect\n */\n public deselectRowsByIndex(indexes: number[]): void {\n const rowsToDeselect = indexes.map(i => this._data[i]).filter(obj => !!obj);\n this.deselectRows(rowsToDeselect);\n }\n\n /**\n * Determines if every row is selected or not.\n */\n private _getSelectAllState(): boolean {\n return this._tableRows.length > 0 && this._tableRows.every(tr => tr.selected);\n }\n\n /**\n * Updates the internal selection state as well as UI state.\n * @param {boolean} preserveExisting Should existing selections be preserved when updating selection state.\n */\n private _updateSelections(preserveExisting: boolean): void {\n this._tableRows.forEach(tableRow => tableRow.selected = this._selectionManager.exists(tableRow.data));\n const isAllSelected = this._getSelectAllState();\n\n this._adapter.setSelectedRows(this._adapter.getTableElement(), this._selectKey, this._data, this._selectionManager.getItems(), preserveExisting);\n\n if (isAllSelected !== this._isAllSelected || this._isIndeterminate(isAllSelected)) {\n this._isAllSelected = isAllSelected;\n\n // (derek.moss): while writting test it seemed like this could never be false.\n // maybe an unneeded check\n if (this._multiselect) {\n this._adapter.updateSelectAllState(this._adapter.getTableElement(), this._isAllSelected, this._isIndeterminate(this._isAllSelected));\n }\n }\n }\n\n /** Handles a row being single clicked. */\n private _onRowClick(evt: MouseEvent): void {\n evt.stopImmediatePropagation();\n\n // Ignore if the element being clicked is the checkbox element\n if ((evt.target as HTMLElement).tagName === 'INPUT' && (evt.target as HTMLInputElement).type === 'checkbox') {\n return;\n }\n\n const composedPath = getEventPath(evt);\n const composedElements = composedPath.filter(node => node.nodeType === 1);\n const customCellTemplateElement = composedElements.find(el => el.hasAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE));\n const stopClickPropagation = customCellTemplateElement && customCellTemplateElement.hasAttribute(TABLE_CONSTANTS.attributes.CUSTOM_CELL_TEMPLATE_STOP_PROPAGATION);\n if (stopClickPropagation) {\n return; // We ignore click events that bubble from custom templates if they were configured to stop propagation\n }\n\n const { index, data } = this._getSelectedRowFromEvent(evt);\n const evtData: ITableRowClickEventData = { index, data };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.ROW_CLICK, evtData, true, false);\n }\n\n /** Handles a row being double clicked. */\n private _onRowDoubleClick(evt: Event): void {\n evt.stopPropagation();\n\n // Ignore if the element being clicked is the checkbox element\n if ((evt.target as HTMLElement).tagName === 'INPUT' && (evt.target as HTMLInputElement).type === 'checkbox') {\n return;\n }\n\n const rowSelectedInfo = this._getSelectedRowFromEvent(evt);\n const detail: ITableSelectDoubleEventData = {\n index: rowSelectedInfo.index,\n data: rowSelectedInfo.data\n };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SELECT_DOUBLE, detail, true, false);\n }\n\n /**\n * Handles a row being selected/deselected.\n */\n private _onRowSelected(evt: Event): void {\n const rowSelectedInfo = this._getSelectedRowFromEvent(evt);\n\n // Deselect the previously selected row(s) when not in multiselect mode (only if it's different than the newly selected row)\n if (!this._multiselect) {\n const existingSelections = this._tableRows.filter(item => item.selected);\n existingSelections.forEach(selection => {\n if (!matchesPredicate(selection.data, createPredicate(this._selectKey, rowSelectedInfo.data))) {\n this.deselectRows([selection.data]);\n }\n });\n }\n\n // Determine what the new selected state should be for this row (opposite of current state)\n const isSelected = !this._selectionManager.exists(rowSelectedInfo.data);\n\n // Update the table row based on the new selected state\n this._adapter.updateSelectedState(rowSelectedInfo.rowElement, isSelected);\n\n // Update the selection manager\n if (isSelected) {\n this._selectionManager.add(rowSelectedInfo.data);\n } else {\n this._selectionManager.remove(rowSelectedInfo.data);\n }\n\n // Update the state for this row\n this._tableRows[rowSelectedInfo.index].selected = isSelected;\n\n // The indexes that we need to emit select events for\n let selectionIndexes = [rowSelectedInfo.index];\n let isAllSelected = false;\n\n // If we have multiselect on, then we need to update the select all state\n if (this._multiselect) {\n const shift = (evt as KeyboardEvent).shiftKey;\n\n if (shift && this._previouslyClickedRow) {\n selectionIndexes = this._shiftSelectRows(rowSelectedInfo);\n if (selectionIndexes.includes(this._previouslyClickedRow.index)) {\n const idx = selectionIndexes.indexOf(this._previouslyClickedRow.index);\n selectionIndexes.splice(idx, 1);\n }\n }\n\n // Update the state of the select all checkbox\n isAllSelected = this._getSelectAllState();\n this._adapter.updateSelectAllState(this._adapter.getTableElement(), isAllSelected, this._isIndeterminate(isAllSelected));\n }\n\n // Emit a table row selection changed event\n for (const index of selectionIndexes) {\n const data = this._tableRows[index].data;\n const selected = this._selectionManager.exists(data);\n const detail: ITableSelectEventData = { selected, index, data };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SELECT, detail, true, false);\n }\n\n // If selecting/deselecting this row causes the select all state to be changed, then emit the select all changed event.\n if (this._isAllSelected !== isAllSelected) {\n this._isAllSelected = isAllSelected;\n const data: ITableSelectAllEventData = {\n status: this._isAllSelected,\n count: this._tableRows.filter(row => row.selected).length,\n data: [...this._data],\n targetType: 'row'\n };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SELECT_ALL, data, true, false);\n }\n\n this._previouslyClickedRow = { ...rowSelectedInfo };\n }\n\n /**\n * Determines which row was chosen from the given event.\n * @param {Event} evt The click event.\n */\n private _getSelectedRowFromEvent(evt: Event): IRowSelectedDescriptor {\n const composedPath = getEventPath(evt);\n const rowElement = composedPath.find(el => el.tagName === 'TR') as HTMLTableRowElement;\n // We need to get the index of the row element from its parent tbody in case the\n // element has been removed from the DOM (table re-rendered) between when this event\n // was dispatched and when this method is executed\n const tbody = rowElement.parentElement as HTMLTableSectionElement;\n const index = this._getNonExpandedRows(tbody).findIndex(el => el === rowElement);\n const data = this._tableRows[index].data;\n return { rowElement, index, data };\n }\n\n private _getNonExpandedRows(tbodyElement: HTMLTableSectionElement): HTMLTableRowElement[] {\n return Array.from(tbodyElement.rows)\n .filter(row => !row.classList.contains(TABLE_CONSTANTS.classes.TABLE_ROW_EXPANDABLE_CONTENT));\n }\n\n /**\n * Handles the select all checkbox being checked/unchecked.\n */\n private _onSelectAll(evt: Event): void {\n evt.stopPropagation();\n\n // Toggle the status of our select all state\n this._isAllSelected = !this._isAllSelected;\n\n const tableElement = this._adapter.getTableElement();\n\n // Update the select all checkbox in the table based on the new state\n this._adapter.updateSelectAllState(tableElement, this._isAllSelected);\n\n // Select/deselect every row based on our new select all state\n this._tableRows.forEach((tableRow, index) => {\n // Update the state for each row\n tableRow.selected = this._isAllSelected;\n\n // Update the selection manager\n if (this._isAllSelected) {\n this._selectionManager.add(tableRow.data);\n } else {\n this._selectionManager.remove(tableRow.data);\n }\n\n // Update the table row selected state\n const rowElement = TableUtils.getRowByIndex(tableElement, index);\n if (rowElement) {\n this._adapter.updateSelectedState(rowElement, this._isAllSelected);\n }\n });\n\n // Emit the select all changed event\n const data: ITableSelectAllEventData = {\n status: this._isAllSelected,\n count: this._tableRows.filter(row => row.selected).length,\n data: [...this._data],\n targetType: 'select-all'\n };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SELECT_ALL, data, true, false);\n }\n\n private _onHeadRowContextMenu(evt: MouseEvent): void {\n evt.preventDefault();\n }\n\n private _onHeadRowMouseDown(evt: MouseEvent): void {\n if (evt.button !== 0) {\n return;\n }\n\n const composedPath = getEventPath(evt);\n const target = evt.target as HTMLElement;\n\n // Find the row and cell elements that the event originated within\n const rowElement = composedPath.find(el => el.tagName === 'TR') as HTMLTableRowElement;\n const thElement = composedPath.find(el => el.tagName === 'TH') as HTMLTableCellElement;\n const cellIndex = Array.from(rowElement.cells).findIndex(c => c === thElement);\n this._headCellMouseDownIndex = cellIndex;\n\n if (target !== thElement && target.classList.contains(TABLE_CONSTANTS.classes.TABLE_RESIZE_HANDLE)) {\n this._resizeDescriptor = {\n element: thElement,\n startWidth: thElement.offsetWidth,\n startX: evt.pageX,\n width: thElement.offsetWidth,\n index: this._select ? cellIndex - 1 : cellIndex\n };\n this._adapter.addDocumentListener('mousemove', this._documentMouseMoveListener);\n this._adapter.setResizeColumnVisibility(this._tableConfiguration, cellIndex, true);\n }\n\n this._adapter.addDocumentListener('mouseup', this._documentMouseUpListener);\n }\n\n private _onMouseMove(evt: MouseEvent): void {\n if (this._resizeDescriptor) {\n let newWidth = this._resizeDescriptor.startWidth + (evt.pageX - this._resizeDescriptor.startX);\n // Ensure that the user can't drag the column past the minimum column width\n if (newWidth < this._minResizeWidth) {\n newWidth = this._minResizeWidth;\n }\n this._resizeDescriptor.width = newWidth;\n this._resizeDescriptor.element.style.width = `${newWidth}px`;\n this._adapter.addTableClass(TABLE_CONSTANTS.classes.TABLE_RESIZING);\n }\n }\n\n private _onMouseUp(evt: MouseEvent): void {\n this._adapter.removeDocumentListener('mousemove', this._documentMouseMoveListener);\n this._adapter.removeDocumentListener('mouseup', this._documentMouseUpListener);\n this._adapter.removeTableClass(TABLE_CONSTANTS.classes.TABLE_RESIZING);\n\n if (this._headCellMouseDownIndex === undefined) {\n return;\n }\n\n if (this._resizeDescriptor) {\n this._adapter.normalizeColumnWidths(this._tableConfiguration);\n this._adapter.setResizeColumnVisibility(this._tableConfiguration, this._headCellMouseDownIndex, false);\n const resizeEventData: ITableColumnResizeEventData = {\n index: this._resizeDescriptor.index,\n width: this._resizeDescriptor.width\n };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.COLUMN_RESIZE, resizeEventData);\n this._resizeDescriptor = undefined;\n } else if ((this._tableConfiguration.tableElement.tHead as HTMLTableSectionElement).contains(evt.target as HTMLElement)) {\n if (this._multiColumnSort) {\n this._onMultiSort(this._headCellMouseDownIndex, evt.ctrlKey);\n } else {\n this._onSort(this._headCellMouseDownIndex as number);\n }\n }\n\n this._headCellMouseDownIndex = undefined;\n }\n\n /**\n * Called when a click event is triggered on the table header row.\n * We use this to capture all click events on the row, and determine which\n * header cell was clicked.\n */\n private _onSort(cellIndex: number): void {\n // Get the column index so we can access the config for that column (this depends on whether there is a select column or not)\n const columnIndex = this._select ? cellIndex - 1 : cellIndex;\n\n // Get the column config\n const columnConfig = columnIndex >= 0 ? this._visibleColumnConfigurations[columnIndex] : null;\n\n // If this column was not sortable, or was the select column then we just return\n if (!columnConfig || !columnConfig.sortable) {\n return;\n }\n\n // Always default to ascending sort on a newly sorted column\n let desiredSortDirection = SortDirection.Ascending;\n // Toggle the sort direction class\n const isTogglingSortOnSameColumn = columnIndex === this._sortedColumnIndex;\n const currentSortDirectionIsAscending = this._sortDirection === SortDirection.Ascending || this._sortDirection === undefined;\n const isUnsorting = isTogglingSortOnSameColumn && this._sortDirection === SortDirection.Descending;\n if (isTogglingSortOnSameColumn && currentSortDirectionIsAscending) {\n desiredSortDirection = SortDirection.Descending;\n }\n\n if (isUnsorting && !columnConfig.preventUnsort) {\n desiredSortDirection = SortDirection.Unset;\n }\n\n // Emit the sort event for this column\n const data: ITableSortEventData = {\n direction: desiredSortDirection,\n columnIndex\n };\n if (!this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SORT, data, true, true)) {\n // If defaultPrevented is true, we emit the event without updating internal state.\n return;\n }\n\n if (isTogglingSortOnSameColumn && this._sortDirection === SortDirection.Descending && !columnConfig.preventUnsort) {\n this._adapter.removeColumnSort(this._adapter.getTableElement(), this._select ? this._sortedColumnIndex + 1 : this._sortedColumnIndex);\n this._sortedColumnIndex = -1;\n return;\n }\n\n // Update internal state\n this._sortDirection = desiredSortDirection;\n // Toggle the sort direction class\n if (columnIndex === this._sortedColumnIndex) {\n // Update the table with the new sort direction\n this._adapter.setSortDirection(this._adapter.getTableElement(), cellIndex, this._sortDirection);\n } else {\n // If we have a column this is currently sorted, remove the sort from that column\n if (this._sortedColumnIndex >= 0) {\n this._adapter.removeColumnSort(this._adapter.getTableElement(), this._select ? this._sortedColumnIndex + 1 : this._sortedColumnIndex);\n }\n\n // Set this column as the sorted column\n this._sortedColumnIndex = columnIndex;\n\n // Set the new sort direction on the newly sorted column\n this._adapter.setSortedColumn(this._adapter.getTableElement(), cellIndex, this._sortDirection);\n }\n }\n\n private _onMultiSort(cellIndex: number, ctrlKey: boolean): void {\n // Get the column index so we can access the config for that column (this depends on whether there is a select column or not)\n const columnIndex = this._select ? cellIndex - 1 : cellIndex;\n\n // Get the column config\n const columnConfig = columnIndex >= 0 ? this._visibleColumnConfigurations[columnIndex] : null;\n\n // If this column was not sortable, or was the select column then we just return\n if (!columnConfig || !columnConfig.sortable) {\n return;\n }\n\n const revertColumns = this._multiSortManager.sortedColumns;\n const sortColumn = this._multiSortManager.getSortColumn(columnIndex);\n\n if (sortColumn) {\n this._multiSortManager.updateSortColumn(sortColumn);\n } else if (ctrlKey) {\n this._multiSortManager.addSortColumn({ direction: SortDirection.Descending, columnIndex, propertyName: columnConfig.property as string });\n } else {\n this._multiSortManager.clearMultiSort();\n this._multiSortManager.addSortColumn({ direction: SortDirection.Descending, columnIndex, propertyName: columnConfig.property as string });\n }\n\n const data: ITableSortMultipleEventData = this._multiSortManager.sortedColumns.map(col => ({ ...col }));\n if (!this._adapter.emitHostEvent(TABLE_CONSTANTS.events.SORT, data, true, true)) {\n // If defaultPrevented is true, we emit the event without updating internal state.\n this._multiSortManager.setSortColumns(revertColumns);\n return;\n }\n const newSortedColumns = this._multiSortManager.sortedColumns;\n const hasMultipleColumnsSorted = newSortedColumns.length > 1;\n\n // clear any unsorted columns in the UI\n for (let virtualIndex = 0; virtualIndex < this._visibleColumnConfigurations.length; virtualIndex++) {\n // actualIndex takes into account if there is a select column, virtualIndex is 0 -> visible data columns length\n const actualIndex = this._select ? virtualIndex + 1 : virtualIndex;\n\n if (!this._multiSortManager.isSortColumn(virtualIndex)) {\n this._adapter.removeColumnSort(this._adapter.getTableElement(), actualIndex);\n TableUtils.setMultiSortColumnSortNumber(this._adapter.getTableElement(), hasMultipleColumnsSorted, actualIndex, null);\n } else {\n const column = this._multiSortManager.getSortColumn(virtualIndex);\n if (column) {\n this._adapter.setSortedColumn(this._adapter.getTableElement(), actualIndex, column.direction);\n TableUtils.setMultiSortColumnSortNumber(this._adapter.getTableElement(), hasMultipleColumnsSorted, actualIndex, column.sortOrder || null);\n }\n }\n }\n }\n\n /**\n * Handles filter events and emits the filter information event.\n * @param evt The event.\n */\n private _onFilter(value: any, columnIndex: number): void {\n const data: ITableFilterEventData = { value, columnIndex };\n this._adapter.emitHostEvent(TABLE_CONSTANTS.events.FILTER, data, true, false);\n }\n\n private _shiftSelectRows(selectedRow: IRowSelectedDescriptor): number[] {\n const indexes: number[] = [];\n \n if (this._previouslyClickedRow) {\n const prevIndex = this._previouslyClickedRow.index;\n const currIndex = selectedRow.index;\n let startIndex = currIndex >= prevIndex ? prevIndex : currIndex;\n let endIndex = currIndex >= prevIndex ? currIndex : prevIndex;\n endIndex += endIndex > startIndex ? 1 : 0;\n startIndex += startIndex > endIndex ? 1 : 0;\n \n let action = (data: any[]): void => this.selectRows(data, false);\n const existingSelection = this._tableRows.find(item => item.selected && item.data === selectedRow.data);\n const shouldDeselect = this._tableRows.find(item => item.data === this._previouslyClickedRow?.data && !item.selected);\n \n // If you are clicking a checkbox that is already selected, deselect all the rows\n if (!existingSelection || shouldDeselect) {\n action = (data: any[]) => this.deselectRows(data);\n }\n\n for (let i = startIndex; i < endIndex; i++) {\n indexes.push(i);\n }\n\n action(this.data.filter((v, i) => indexes.includes(i)));\n }\n\n return indexes;\n }\n\n private _isIndeterminate(isAllSelected: boolean): boolean {\n return !isAllSelected && this.getSelectedRows().length > 0 && this._data.length !== this.getSelectedRows().length;\n }\n\n private _applyRoomy(): void {\n this._adapter.setRoomy(this._adapter.getTableElement(), this._roomy);\n this._adapter.setHostAttribute(TABLE_CONSTANTS.attributes.ROOMY, this._roomy.toString());\n }\n\n private _refreshTableSort(): void {\n this._sortedColumnIndex = this._visibleColumnConfigurations.findIndex(c => c.initialSort);\n this._sortDirection = this._sortedColumnIndex >= 0 ? (this._visibleColumnConfigurations[this._sortedColumnIndex].sortDirection as SortDirection) : undefined;\n\n if (this._multiColumnSort) {\n const sortedColumns: ISortedItem[] = [];\n this._visibleColumnConfigurations.forEach((col, index) => {\n if (typeof col.initialSort === 'object') {\n sortedColumns.push({\n columnIndex: index,\n direction: col.initialSort.direction,\n sortOrder: col.initialSort.sortOrder,\n propertyName: col.property as string\n });\n }\n });\n this._multiSortManager.setSortColumns(sortedColumns);\n }\n }\n}\n", "import { coerceBoolean, coerceNumber, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { tylIconArrowDownward } from '@tylertech/tyler-icons/standard';\nimport { ExpansionPanelComponent } from '../expansion-panel';\nimport { CheckboxComponent } from '../checkbox';\nimport { TableAdapter } from './table-adapter';\nimport { TABLE_CONSTANTS } from './table-constants';\nimport { TableFoundation } from './table-foundation';\nimport { IconRegistry, IconComponent } from '../icon';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport {\n IColumnConfiguration,\n TableLayoutType,\n TableViewTemplate,\n TableRowCreatedCallback,\n TableCellCreatedCallback,\n TableHeaderSelectAllTemplate,\n CellAlign,\n ITableRowClickEventData,\n ITableSelectDoubleEventData,\n ITableSelectEventData,\n ITableSelectAllEventData,\n ITableColumnResizeEventData,\n ITableSortEventData,\n ITableSortMultipleEventData,\n ITableFilterEventData,\n TableSelectTooltipCallback\n} from './types';\n\nexport interface ITableComponent extends IBaseComponent {\n data: any[];\n columnConfigurations: IColumnConfiguration[];\n select: boolean;\n multiselect: boolean;\n selectKey: string | string[];\n dense: boolean;\n roomy: boolean;\n filter: boolean;\n fixedHeaders: boolean;\n layoutType: TableLayoutType;\n wrapContent: boolean;\n resizable: boolean;\n minResizeWidth: number;\n allowRowClick: boolean;\n multiColumnSort: boolean;\n selectCheckboxAlignment: `${CellAlign}`;\n tooltipSelect: string | TableSelectTooltipCallback;\n tooltipSelectAll: string;\n rowCreated: TableRowCreatedCallback;\n cellCreated: TableCellCreatedCallback;\n hideColumn(columnIndex: number): void;\n showColumn(columnIndex: number): void;\n isColumnHidden(columnIndex: number): boolean;\n getSelectedRows(): any[];\n selectRowsByIndex(indexes: number | number[], preserveExisting?: boolean): void;\n deselectRowsByIndex(indexes: number | number[]): void;\n selectRow(data: any): void;\n selectRows(data: any[], preserveExisting?: boolean): void;\n deselectRow(data: any): void;\n deselectRows(data: any[]): void;\n clearSelections(): void;\n render(): void;\n expandRow(rowIndex: number, template: TableViewTemplate): Promise<void>;\n collapseRow(rowIndex: number): Promise<void>;\n isRowExpanded(rowIndex: number): boolean;\n isRowSelected(rowData: { [key: string]: any }): boolean;\n selectAllTemplate: TableHeaderSelectAllTemplate;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-table': ITableComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-table-row-click': CustomEvent<ITableRowClickEventData>;\n 'forge-table-select': CustomEvent<ITableSelectEventData>;\n 'forge-table-select-double': CustomEvent<ITableSelectDoubleEventData>;\n 'forge-table-select-all': CustomEvent<ITableSelectAllEventData>;\n 'forge-table-sort': CustomEvent<ITableSortEventData | ITableSortMultipleEventData>;\n 'forge-table-filter': CustomEvent<ITableFilterEventData>;\n 'forge-table-initialized': CustomEvent<void>;\n 'forge-table-column-resize': CustomEvent<ITableColumnResizeEventData>;\n }\n}\n\n/**\n * The custom element class behind the `<forge-table>` component.\n * \n * @tag forge-table\n */\n@CustomElement({\n name: TABLE_CONSTANTS.elementName,\n dependencies: [\n ExpansionPanelComponent,\n IconComponent,\n CheckboxComponent\n ]\n})\nexport class TableComponent extends BaseComponent implements ITableComponent {\n public static get observedAttributes(): string[] {\n return [\n TABLE_CONSTANTS.attributes.SELECT,\n TABLE_CONSTANTS.attributes.MULTISELECT,\n TABLE_CONSTANTS.attributes.SELECT_KEY,\n TABLE_CONSTANTS.attributes.DENSE,\n TABLE_CONSTANTS.attributes.ROOMY,\n TABLE_CONSTANTS.attributes.FILTER,\n TABLE_CONSTANTS.attributes.FIXED_HEADERS,\n TABLE_CONSTANTS.attributes.LAYOUT_TYPE,\n TABLE_CONSTANTS.attributes.WRAP_CONTENT,\n TABLE_CONSTANTS.attributes.RESIZABLE,\n TABLE_CONSTANTS.attributes.MIN_RESIZE_WIDTH,\n TABLE_CONSTANTS.attributes.ALLOW_ROW_CLICK,\n TABLE_CONSTANTS.attributes.MULTI_COLUMN_SORT,\n TABLE_CONSTANTS.attributes.SELECT_CHECKBOX_ALIGNMENT,\n TABLE_CONSTANTS.attributes.TOOLTIP_SELECT,\n TABLE_CONSTANTS.attributes.TOOLTIP_SELECT_ALL\n ];\n }\n\n private _foundation: TableFoundation;\n\n constructor() {\n super();\n IconRegistry.define(tylIconArrowDownward);\n this._foundation = new TableFoundation(new TableAdapter(this));\n }\n\n public initializedCallback(): void {\n this._foundation.initialize();\n }\n\n public connectedCallback(): void {\n this._foundation.connect();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case TABLE_CONSTANTS.attributes.SELECT:\n this.select = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.MULTISELECT:\n this.multiselect = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.SELECT_KEY:\n this.selectKey = newValue;\n break;\n case TABLE_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.ROOMY:\n this.roomy = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.FILTER:\n this.filter = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.FIXED_HEADERS:\n this.fixedHeaders = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.LAYOUT_TYPE:\n this.layoutType = newValue as TableLayoutType;\n break;\n case TABLE_CONSTANTS.attributes.WRAP_CONTENT:\n this.wrapContent = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.RESIZABLE:\n this.resizable = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.MIN_RESIZE_WIDTH:\n this.minResizeWidth = coerceNumber(newValue);\n break;\n case TABLE_CONSTANTS.attributes.ALLOW_ROW_CLICK:\n this.allowRowClick = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.MULTI_COLUMN_SORT:\n this.multiColumnSort = coerceBoolean(newValue);\n break;\n case TABLE_CONSTANTS.attributes.SELECT_CHECKBOX_ALIGNMENT:\n this.selectCheckboxAlignment = (this.getAttribute(TABLE_CONSTANTS.attributes.SELECT_CHECKBOX_ALIGNMENT) || CellAlign.Center) as CellAlign;\n break;\n case TABLE_CONSTANTS.attributes.TOOLTIP_SELECT:\n this.tooltipSelect = newValue;\n break;\n case TABLE_CONSTANTS.attributes.TOOLTIP_SELECT_ALL:\n this.tooltipSelectAll = newValue;\n break;\n }\n }\n\n /**\n * Hides a column from the table.\n * @param columnIndex The index of the column to hide.\n */\n public hideColumn(columnIndex: number): void {\n this._foundation.hideColumn(columnIndex);\n }\n\n /**\n * Shows a hidden column in th table.\n * @param columnIndex The index of the column to show.\n */\n public showColumn(columnIndex: number): void {\n this._foundation.showColumn(columnIndex);\n }\n\n /**\n * Determines if a column at the given index is hidden or not.\n * @param {number} columnIndex The index of the column.\n * @returns {boolean} `true` if the column is hidden, `false` otherwise.\n */\n public isColumnHidden(columnIndex: number): boolean {\n return this._foundation.isColumnHidden(columnIndex);\n }\n\n /** Returns the selected row instances. */\n public getSelectedRows(): any[] {\n return this._foundation.getSelectedRows();\n }\n\n /**\n * Selects a row in the table. Only applicable if `select` is true.\n * @param data The row data behind the row that should be selected.\n */\n public selectRow(data: any): void {\n this._foundation.selectRows([data], false);\n }\n\n /**\n * Selects one or more rows in the table. Only applicable if `select` is true.\n * @param data The row data begind the rows that should be selected.\n * @param [preserveExisting=false] Should existing row selections be preserved or cleared.\n */\n public selectRows(data: any[], preserveExisting: boolean = false): void {\n this._foundation.selectRows(data, !preserveExisting);\n }\n\n /**\n * Deselects a single row in the table.\n * @param data The data behind the row that should be deselected.\n */\n public deselectRow(data: any): void {\n this._foundation.deselectRows([data]);\n }\n\n /**\n * Deselects one or more rows in the table.\n * @param data The data behind the rows that should be deselected.\n */\n public deselectRows(data: any[]): void {\n this._foundation.deselectRows(data);\n }\n\n /**\n * Clears all selected table rows.\n */\n public clearSelections(): void {\n this._foundation.clearSelections();\n }\n\n /**\n * Forces the table to re-render based on its current configuration.\n */\n public render(): void {\n this._foundation.render();\n }\n\n /**\n * Expands a collapsed row.\n * @param rowIndex The index of the row to expand.\n */\n public expandRow(rowIndex: any, template: TableViewTemplate): Promise<void> {\n return this._foundation.expandRow(rowIndex, template);\n }\n\n /**\n * Collapses an expanded row.\n * @param rowIndex The index of the row to expand.\n */\n public collapseRow(rowIndex: number): Promise<void> {\n return this._foundation.collapseRow(rowIndex);\n }\n\n /**\n * Checks if a row is expanded or not.\n * @param rowIndex The row index to check.\n */\n public isRowExpanded(rowIndex: number): boolean {\n return this._foundation.isRowExpanded(rowIndex);\n }\n\n /**\n * Selects a rows by an index or array of indexes.\n * @param indexes The row index/indexes to select.\n */\n public selectRowsByIndex(indexes: number | number[], preserveExisting?: boolean): void {\n if (typeof indexes === 'number') {\n this._foundation.selectRowsByIndex([indexes], preserveExisting);\n } else if (Array.isArray(indexes)) {\n this._foundation.selectRowsByIndex(indexes, preserveExisting);\n }\n }\n\n /**\n * Deselects a rows by an index or array of indexes.\n * @param indexes The row index/indexes to deselect\n */\n public deselectRowsByIndex(indexes: number | number[]): void {\n if (typeof indexes === 'number') {\n this._foundation.deselectRowsByIndex([indexes]);\n } else if (Array.isArray(indexes)) {\n this._foundation.deselectRowsByIndex(indexes);\n }\n }\n\n /**\n * Checks if a row is selected or not.\n * @param rowData The row object data to check.\n */\n public isRowSelected(rowData: { [key: string]: any }): boolean {\n return this._foundation.isRowSelected(rowData);\n }\n\n /** The data to be display in the table body. */\n @FoundationProperty()\n public declare data: any[];\n\n /** The column configuration options. */\n @FoundationProperty()\n public declare columnConfigurations: IColumnConfiguration[];\n\n /** Controls the visibility of the select column. */\n @FoundationProperty()\n public declare select: boolean;\n\n /** Controls the visibility of the select all checkbox (only applied when `select` is `true`). */\n @FoundationProperty()\n public declare multiselect: boolean;\n\n /** The row key for matching data to selections. */\n @FoundationProperty()\n public declare selectKey: string | string[];\n\n @FoundationProperty()\n public declare tooltipSelect: string | TableSelectTooltipCallback;\n\n @FoundationProperty()\n public declare tooltipSelectAll: string;\n\n /** Controls whether the table is dense or not. False by default. */\n @FoundationProperty()\n public declare dense: boolean;\n\n /** Controls whether the table is roomy or not. False by default. */\n @FoundationProperty()\n public declare roomy: boolean;\n\n /** Controls whether the table filters are visible or not. */\n @FoundationProperty()\n public declare filter: boolean;\n\n /** Controls whether the table applies fixed headers when in scroll containers. */\n @FoundationProperty()\n public declare fixedHeaders: boolean;\n\n /** Controls the table layout algorithm. */\n @FoundationProperty()\n public declare layoutType: TableLayoutType;\n\n /** Controls whether the content in each cell wraps or not (true by default). */\n @FoundationProperty()\n public declare wrapContent: boolean;\n\n /** Controls whether the columns are resizable or not. */\n @FoundationProperty()\n public declare resizable: boolean;\n\n /** Gets/sets the minimum width that a column can be resized to by the user dragging the resize handle. */\n @FoundationProperty()\n public declare minResizeWidth: number;\n\n /** Gets/sets whether the rows respond to (and emit) row click events. */\n @FoundationProperty()\n public declare allowRowClick: boolean;\n\n @FoundationProperty()\n public declare multiColumnSort: boolean;\n\n @FoundationProperty()\n public declare rowCreated: TableRowCreatedCallback;\n\n @FoundationProperty()\n public declare cellCreated: TableCellCreatedCallback;\n\n @FoundationProperty()\n public declare selectAllTemplate: TableHeaderSelectAllTemplate;\n\n @FoundationProperty()\n public declare selectCheckboxAlignment: `${CellAlign}`;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { TableComponent } from './table';\n\nexport * from './table-adapter';\nexport * from './table-constants';\nexport * from './table-foundation';\nexport * from './table-row';\nexport * from './table';\nexport * from './types';\n\nexport function defineTableComponent(): void {\n defineCustomElement(TableComponent);\n}\n"],
5
- "mappings": "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",
6
- "names": ["ItemManager", "_key", "key", "data", "item", "i", "findWhere", "createPredicate", "elementName", "COMPONENT_NAME_PREFIX", "classes", "selectors", "attributes", "events", "strings", "icons", "numbers", "TABLE_CONSTANTS", "CellAlign", "SortDirection", "TableFilterType", "isTemplateResultObject", "val", "TableUtils", "configuration", "thead", "tbody", "c", "tableElement", "replaceElement", "removeAllChildren", "tooltip", "TOOLTIP_CONSTANTS", "tableConfiguration", "tr", "addClass", "TABLE_CONSTANTS", "setInitialSort", "i", "columnConfig", "th", "cellContainer", "isDefined", "width", "safeCssWidth", "resizeHandle", "isObject", "span", "sortOrderElement", "iconElement", "ICON_CONSTANTS", "removeClass", "element", "node", "columnIndex", "sortDirection", "cell", "thElement", "cellData", "rowIndex", "__spreadValues", "td", "div", "rowData", "result", "config", "value", "colspan", "el", "align", "rows", "row", "columnConfigurations", "data", "item", "getPropertyValue", "columnDataMap", "columnData", "j", "tbodyElement", "clickListener", "doubleClickListener", "checkboxElement", "theadElement", "listener", "lastTheadRow", "firstRow", "showSelectAll", "selectAllTemplate", "registerListener", "selectCheckboxAlignment", "tooltipSelect", "tooltipSelectAll", "_a", "lastRowFirstCell", "nonExpandedRows", "isHeader", "alignment", "checkboxContainer", "CHECKBOX_CONSTANTS", "checkboxInputElement", "tooltipText", "rowElement", "selectCell", "selectAllCell", "isSelected", "isIndeterminate", "cellCount", "selectCheckbox", "index", "isAllSelected", "selectAllCheckboxElement", "key", "selectedRows", "preserveExisting", "selectedRowCount", "findWhere", "createPredicate", "hasMultipleColumnsSorted", "sortOrder", "toggleClass", "existingIconElement", "isVisible", "selectListener", "selectAllListener", "isDense", "isRoomy", "cells", "wrapContent", "filterRowElement", "cc", "child", "previousRowElementIndex", "previousRowElement", "removeElement", "filterRow", "container", "filterListener", "delegate", "isFunction", "FormFieldComponentDelegate", "BaseComponentDelegate", "isNumber", "debounceTime", "debounce", "tHeadElement", "r", "template", "requestedRow", "actualRowIndex", "expandedRow", "contentDiv", "expansionPanel", "EXPANSION_PANEL_CONSTANTS", "content", "templateValue", "e", "isString", "expandableRow", "resolve", "expectedWidth", "allowClick", "target", "elementToSetBefore", "targetElement", "TableAdapter", "BaseAdapter", "component", "TABLE_CONSTANTS", "removeAllChildren", "configuration", "TableUtils", "tableElement", "key", "data", "selectedRows", "preserveExisting", "rowElement", "isSelected", "isAllSelected", "isIndeterminate", "columnIndex", "sortDirection", "isVisible", "selectListener", "selectAllListener", "selectAllTemplate", "selectCheckboxAlignment", "tooltipSelect", "tooltipSelectAll", "isDense", "isRoomy", "listener", "rowIndex", "template", "type", "classes", "addClass", "removeClass", "allowClick", "clickListener", "doubleClickListener", "MultiSortManager", "c", "__spreadValues", "column", "col", "columns", "columnOrIndex", "columnIndex", "col1", "col2", "index", "TableRow", "data", "selected", "TableFoundation", "_adapter", "TABLE_CONSTANTS", "MultiSortManager", "evt", "value", "columnIndex", "ItemManager", "isObject", "v", "__spreadValues", "data", "TableRow", "cc", "isNumber", "rowData", "predicate", "createPredicate", "item", "matchesPredicate", "clearCurrentSelections", "tableElement", "tableRow", "columnConfig", "selections", "rowIndex", "template", "indexes", "preserveExisting", "rowsToSelect", "obj", "rowsToDeselect", "i", "tr", "isAllSelected", "customCellTemplateElement", "getEventPath", "node", "el", "index", "evtData", "rowSelectedInfo", "detail", "selection", "isSelected", "selectionIndexes", "idx", "row", "rowElement", "tbody", "tbodyElement", "TableUtils", "composedPath", "target", "thElement", "cellIndex", "c", "newWidth", "resizeEventData", "desiredSortDirection", "isTogglingSortOnSameColumn", "currentSortDirectionIsAscending", "isUnsorting", "ctrlKey", "revertColumns", "sortColumn", "col", "hasMultipleColumnsSorted", "virtualIndex", "actualIndex", "column", "selectedRow", "prevIndex", "currIndex", "startIndex", "endIndex", "action", "existingSelection", "shouldDeselect", "_a", "sortedColumns", "TableComponent", "BaseComponent", "IconRegistry", "tylIconArrowDownward", "TableFoundation", "TableAdapter", "TABLE_CONSTANTS", "name", "oldValue", "newValue", "coerceBoolean", "coerceNumber", "columnIndex", "data", "preserveExisting", "rowIndex", "template", "indexes", "rowData", "__decorateClass", "FoundationProperty", "CustomElement", "ExpansionPanelComponent", "IconComponent", "CheckboxComponent", "defineTableComponent", "defineCustomElement", "TableComponent"]
5
+ "mappings": "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",
6
+ "names": ["ItemManager", "_key", "key", "data", "item", "i", "findWhere", "createPredicate", "elementName", "COMPONENT_NAME_PREFIX", "classes", "selectors", "attributes", "events", "strings", "icons", "numbers", "TABLE_CONSTANTS", "CellAlign", "SortDirection", "TableFilterType", "isTemplateResultObject", "val", "TableUtils", "_TableUtils", "configuration", "thead", "tbody", "c", "tableElement", "replaceElement", "removeAllChildren", "tooltip", "TOOLTIP_CONSTANTS", "tableConfiguration", "tr", "addClass", "TABLE_CONSTANTS", "setInitialSort", "i", "columnConfig", "th", "cellContainer", "isDefined", "width", "safeCssWidth", "resizeHandle", "isObject", "span", "sortOrderElement", "iconElement", "ICON_CONSTANTS", "removeClass", "element", "node", "columnIndex", "sortDirection", "cell", "thElement", "cellData", "rowIndex", "__spreadValues", "td", "div", "rowData", "result", "config", "value", "colspan", "el", "align", "rows", "row", "columnConfigurations", "data", "item", "getPropertyValue", "columnDataMap", "columnData", "j", "tbodyElement", "clickListener", "doubleClickListener", "checkboxElement", "theadElement", "listener", "lastTheadRow", "firstRow", "showSelectAll", "selectAllTemplate", "registerListener", "selectCheckboxAlignment", "tooltipSelect", "tooltipSelectAll", "_a", "lastRowFirstCell", "nonExpandedRows", "isHeader", "alignment", "checkboxContainer", "CHECKBOX_CONSTANTS", "checkboxInputElement", "tooltipText", "rowElement", "selectCell", "selectAllCell", "isSelected", "isIndeterminate", "cellCount", "selectCheckbox", "index", "isAllSelected", "selectAllCheckboxElement", "key", "selectedRows", "preserveExisting", "selectedRowCount", "findWhere", "createPredicate", "hasMultipleColumnsSorted", "sortOrder", "toggleClass", "existingIconElement", "isVisible", "selectListener", "selectAllListener", "isDense", "isRoomy", "cells", "wrapContent", "filterRowElement", "cc", "child", "previousRowElementIndex", "previousRowElement", "removeElement", "filterRow", "container", "filterListener", "delegate", "isFunction", "FormFieldComponentDelegate", "BaseComponentDelegate", "isNumber", "debounceTime", "debounce", "tHeadElement", "r", "template", "requestedRow", "actualRowIndex", "expandedRow", "contentDiv", "expansionPanel", "EXPANSION_PANEL_CONSTANTS", "content", "templateValue", "e", "isString", "expandableRow", "resolve", "expectedWidth", "allowClick", "target", "elementToSetBefore", "targetElement", "TableAdapter", "BaseAdapter", "component", "TABLE_CONSTANTS", "removeAllChildren", "configuration", "TableUtils", "tableElement", "key", "data", "selectedRows", "preserveExisting", "rowElement", "isSelected", "isAllSelected", "isIndeterminate", "columnIndex", "sortDirection", "isVisible", "selectListener", "selectAllListener", "selectAllTemplate", "selectCheckboxAlignment", "tooltipSelect", "tooltipSelectAll", "isDense", "isRoomy", "listener", "rowIndex", "template", "type", "classes", "addClass", "removeClass", "allowClick", "clickListener", "doubleClickListener", "MultiSortManager", "c", "__spreadValues", "column", "col", "columns", "columnOrIndex", "columnIndex", "col1", "col2", "index", "TableRow", "data", "selected", "TableFoundation", "_adapter", "TABLE_CONSTANTS", "MultiSortManager", "evt", "value", "columnIndex", "ItemManager", "isObject", "v", "__spreadValues", "data", "TableRow", "cc", "isNumber", "rowData", "predicate", "createPredicate", "item", "matchesPredicate", "clearCurrentSelections", "tableElement", "tableRow", "columnConfig", "selections", "rowIndex", "template", "indexes", "preserveExisting", "rowsToSelect", "obj", "rowsToDeselect", "i", "tr", "isAllSelected", "customCellTemplateElement", "getEventPath", "node", "el", "index", "evtData", "rowSelectedInfo", "detail", "selection", "isSelected", "selectionIndexes", "idx", "row", "rowElement", "tbody", "tbodyElement", "TableUtils", "composedPath", "target", "thElement", "cellIndex", "c", "newWidth", "resizeEventData", "desiredSortDirection", "isTogglingSortOnSameColumn", "currentSortDirectionIsAscending", "isUnsorting", "ctrlKey", "revertColumns", "sortColumn", "col", "hasMultipleColumnsSorted", "virtualIndex", "actualIndex", "column", "selectedRow", "prevIndex", "currIndex", "startIndex", "endIndex", "action", "existingSelection", "shouldDeselect", "_a", "sortedColumns", "TableComponent", "BaseComponent", "IconRegistry", "tylIconArrowDownward", "TableFoundation", "TableAdapter", "TABLE_CONSTANTS", "name", "oldValue", "newValue", "coerceBoolean", "coerceNumber", "columnIndex", "data", "preserveExisting", "rowIndex", "template", "indexes", "rowData", "__decorateClass", "FoundationProperty", "CustomElement", "ExpansionPanelComponent", "IconComponent", "CheckboxComponent", "defineTableComponent", "defineCustomElement", "TableComponent"]
7
7
  }