@nova-design-system/nova-webcomponents 3.0.0-beta.44 → 3.0.0-beta.46

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 (351) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/native.cjs.js +1 -1
  3. package/dist/cjs/nv-badge_2.cjs.entry.js +6 -5
  4. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/nv-base.cjs.entry.js +1 -1
  6. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  7. package/dist/cjs/nv-breadcrumb.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  9. package/dist/cjs/nv-button.cjs.entry.js +5 -3
  10. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-calendar.cjs.entry.js +1 -1
  12. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-datagrid.cjs.entry.js +66 -6
  14. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +5 -1
  16. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-dialog.cjs.entry.js +16 -12
  18. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  20. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +5 -5
  21. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nv-fielddate.cjs.entry.js +5 -5
  23. package/dist/cjs/nv-fielddaterange.cjs.entry.js +4 -4
  24. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -9
  25. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +9 -64
  28. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  30. package/dist/cjs/nv-fieldpassword.cjs.entry.js +9 -7
  31. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  33. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  34. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  36. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  37. package/dist/cjs/nv-fieldtime.cjs.entry.js +9 -9
  38. package/dist/cjs/nv-icon.cjs.entry.js +1 -1
  39. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  40. package/dist/cjs/nv-menu.cjs.entry.js +3 -3
  41. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  43. package/dist/cjs/nv-popover.cjs.entry.js +11 -9
  44. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  46. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  47. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  48. package/dist/cjs/nv-toggle.cjs.entry.js +3 -3
  49. package/dist/cjs/nv-toggle.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  51. package/dist/collection/components/nv-badge/nv-badge.css +11 -0
  52. package/dist/collection/components/nv-badge/nv-badge.js +5 -4
  53. package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
  54. package/dist/collection/components/nv-base/nv-base.js +1 -1
  55. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.css +11 -0
  56. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
  57. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  58. package/dist/collection/components/nv-button/nv-button.js +5 -3
  59. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  60. package/dist/collection/components/nv-calendar/nv-calendar.js +1 -1
  61. package/dist/collection/components/nv-col/nv-col.js +1 -1
  62. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +43 -2
  63. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  64. package/dist/collection/components/nv-datagrid/nv-datagrid.js +91 -7
  65. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  66. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +27 -1
  67. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  68. package/dist/collection/components/nv-dialog/nv-dialog.js +24 -17
  69. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  70. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  71. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  72. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +11 -0
  73. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  74. package/dist/collection/components/nv-fielddate/nv-fielddate.js +5 -5
  75. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +4 -4
  76. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +4 -13
  77. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  78. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  79. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  80. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +9 -67
  81. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  82. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  83. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +9 -7
  84. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  85. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  86. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  87. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  88. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  89. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  90. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  91. package/dist/collection/components/nv-icon/nv-icon.docs.js +1 -0
  92. package/dist/collection/components/nv-icon/nv-icon.docs.js.map +1 -1
  93. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  94. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  95. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  96. package/dist/collection/components/nv-menu/nv-menu.js +6 -6
  97. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  98. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  99. package/dist/collection/components/nv-popover/nv-popover.js +11 -9
  100. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  101. package/dist/collection/components/nv-row/nv-row.js +1 -1
  102. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  103. package/dist/collection/components/nv-table/nv-table.js +2 -2
  104. package/dist/collection/components/nv-toggle/nv-toggle.css +11 -0
  105. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  106. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  107. package/dist/components/nv-alert.js +1 -1
  108. package/dist/components/nv-avatar.js +1 -1
  109. package/dist/components/nv-badge.js +1 -1
  110. package/dist/components/nv-base.js +1 -1
  111. package/dist/components/nv-breadcrumb.js +4 -4
  112. package/dist/components/nv-breadcrumb.js.map +1 -1
  113. package/dist/components/nv-breadcrumbs.js +1 -1
  114. package/dist/components/nv-button.js +1 -1
  115. package/dist/components/nv-calendar.js +1 -1
  116. package/dist/components/nv-col.js +1 -1
  117. package/dist/components/nv-datagrid.js +69 -7
  118. package/dist/components/nv-datagrid.js.map +1 -1
  119. package/dist/components/nv-datagridcolumn.js +7 -2
  120. package/dist/components/nv-datagridcolumn.js.map +1 -1
  121. package/dist/components/nv-dialog.js +22 -18
  122. package/dist/components/nv-dialog.js.map +1 -1
  123. package/dist/components/nv-dialogfooter.js +1 -1
  124. package/dist/components/nv-dialogheader.js +1 -1
  125. package/dist/components/nv-fieldcheckbox.js +1 -1
  126. package/dist/components/nv-fielddate.js +12 -12
  127. package/dist/components/nv-fielddaterange.js +11 -11
  128. package/dist/components/nv-fielddropdown.js +9 -17
  129. package/dist/components/nv-fielddropdown.js.map +1 -1
  130. package/dist/components/nv-fielddropdownitem.js +1 -1
  131. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  132. package/dist/components/nv-fieldmultiselect.js +18 -75
  133. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  134. package/dist/components/nv-fieldnumber.js +6 -6
  135. package/dist/components/nv-fieldpassword.js +12 -10
  136. package/dist/components/nv-fieldpassword.js.map +1 -1
  137. package/dist/components/nv-fieldradio.js +3 -3
  138. package/dist/components/nv-fieldselect.js +8 -8
  139. package/dist/components/nv-fieldselect.js.map +1 -1
  140. package/dist/components/nv-fieldtext.js +4 -4
  141. package/dist/components/nv-fieldtextarea.js +3 -3
  142. package/dist/components/nv-fieldtime.js +13 -13
  143. package/dist/components/nv-icon.js +1 -1
  144. package/dist/components/nv-iconbutton.js +1 -1
  145. package/dist/components/nv-loader.js +1 -1
  146. package/dist/components/nv-menu.js +6 -6
  147. package/dist/components/nv-menu.js.map +1 -1
  148. package/dist/components/nv-menuitem.js +1 -1
  149. package/dist/components/nv-popover.js +1 -1
  150. package/dist/components/nv-row.js +1 -1
  151. package/dist/components/nv-stack.js +1 -1
  152. package/dist/components/nv-table.js +2 -2
  153. package/dist/components/nv-toggle.js +3 -3
  154. package/dist/components/nv-toggle.js.map +1 -1
  155. package/dist/components/nv-tooltip.js +1 -1
  156. package/dist/components/{p-e66d6274.js → p-18bc0291.js} +3 -3
  157. package/dist/components/{p-e66d6274.js.map → p-18bc0291.js.map} +1 -1
  158. package/dist/components/{p-b2d2fd35.js → p-56ef8131.js} +3 -3
  159. package/dist/components/{p-b2d2fd35.js.map → p-56ef8131.js.map} +1 -1
  160. package/dist/components/p-5a5f11c2.js +177 -0
  161. package/dist/components/p-5a5f11c2.js.map +1 -0
  162. package/dist/components/{p-62f6da8a.js → p-664c5a14.js} +12 -10
  163. package/dist/components/p-664c5a14.js.map +1 -0
  164. package/dist/components/{p-6726f512.js → p-7b89fb48.js} +2 -2
  165. package/dist/components/{p-6726f512.js.map → p-7b89fb48.js.map} +1 -1
  166. package/dist/components/{p-0631d152.js → p-8674c7af.js} +7 -5
  167. package/dist/components/p-8674c7af.js.map +1 -0
  168. package/dist/components/{p-293e1a5c.js → p-8c5a861b.js} +3 -3
  169. package/dist/components/{p-293e1a5c.js.map → p-8c5a861b.js.map} +1 -1
  170. package/dist/components/{p-23b6b33b.js → p-91b58443.js} +2 -2
  171. package/dist/components/{p-23b6b33b.js.map → p-91b58443.js.map} +1 -1
  172. package/dist/components/{p-d552352b.js → p-9d6aaf76.js} +6 -6
  173. package/dist/components/p-9d6aaf76.js.map +1 -0
  174. package/dist/components/{p-3a74719c.js → p-a9e1bf70.js} +4 -4
  175. package/dist/components/{p-3a74719c.js.map → p-a9e1bf70.js.map} +1 -1
  176. package/dist/components/{p-016dbae8.js → p-a9f162a8.js} +6 -6
  177. package/dist/components/{p-016dbae8.js.map → p-a9f162a8.js.map} +1 -1
  178. package/dist/components/{p-3a990da7.js → p-b4768da6.js} +5 -5
  179. package/dist/components/{p-3a990da7.js.map → p-b4768da6.js.map} +1 -1
  180. package/dist/components/{p-543082ff.js → p-d88ced51.js} +2 -2
  181. package/dist/components/{p-543082ff.js.map → p-d88ced51.js.map} +1 -1
  182. package/dist/components/{p-e7f21fe7.js → p-dcabc6fa.js} +3 -3
  183. package/dist/components/{p-e7f21fe7.js.map → p-dcabc6fa.js.map} +1 -1
  184. package/dist/components/{p-e40363fd.js → p-f469df15.js} +2 -2
  185. package/dist/components/{p-e40363fd.js.map → p-f469df15.js.map} +1 -1
  186. package/dist/esm/loader.js +1 -1
  187. package/dist/esm/native.js +1 -1
  188. package/dist/esm/nv-badge_2.entry.js +6 -5
  189. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  190. package/dist/esm/nv-base.entry.js +1 -1
  191. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  192. package/dist/esm/nv-breadcrumb.entry.js.map +1 -1
  193. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  194. package/dist/esm/nv-button.entry.js +5 -3
  195. package/dist/esm/nv-button.entry.js.map +1 -1
  196. package/dist/esm/nv-calendar.entry.js +1 -1
  197. package/dist/esm/nv-col.entry.js +1 -1
  198. package/dist/esm/nv-datagrid.entry.js +66 -6
  199. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  200. package/dist/esm/nv-datagridcolumn.entry.js +5 -1
  201. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  202. package/dist/esm/nv-dialog.entry.js +16 -12
  203. package/dist/esm/nv-dialog.entry.js.map +1 -1
  204. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  205. package/dist/esm/nv-fieldcheckbox.entry.js +5 -5
  206. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  207. package/dist/esm/nv-fielddate.entry.js +5 -5
  208. package/dist/esm/nv-fielddaterange.entry.js +4 -4
  209. package/dist/esm/nv-fielddropdown.entry.js +3 -9
  210. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  211. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  212. package/dist/esm/nv-fieldmultiselect.entry.js +9 -64
  213. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  214. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  215. package/dist/esm/nv-fieldpassword.entry.js +9 -7
  216. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  217. package/dist/esm/nv-fieldradio.entry.js +3 -3
  218. package/dist/esm/nv-fieldselect.entry.js +5 -5
  219. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  220. package/dist/esm/nv-fieldtext.entry.js +3 -3
  221. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  222. package/dist/esm/nv-fieldtime.entry.js +9 -9
  223. package/dist/esm/nv-icon.entry.js +1 -1
  224. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  225. package/dist/esm/nv-menu.entry.js +3 -3
  226. package/dist/esm/nv-menu.entry.js.map +1 -1
  227. package/dist/esm/nv-menuitem.entry.js +1 -1
  228. package/dist/esm/nv-popover.entry.js +11 -9
  229. package/dist/esm/nv-popover.entry.js.map +1 -1
  230. package/dist/esm/nv-row.entry.js +1 -1
  231. package/dist/esm/nv-stack.entry.js +1 -1
  232. package/dist/esm/nv-table.entry.js +2 -2
  233. package/dist/esm/nv-toggle.entry.js +3 -3
  234. package/dist/esm/nv-toggle.entry.js.map +1 -1
  235. package/dist/esm/nv-tooltip.entry.js +1 -1
  236. package/dist/native/native.css +1 -1
  237. package/dist/native/native.esm.js +1 -1
  238. package/dist/native/native.esm.js.map +1 -1
  239. package/dist/native/{p-ddb4fcc3.entry.js → p-000ef9c9.entry.js} +2 -2
  240. package/dist/native/p-000ef9c9.entry.js.map +1 -0
  241. package/dist/native/{p-4d2adf8c.entry.js → p-002e7bf1.entry.js} +2 -2
  242. package/dist/native/{p-3a47035f.entry.js → p-115ad66c.entry.js} +2 -2
  243. package/dist/native/{p-2b584e35.entry.js → p-1e5453be.entry.js} +2 -2
  244. package/dist/native/p-2ed9934a.entry.js +2 -0
  245. package/dist/native/{p-5e04b50f.entry.js → p-3df6febe.entry.js} +2 -2
  246. package/dist/native/{p-794b7820.entry.js → p-43cc98dc.entry.js} +2 -2
  247. package/dist/native/p-4977fcd0.entry.js +2 -0
  248. package/dist/native/{p-16b38dc2.entry.js → p-4c859a14.entry.js} +2 -2
  249. package/dist/native/{p-9fe6a9b7.entry.js → p-4fe5ebe9.entry.js} +2 -2
  250. package/dist/native/{p-dcfef507.entry.js → p-50dcce07.entry.js} +2 -2
  251. package/dist/native/{p-657a0b8a.entry.js → p-60d6ffa3.entry.js} +2 -2
  252. package/dist/native/p-60d6ffa3.entry.js.map +1 -0
  253. package/dist/native/{p-569e9663.entry.js → p-626a1372.entry.js} +2 -2
  254. package/dist/native/p-6603d939.entry.js +2 -0
  255. package/dist/native/p-6603d939.entry.js.map +1 -0
  256. package/dist/native/{p-a6834c17.entry.js → p-74f7f404.entry.js} +2 -2
  257. package/dist/native/{p-a6834c17.entry.js.map → p-74f7f404.entry.js.map} +1 -1
  258. package/dist/native/p-75f4bfe8.entry.js +2 -0
  259. package/dist/native/{p-ca1eff59.entry.js.map → p-75f4bfe8.entry.js.map} +1 -1
  260. package/dist/native/{p-c84eb11f.entry.js → p-76cd466a.entry.js} +2 -2
  261. package/dist/native/p-76cd466a.entry.js.map +1 -0
  262. package/dist/native/p-7e1fa44c.entry.js +2 -0
  263. package/dist/native/{p-4b6d3739.entry.js.map → p-7e1fa44c.entry.js.map} +1 -1
  264. package/dist/native/p-8946883b.entry.js +2 -0
  265. package/dist/native/p-8946883b.entry.js.map +1 -0
  266. package/dist/native/{p-552ca13e.entry.js → p-8f7c1bb8.entry.js} +2 -2
  267. package/dist/native/{p-ede0c391.entry.js → p-98030346.entry.js} +2 -2
  268. package/dist/native/p-98030346.entry.js.map +1 -0
  269. package/dist/native/{p-ac72abfc.entry.js → p-aa957898.entry.js} +2 -2
  270. package/dist/native/{p-4c88e8be.entry.js → p-aeac63ea.entry.js} +2 -2
  271. package/dist/native/{p-4c88e8be.entry.js.map → p-aeac63ea.entry.js.map} +1 -1
  272. package/dist/native/{p-39fd54e3.entry.js → p-b11fdaed.entry.js} +2 -2
  273. package/dist/native/{p-a3ea7b59.entry.js → p-b6164ebc.entry.js} +2 -2
  274. package/dist/native/p-b8b58064.entry.js +2 -0
  275. package/dist/native/p-b8b58064.entry.js.map +1 -0
  276. package/dist/native/{p-ffcf8271.entry.js → p-be5f62e5.entry.js} +2 -2
  277. package/dist/native/p-be5f62e5.entry.js.map +1 -0
  278. package/dist/native/p-c6fe73a9.entry.js +2 -0
  279. package/dist/native/p-c6fe73a9.entry.js.map +1 -0
  280. package/dist/native/p-ce64d562.entry.js +2 -0
  281. package/dist/native/p-d352a8b3.entry.js +2 -0
  282. package/dist/native/p-d352a8b3.entry.js.map +1 -0
  283. package/dist/native/{p-d987271c.entry.js → p-d4e48d08.entry.js} +2 -2
  284. package/dist/native/p-d5158e27.entry.js +2 -0
  285. package/dist/native/p-d5158e27.entry.js.map +1 -0
  286. package/dist/native/{p-4eb132d3.entry.js → p-e200185a.entry.js} +2 -2
  287. package/dist/native/p-e200185a.entry.js.map +1 -0
  288. package/dist/native/{p-870d5a5c.entry.js → p-e4f84faa.entry.js} +2 -2
  289. package/dist/types/components/nv-badge/nv-badge.d.ts +1 -1
  290. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +7 -0
  291. package/dist/types/components/nv-datagridcolumn/nv-datagridcolumn.d.ts +4 -0
  292. package/dist/types/components/nv-dialog/nv-dialog.d.ts +4 -3
  293. package/dist/types/components/nv-fielddropdown/nv-fielddropdown.d.ts +1 -3
  294. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +2 -11
  295. package/dist/types/components/nv-fieldpassword/nv-fieldpassword.d.ts +2 -0
  296. package/dist/types/components/nv-menu/nv-menu.d.ts +4 -4
  297. package/dist/types/components.d.ts +43 -8
  298. package/dist/types/nova-docs.d.ts +11 -0
  299. package/dist/vscode-data.json +9 -1
  300. package/hydrate/index.js +207 -192
  301. package/hydrate/index.mjs +207 -192
  302. package/package.json +11 -10
  303. package/dist/blazor-docs.json +0 -18738
  304. package/dist/components/p-0631d152.js.map +0 -1
  305. package/dist/components/p-62f6da8a.js.map +0 -1
  306. package/dist/components/p-cd083aba.js +0 -176
  307. package/dist/components/p-cd083aba.js.map +0 -1
  308. package/dist/components/p-d552352b.js.map +0 -1
  309. package/dist/docs.d.ts +0 -443
  310. package/dist/docs.json +0 -18538
  311. package/dist/native/p-1d5b6c6d.entry.js +0 -2
  312. package/dist/native/p-4b6d3739.entry.js +0 -2
  313. package/dist/native/p-4c96b614.entry.js +0 -2
  314. package/dist/native/p-4eb132d3.entry.js.map +0 -1
  315. package/dist/native/p-657a0b8a.entry.js.map +0 -1
  316. package/dist/native/p-8ae27c0a.entry.js +0 -2
  317. package/dist/native/p-8ae27c0a.entry.js.map +0 -1
  318. package/dist/native/p-adf0f628.entry.js +0 -2
  319. package/dist/native/p-adf0f628.entry.js.map +0 -1
  320. package/dist/native/p-c84eb11f.entry.js.map +0 -1
  321. package/dist/native/p-ca1eff59.entry.js +0 -2
  322. package/dist/native/p-cce90f27.entry.js +0 -2
  323. package/dist/native/p-cce90f27.entry.js.map +0 -1
  324. package/dist/native/p-d3d664c7.entry.js +0 -2
  325. package/dist/native/p-d3d664c7.entry.js.map +0 -1
  326. package/dist/native/p-d7b5ab6e.entry.js +0 -2
  327. package/dist/native/p-d7b5ab6e.entry.js.map +0 -1
  328. package/dist/native/p-ddb4fcc3.entry.js.map +0 -1
  329. package/dist/native/p-ed595c96.entry.js +0 -2
  330. package/dist/native/p-ed595c96.entry.js.map +0 -1
  331. package/dist/native/p-ede0c391.entry.js.map +0 -1
  332. package/dist/native/p-efb52057.entry.js +0 -2
  333. package/dist/native/p-ffcf8271.entry.js.map +0 -1
  334. /package/dist/native/{p-4d2adf8c.entry.js.map → p-002e7bf1.entry.js.map} +0 -0
  335. /package/dist/native/{p-3a47035f.entry.js.map → p-115ad66c.entry.js.map} +0 -0
  336. /package/dist/native/{p-2b584e35.entry.js.map → p-1e5453be.entry.js.map} +0 -0
  337. /package/dist/native/{p-efb52057.entry.js.map → p-2ed9934a.entry.js.map} +0 -0
  338. /package/dist/native/{p-5e04b50f.entry.js.map → p-3df6febe.entry.js.map} +0 -0
  339. /package/dist/native/{p-794b7820.entry.js.map → p-43cc98dc.entry.js.map} +0 -0
  340. /package/dist/native/{p-4c96b614.entry.js.map → p-4977fcd0.entry.js.map} +0 -0
  341. /package/dist/native/{p-16b38dc2.entry.js.map → p-4c859a14.entry.js.map} +0 -0
  342. /package/dist/native/{p-9fe6a9b7.entry.js.map → p-4fe5ebe9.entry.js.map} +0 -0
  343. /package/dist/native/{p-dcfef507.entry.js.map → p-50dcce07.entry.js.map} +0 -0
  344. /package/dist/native/{p-569e9663.entry.js.map → p-626a1372.entry.js.map} +0 -0
  345. /package/dist/native/{p-552ca13e.entry.js.map → p-8f7c1bb8.entry.js.map} +0 -0
  346. /package/dist/native/{p-ac72abfc.entry.js.map → p-aa957898.entry.js.map} +0 -0
  347. /package/dist/native/{p-39fd54e3.entry.js.map → p-b11fdaed.entry.js.map} +0 -0
  348. /package/dist/native/{p-a3ea7b59.entry.js.map → p-b6164ebc.entry.js.map} +0 -0
  349. /package/dist/native/{p-1d5b6c6d.entry.js.map → p-ce64d562.entry.js.map} +0 -0
  350. /package/dist/native/{p-d987271c.entry.js.map → p-d4e48d08.entry.js.map} +0 -0
  351. /package/dist/native/{p-870d5a5c.entry.js.map → p-e4f84faa.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nv-datagrid.docs.js","sourceRoot":"","sources":["../../../src/components/nv-datagrid/nv-datagrid.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvDatagridDocs: NovaDocs<Components.NvDatagrid> = {\n component: 'nv-datagrid',\n badge: 'beta',\n subcomponents: ['nv-datagridcolumn', 'nv-iconbutton', 'nv-badge'],\n composedComponents: ['nv-datagridcolumn'],\n stories: [\n {\n name: 'Default',\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.noColumnsNoDataMessage),\n args: {\n noColumnsNoDataMessage: 'Nothing to display.',\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.noDataMessage),\n args: {\n noDataMessage: 'No element available to display.',\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.columns),\n args: {\n columns: [\n { header: 'Name', accessor: 'name' },\n { header: 'Age', accessor: 'age' },\n { header: 'Email', accessor: 'email' },\n ],\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.columnsJson),\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.data),\n args: {\n data: [\n { name: 'Alice', age: '25', email: 'alice@mail.com' },\n { name: 'Bob', age: '30', email: 'bob@mail.com' },\n ],\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.dataJson),\n args: {\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'ColumnsArrayAndDataArray',\n args: {\n columns: [\n { header: 'Name', accessor: 'name' },\n { header: 'Age', accessor: 'age' },\n { header: 'Email', accessor: 'email' },\n ],\n data: [\n { name: 'Alice', age: '25', email: 'alice@mail.com' },\n { name: 'Bob', age: '30', email: 'bob@mail.com' },\n ],\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'ColumnsJSONAndDataJSON',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'WithDataAndTemplate',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\"},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\"}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"actions\">\n <div slot=\"header\"></div>\n <div slot=\"cell\">\n <nv-iconbutton\n size=\"xs\"\n name=\"pencil\"\n data-bind-event=\"click:edit:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"trash\"\n data-bind-event=\"click:delete:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"mail\"\n data-bind-event=\"click:sendEmail:id,email\"\n ></nv-iconbutton>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n {\n name: 'WithDataAndTemplateComplexData',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\", \"address\": {\"city\": \"New York\", \"country\": \"USA\"}, \"status\": {\"label\": \"success\", \"color\": \"1\", \"icon\": \"check\"}},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\", \"address\": {\"city\": \"Los Angeles\", \"country\": \"USA\"}, \"status\": {\"label\": \"warning\", \"color\": \"2\", \"icon\": \"alert-circle\"}},\n {\"id\":3,\"name\":\"John Smith\",\"age\":35,\"email\":\"john.smith@mail.com\", \"address\": {\"city\": \"London\", \"country\": \"UK\"}, \"status\": {\"label\": \"error\", \"color\": \"3\", \"icon\": \"loader\"}},\n {\"id\":4,\"name\":\"Jane Smith\",\"age\":40,\"email\":\"jane.smith@mail.com\", \"address\": {\"city\": \"Paris\", \"country\": \"France\"}, \"status\": {\"label\": \"info\", \"color\": \"5\", \"icon\": \"info-circle\"}}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"address\" header=\"Address\">\n <div slot=\"cell\">\n <span>__address.city__, __address.country__</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"status\" header=\"Status\">\n <div slot=\"header\">\n <span class=\"text-md font-bold text-low\">Status</span>\n </div>\n <div slot=\"cell\">\n <nv-badge color=\"__status.color__\" lead-icon=\"__status.icon__\">\n __status.label__\n </nv-badge>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"actions\">\n <div slot=\"header\"></div>\n <div slot=\"cell\">\n <nv-iconbutton\n size=\"xs\"\n name=\"pencil\"\n data-bind-event=\"click:edit:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"trash\"\n data-bind-event=\"click:delete:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"mail\"\n data-bind-event=\"click:sendEmail:id,email\"\n ></nv-iconbutton>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.enableGlobalFilter),\n args: {\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" },\n { \"name\": \"Charlie\", \"age\": \"35\", \"email\": \"charlie@mail.com\" },\n { \"name\": \"David\", \"age\": \"40\", \"email\": \"david@mail.com\" },\n { \"name\": \"Eve\", \"age\": \"45\", \"email\": \"eve@mail.com\" },\n { \"name\": \"Frank\", \"age\": \"50\", \"email\": \"frank@mail.com\" },\n { \"name\": \"Grace\", \"age\": \"55\", \"email\": \"grace@mail.com\" },\n { \"name\": \"Helen\", \"age\": \"60\", \"email\": \"helen@mail.com\" },\n { \"name\": \"Ivy\", \"age\": \"65\", \"email\": \"ivy@mail.com\" },\n { \"name\": \"Jack\", \"age\": \"70\", \"email\": \"jack@mail.com\" },\n { \"name\": \"Kate\", \"age\": \"75\", \"email\": \"kate@mail.com\" },\n { \"name\": \"Liam\", \"age\": \"80\", \"email\": \"liam@mail.com\" },\n { \"name\": \"Mia\", \"age\": \"85\", \"email\": \"mia@mail.com\" },\n { \"name\": \"Noah\", \"age\": \"90\", \"email\": \"noah@mail.com\" },\n { \"name\": \"Olivia\", \"age\": \"95\", \"email\": \"olivia@mail.com\" }\n ]`,\n enableGlobalFilter: true,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'SlotBefore',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <div slot=\"before\">Before</div>\n </nv-datagrid>\n ),\n },\n {\n name: 'SlotAfter',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <div slot=\"after\">After</div>\n </nv-datagrid>\n ),\n },\n {\n name: 'SlotBeforeAndAfter',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <div slot=\"before\">Before</div>\n <div slot=\"after\">After</div>\n </nv-datagrid>\n ),\n },\n ],\n};\n\nexport default NvDatagridDocs;\n"]}
1
+ {"version":3,"file":"nv-datagrid.docs.js","sourceRoot":"","sources":["../../../src/components/nv-datagrid/nv-datagrid.docs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,cAAc,GAAoC;IACtD,SAAS,EAAE,aAAa;IACxB,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,CAAC,mBAAmB,EAAE,eAAe,EAAE,UAAU,CAAC;IACjE,kBAAkB,EAAE,CAAC,mBAAmB,CAAC;IACzC,OAAO,EAAE;QACP;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAClE,IAAI,EAAE;gBACJ,sBAAsB,EAAE,qBAAqB;aAC9C;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YACzD,IAAI,EAAE;gBACJ,aAAa,EAAE,kCAAkC;gBACjD,WAAW,EAAE;;;;UAIX;aACH;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;oBACpC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;oBAClC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;iBACvC;aACF;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACvD,IAAI,EAAE;gBACJ,WAAW,EAAE;;;;UAIX;aACH;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAChD,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE;oBACrD,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;iBAClD;aACF;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAC/D,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;UAGR;gBACF,mBAAmB,EAAE,IAAI;aAC1B;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;oBACpC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;oBAClC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;iBACvC;gBACD,IAAI,EAAE;oBACJ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE;oBACrD,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;iBAClD;aACF;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE;gBACJ,WAAW,EAAE;;;;UAIX;gBACF,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,yBAAmB,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;oBAC9C,WAAK,IAAI,EAAC,QAAQ;wBAChB,yBAAqB,CACjB;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,6BAAyB,CACrB,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK;oBAC5C,WAAK,IAAI,EAAC,QAAQ;wBAChB,oBAAY,CACR;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,oCAA8B,CAC1B,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,cAAc;oBACvD,WAAK,IAAI,EAAC,MAAM;wBACd,SAAG,IAAI,EAAC,kBAAkB,gBAAc,CACpC,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,SAAS;oBACnC,WAAK,IAAI,EAAC,QAAQ,GAAO;oBACzB,WAAK,IAAI,EAAC,MAAM;wBACd,qBACE,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,QAAQ,qBACG,eAAe,GAChB;wBACjB,qBACE,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,OAAO,qBACI,iBAAiB,GAClB;wBACjB,qBACE,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,MAAM,qBACK,0BAA0B,GAC3B,CACb,CACY,CACR,CACf;SACF;QACD;YACE,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;;;UAKR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,yBAAmB,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;oBAC9C,WAAK,IAAI,EAAC,QAAQ;wBAChB,yBAAqB,CACjB;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,6BAAyB,CACrB,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK;oBAC5C,WAAK,IAAI,EAAC,QAAQ;wBAChB,oBAAY,CACR;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,oCAA8B,CAC1B,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,cAAc;oBACvD,WAAK,IAAI,EAAC,MAAM;wBACd,SAAG,IAAI,EAAC,kBAAkB,gBAAc,CACpC,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,SAAS,EAAC,MAAM,EAAC,SAAS;oBACpD,WAAK,IAAI,EAAC,MAAM;wBACd,wDAAkD,CAC9C,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ;oBAClD,WAAK,IAAI,EAAC,QAAQ;wBAChB,YAAM,KAAK,EAAC,4BAA4B,aAAc,CAClD;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,gBAAU,KAAK,EAAC,kBAAkB,eAAW,iBAAiB,uBAEnD,CACP,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,SAAS;oBACnC,WAAK,IAAI,EAAC,QAAQ,GAAO;oBACzB,WAAK,IAAI,EAAC,MAAM;wBACd,qBACE,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,QAAQ,qBACG,eAAe,GAChB;wBACjB,qBACE,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,OAAO,qBACI,iBAAiB,GAClB;wBACjB,qBACE,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,MAAM,qBACK,0BAA0B,GAC3B,CACb,CACY,CACR,CACf;SACF;QACD;YACE,IAAI,EAAE,MAAM,CAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAC9D,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;;;;;;;;;;;;;;UAgBR;gBACF,kBAAkB,EAAE,IAAI;aACzB;YACD,QAAQ,EAAE,iDAA+C;SAC1D;QACD;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE;gBACJ,WAAW,EAAE;;;;UAIX;gBACF,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,WAAK,IAAI,EAAC,QAAQ,aAAa,CACnB,CACf;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,WAAW,EAAE;;;;UAIX;gBACF,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,WAAK,IAAI,EAAC,OAAO,YAAY,CACjB,CACf;SACF;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE;gBACJ,WAAW,EAAE;;;;UAIX;gBACF,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,WAAK,IAAI,EAAC,QAAQ,aAAa;gBAC/B,WAAK,IAAI,EAAC,OAAO,YAAY,CACjB,CACf;SACF;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,yBAAmB,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;oBAC9C,WAAK,IAAI,EAAC,QAAQ;wBAChB,yBAAqB,CACjB;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,6BAAyB,CACrB,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK;oBAC5C,WAAK,IAAI,EAAC,QAAQ;wBAChB,oBAAY,CACR;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,oCAA8B,CAC1B,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,cAAc;oBACvD,WAAK,IAAI,EAAC,MAAM;wBACd,SAAG,IAAI,EAAC,kBAAkB,gBAAc,CACpC,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,SAAS;oBAClD,WAAK,IAAI,EAAC,MAAM;wBACd,4BAAsB,CAClB,CACY,CACR,CACf;SACF;QACD;YACE,IAAI,EAAE,+CAA+C;YACrD,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,yBAAmB,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;oBAC9C,WAAK,IAAI,EAAC,QAAQ;wBAChB,yBAAqB,CACjB;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,6BAAyB,CACrB,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK;oBAC5C,WAAK,IAAI,EAAC,QAAQ;wBAChB,oBAAY,CACR;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,oCAA8B,CAC1B,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,cAAc;oBACvD,WAAK,IAAI,EAAC,MAAM;wBACd,SAAG,IAAI,EAAC,kBAAkB,gBAAc,CACpC,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,SAAS;oBAClD,WAAK,IAAI,EAAC,MAAM;wBACd,iCAA2B,CACvB,CACY,CACR,CACf;SACF;QACD;YACE,IAAI,EAAE,6DAA6D;YACnE,IAAI,EAAE;gBACJ,QAAQ,EAAE;;;UAGR;aACH;YACD,QAAQ,EAAE,CACR;gBACE,yBAAmB,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;oBAC9C,WAAK,IAAI,EAAC,QAAQ;wBAChB,yBAAqB,CACjB;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,6BAAyB,CACrB,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK;oBAC5C,WAAK,IAAI,EAAC,QAAQ;wBAChB,oBAAY,CACR;oBACN,WAAK,IAAI,EAAC,MAAM;wBACd,oCAA8B,CAC1B,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,cAAc;oBACvD,WAAK,IAAI,EAAC,MAAM;wBACd,SAAG,IAAI,EAAC,kBAAkB,gBAAc,CACpC,CACY;gBAEpB,yBAAmB,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,SAAS;oBAClD,WAAK,IAAI,EAAC,MAAM;wBACd,gBAAU,KAAK,EAAC,gBAAgB,GAAY,CACxC,CACY,CACR,CACf;SACF;KACF;CACF,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\nimport { nameof } from '../../utils/class.utils';\n\nconst NvDatagridDocs: NovaDocs<Components.NvDatagrid> = {\n component: 'nv-datagrid',\n badge: 'beta',\n subcomponents: ['nv-datagridcolumn', 'nv-iconbutton', 'nv-badge'],\n composedComponents: ['nv-datagridcolumn'],\n stories: [\n {\n name: 'Default',\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.noColumnsNoDataMessage),\n args: {\n noColumnsNoDataMessage: 'Nothing to display.',\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.noDataMessage),\n args: {\n noDataMessage: 'No element available to display.',\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.columns),\n args: {\n columns: [\n { header: 'Name', accessor: 'name' },\n { header: 'Age', accessor: 'age' },\n { header: 'Email', accessor: 'email' },\n ],\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.columnsJson),\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.data),\n args: {\n data: [\n { name: 'Alice', age: '25', email: 'alice@mail.com' },\n { name: 'Bob', age: '30', email: 'bob@mail.com' },\n ],\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.dataJson),\n args: {\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\", \"roles\": [{ \"id\": \"1\", \"name\": \"Admin\" }] },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\", \"roles\": [{ \"id\": \"2\", \"name\": \"User\" }] }\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.autoGenerateColumns),\n args: {\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\", \"roles\": [{ \"id\": \"1\", \"name\": \"Admin\" }] },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\", \"roles\": [{ \"id\": \"2\", \"name\": \"User\" }] }\n ]`,\n autoGenerateColumns: true,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'ColumnsArrayAndDataArray',\n args: {\n columns: [\n { header: 'Name', accessor: 'name' },\n { header: 'Age', accessor: 'age' },\n { header: 'Email', accessor: 'email' },\n ],\n data: [\n { name: 'Alice', age: '25', email: 'alice@mail.com' },\n { name: 'Bob', age: '30', email: 'bob@mail.com' },\n ],\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'ColumnsJSONAndDataJSON',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'WithDataAndTemplate',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\"},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\"}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"actions\">\n <div slot=\"header\"></div>\n <div slot=\"cell\">\n <nv-iconbutton\n size=\"xs\"\n name=\"pencil\"\n data-bind-event=\"click:edit:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"trash\"\n data-bind-event=\"click:delete:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"mail\"\n data-bind-event=\"click:sendEmail:id,email\"\n ></nv-iconbutton>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n {\n name: 'WithDataAndTemplateComplexData',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\", \"address\": {\"city\": \"New York\", \"country\": \"USA\"}, \"status\": {\"label\": \"success\", \"color\": \"1\", \"icon\": \"check\"}},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\", \"address\": {\"city\": \"Los Angeles\", \"country\": \"USA\"}, \"status\": {\"label\": \"warning\", \"color\": \"2\", \"icon\": \"alert-circle\"}},\n {\"id\":3,\"name\":\"John Smith\",\"age\":35,\"email\":\"john.smith@mail.com\", \"address\": {\"city\": \"London\", \"country\": \"UK\"}, \"status\": {\"label\": \"error\", \"color\": \"3\", \"icon\": \"loader\"}},\n {\"id\":4,\"name\":\"Jane Smith\",\"age\":40,\"email\":\"jane.smith@mail.com\", \"address\": {\"city\": \"Paris\", \"country\": \"France\"}, \"status\": {\"label\": \"info\", \"color\": \"5\", \"icon\": \"info-circle\"}}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"address\" header=\"Address\">\n <div slot=\"cell\">\n <span>__address.city__, __address.country__</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"status\" header=\"Status\">\n <div slot=\"header\">\n <span class=\"text-md font-bold text-low\">Status</span>\n </div>\n <div slot=\"cell\">\n <nv-badge color=\"__status.color__\" lead-icon=\"__status.icon__\">\n __status.label__\n </nv-badge>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"actions\">\n <div slot=\"header\"></div>\n <div slot=\"cell\">\n <nv-iconbutton\n size=\"xs\"\n name=\"pencil\"\n data-bind-event=\"click:edit:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"trash\"\n data-bind-event=\"click:delete:id\"\n ></nv-iconbutton>\n <nv-iconbutton\n size=\"xs\"\n name=\"mail\"\n data-bind-event=\"click:sendEmail:id,email\"\n ></nv-iconbutton>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n {\n name: nameof<Components.NvDatagrid>(x => x.enableGlobalFilter),\n args: {\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" },\n { \"name\": \"Charlie\", \"age\": \"35\", \"email\": \"charlie@mail.com\" },\n { \"name\": \"David\", \"age\": \"40\", \"email\": \"david@mail.com\" },\n { \"name\": \"Eve\", \"age\": \"45\", \"email\": \"eve@mail.com\" },\n { \"name\": \"Frank\", \"age\": \"50\", \"email\": \"frank@mail.com\" },\n { \"name\": \"Grace\", \"age\": \"55\", \"email\": \"grace@mail.com\" },\n { \"name\": \"Helen\", \"age\": \"60\", \"email\": \"helen@mail.com\" },\n { \"name\": \"Ivy\", \"age\": \"65\", \"email\": \"ivy@mail.com\" },\n { \"name\": \"Jack\", \"age\": \"70\", \"email\": \"jack@mail.com\" },\n { \"name\": \"Kate\", \"age\": \"75\", \"email\": \"kate@mail.com\" },\n { \"name\": \"Liam\", \"age\": \"80\", \"email\": \"liam@mail.com\" },\n { \"name\": \"Mia\", \"age\": \"85\", \"email\": \"mia@mail.com\" },\n { \"name\": \"Noah\", \"age\": \"90\", \"email\": \"noah@mail.com\" },\n { \"name\": \"Olivia\", \"age\": \"95\", \"email\": \"olivia@mail.com\" }\n ]`,\n enableGlobalFilter: true,\n },\n template: <nv-datagrid data-storybook-args></nv-datagrid>,\n },\n {\n name: 'SlotBefore',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <div slot=\"before\">Before</div>\n </nv-datagrid>\n ),\n },\n {\n name: 'SlotAfter',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <div slot=\"after\">After</div>\n </nv-datagrid>\n ),\n },\n {\n name: 'SlotBeforeAndAfter',\n args: {\n columnsJson: `[\n {\"header\":\"Name\",\"accessor\":\"name\"},\n {\"header\":\"Age\",\"accessor\":\"age\"},\n {\"header\":\"Email\",\"accessor\":\"email\"}\n ]`,\n dataJson: `[\n { \"name\": \"Alice\", \"age\": \"25\", \"email\": \"alice@mail.com\" },\n { \"name\": \"Bob\", \"age\": \"30\", \"email\": \"bob@mail.com\" }\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <div slot=\"before\">Before</div>\n <div slot=\"after\">After</div>\n </nv-datagrid>\n ),\n },\n {\n name: 'WithDataAndTemplateAndMultipleElements',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\",\"roles\":[\"Admin\",\"User\"]},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\",\"roles\":[\"User\"]}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"roles\" header=\"Role(s)\">\n <div slot=\"cell\">\n <span>__roles__</span>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n {\n name: 'WithDataAndTemplateAndMultipleComplexElements',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\",\"roles\":[{\"id\":\"1\",\"name\":\"Admin\"},{\"id\":\"2\",\"name\":\"User\"}]},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\",\"roles\":[{\"id\":\"2\",\"name\":\"User\"}]}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"roles\" header=\"Role(s)\">\n <div slot=\"cell\">\n <span>__roles.name__</span>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n {\n name: 'WithDataAndTemplateAndMultipleComplexElementsRepeatTemplate',\n args: {\n dataJson: `[\n {\"id\":1,\"name\":\"John Doe\",\"age\":25,\"email\":\"john.doe@mail.com\",\"roles\":[{\"id\":\"1\",\"name\":\"Admin\"},{\"id\":\"2\",\"name\":\"User\"}]},\n {\"id\":2,\"name\":\"Jane Doe\",\"age\":30,\"email\":\"jane.doe@mail.com\",\"roles\":[{\"id\":\"2\",\"name\":\"User\"}]}\n ]`,\n },\n template: (\n <nv-datagrid data-storybook-args>\n <nv-datagridcolumn accessor=\"name\" header=\"Name\">\n <div slot=\"header\">\n <strong>Name</strong>\n </div>\n <div slot=\"cell\">\n <strong>__name__</strong>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"age\" header=\"Age\">\n <div slot=\"header\">\n <em>Age</em>\n </div>\n <div slot=\"cell\">\n <span>__age__ years old</span>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"email\" header=\"Mail Address\">\n <div slot=\"cell\">\n <a href=\"mailto:__email__\">__email__</a>\n </div>\n </nv-datagridcolumn>\n\n <nv-datagridcolumn accessor=\"roles\" header=\"Role(s)\" repeat-template>\n <div slot=\"cell\">\n <nv-badge label=\"__roles.name__\"></nv-badge>\n </div>\n </nv-datagridcolumn>\n </nv-datagrid>\n ),\n },\n ],\n};\n\nexport default NvDatagridDocs;\n"]}
@@ -22,6 +22,7 @@ export class NvDatagrid {
22
22
  this.parsedColumns = []; // Parsed array
23
23
  this.parsedData = []; // Parsed array
24
24
  this.globalFilter = '';
25
+ this.columnData = [];
25
26
  //#endregion STATES
26
27
  /****************************************************************************/
27
28
  //#region PROPERTIES
@@ -65,6 +66,12 @@ export class NvDatagrid {
65
66
  * @default false
66
67
  */
67
68
  this.enableGlobalFilter = false;
69
+ /**
70
+ * Whether to automatically generate columns if none are provided.
71
+ * If columns are explicitly set, this property is ignored.
72
+ * @default false
73
+ */
74
+ this.autoGenerateColumns = false;
68
75
  this.debouncedFilter = debounce((value) => {
69
76
  this.globalFilter = value;
70
77
  }, 300);
@@ -91,6 +98,7 @@ export class NvDatagrid {
91
98
  */
92
99
  cacheTemplates() {
93
100
  const columns = Array.from(this.el.querySelectorAll('nv-datagridcolumn'));
101
+ this.columnData = [];
94
102
  columns.forEach((col) => {
95
103
  const key = col.accessor;
96
104
  const cellSlot = col.querySelector('[slot="cell"]');
@@ -111,6 +119,12 @@ export class NvDatagrid {
111
119
  this.headerTemplateCache.set(key, headerDiv);
112
120
  }
113
121
  }
122
+ const colData = {
123
+ header: col.header,
124
+ accessor: col.accessor,
125
+ repeatTemplate: col.hasAttribute('repeat-template'),
126
+ };
127
+ this.columnData.push(colData);
114
128
  });
115
129
  }
116
130
  parseDataAndColumns() {
@@ -137,7 +151,9 @@ export class NvDatagrid {
137
151
  accessor: key,
138
152
  header: key.charAt(0).toUpperCase() + key.slice(1),
139
153
  }));
140
- this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);
154
+ if (this.autoGenerateColumns) {
155
+ this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);
156
+ }
141
157
  }
142
158
  }
143
159
  deepEqual(a, b) {
@@ -245,6 +261,25 @@ export class NvDatagrid {
245
261
  tableOptions.columns = this.generateColumns(validColumns, tableOptions);
246
262
  }
247
263
  }
264
+ else {
265
+ // No columns and data is available
266
+ const hasData = this.parsedData &&
267
+ Array.isArray(this.parsedData) &&
268
+ this.parsedData.length > 0;
269
+ if (hasData) {
270
+ // No columns and data is available
271
+ const firstRow = this.parsedData[0];
272
+ const arrayColumnsConfig = Object.keys(firstRow).map(key => ({
273
+ accessor: key,
274
+ header: key.charAt(0).toUpperCase() + key.slice(1),
275
+ }));
276
+ if (this.autoGenerateColumns) {
277
+ this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);
278
+ }
279
+ tableOptions.data = this.getTableData();
280
+ tableOptions.columns = this.generateColumns(arrayColumnsConfig, tableOptions);
281
+ }
282
+ }
248
283
  // Initialize the table
249
284
  this.table = createTable(tableOptions);
250
285
  }
@@ -373,7 +408,25 @@ export class NvDatagrid {
373
408
  }
374
409
  }
375
410
  // Handle single-level key lookup
376
- return key in cellValue ? String(cellValue[key]) : this.fallbackValue;
411
+ if (key in cellValue) {
412
+ return String(cellValue[key]);
413
+ }
414
+ else if (Array.isArray(cellValue)) {
415
+ // Handle array of objects
416
+ const response = cellValue.map((item) => {
417
+ if (typeof item !== 'object') {
418
+ return item.toString();
419
+ }
420
+ else if (key in item) {
421
+ return item[key];
422
+ }
423
+ else {
424
+ return item.toString();
425
+ }
426
+ });
427
+ return response.join(', ');
428
+ }
429
+ return this.fallbackValue;
377
430
  }
378
431
  // If cellValue is a primitive (string, number, boolean, etc.), return it as a string
379
432
  return (_a = cellValue === null || cellValue === void 0 ? void 0 : cellValue.toString()) !== null && _a !== void 0 ? _a : this.fallbackValue;
@@ -484,7 +537,7 @@ export class NvDatagrid {
484
537
  const rows = !this.table || this.table === undefined || this.parsedData.length === 0
485
538
  ? []
486
539
  : (_c = (_b = this.table) === null || _b === void 0 ? void 0 : _b.getRowModel()) === null || _c === void 0 ? void 0 : _c.rows;
487
- return (h(Host, { key: '1c5233899e6940571c3aedefbd65f2ee5ec4f601' }, h("div", { key: '164f47d8c6c758a457b28b610d2660d51ae3707b', class: "hidden" }, h("slot", { key: '792284e9478b8486578e6a9b1e946df16a1f6c14' })), h("slot", { key: 'e8ea5758ec2c918a7f0af963312a114d162aabf5', name: "before" }), this.enableGlobalFilter && this.table && (h("div", { key: '6532e4d4427c5fa5ae9125bf434cd34b182099c9', class: "search-container" }, h("input", { key: 'd7740d417a6e649294a38454ba3f4a6c59e86547', type: "text", value: (_d = this.globalFilter) !== null && _d !== void 0 ? _d : '', onInput: this.handleGlobalFilteringOnInput, placeholder: "Search all columns...", class: "search-input", "aria-label": "Search all columns" }))), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (h("table", null, this.parsedColumns.length > 0 && headerGroups.length > 0 && (h("thead", null, this.parsedColumns.length > 0 && headerGroups
540
+ return (h(Host, { key: '94163c2c73d03dca35795bfb536c5743cb3aa0dc' }, h("div", { key: '022776844872a4a6fcf9d7bdc71651e946e83724', class: "hidden" }, h("slot", { key: 'a479cfc2b5ee53aa83450ec784451625e1ae7667' })), h("slot", { key: '9beeb16975a685d8ce05981923c999ab2ffa004e', name: "before" }), this.enableGlobalFilter && this.table && (h("div", { key: '57efcd1ee55fae941a0071000dc665ee76615f32', class: "search-container" }, h("input", { key: 'd7352618ce123a7c14d8ebcc0b228136ae2df66a', type: "text", value: (_d = this.globalFilter) !== null && _d !== void 0 ? _d : '', onInput: this.handleGlobalFilteringOnInput, placeholder: "Search all columns...", class: "search-input", "aria-label": "Search all columns" }))), this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (h("div", { class: "no-data" }, this.noColumnsNoDataMessage)) : (h("table", null, this.parsedColumns.length > 0 && headerGroups.length > 0 && (h("thead", null, this.parsedColumns.length > 0 && headerGroups
488
541
  ? headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups.map(headerGroup => (h("tr", { key: headerGroup.id }, headerGroup.headers.map(header => {
489
542
  return (h("th", { key: header.id }, header.isPlaceholder
490
543
  ? null
@@ -494,12 +547,19 @@ export class NvDatagrid {
494
547
  const rowId = row.id;
495
548
  const visibleCells = row === null || row === void 0 ? void 0 : row.getVisibleCells();
496
549
  return (h("tr", { key: rowId }, visibleCells.map(cell => {
550
+ var _a, _b;
497
551
  const cellAccessors = cell.column.id;
498
552
  const cellValue = cell.getValue();
499
- return (h("td", { key: cell.id, "data-row-id": rowId }, this.renderTemplate(this.templateCache.get(cellAccessors), cellValue, row) ||
500
- (cellValue !== null && cellValue !== void 0 ? cellValue : this.fallbackValue)));
553
+ return (h("td", { key: cell.id, "data-row-id": rowId }, ((_a = this.columnData.find(x => x.accessor === cellAccessors)) === null || _a === void 0 ? void 0 : _a.repeatTemplate) && Array.isArray(cellValue)
554
+ ? cellValue.map((item) => {
555
+ var _a;
556
+ return (_a = (this.renderTemplate(this.templateCache.get(cellAccessors), item, row) ||
557
+ item)) !== null && _a !== void 0 ? _a : this.fallbackValue;
558
+ })
559
+ : (_b = (this.renderTemplate(this.templateCache.get(cellAccessors), cellValue, row) ||
560
+ cellValue)) !== null && _b !== void 0 ? _b : this.fallbackValue));
501
561
  })));
502
- }))))), h("slot", { key: '3a3f83daf332e7d38ad9f225cc5a886197283a0a', name: "after" })));
562
+ }))))), h("slot", { key: '15815f259d3936559c89ff943dc349f99fda34fa', name: "after" })));
503
563
  }
504
564
  static get is() { return "nv-datagrid"; }
505
565
  static get originalStyleUrls() {
@@ -703,6 +763,29 @@ export class NvDatagrid {
703
763
  "attribute": "enable-global-filter",
704
764
  "reflect": true,
705
765
  "defaultValue": "false"
766
+ },
767
+ "autoGenerateColumns": {
768
+ "type": "boolean",
769
+ "mutable": false,
770
+ "complexType": {
771
+ "original": "boolean",
772
+ "resolved": "boolean",
773
+ "references": {}
774
+ },
775
+ "required": false,
776
+ "optional": false,
777
+ "docs": {
778
+ "tags": [{
779
+ "name": "default",
780
+ "text": "false"
781
+ }],
782
+ "text": "Whether to automatically generate columns if none are provided.\nIf columns are explicitly set, this property is ignored."
783
+ },
784
+ "getter": false,
785
+ "setter": false,
786
+ "attribute": "auto-generate-columns",
787
+ "reflect": true,
788
+ "defaultValue": "false"
706
789
  }
707
790
  };
708
791
  }
@@ -711,7 +794,8 @@ export class NvDatagrid {
711
794
  "table": {},
712
795
  "parsedColumns": {},
713
796
  "parsedData": {},
714
- "globalFilter": {}
797
+ "globalFilter": {},
798
+ "columnData": {}
715
799
  };
716
800
  }
717
801
  static get events() {
@@ -1 +1 @@
1
- {"version":3,"file":"nv-datagrid.js","sourceRoot":"","sources":["../../../src/components/nv-datagrid/nv-datagrid.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n Prop,\n h,\n State,\n Host,\n Watch,\n Element,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport {\n createTable,\n Table,\n TableOptionsResolved,\n getCoreRowModel,\n createColumnHelper,\n Row,\n getFilteredRowModel,\n} from '@tanstack/table-core';\nimport { Column } from '../../interfaces/Column';\nimport { ActionEvent } from '../../interfaces/actionEvent';\nimport { deepCopyElement, excludedProps } from '../../utils/dom.utils';\nimport { debounce } from '../../utils/input.utils';\n\n/**\n * A flexible data grid component powered by `@tanstack/table-core`.\n * @slot default - Use this slot to insert HTML into the data grid content.\n * @slot before - Use this slot to insert HTML before the data grid.\n * @slot after - Use this slot to insert HTML after the data grid.\n *\n * @deprecated [EXPERIMENTAL]\n * @experimental - This component is still under development and is not ready for use.\n */\n@Component({\n tag: 'nv-datagrid',\n styleUrl: './nv-datagrid.scss',\n shadow: false,\n})\nexport class NvDatagrid {\n @Element() el: HTMLNvDatagridElement;\n\n private readonly templateCache = new Map<string, Element>();\n private readonly headerTemplateCache = new Map<string, Element>();\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n private table: Table<any> | null = null;\n\n @State()\n parsedColumns: Column[] = []; // Parsed array\n\n @State()\n parsedData: any[] = []; // Parsed array\n\n @State()\n private globalFilter: string = '';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The data to display in the data grid.\n * @example [{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]\n * @default []\n */\n @Prop({ reflect: false })\n readonly data: any[] = [];\n\n /**\n * The columns to display in the data grid.\n * @example\n * [\n * {\"header\":\"Name\",\"accessor\":\"name\"},\n * {\"header\":\"Age\",\"accessor\":\"age\"},\n * {\"header\":\"Email\",\"accessor\":\"email\"}\n * ]\n * @default []\n */\n @Prop({ reflect: false })\n readonly columns: Column[] = [];\n\n /**\n * The data to display in the data grid.\n * It can be passed directly as an array of objects or as a JSON string.\n * If both `data` and `dataJson` are provided, `data` takes precedence.\n * @example `[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]`\n */\n @Prop({ reflect: true })\n readonly dataJson?: string;\n\n /**\n * The columns to display in the data grid.\n * It can be passed directly as an array of objects or as a JSON string.\n * If both `columns` and `columnsJson` are provided, `columns` takes precedence.\n * @example `[{\"header\":\"Name\",\"accessor\":\"name\"},{\"header\":\"Age\",\"accessor\":\"age\"},{\"header\":\"Email\",\"accessor\":\"email\"}]`\n */\n @Prop({ reflect: true })\n readonly columnsJson?: string;\n\n /**\n * Fallback value to be displayed when data is not available\n * @default 'N/A'\n */\n @Prop({ reflect: true })\n readonly fallbackValue: string = 'N/A';\n\n /**\n * The message to display when there is no data available.\n * @default 'No data available'\n */\n @Prop({ reflect: true })\n readonly noDataMessage: string = 'No data available';\n\n /**\n * The message to display when there are no columns or data available.\n * @default 'No data or columns available to display.'\n */\n @Prop({ reflect: true })\n readonly noColumnsNoDataMessage: string =\n 'No data or columns available to display.';\n\n /**\n * Whether to enable global filtering for the data grid.\n * This allows users to search across all columns for a specific value.\n * The search is case-insensitive and supports partial matches.\n * It use string.includes() to match the search term.\n * @default false\n */\n @Prop({ reflect: true })\n readonly enableGlobalFilter: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Caches templates for cells and headers upfront to improve performance.\n */\n private cacheTemplates() {\n const columns = Array.from(this.el.querySelectorAll('nv-datagridcolumn'));\n\n columns.forEach((col: HTMLNvDatagridcolumnElement) => {\n const key = col.accessor;\n const cellSlot = col.querySelector('[slot=\"cell\"]');\n\n if (cellSlot) {\n const element = deepCopyElement(cellSlot as HTMLElement);\n this.templateCache.set(key, element);\n }\n\n const headerSlot = col.querySelector('[slot=\"header\"]');\n\n if (headerSlot) {\n const element = deepCopyElement(headerSlot as HTMLElement);\n this.headerTemplateCache.set(key, element);\n } else {\n const header = col.header;\n\n if (header) {\n const headerDiv = document.createElement('div');\n headerDiv.textContent = header;\n this.headerTemplateCache.set(key, headerDiv);\n }\n }\n });\n }\n\n private parseDataAndColumns() {\n if (this.dataJson) {\n this.parseJsonData(this.dataJson);\n } else if (this.data && this.data.length > 0) {\n this.parseDataArray(this.data, this.parsedData);\n }\n\n if (this.columnsJson) {\n this.parseJsonColumns(this.columnsJson, this.parsedColumns);\n } else if (this.columns && this.columns.length > 0) {\n this.parseColumnsArray(this.columns, this.parsedColumns);\n } else if (this.headerTemplateCache.size > 0) {\n const headerKeys = Array.from(this.headerTemplateCache.keys());\n const arrayColumnsConfig = headerKeys.map<Column>(key => ({\n ...{}, // Ensure no prototype inheritance\n accessor: key,\n header: key ? key.charAt(0).toUpperCase() + key.slice(1) : '',\n }));\n\n this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);\n } else if (this.parsedData.length > 0) {\n const firstRow = this.parsedData[0];\n const arrayColumnsConfig = Object.keys(firstRow).map<Column>(key => ({\n accessor: key,\n header: key.charAt(0).toUpperCase() + key.slice(1),\n }));\n\n this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);\n }\n }\n\n private deepEqual(a: any, b: any): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n }\n\n /**\n * Parses the data array and sets the state accordingly\n * @param {any[]} newValue - The new value of the data array.\n * @param {any[]} oldValue - The old value of the data array.\n */\n private parseDataArray(newValue: any[], oldValue: any[]) {\n // Ensure both are arrays for proper comparison\n const safeNewValue = Array.isArray(newValue) ? newValue : [];\n const safeOldValue = Array.isArray(oldValue) ? oldValue : [];\n\n if (this.deepEqual(safeNewValue, safeOldValue)) {\n return; // Deep comparison\n }\n\n this.parsedData = Array.isArray(newValue) ? newValue : [];\n }\n\n /**\n * Parses the columns array and sets the state accordingly\n * @param {Column[]} newValue - The new value of the columns array.\n * @param {Column[]} oldValue - The old value of the columns array.\n */\n private parseColumnsArray(newValue: Column[], oldValue: Column[]) {\n // Ensure both are arrays for proper comparison\n const safeNewValue = Array.isArray(newValue) ? newValue : [];\n const safeOldValue = Array.isArray(oldValue) ? oldValue : [];\n\n // Use a proper deep comparison function (e.g., Lodash's isEqual)\n if (this.deepEqual(safeNewValue, safeOldValue)) {\n return;\n }\n\n // Assign only after confirming changes\n this.parsedColumns = safeNewValue;\n }\n\n private initializeTable(): void {\n // Clear the previous table instance (if any)\n this.table = null;\n\n // Set default options for the table\n const tableOptions: TableOptionsResolved<any> = {\n columns: [],\n data: [],\n getCoreRowModel: getCoreRowModel(),\n debugAll: true,\n onStateChange: state => console.log('Table state changed:', state), // eslint-disable-line nova/no-console\n renderFallbackValue: 'No rows to display',\n state: {\n sorting: [], // Default: no active sorting\n columnVisibility: {}, // Default: all columns visible\n columnFilters: [], // Default: no column filters\n columnPinning: {}, // Default: no column pinning\n columnSizing: {}, // Default: no column sizing\n columnOrder: [], // Default: as defined in the `columns`\n pagination: null, // Default: no pagination\n grouping: [], // Default: no active grouping\n expanded: {}, // Default: no expanded rows\n rowPinning: {}, // Default: no row pinning\n rowSelection: {}, // Default: no row selection\n globalFilter: null, // Default: no global filter\n columnSizingInfo: {\n columnSizingStart: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n }, // Default: no column sizing info\n },\n };\n\n if (this.enableGlobalFilter) {\n tableOptions.getFilteredRowModel = getFilteredRowModel();\n\n // Set the initial global filter value\n tableOptions.state.globalFilter = this.globalFilter;\n\n // Define the callback for global filter changes\n tableOptions.onGlobalFilterChange = value => {\n this.globalFilter = value;\n };\n\n tableOptions.globalFilterFn = (row, columnId, filterValue) => {\n const response = row\n .getValue(columnId)\n .toString()\n .toLowerCase()\n .includes(filterValue.toLowerCase());\n\n return response;\n };\n }\n\n if (this.parsedColumns.length > 0) {\n // Validate and generate column definitions\n const validColumns = this.parsedColumns.filter(\n column => column?.accessor && column?.header,\n );\n\n // Update tableOptions based on parsed data and columns\n const hasColumns =\n validColumns && Array.isArray(validColumns) && validColumns.length > 0;\n const hasData =\n this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0;\n\n if (!hasColumns && !hasData) {\n // No columns and no data\n } else if (hasColumns && !hasData) {\n tableOptions.columns = this.generateColumns(validColumns, tableOptions);\n } else {\n // Both columns and data are available\n // No columns and data is available\n tableOptions.data = this.getTableData();\n tableOptions.columns = this.generateColumns(validColumns, tableOptions);\n }\n }\n\n // Initialize the table\n this.table = createTable(tableOptions);\n }\n\n // Helper function to generate column definitions\n private generateColumns(\n validColumns: Column[],\n tableOptions: TableOptionsResolved<any>,\n ): any[] {\n const columnHelper = createColumnHelper<any>();\n\n if (validColumns.length > 0) {\n // Use defined columns\n return validColumns.map(column =>\n columnHelper.accessor(column.accessor, {\n header: column.header,\n cell: info => info.getValue(),\n enableGlobalFilter: this.enableGlobalFilter,\n }),\n );\n } else if (tableOptions.data && tableOptions.data.length > 0) {\n // Generate columns from data keys\n const sampleRow = tableOptions.data[0];\n return Object.keys(sampleRow).map(key =>\n columnHelper.accessor(key, {\n header: key.charAt(0).toUpperCase() + key.slice(1), // Capitalize key for header\n cell: info => info.getValue(),\n enableGlobalFilter: this.enableGlobalFilter,\n }),\n );\n } else {\n // No columns and no data\n return [];\n }\n }\n\n private getTableData(): any[] {\n if (\n this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0\n ) {\n return [...this.parsedData];\n } else {\n return [];\n }\n }\n\n private renderTemplate(\n template: Element | undefined,\n cellValue: any,\n row?: Row<any>,\n ) {\n if (!template) {\n return null;\n }\n\n // Handle <template> elements correctly\n const templateContent =\n template instanceof HTMLTemplateElement ? template.content : template;\n const element = deepCopyElement(templateContent as HTMLElement);\n\n // Replace placeholders in text content, attributes, and properties\n element.querySelectorAll('*').forEach(el => {\n // Replace placeholders in text content\n this.replacePlaceholdersTextContent(el, cellValue);\n\n // Replace placeholders in attributes\n this.replacePlaceholdersAttributes(el, cellValue);\n\n // Replace placeholders in properties\n this.replacePlaceholdersProperties(el, cellValue);\n });\n\n // Handle `data-bind-event`\n element.querySelectorAll('[data-bind-event]').forEach(el => {\n const bindEvent = el.getAttribute('data-bind-event') || '';\n const splitted = bindEvent.split(':');\n\n if (!bindEvent.includes(':') || splitted.length < 2) {\n console.warn('Invalid data-bind-event format:', bindEvent);\n return;\n }\n\n const eventType = splitted[0];\n const keyAction = splitted[1];\n const details = splitted.length > 2 ? splitted[2] : null;\n\n el.addEventListener(eventType, () => {\n const keys = details?.split(',') ?? [];\n\n // Convert keys into a single object instead of an array of objects\n const keyValue = keys.reduce((acc, key) => {\n if (row?.original) {\n if (key in row.original) {\n acc[key] = row.original?.[key];\n }\n }\n return acc;\n }, {} as Record<string, any>);\n\n const action: ActionEvent = { keyAction, details: keyValue };\n\n this.action.emit(action);\n });\n });\n\n // Ensure Web Components are properly connected\n setTimeout(() => {\n element.querySelectorAll('*').forEach(child => {\n if (typeof (child as any).connectedCallback === 'function') {\n (child as any).connectedCallback();\n }\n });\n }, 0);\n\n return (\n <div\n ref={el => {\n if (el) {\n el.innerHTML = ''; // Remove existing content\n el.appendChild(element); // Append new element\n }\n }}\n ></div>\n );\n }\n\n private replaceKeyWithValue(key: string, cellValue: any): string {\n // Handle undefined or null values by returning the fallback\n if (cellValue === undefined || cellValue === null) {\n return this.fallbackValue;\n }\n\n // If cellValue is an object, attempt to retrieve the value\n if (typeof cellValue === 'object') {\n // Handle nested key paths (e.g., \"user.name\")\n if (key.includes('.')) {\n const resolvedValue = key.split('.').reduce((acc, keyPart) => {\n if (acc && acc[keyPart] !== undefined) {\n return acc[keyPart];\n } else {\n return undefined;\n }\n }, cellValue);\n\n if (resolvedValue !== undefined) {\n return String(resolvedValue);\n } else {\n const firstLevelKey = key.split('.')[0];\n const rest = key.substring(firstLevelKey.length + 1);\n\n const response = this.replaceKeyWithValue(rest, cellValue);\n\n if (response !== this.fallbackValue) {\n return response;\n }\n }\n }\n\n // Handle single-level key lookup\n return key in cellValue ? String(cellValue[key]) : this.fallbackValue;\n }\n\n // If cellValue is a primitive (string, number, boolean, etc.), return it as a string\n return cellValue?.toString() ?? this.fallbackValue;\n }\n\n private replacePlaceholdersTextContent(element: Element, cellValue: any) {\n // ✅ Replace placeholders in text content\n element.childNodes.forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n node.textContent = node.textContent.replace(/__([\\w.]+)__/g, (_, key) =>\n this.replaceKeyWithValue(key, cellValue),\n );\n }\n });\n }\n\n private replacePlaceholdersAttributes(element: Element, cellValue: any) {\n // ✅ Replace placeholders in attributes\n Array.from(element.attributes).forEach(attr => {\n if (attr.value.includes('__')) {\n attr.value = attr.value.replace(/__([\\w.]+)__/g, (_, key) =>\n this.replaceKeyWithValue(key, cellValue),\n );\n }\n });\n }\n\n private replacePlaceholdersProperties(element: Element, cellValue: any) {\n // ✅ Dynamically extract relevant properties\n const properties = new Set<string>();\n\n // Collect only own enumerable properties\n Object.keys(element).forEach(key => properties.add(key));\n\n // Collect inherited properties from prototypes (HTMLElement -> Element -> Node)\n let proto = Object.getPrototypeOf(element);\n while (proto && proto !== HTMLElement.prototype) {\n Object.keys(proto).forEach(key => properties.add(key));\n proto = Object.getPrototypeOf(proto);\n }\n\n // ✅ Filter and copy only non-function properties and exclude irrelevant ones\n properties.forEach(prop => {\n if (\n typeof (element as any)[prop] !== 'function' && // Ignore methods\n !prop.startsWith('on') && // Ignore event listeners (onclick, oninput, etc.)\n !excludedProps.has(prop) // 🚨 Prevent text duplication and irrelevant props\n ) {\n try {\n const propValue = element[prop];\n\n // ✅ Replace placeholders only if the value is a string\n if (typeof propValue === 'string' && propValue.includes('__')) {\n element[prop] = propValue.replace(/__([\\w.]+)__/g, (_, key) =>\n this.replaceKeyWithValue(key, cellValue),\n ) as any; // ✅ TypeScript safe\n }\n } catch (error) {\n console.warn(`Could not assign property ${prop}:`, error.message);\n }\n }\n });\n }\n\n private readonly debouncedFilter = debounce((value: string) => {\n this.globalFilter = value;\n }, 300);\n\n /**\n * Handles global filtering on input event for the search input.\n * It debounces the input to prevent excessive filtering.\n * @param {Event} event - The input event.\n * @returns {void} - Nothing.\n */\n private readonly handleGlobalFilteringOnInput = (event: Event): void => {\n const target = event.target;\n\n if (target instanceof HTMLInputElement) {\n const value = target.value;\n\n // Update the globalFilter state\n this.debouncedFilter(value);\n }\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('columns')\n parseColumns(newValue: Column[], oldValue: Column[] = []) {\n this.parseColumnsArray(newValue, oldValue);\n }\n\n @Watch('columnsJson')\n parseJsonColumns(newValue: string | undefined, oldValue: Column[]) {\n try {\n const newItems = newValue ? JSON.parse(newValue) : [];\n\n this.parseColumnsArray(newItems, oldValue);\n } catch (e) {\n console.error('Invalid JSON format for columnsJson:', e.message);\n this.parsedColumns = [];\n }\n }\n\n @Watch('data')\n parseData(newValue: any[], oldValue: any[] = []) {\n this.parseDataArray(newValue, oldValue);\n }\n\n @Watch('dataJson')\n parseJsonData(newValue: string | undefined) {\n try {\n const newItems = newValue ? JSON.parse(newValue) : [];\n\n this.parseDataArray(newItems, this.parsedData);\n } catch (e) {\n console.error('Invalid JSON format for dataJson:', e.message);\n this.parsedData = [];\n }\n }\n\n @Watch('parsedColumns')\n @Watch('parsedData')\n handleParsedChange() {\n this.initializeTable();\n }\n\n @Watch('globalFilter')\n handleGlobalFilter(newValue: string) {\n if (!this.table) {\n console.warn('Table is not initialized yet.');\n return;\n }\n\n // 🚨 Manually update state before calling filter\n this.table.options.state = {\n ...this.table.options.state,\n globalFilter: newValue,\n };\n\n this.table.setGlobalFilter(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.cacheTemplates();\n\n this.parseDataAndColumns();\n\n this.initializeTable();\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when an action is triggered on a cell.\n */\n @Event()\n action: EventEmitter<ActionEvent>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n const headerGroups =\n !this.table || this.table === undefined || this.parsedColumns.length === 0\n ? []\n : this.table?.getHeaderGroups();\n\n const rows =\n !this.table || this.table === undefined || this.parsedData.length === 0\n ? []\n : this.table?.getRowModel()?.rows;\n\n return (\n <Host>\n <div class=\"hidden\">\n <slot></slot>\n </div>\n\n <slot name=\"before\"></slot>\n {this.enableGlobalFilter && this.table && (\n <div class=\"search-container\">\n <input\n type=\"text\"\n value={this.globalFilter ?? ''}\n onInput={this.handleGlobalFilteringOnInput}\n placeholder=\"Search all columns...\"\n class=\"search-input\"\n aria-label=\"Search all columns\"\n />\n </div>\n )}\n\n {this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (\n <div class=\"no-data\">{this.noColumnsNoDataMessage}</div>\n ) : (\n <table>\n {this.parsedColumns.length > 0 && headerGroups.length > 0 && (\n <thead>\n {this.parsedColumns.length > 0 && headerGroups\n ? headerGroups?.map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => {\n return (\n <th key={header.id}>\n {header.isPlaceholder\n ? null\n : this.renderTemplate(\n this.headerTemplateCache.get(header.id),\n {},\n ) || header.column.columnDef.header}\n </th>\n );\n })}\n </tr>\n ))\n : null}\n </thead>\n )}\n <tbody>\n {!rows || rows.length === 0 || this.parsedData.length === 0 ? (\n <tr>\n <td colSpan={this.parsedColumns.length || 12} class=\"no-data\">\n {this.noDataMessage}\n </td>\n </tr>\n ) : (\n rows.map(row => {\n const rowId = row.id;\n const visibleCells = row?.getVisibleCells();\n\n return (\n <tr key={rowId}>\n {visibleCells.map(cell => {\n const cellAccessors = cell.column.id;\n const cellValue = cell.getValue();\n\n return (\n <td key={cell.id} data-row-id={rowId}>\n {this.renderTemplate(\n this.templateCache.get(cellAccessors),\n cellValue,\n row,\n ) ||\n (cellValue ?? this.fallbackValue)}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n )}\n\n <slot name=\"after\"></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
1
+ {"version":3,"file":"nv-datagrid.js","sourceRoot":"","sources":["../../../src/components/nv-datagrid/nv-datagrid.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n Prop,\n h,\n State,\n Host,\n Watch,\n Element,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport {\n createTable,\n Table,\n TableOptionsResolved,\n getCoreRowModel,\n createColumnHelper,\n Row,\n getFilteredRowModel,\n} from '@tanstack/table-core';\nimport { Column } from '../../interfaces/Column';\nimport { ActionEvent } from '../../interfaces/actionEvent';\nimport { deepCopyElement, excludedProps } from '../../utils/dom.utils';\nimport { debounce } from '../../utils/input.utils';\n\n/**\n * A flexible data grid component powered by `@tanstack/table-core`.\n * @slot default - Use this slot to insert HTML into the data grid content.\n * @slot before - Use this slot to insert HTML before the data grid.\n * @slot after - Use this slot to insert HTML after the data grid.\n *\n * @deprecated [EXPERIMENTAL]\n * @experimental - This component is still under development and is not ready for use.\n */\n@Component({\n tag: 'nv-datagrid',\n styleUrl: './nv-datagrid.scss',\n shadow: false,\n})\nexport class NvDatagrid {\n @Element() el: HTMLNvDatagridElement;\n\n private readonly templateCache = new Map<string, Element>();\n private readonly headerTemplateCache = new Map<string, Element>();\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n private table: Table<any> | null = null;\n\n @State()\n parsedColumns: Column[] = []; // Parsed array\n\n @State()\n parsedData: any[] = []; // Parsed array\n\n @State()\n private globalFilter: string = '';\n\n @State()\n private columnData: {\n /**\n * Defines the header of the column.\n */\n header: string;\n\n /**\n * Defines the accessor of the column.\n */\n accessor: string;\n\n /**\n * Whether the column need to be repeated with the template.\n */\n repeatTemplate: boolean;\n }[] = [];\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The data to display in the data grid.\n * @example [{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]\n * @default []\n */\n @Prop({ reflect: false })\n readonly data: any[] = [];\n\n /**\n * The columns to display in the data grid.\n * @example\n * [\n * {\"header\":\"Name\",\"accessor\":\"name\"},\n * {\"header\":\"Age\",\"accessor\":\"age\"},\n * {\"header\":\"Email\",\"accessor\":\"email\"}\n * ]\n * @default []\n */\n @Prop({ reflect: false })\n readonly columns: Column[] = [];\n\n /**\n * The data to display in the data grid.\n * It can be passed directly as an array of objects or as a JSON string.\n * If both `data` and `dataJson` are provided, `data` takes precedence.\n * @example `[{ \"name\": \"Alice\", \"age\": 25 }, { \"name\": \"Bob\", \"age\": 30 }]`\n */\n @Prop({ reflect: true })\n readonly dataJson?: string;\n\n /**\n * The columns to display in the data grid.\n * It can be passed directly as an array of objects or as a JSON string.\n * If both `columns` and `columnsJson` are provided, `columns` takes precedence.\n * @example `[{\"header\":\"Name\",\"accessor\":\"name\"},{\"header\":\"Age\",\"accessor\":\"age\"},{\"header\":\"Email\",\"accessor\":\"email\"}]`\n */\n @Prop({ reflect: true })\n readonly columnsJson?: string;\n\n /**\n * Fallback value to be displayed when data is not available\n * @default 'N/A'\n */\n @Prop({ reflect: true })\n readonly fallbackValue: string = 'N/A';\n\n /**\n * The message to display when there is no data available.\n * @default 'No data available'\n */\n @Prop({ reflect: true })\n readonly noDataMessage: string = 'No data available';\n\n /**\n * The message to display when there are no columns or data available.\n * @default 'No data or columns available to display.'\n */\n @Prop({ reflect: true })\n readonly noColumnsNoDataMessage: string =\n 'No data or columns available to display.';\n\n /**\n * Whether to enable global filtering for the data grid.\n * This allows users to search across all columns for a specific value.\n * The search is case-insensitive and supports partial matches.\n * It use string.includes() to match the search term.\n * @default false\n */\n @Prop({ reflect: true })\n readonly enableGlobalFilter: boolean = false;\n\n /**\n * Whether to automatically generate columns if none are provided.\n * If columns are explicitly set, this property is ignored.\n * @default false\n */\n @Prop({ reflect: true })\n readonly autoGenerateColumns: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Caches templates for cells and headers upfront to improve performance.\n */\n private cacheTemplates() {\n const columns = Array.from(this.el.querySelectorAll('nv-datagridcolumn'));\n\n this.columnData = [];\n\n columns.forEach((col: HTMLNvDatagridcolumnElement) => {\n const key = col.accessor;\n const cellSlot = col.querySelector('[slot=\"cell\"]');\n\n if (cellSlot) {\n const element = deepCopyElement(cellSlot as HTMLElement);\n this.templateCache.set(key, element);\n }\n\n const headerSlot = col.querySelector('[slot=\"header\"]');\n\n if (headerSlot) {\n const element = deepCopyElement(headerSlot as HTMLElement);\n this.headerTemplateCache.set(key, element);\n } else {\n const header = col.header;\n\n if (header) {\n const headerDiv = document.createElement('div');\n headerDiv.textContent = header;\n this.headerTemplateCache.set(key, headerDiv);\n }\n }\n\n const colData = {\n header: col.header,\n accessor: col.accessor,\n repeatTemplate: col.hasAttribute('repeat-template'),\n };\n\n this.columnData.push(colData);\n });\n }\n\n private parseDataAndColumns() {\n if (this.dataJson) {\n this.parseJsonData(this.dataJson);\n } else if (this.data && this.data.length > 0) {\n this.parseDataArray(this.data, this.parsedData);\n }\n\n if (this.columnsJson) {\n this.parseJsonColumns(this.columnsJson, this.parsedColumns);\n } else if (this.columns && this.columns.length > 0) {\n this.parseColumnsArray(this.columns, this.parsedColumns);\n } else if (this.headerTemplateCache.size > 0) {\n const headerKeys = Array.from(this.headerTemplateCache.keys());\n const arrayColumnsConfig = headerKeys.map<Column>(key => ({\n ...{}, // Ensure no prototype inheritance\n accessor: key,\n header: key ? key.charAt(0).toUpperCase() + key.slice(1) : '',\n }));\n\n this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);\n } else if (this.parsedData.length > 0) {\n const firstRow = this.parsedData[0];\n const arrayColumnsConfig = Object.keys(firstRow).map<Column>(key => ({\n accessor: key,\n header: key.charAt(0).toUpperCase() + key.slice(1),\n }));\n\n if (this.autoGenerateColumns) {\n this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);\n }\n }\n }\n\n private deepEqual(a: any, b: any): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n }\n\n /**\n * Parses the data array and sets the state accordingly\n * @param {any[]} newValue - The new value of the data array.\n * @param {any[]} oldValue - The old value of the data array.\n */\n private parseDataArray(newValue: any[], oldValue: any[]) {\n // Ensure both are arrays for proper comparison\n const safeNewValue = Array.isArray(newValue) ? newValue : [];\n const safeOldValue = Array.isArray(oldValue) ? oldValue : [];\n\n if (this.deepEqual(safeNewValue, safeOldValue)) {\n return; // Deep comparison\n }\n\n this.parsedData = Array.isArray(newValue) ? newValue : [];\n }\n\n /**\n * Parses the columns array and sets the state accordingly\n * @param {Column[]} newValue - The new value of the columns array.\n * @param {Column[]} oldValue - The old value of the columns array.\n */\n private parseColumnsArray(newValue: Column[], oldValue: Column[]) {\n // Ensure both are arrays for proper comparison\n const safeNewValue = Array.isArray(newValue) ? newValue : [];\n const safeOldValue = Array.isArray(oldValue) ? oldValue : [];\n\n // Use a proper deep comparison function (e.g., Lodash's isEqual)\n if (this.deepEqual(safeNewValue, safeOldValue)) {\n return;\n }\n\n // Assign only after confirming changes\n this.parsedColumns = safeNewValue;\n }\n\n private initializeTable(): void {\n // Clear the previous table instance (if any)\n this.table = null;\n\n // Set default options for the table\n const tableOptions: TableOptionsResolved<any> = {\n columns: [],\n data: [],\n getCoreRowModel: getCoreRowModel(),\n debugAll: true,\n onStateChange: state => console.log('Table state changed:', state), // eslint-disable-line nova/no-console\n renderFallbackValue: 'No rows to display',\n state: {\n sorting: [], // Default: no active sorting\n columnVisibility: {}, // Default: all columns visible\n columnFilters: [], // Default: no column filters\n columnPinning: {}, // Default: no column pinning\n columnSizing: {}, // Default: no column sizing\n columnOrder: [], // Default: as defined in the `columns`\n pagination: null, // Default: no pagination\n grouping: [], // Default: no active grouping\n expanded: {}, // Default: no expanded rows\n rowPinning: {}, // Default: no row pinning\n rowSelection: {}, // Default: no row selection\n globalFilter: null, // Default: no global filter\n columnSizingInfo: {\n columnSizingStart: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n }, // Default: no column sizing info\n },\n };\n\n if (this.enableGlobalFilter) {\n tableOptions.getFilteredRowModel = getFilteredRowModel();\n\n // Set the initial global filter value\n tableOptions.state.globalFilter = this.globalFilter;\n\n // Define the callback for global filter changes\n tableOptions.onGlobalFilterChange = value => {\n this.globalFilter = value;\n };\n\n tableOptions.globalFilterFn = (row, columnId, filterValue) => {\n const response = row\n .getValue(columnId)\n .toString()\n .toLowerCase()\n .includes(filterValue.toLowerCase());\n\n return response;\n };\n }\n\n if (this.parsedColumns.length > 0) {\n // Validate and generate column definitions\n const validColumns = this.parsedColumns.filter(\n column => column?.accessor && column?.header,\n );\n\n // Update tableOptions based on parsed data and columns\n const hasColumns =\n validColumns && Array.isArray(validColumns) && validColumns.length > 0;\n const hasData =\n this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0;\n\n if (!hasColumns && !hasData) {\n // No columns and no data\n } else if (hasColumns && !hasData) {\n tableOptions.columns = this.generateColumns(validColumns, tableOptions);\n } else {\n // Both columns and data are available\n // No columns and data is available\n tableOptions.data = this.getTableData();\n tableOptions.columns = this.generateColumns(validColumns, tableOptions);\n }\n } else {\n // No columns and data is available\n const hasData =\n this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0;\n\n if (hasData) {\n // No columns and data is available\n const firstRow = this.parsedData[0];\n const arrayColumnsConfig = Object.keys(firstRow).map<Column>(key => ({\n accessor: key,\n header: key.charAt(0).toUpperCase() + key.slice(1),\n }));\n\n if (this.autoGenerateColumns) {\n this.parseColumnsArray(arrayColumnsConfig, this.parsedColumns);\n }\n\n tableOptions.data = this.getTableData();\n tableOptions.columns = this.generateColumns(\n arrayColumnsConfig,\n tableOptions,\n );\n }\n }\n\n // Initialize the table\n this.table = createTable(tableOptions);\n }\n\n // Helper function to generate column definitions\n private generateColumns(\n validColumns: Column[],\n tableOptions: TableOptionsResolved<any>,\n ): any[] {\n const columnHelper = createColumnHelper<any>();\n\n if (validColumns.length > 0) {\n // Use defined columns\n return validColumns.map(column =>\n columnHelper.accessor(column.accessor, {\n header: column.header,\n cell: info => info.getValue(),\n enableGlobalFilter: this.enableGlobalFilter,\n }),\n );\n } else if (tableOptions.data && tableOptions.data.length > 0) {\n // Generate columns from data keys\n const sampleRow = tableOptions.data[0];\n return Object.keys(sampleRow).map(key =>\n columnHelper.accessor(key, {\n header: key.charAt(0).toUpperCase() + key.slice(1), // Capitalize key for header\n cell: info => info.getValue(),\n enableGlobalFilter: this.enableGlobalFilter,\n }),\n );\n } else {\n // No columns and no data\n return [];\n }\n }\n\n private getTableData(): any[] {\n if (\n this.parsedData &&\n Array.isArray(this.parsedData) &&\n this.parsedData.length > 0\n ) {\n return [...this.parsedData];\n } else {\n return [];\n }\n }\n\n private renderTemplate(\n template: Element | undefined,\n cellValue: any,\n row?: Row<any>,\n ) {\n if (!template) {\n return null;\n }\n\n // Handle <template> elements correctly\n const templateContent =\n template instanceof HTMLTemplateElement ? template.content : template;\n const element = deepCopyElement(templateContent as HTMLElement);\n\n // Replace placeholders in text content, attributes, and properties\n element.querySelectorAll('*').forEach(el => {\n // Replace placeholders in text content\n this.replacePlaceholdersTextContent(el, cellValue);\n\n // Replace placeholders in attributes\n this.replacePlaceholdersAttributes(el, cellValue);\n\n // Replace placeholders in properties\n this.replacePlaceholdersProperties(el, cellValue);\n });\n\n // Handle `data-bind-event`\n element.querySelectorAll('[data-bind-event]').forEach(el => {\n const bindEvent = el.getAttribute('data-bind-event') || '';\n const splitted = bindEvent.split(':');\n\n if (!bindEvent.includes(':') || splitted.length < 2) {\n console.warn('Invalid data-bind-event format:', bindEvent);\n return;\n }\n\n const eventType = splitted[0];\n const keyAction = splitted[1];\n const details = splitted.length > 2 ? splitted[2] : null;\n\n el.addEventListener(eventType, () => {\n const keys = details?.split(',') ?? [];\n\n // Convert keys into a single object instead of an array of objects\n const keyValue = keys.reduce((acc, key) => {\n if (row?.original) {\n if (key in row.original) {\n acc[key] = row.original?.[key];\n }\n }\n return acc;\n }, {} as Record<string, any>);\n\n const action: ActionEvent = { keyAction, details: keyValue };\n\n this.action.emit(action);\n });\n });\n\n // Ensure Web Components are properly connected\n setTimeout(() => {\n element.querySelectorAll('*').forEach(child => {\n if (typeof (child as any).connectedCallback === 'function') {\n (child as any).connectedCallback();\n }\n });\n }, 0);\n\n return (\n <div\n ref={el => {\n if (el) {\n el.innerHTML = ''; // Remove existing content\n el.appendChild(element); // Append new element\n }\n }}\n ></div>\n );\n }\n\n private replaceKeyWithValue(key: string, cellValue: any): string {\n // Handle undefined or null values by returning the fallback\n if (cellValue === undefined || cellValue === null) {\n return this.fallbackValue;\n }\n\n // If cellValue is an object, attempt to retrieve the value\n if (typeof cellValue === 'object') {\n // Handle nested key paths (e.g., \"user.name\")\n if (key.includes('.')) {\n const resolvedValue = key.split('.').reduce((acc, keyPart) => {\n if (acc && acc[keyPart] !== undefined) {\n return acc[keyPart];\n } else {\n return undefined;\n }\n }, cellValue);\n\n if (resolvedValue !== undefined) {\n return String(resolvedValue);\n } else {\n const firstLevelKey = key.split('.')[0];\n const rest = key.substring(firstLevelKey.length + 1);\n\n const response = this.replaceKeyWithValue(rest, cellValue);\n\n if (response !== this.fallbackValue) {\n return response;\n }\n }\n }\n\n // Handle single-level key lookup\n if (key in cellValue) {\n return String(cellValue[key]);\n } else if (Array.isArray(cellValue)) {\n // Handle array of objects\n const response = cellValue.map((item: any) => {\n if (typeof item !== 'object') {\n return item.toString();\n } else if (key in item) {\n return item[key];\n } else {\n return item.toString();\n }\n });\n\n return response.join(', ');\n }\n\n return this.fallbackValue;\n }\n\n // If cellValue is a primitive (string, number, boolean, etc.), return it as a string\n return cellValue?.toString() ?? this.fallbackValue;\n }\n\n private replacePlaceholdersTextContent(element: Element, cellValue: any) {\n // ✅ Replace placeholders in text content\n element.childNodes.forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n node.textContent = node.textContent.replace(/__([\\w.]+)__/g, (_, key) =>\n this.replaceKeyWithValue(key, cellValue),\n );\n }\n });\n }\n\n private replacePlaceholdersAttributes(element: Element, cellValue: any) {\n // ✅ Replace placeholders in attributes\n Array.from(element.attributes).forEach(attr => {\n if (attr.value.includes('__')) {\n attr.value = attr.value.replace(/__([\\w.]+)__/g, (_, key) =>\n this.replaceKeyWithValue(key, cellValue),\n );\n }\n });\n }\n\n private replacePlaceholdersProperties(element: Element, cellValue: any) {\n // ✅ Dynamically extract relevant properties\n const properties = new Set<string>();\n\n // Collect only own enumerable properties\n Object.keys(element).forEach(key => properties.add(key));\n\n // Collect inherited properties from prototypes (HTMLElement -> Element -> Node)\n let proto = Object.getPrototypeOf(element);\n while (proto && proto !== HTMLElement.prototype) {\n Object.keys(proto).forEach(key => properties.add(key));\n proto = Object.getPrototypeOf(proto);\n }\n\n // ✅ Filter and copy only non-function properties and exclude irrelevant ones\n properties.forEach(prop => {\n if (\n typeof (element as any)[prop] !== 'function' && // Ignore methods\n !prop.startsWith('on') && // Ignore event listeners (onclick, oninput, etc.)\n !excludedProps.has(prop) // 🚨 Prevent text duplication and irrelevant props\n ) {\n try {\n const propValue = element[prop];\n\n // ✅ Replace placeholders only if the value is a string\n if (typeof propValue === 'string' && propValue.includes('__')) {\n element[prop] = propValue.replace(/__([\\w.]+)__/g, (_, key) =>\n this.replaceKeyWithValue(key, cellValue),\n ) as any; // ✅ TypeScript safe\n }\n } catch (error) {\n console.warn(`Could not assign property ${prop}:`, error.message);\n }\n }\n });\n }\n\n private readonly debouncedFilter = debounce((value: string) => {\n this.globalFilter = value;\n }, 300);\n\n /**\n * Handles global filtering on input event for the search input.\n * It debounces the input to prevent excessive filtering.\n * @param {Event} event - The input event.\n * @returns {void} - Nothing.\n */\n private readonly handleGlobalFilteringOnInput = (event: Event): void => {\n const target = event.target;\n\n if (target instanceof HTMLInputElement) {\n const value = target.value;\n\n // Update the globalFilter state\n this.debouncedFilter(value);\n }\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('columns')\n parseColumns(newValue: Column[], oldValue: Column[] = []) {\n this.parseColumnsArray(newValue, oldValue);\n }\n\n @Watch('columnsJson')\n parseJsonColumns(newValue: string | undefined, oldValue: Column[]) {\n try {\n const newItems = newValue ? JSON.parse(newValue) : [];\n\n this.parseColumnsArray(newItems, oldValue);\n } catch (e) {\n console.error('Invalid JSON format for columnsJson:', e.message);\n this.parsedColumns = [];\n }\n }\n\n @Watch('data')\n parseData(newValue: any[], oldValue: any[] = []) {\n this.parseDataArray(newValue, oldValue);\n }\n\n @Watch('dataJson')\n parseJsonData(newValue: string | undefined) {\n try {\n const newItems = newValue ? JSON.parse(newValue) : [];\n\n this.parseDataArray(newItems, this.parsedData);\n } catch (e) {\n console.error('Invalid JSON format for dataJson:', e.message);\n this.parsedData = [];\n }\n }\n\n @Watch('parsedColumns')\n @Watch('parsedData')\n handleParsedChange() {\n this.initializeTable();\n }\n\n @Watch('globalFilter')\n handleGlobalFilter(newValue: string) {\n if (!this.table) {\n console.warn('Table is not initialized yet.');\n return;\n }\n\n // 🚨 Manually update state before calling filter\n this.table.options.state = {\n ...this.table.options.state,\n globalFilter: newValue,\n };\n\n this.table.setGlobalFilter(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.cacheTemplates();\n\n this.parseDataAndColumns();\n\n this.initializeTable();\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted when an action is triggered on a cell.\n */\n @Event()\n action: EventEmitter<ActionEvent>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region RENDER\n\n render() {\n const headerGroups =\n !this.table || this.table === undefined || this.parsedColumns.length === 0\n ? []\n : this.table?.getHeaderGroups();\n\n const rows =\n !this.table || this.table === undefined || this.parsedData.length === 0\n ? []\n : this.table?.getRowModel()?.rows;\n\n return (\n <Host>\n <div class=\"hidden\">\n <slot></slot>\n </div>\n\n <slot name=\"before\"></slot>\n {this.enableGlobalFilter && this.table && (\n <div class=\"search-container\">\n <input\n type=\"text\"\n value={this.globalFilter ?? ''}\n onInput={this.handleGlobalFilteringOnInput}\n placeholder=\"Search all columns...\"\n class=\"search-input\"\n aria-label=\"Search all columns\"\n />\n </div>\n )}\n\n {this.parsedColumns.length === 0 && this.parsedData.length === 0 ? (\n <div class=\"no-data\">{this.noColumnsNoDataMessage}</div>\n ) : (\n <table>\n {this.parsedColumns.length > 0 && headerGroups.length > 0 && (\n <thead>\n {this.parsedColumns.length > 0 && headerGroups\n ? headerGroups?.map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => {\n return (\n <th key={header.id}>\n {header.isPlaceholder\n ? null\n : this.renderTemplate(\n this.headerTemplateCache.get(header.id),\n {},\n ) || header.column.columnDef.header}\n </th>\n );\n })}\n </tr>\n ))\n : null}\n </thead>\n )}\n <tbody>\n {!rows || rows.length === 0 || this.parsedData.length === 0 ? (\n <tr>\n <td colSpan={this.parsedColumns.length || 12} class=\"no-data\">\n {this.noDataMessage}\n </td>\n </tr>\n ) : (\n rows.map(row => {\n const rowId = row.id;\n const visibleCells = row?.getVisibleCells();\n\n return (\n <tr key={rowId}>\n {visibleCells.map(cell => {\n const cellAccessors = cell.column.id;\n const cellValue = cell.getValue();\n\n return (\n <td key={cell.id} data-row-id={rowId}>\n {this.columnData.find(\n x => x.accessor === cellAccessors,\n )?.repeatTemplate && Array.isArray(cellValue)\n ? cellValue.map(\n (item: any) =>\n (this.renderTemplate(\n this.templateCache.get(cellAccessors),\n item,\n row,\n ) ||\n item) ??\n this.fallbackValue,\n )\n : (this.renderTemplate(\n this.templateCache.get(cellAccessors),\n cellValue,\n row,\n ) ||\n cellValue) ??\n this.fallbackValue}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n )}\n\n <slot name=\"after\"></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
@@ -4,11 +4,17 @@ import { Host, h } from "@stencil/core";
4
4
  * @slot cell - Defines how to render every cell of the column.
5
5
  */
6
6
  export class NvDatagridcolumn {
7
+ constructor() {
8
+ /**
9
+ * Whether the column need to be repeated with the template.
10
+ */
11
+ this.repeatTemplate = false;
12
+ }
7
13
  //#endregion PROPERTIES
8
14
  /****************************************************************************/
9
15
  //#region RENDER
10
16
  render() {
11
- return (h(Host, { key: '3528bee82ffaa794f35b525ceb246947848e1bc2' }, h("slot", { key: 'd8ac07dcdb1912b331443adcdb13e121cc59fc87', name: "header" }), h("slot", { key: '59dc43378b92ba201f3a549104adedeb9528c3e7', name: "cell" })));
17
+ return (h(Host, { key: '462144dc8ea401f4f3e3683bdafba983c7147737' }, h("slot", { key: '9af4055567f5199f6b4393e37a8a77b884ce82b9', name: "header" }), h("slot", { key: '36b8cfd9bc974ed9d2a249418ababa504b66091d', name: "cell" })));
12
18
  }
13
19
  static get is() { return "nv-datagridcolumn"; }
14
20
  static get properties() {
@@ -50,6 +56,26 @@ export class NvDatagridcolumn {
50
56
  "setter": false,
51
57
  "attribute": "accessor",
52
58
  "reflect": true
59
+ },
60
+ "repeatTemplate": {
61
+ "type": "boolean",
62
+ "mutable": false,
63
+ "complexType": {
64
+ "original": "boolean",
65
+ "resolved": "boolean",
66
+ "references": {}
67
+ },
68
+ "required": false,
69
+ "optional": false,
70
+ "docs": {
71
+ "tags": [],
72
+ "text": "Whether the column need to be repeated with the template."
73
+ },
74
+ "getter": false,
75
+ "setter": false,
76
+ "attribute": "repeat-template",
77
+ "reflect": true,
78
+ "defaultValue": "false"
53
79
  }
54
80
  };
55
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nv-datagridcolumn.js","sourceRoot":"","sources":["../../../src/components/nv-datagridcolumn/nv-datagridcolumn.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAEzD;;;GAGG;AAKH,MAAM,OAAO,gBAAgB;IAgB3B,uBAAuB;IACvB,8EAA8E;IAC9E,gBAAgB;IAEhB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,6DAAM,IAAI,EAAC,QAAQ,GAAQ;YAC3B,6DAAM,IAAI,EAAC,MAAM,GAAQ,CACpB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIF","sourcesContent":["import { Component, Host, Prop, h } from '@stencil/core';\n\n/**\n * @slot header - Defines how to render the header of the column.\n * @slot cell - Defines how to render every cell of the column.\n */\n@Component({\n tag: 'nv-datagridcolumn',\n shadow: false,\n})\nexport class NvDatagridcolumn {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Defines the header of the column.\n */\n @Prop({ reflect: true })\n readonly header?: string;\n\n /**\n * Defines the accessor of the column.\n */\n @Prop({ reflect: true })\n readonly accessor!: string;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <slot name=\"header\"></slot>\n <slot name=\"cell\"></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}
1
+ {"version":3,"file":"nv-datagridcolumn.js","sourceRoot":"","sources":["../../../src/components/nv-datagridcolumn/nv-datagridcolumn.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAEzD;;;GAGG;AAKH,MAAM,OAAO,gBAAgB;IAJ7B;QAoBE;;WAEG;QAEM,mBAAc,GAAY,KAAK,CAAC;KAiB1C;IAfC,uBAAuB;IACvB,8EAA8E;IAC9E,gBAAgB;IAEhB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,6DAAM,IAAI,EAAC,QAAQ,GAAQ;YAC3B,6DAAM,IAAI,EAAC,MAAM,GAAQ,CACpB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIF","sourcesContent":["import { Component, Host, Prop, h } from '@stencil/core';\n\n/**\n * @slot header - Defines how to render the header of the column.\n * @slot cell - Defines how to render every cell of the column.\n */\n@Component({\n tag: 'nv-datagridcolumn',\n shadow: false,\n})\nexport class NvDatagridcolumn {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Defines the header of the column.\n */\n @Prop({ reflect: true })\n readonly header?: string;\n\n /**\n * Defines the accessor of the column.\n */\n @Prop({ reflect: true })\n readonly accessor!: string;\n\n /**\n * Whether the column need to be repeated with the template.\n */\n @Prop({ reflect: true })\n readonly repeatTemplate: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <slot name=\"header\"></slot>\n <slot name=\"cell\"></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n /****************************************************************************/\n}\n"]}