@actabldesign/bellhop-core 0.0.8 → 0.0.12

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 (466) hide show
  1. package/README.md +132 -33
  2. package/components/bh-accordion-item.js +1 -1
  3. package/components/bh-avatar-add.js +1 -1
  4. package/components/bh-avatar-stacked.js +3 -3
  5. package/components/bh-avatar.js +1 -1
  6. package/components/bh-button.js +1 -1
  7. package/components/bh-card-header.js +1 -1
  8. package/components/bh-card.js +1 -1
  9. package/components/bh-checkbox-group-item.js +5 -5
  10. package/components/bh-checkbox.js +1 -1
  11. package/components/bh-data-grid.js +140 -67
  12. package/components/bh-data-grid.js.map +1 -1
  13. package/components/bh-date-picker-content.js +1 -1
  14. package/components/bh-date-picker.js +24 -19
  15. package/components/bh-date-picker.js.map +1 -1
  16. package/components/bh-date-range-picker-content.js +1 -1
  17. package/components/bh-date-range-picker.js +9 -9
  18. package/components/bh-dropdown-menu.js +1 -1
  19. package/components/bh-dropdown.js +1 -1
  20. package/components/bh-empty-state.js +1 -1
  21. package/components/bh-featured-icon.js +1 -1
  22. package/components/bh-illustrations.js +3 -3
  23. package/components/bh-input-autocomplete.js +7 -7
  24. package/components/bh-input-number.js +3 -3
  25. package/components/bh-input-password.js +3 -3
  26. package/components/bh-input-text.js +1 -1
  27. package/components/bh-input-verification.js +3 -3
  28. package/components/bh-label.js +1 -1
  29. package/components/bh-logo-box.js +1 -1
  30. package/components/bh-modal-actions.js +2 -2
  31. package/components/bh-modal-header.js +5 -5
  32. package/components/bh-month-picker-content.js +1 -1
  33. package/components/bh-month-picker.js +8 -8
  34. package/components/bh-month-picker.js.map +1 -1
  35. package/components/bh-nav-item.js +1 -1
  36. package/components/bh-notification.js +3 -3
  37. package/components/bh-page-navigation-child.js +1 -1
  38. package/components/bh-page-navigation-multi-level.js +1 -1
  39. package/components/bh-page-navigation-single-level.js +1 -1
  40. package/components/bh-page-navigation.js +5 -5
  41. package/components/bh-pagination.js +1 -1
  42. package/components/bh-picker-menu.js +1 -1
  43. package/components/bh-pie-chart.js +1 -1
  44. package/components/bh-popover.js +18 -85
  45. package/components/bh-popover.js.map +1 -1
  46. package/components/bh-property-switcher.js +1 -1
  47. package/components/bh-radio-button.js +1 -1
  48. package/components/bh-sidebar.js +7 -7
  49. package/components/bh-skeleton-loader.js +1 -1
  50. package/components/bh-tab-item.js +2 -2
  51. package/components/bh-tabs.js +1 -1
  52. package/components/bh-tag.js +1 -1
  53. package/components/bh-textarea.js +3 -3
  54. package/components/bh-toggle.js +1 -1
  55. package/components/bh-tooltip.js +1 -1
  56. package/components/bh-trend-chart.js +2 -2
  57. package/components/index.d.ts +0 -4
  58. package/components/index.js +0 -2
  59. package/components/index.js.map +1 -1
  60. package/components/{p-8bOZFmdg.js → p--S10V0sf.js} +5 -5
  61. package/components/p--S10V0sf.js.map +1 -0
  62. package/components/{p-BLCjD0ux.js → p-7nrZFsG8.js} +3 -3
  63. package/components/{p-BLCjD0ux.js.map → p-7nrZFsG8.js.map} +1 -1
  64. package/components/{p-C_wf2KGn.js → p-B0ADeWoj.js} +3 -3
  65. package/components/{p-C_wf2KGn.js.map → p-B0ADeWoj.js.map} +1 -1
  66. package/components/{p-D9aamyuM.js → p-BEm39SYP.js} +4 -4
  67. package/components/{p-D9aamyuM.js.map → p-BEm39SYP.js.map} +1 -1
  68. package/components/{p-BkK6rWZn.js → p-BYRvQ4u7.js} +4 -4
  69. package/components/{p-BkK6rWZn.js.map → p-BYRvQ4u7.js.map} +1 -1
  70. package/components/{p-D0Ba0gOA.js → p-BqYBdZ7I.js} +4 -4
  71. package/components/{p-D0Ba0gOA.js.map → p-BqYBdZ7I.js.map} +1 -1
  72. package/components/{p-Df8KgHhe.js → p-BrIid8rr.js} +3 -3
  73. package/components/{p-Df8KgHhe.js.map → p-BrIid8rr.js.map} +1 -1
  74. package/components/p-BsHlTsAN.js.map +1 -1
  75. package/components/{p-Npcwl1Z8.js → p-CDmCw7LX.js} +4 -4
  76. package/components/p-CDmCw7LX.js.map +1 -0
  77. package/components/{p-BQKx1tGq.js → p-CHYn9whC.js} +6 -6
  78. package/components/p-CHYn9whC.js.map +1 -0
  79. package/components/{p-CdwyUif-.js → p-CNwZh1xz.js} +5 -5
  80. package/components/p-CNwZh1xz.js.map +1 -0
  81. package/components/{p-B02xFf1P.js → p-CiEBtN9j.js} +3 -3
  82. package/components/{p-B02xFf1P.js.map → p-CiEBtN9j.js.map} +1 -1
  83. package/components/{p-Cmo_S3fO.js → p-CiZSLZTA.js} +4 -4
  84. package/components/{p-Cmo_S3fO.js.map → p-CiZSLZTA.js.map} +1 -1
  85. package/components/{p-DYC2IZEs.js → p-CmEb-mj5.js} +6 -6
  86. package/components/{p-DYC2IZEs.js.map → p-CmEb-mj5.js.map} +1 -1
  87. package/components/{p-Do29ZTL9.js → p-CppjlSaO.js} +3 -3
  88. package/components/{p-Do29ZTL9.js.map → p-CppjlSaO.js.map} +1 -1
  89. package/components/{p-D3FuyNC4.js → p-CyFUHAY1.js} +7 -7
  90. package/components/{p-D3FuyNC4.js.map → p-CyFUHAY1.js.map} +1 -1
  91. package/components/{p-B0vRPcr5.js → p-D8L5XpBP.js} +3 -3
  92. package/components/{p-B0vRPcr5.js.map → p-D8L5XpBP.js.map} +1 -1
  93. package/components/p-DH86TJ99.js +232 -0
  94. package/components/p-DH86TJ99.js.map +1 -0
  95. package/components/{p-BJLHKnwL.js → p-DVBd-54W.js} +5 -5
  96. package/components/{p-BJLHKnwL.js.map → p-DVBd-54W.js.map} +1 -1
  97. package/components/{p-CMoGgYqw.js → p-DmELCHDa.js} +3 -3
  98. package/components/p-DmELCHDa.js.map +1 -0
  99. package/components/{p-Bu0BcHwL.js → p-Du_cCBR7.js} +6 -6
  100. package/components/{p-Bu0BcHwL.js.map → p-Du_cCBR7.js.map} +1 -1
  101. package/components/{p-h6juyPoa.js → p-JJSN-gZI.js} +3 -3
  102. package/components/{p-h6juyPoa.js.map → p-JJSN-gZI.js.map} +1 -1
  103. package/components/{p-wPu4WTba.js → p-dsE158cF.js} +3 -3
  104. package/components/{p-wPu4WTba.js.map → p-dsE158cF.js.map} +1 -1
  105. package/components/{p-C0fcjlnS.js → p-eYcfeTFU.js} +3 -3
  106. package/components/{p-C0fcjlnS.js.map → p-eYcfeTFU.js.map} +1 -1
  107. package/components/{p-BSok41i-.js → p-oyeucMe6.js} +3 -3
  108. package/components/{p-BSok41i-.js.map → p-oyeucMe6.js.map} +1 -1
  109. package/dist/bellhop-core/bellhop-core.esm.js +1 -1
  110. package/dist/bellhop-core/bellhop-core.esm.js.map +1 -1
  111. package/dist/bellhop-core/bh-avatar.entry.esm.js.map +1 -1
  112. package/dist/bellhop-core/bh-button.bh-loader-spinner.entry.esm.js.map +1 -1
  113. package/dist/bellhop-core/bh-data-grid.entry.esm.js.map +1 -1
  114. package/dist/bellhop-core/bh-date-picker-content.entry.esm.js.map +1 -1
  115. package/dist/bellhop-core/bh-date-picker.entry.esm.js.map +1 -1
  116. package/dist/bellhop-core/bh-empty-state.bh-pagination.bh-skeleton-loader.entry.esm.js.map +1 -1
  117. package/dist/bellhop-core/bh-input-text.bh-picker-menu.entry.esm.js.map +1 -1
  118. package/dist/bellhop-core/bh-label.bh-tooltip.entry.esm.js.map +1 -1
  119. package/dist/bellhop-core/bh-month-picker-content.entry.esm.js.map +1 -1
  120. package/dist/bellhop-core/bh-month-picker.entry.esm.js.map +1 -1
  121. package/dist/bellhop-core/bh-popover.entry.esm.js.map +1 -1
  122. package/dist/bellhop-core/index.esm.js +1 -1
  123. package/dist/bellhop-core/index.esm.js.map +1 -1
  124. package/dist/bellhop-core/{p-Ck1gRAmI.js → p-04a00da6.entry.js} +2 -2
  125. package/dist/bellhop-core/p-04a00da6.entry.js.map +1 -0
  126. package/dist/bellhop-core/{p-bd00d5ad.entry.js → p-06b0ba5f.entry.js} +2 -2
  127. package/dist/bellhop-core/{p-4a8844ff.entry.js → p-0a232a85.entry.js} +2 -2
  128. package/dist/bellhop-core/p-0d5ce369.entry.js +13 -0
  129. package/dist/bellhop-core/p-0d5ce369.entry.js.map +1 -0
  130. package/dist/bellhop-core/{p-67956598.entry.js → p-0e773f4b.entry.js} +2 -2
  131. package/dist/bellhop-core/{p-df4498cd.entry.js → p-11e84742.entry.js} +2 -2
  132. package/dist/bellhop-core/{p-a41b3673.entry.js → p-20e65b2b.entry.js} +2 -2
  133. package/dist/bellhop-core/{p-a30e22f7.entry.js → p-2349cd39.entry.js} +2 -2
  134. package/dist/bellhop-core/{p-3a1c52a9.entry.js → p-2cc352e8.entry.js} +2 -2
  135. package/dist/bellhop-core/{p-defe9916.entry.js → p-31f60dac.entry.js} +2 -2
  136. package/dist/bellhop-core/{p-defe9916.entry.js.map → p-31f60dac.entry.js.map} +1 -1
  137. package/dist/bellhop-core/{p-f85a9eaa.entry.js → p-439f8477.entry.js} +2 -2
  138. package/dist/bellhop-core/{p-a42e8ddb.entry.js → p-4bc0e720.entry.js} +2 -2
  139. package/dist/bellhop-core/{p-a42e8ddb.entry.js.map → p-4bc0e720.entry.js.map} +1 -1
  140. package/dist/bellhop-core/{p-21bc4f77.entry.js → p-4cf74f24.entry.js} +2 -2
  141. package/dist/bellhop-core/p-53dbd8bd.entry.js +2 -0
  142. package/dist/bellhop-core/p-53dbd8bd.entry.js.map +1 -0
  143. package/dist/bellhop-core/p-59e4c008.entry.js +2 -0
  144. package/dist/bellhop-core/p-59e4c008.entry.js.map +1 -0
  145. package/dist/bellhop-core/{p-62235d6e.entry.js → p-5a0b2d81.entry.js} +2 -2
  146. package/dist/bellhop-core/{p-07c9b7fa.entry.js → p-6626f089.entry.js} +2 -2
  147. package/dist/bellhop-core/{p-36166900.entry.js → p-6b428841.entry.js} +2 -2
  148. package/dist/bellhop-core/{p-6bc81ebb.entry.js → p-6d4c6b6f.entry.js} +2 -2
  149. package/dist/bellhop-core/{p-c0e36166.entry.js → p-6dad737e.entry.js} +2 -2
  150. package/dist/bellhop-core/{p-5c4f74b8.entry.js → p-738f24c8.entry.js} +2 -2
  151. package/dist/bellhop-core/{p-49edd1bb.entry.js → p-7534a8d4.entry.js} +2 -2
  152. package/dist/bellhop-core/p-7b0a4c99.entry.js +2 -0
  153. package/dist/bellhop-core/{p-7a85db89.entry.js.map → p-7b0a4c99.entry.js.map} +1 -1
  154. package/dist/bellhop-core/{p-7b0cba50.entry.js → p-84ecaf3b.entry.js} +2 -2
  155. package/dist/bellhop-core/{p-DY76Ee-p.js → p-940af1e0.entry.js} +2 -2
  156. package/dist/bellhop-core/p-940af1e0.entry.js.map +1 -0
  157. package/dist/bellhop-core/p-c0dfca99.entry.js +2 -0
  158. package/dist/bellhop-core/{p-4e483d25.entry.js.map → p-c0dfca99.entry.js.map} +1 -1
  159. package/dist/bellhop-core/{p-d5bf49ab.entry.js → p-cad28e7e.entry.js} +2 -2
  160. package/dist/bellhop-core/{p-1540001e.entry.js → p-cb0e4e35.entry.js} +2 -2
  161. package/dist/bellhop-core/{p-091171da.entry.js → p-ce2aaf37.entry.js} +2 -2
  162. package/dist/bellhop-core/p-d64525f4.entry.js +2 -0
  163. package/dist/bellhop-core/p-d64525f4.entry.js.map +1 -0
  164. package/dist/bellhop-core/{p-a9c914ee.entry.js → p-e0f7b6d1.entry.js} +2 -2
  165. package/dist/bellhop-core/{p-b0dda4df.entry.js → p-e83a86d6.entry.js} +2 -2
  166. package/dist/bellhop-core/{p-2db7990e.entry.js → p-e96e5aa3.entry.js} +2 -2
  167. package/dist/bellhop-core/{p-c70d11a2.entry.js → p-ed780663.entry.js} +2 -2
  168. package/dist/bellhop-core/p-f30af956.entry.js +2 -0
  169. package/dist/bellhop-core/{p-ffb29d95.entry.js.map → p-f30af956.entry.js.map} +1 -1
  170. package/dist/bellhop-core/{p-0e34250c.entry.js → p-f4dd33af.entry.js} +2 -2
  171. package/dist/bellhop-core/{p-1be3e908.entry.js → p-fe7d5dcb.entry.js} +2 -2
  172. package/dist/bellhop-core/p-nAAobRRQ.js.map +1 -1
  173. package/dist/cjs/bellhop-core.cjs.js +1 -1
  174. package/dist/cjs/bellhop-core.cjs.js.map +1 -1
  175. package/dist/cjs/bh-accordion-item.cjs.entry.js +1 -1
  176. package/dist/cjs/bh-autocomplete-menu_2.cjs.entry.js +1 -1
  177. package/dist/cjs/bh-avatar.cjs.entry.js +1 -1
  178. package/dist/cjs/bh-avatar.entry.cjs.js.map +1 -1
  179. package/dist/cjs/bh-button.bh-loader-spinner.entry.cjs.js.map +1 -1
  180. package/dist/cjs/bh-button_2.cjs.entry.js +110 -2
  181. package/dist/cjs/bh-card.cjs.entry.js +1 -1
  182. package/dist/cjs/bh-data-grid.cjs.entry.js +132 -59
  183. package/dist/cjs/bh-data-grid.entry.cjs.js.map +1 -1
  184. package/dist/cjs/bh-date-picker-content.cjs.entry.js +2 -2
  185. package/dist/cjs/bh-date-picker-content.entry.cjs.js.map +1 -1
  186. package/dist/cjs/bh-date-picker.cjs.entry.js +15 -12
  187. package/dist/cjs/bh-date-picker.entry.cjs.js.map +1 -1
  188. package/dist/cjs/bh-date-range-picker-content.cjs.entry.js +1 -1
  189. package/dist/cjs/bh-date-range-picker.cjs.entry.js +1 -1
  190. package/dist/cjs/bh-dropdown_3.cjs.entry.js +4 -4
  191. package/dist/cjs/bh-empty-state.bh-pagination.bh-skeleton-loader.entry.cjs.js.map +1 -1
  192. package/dist/cjs/bh-empty-state_3.cjs.entry.js +199 -6
  193. package/dist/cjs/bh-featured-icon.cjs.entry.js +1 -1
  194. package/dist/cjs/bh-illustrations.cjs.entry.js +3 -3
  195. package/dist/cjs/bh-input-autocomplete.cjs.entry.js +2 -2
  196. package/dist/cjs/bh-input-number.cjs.entry.js +1 -1
  197. package/dist/cjs/bh-input-password.cjs.entry.js +1 -1
  198. package/dist/cjs/bh-input-text.bh-picker-menu.entry.cjs.js.map +1 -1
  199. package/dist/cjs/bh-input-text_2.cjs.entry.js +2 -2
  200. package/dist/cjs/bh-input-verification.cjs.entry.js +1 -1
  201. package/dist/cjs/bh-label.bh-tooltip.entry.cjs.js.map +1 -1
  202. package/dist/cjs/bh-label_2.cjs.entry.js +104 -3
  203. package/dist/cjs/bh-modal-actions.cjs.entry.js +1 -1
  204. package/dist/cjs/bh-modal-header.cjs.entry.js +4 -4
  205. package/dist/cjs/bh-month-picker-content.cjs.entry.js +2 -2
  206. package/dist/cjs/bh-month-picker-content.entry.cjs.js.map +1 -1
  207. package/dist/cjs/bh-month-picker.cjs.entry.js +2 -2
  208. package/dist/cjs/bh-month-picker.entry.cjs.js.map +1 -1
  209. package/dist/cjs/bh-notification.cjs.entry.js +1 -1
  210. package/dist/cjs/bh-page-navigation-child.cjs.entry.js +1 -1
  211. package/dist/cjs/bh-page-navigation-multi-level_2.cjs.entry.js +3 -3
  212. package/dist/cjs/bh-page-navigation.cjs.entry.js +1 -1
  213. package/dist/cjs/bh-pie-chart.cjs.entry.js +1 -1
  214. package/dist/cjs/bh-popover.cjs.entry.js +14 -76
  215. package/dist/cjs/bh-popover.entry.cjs.js.map +1 -1
  216. package/dist/cjs/bh-property-switcher.cjs.entry.js +1 -1
  217. package/dist/cjs/bh-sidebar.cjs.entry.js +1 -1
  218. package/dist/cjs/bh-tab-item.cjs.entry.js +2 -2
  219. package/dist/cjs/bh-tabs.cjs.entry.js +1 -1
  220. package/dist/cjs/bh-textarea.cjs.entry.js +1 -1
  221. package/dist/cjs/bh-toggle.cjs.entry.js +1 -1
  222. package/dist/cjs/bh-trend-chart.cjs.entry.js +2 -2
  223. package/dist/cjs/index-DQwSUT6k.js +42 -50
  224. package/dist/cjs/index-DQwSUT6k.js.map +1 -1
  225. package/dist/cjs/index.cjs.js +0 -31
  226. package/dist/cjs/index.cjs.js.map +1 -1
  227. package/dist/cjs/loader.cjs.js +1 -1
  228. package/dist/collection/collection-manifest.json +1 -3
  229. package/dist/collection/components/bh-accordion/bh-accordion.js +1 -1
  230. package/dist/collection/components/bh-accordion-item/bh-accordion-item.js +1 -1
  231. package/dist/collection/components/bh-appbar/bh-appbar.js +2 -2
  232. package/dist/collection/components/bh-autocomplete-menu/bh-autocomplete-menu.js +2 -2
  233. package/dist/collection/components/bh-avatar/bh-avatar.css +0 -1
  234. package/dist/collection/components/bh-avatar/bh-avatar.js +3 -3
  235. package/dist/collection/components/bh-avatar-add/bh-avatar-add.js +1 -1
  236. package/dist/collection/components/bh-avatar-stacked/bh-avatar-stacked.js +1 -1
  237. package/dist/collection/components/bh-badge/bh-badge.js +3 -3
  238. package/dist/collection/components/bh-badge-dot/bh-badge-dot.js +2 -2
  239. package/dist/collection/components/bh-bar-chart/bh-bar-chart.js +3 -3
  240. package/dist/collection/components/bh-breadcrumbs/bh-breadcrumbs.js +2 -2
  241. package/dist/collection/components/bh-button/bh-button.js +7 -7
  242. package/dist/collection/components/bh-button/bh-button.js.map +1 -1
  243. package/dist/collection/components/bh-button-icon/bh-button-icon.js +3 -3
  244. package/dist/collection/components/bh-card/bh-card.js +1 -1
  245. package/dist/collection/components/bh-card-footer/bh-card-footer.js +1 -1
  246. package/dist/collection/components/bh-card-header/bh-card-header.js +2 -2
  247. package/dist/collection/components/bh-chart-tooltip/bh-chart-tooltip.js +1 -1
  248. package/dist/collection/components/bh-checkbox/bh-checkbox.js +1 -1
  249. package/dist/collection/components/bh-checkbox-group/bh-checkbox-group.js +1 -1
  250. package/dist/collection/components/bh-checkbox-group-item/bh-checkbox-group-item.js +2 -2
  251. package/dist/collection/components/bh-data-grid/bh-data-grid.css +86 -68
  252. package/dist/collection/components/bh-data-grid/bh-data-grid.js +132 -59
  253. package/dist/collection/components/bh-data-grid/bh-data-grid.js.map +1 -1
  254. package/dist/collection/components/bh-date-picker/bh-date-picker.css +24 -214
  255. package/dist/collection/components/bh-date-picker/bh-date-picker.js +22 -12
  256. package/dist/collection/components/bh-date-picker/bh-date-picker.js.map +1 -1
  257. package/dist/collection/components/bh-date-picker-content/bh-date-picker-content.css +0 -206
  258. package/dist/collection/components/bh-date-picker-content/bh-date-picker-content.js +7 -7
  259. package/dist/collection/components/bh-date-range-picker/bh-date-range-picker.js +2 -2
  260. package/dist/collection/components/bh-date-range-picker-content/bh-date-range-picker-content.js +4 -4
  261. package/dist/collection/components/bh-dropdown/bh-dropdown.js +5 -5
  262. package/dist/collection/components/bh-dropdown-menu/bh-dropdown-menu.js +3 -3
  263. package/dist/collection/components/bh-empty-state/bh-empty-state.js +2 -2
  264. package/dist/collection/components/bh-featured-icon/bh-featured-icon.js +4 -4
  265. package/dist/collection/components/bh-illustrations/bh-illustrations.js +4 -4
  266. package/dist/collection/components/bh-input-autocomplete/bh-input-autocomplete.js +3 -3
  267. package/dist/collection/components/bh-input-number/bh-input-number.js +1 -1
  268. package/dist/collection/components/bh-input-password/bh-input-password.js +1 -1
  269. package/dist/collection/components/bh-input-text/bh-input-text.js +1 -1
  270. package/dist/collection/components/bh-input-verification/bh-input-verification.js +3 -3
  271. package/dist/collection/components/bh-label/bh-label.js +1 -1
  272. package/dist/collection/components/bh-loader-spinner/bh-loader-spinner.js +2 -2
  273. package/dist/collection/components/bh-logo-box/bh-logo-box.js +2 -2
  274. package/dist/collection/components/bh-modal/bh-modal.js +1 -1
  275. package/dist/collection/components/bh-modal-actions/bh-modal-actions.js +2 -2
  276. package/dist/collection/components/bh-modal-header/bh-modal-header.js +4 -4
  277. package/dist/collection/components/bh-month-picker/bh-month-picker.css +0 -206
  278. package/dist/collection/components/bh-month-picker/bh-month-picker.js +2 -2
  279. package/dist/collection/components/bh-month-picker-content/bh-month-picker-content.css +0 -206
  280. package/dist/collection/components/bh-month-picker-content/bh-month-picker-content.js +5 -5
  281. package/dist/collection/components/bh-notification/bh-notification.js +2 -2
  282. package/dist/collection/components/bh-page-navigation/bh-page-navigation.js +2 -2
  283. package/dist/collection/components/bh-page-navigation-child/bh-page-navigation-child.js +1 -1
  284. package/dist/collection/components/bh-page-navigation-multi-level/bh-page-navigation-multi-level.js +3 -3
  285. package/dist/collection/components/bh-page-navigation-single-level/bh-page-navigation-single-level.js +1 -1
  286. package/dist/collection/components/bh-pagination/bh-pagination.css +122 -58
  287. package/dist/collection/components/bh-pagination/bh-pagination.js +74 -30
  288. package/dist/collection/components/bh-pagination/bh-pagination.js.map +1 -1
  289. package/dist/collection/components/bh-picker-menu/bh-picker-menu.css +1 -3
  290. package/dist/collection/components/bh-pie-chart/bh-pie-chart.js +3 -3
  291. package/dist/collection/components/bh-popover/bh-popover.css +77 -260
  292. package/dist/collection/components/bh-popover/bh-popover.js +33 -238
  293. package/dist/collection/components/bh-popover/bh-popover.js.map +1 -1
  294. package/dist/collection/components/bh-product-switcher/bh-product-switcher.js +3 -3
  295. package/dist/collection/components/bh-property-switcher/bh-property-switcher.js +3 -3
  296. package/dist/collection/components/bh-radio-button/bh-radio-button.js +1 -1
  297. package/dist/collection/components/bh-sidebar/bh-nav-item.js +1 -1
  298. package/dist/collection/components/bh-sidebar/bh-sidebar.js +4 -4
  299. package/dist/collection/components/bh-skeleton-loader/bh-skeleton-loader.css +9 -22
  300. package/dist/collection/components/bh-skeleton-loader/bh-skeleton-loader.js +2 -2
  301. package/dist/collection/components/bh-skeleton-loader/bh-skeleton-loader.js.map +1 -1
  302. package/dist/collection/components/bh-tab-item/bh-tab-item.js +2 -2
  303. package/dist/collection/components/bh-tabs/bh-tabs.js +3 -3
  304. package/dist/collection/components/bh-tag/bh-tag.js +3 -3
  305. package/dist/collection/components/bh-textarea/bh-textarea.js +2 -2
  306. package/dist/collection/components/bh-toggle/bh-toggle.js +2 -2
  307. package/dist/collection/components/bh-tooltip/bh-tooltip.js +3 -3
  308. package/dist/collection/components/bh-trend-chart/bh-trend-chart.js +4 -4
  309. package/dist/collection/index.js +1 -23
  310. package/dist/collection/index.js.map +1 -1
  311. package/dist/esm/bellhop-core.js +1 -1
  312. package/dist/esm/bellhop-core.js.map +1 -1
  313. package/dist/esm/bh-accordion-item.entry.js +1 -1
  314. package/dist/esm/bh-autocomplete-menu_2.entry.js +1 -1
  315. package/dist/esm/bh-avatar.entry.js +1 -1
  316. package/dist/esm/bh-avatar.entry.js.map +1 -1
  317. package/dist/esm/bh-button.bh-loader-spinner.entry.js.map +1 -1
  318. package/dist/esm/bh-button_2.entry.js +111 -3
  319. package/dist/esm/bh-card.entry.js +1 -1
  320. package/dist/esm/bh-data-grid.entry.js +132 -59
  321. package/dist/esm/bh-data-grid.entry.js.map +1 -1
  322. package/dist/esm/bh-date-picker-content.entry.js +2 -2
  323. package/dist/esm/bh-date-picker-content.entry.js.map +1 -1
  324. package/dist/esm/bh-date-picker.entry.js +16 -13
  325. package/dist/esm/bh-date-picker.entry.js.map +1 -1
  326. package/dist/esm/bh-date-range-picker-content.entry.js +1 -1
  327. package/dist/esm/bh-date-range-picker.entry.js +1 -1
  328. package/dist/esm/bh-dropdown_3.entry.js +4 -4
  329. package/dist/esm/bh-empty-state.bh-pagination.bh-skeleton-loader.entry.js.map +1 -1
  330. package/dist/esm/bh-empty-state_3.entry.js +199 -6
  331. package/dist/esm/bh-featured-icon.entry.js +1 -1
  332. package/dist/esm/bh-illustrations.entry.js +3 -3
  333. package/dist/esm/bh-input-autocomplete.entry.js +2 -2
  334. package/dist/esm/bh-input-number.entry.js +1 -1
  335. package/dist/esm/bh-input-password.entry.js +1 -1
  336. package/dist/esm/bh-input-text.bh-picker-menu.entry.js.map +1 -1
  337. package/dist/esm/bh-input-text_2.entry.js +2 -2
  338. package/dist/esm/bh-input-verification.entry.js +1 -1
  339. package/dist/esm/bh-label.bh-tooltip.entry.js.map +1 -1
  340. package/dist/esm/bh-label_2.entry.js +105 -4
  341. package/dist/esm/bh-modal-actions.entry.js +1 -1
  342. package/dist/esm/bh-modal-header.entry.js +4 -4
  343. package/dist/esm/bh-month-picker-content.entry.js +2 -2
  344. package/dist/esm/bh-month-picker-content.entry.js.map +1 -1
  345. package/dist/esm/bh-month-picker.entry.js +2 -2
  346. package/dist/esm/bh-month-picker.entry.js.map +1 -1
  347. package/dist/esm/bh-notification.entry.js +1 -1
  348. package/dist/esm/bh-page-navigation-child.entry.js +1 -1
  349. package/dist/esm/bh-page-navigation-multi-level_2.entry.js +3 -3
  350. package/dist/esm/bh-page-navigation.entry.js +1 -1
  351. package/dist/esm/bh-pie-chart.entry.js +1 -1
  352. package/dist/esm/bh-popover.entry.js +15 -77
  353. package/dist/esm/bh-popover.entry.js.map +1 -1
  354. package/dist/esm/bh-property-switcher.entry.js +1 -1
  355. package/dist/esm/bh-sidebar.entry.js +1 -1
  356. package/dist/esm/bh-tab-item.entry.js +2 -2
  357. package/dist/esm/bh-tabs.entry.js +1 -1
  358. package/dist/esm/bh-textarea.entry.js +1 -1
  359. package/dist/esm/bh-toggle.entry.js +1 -1
  360. package/dist/esm/bh-trend-chart.entry.js +2 -2
  361. package/dist/esm/index-nAAobRRQ.js +42 -50
  362. package/dist/esm/index-nAAobRRQ.js.map +1 -1
  363. package/dist/esm/index.js +1 -15
  364. package/dist/esm/index.js.map +1 -1
  365. package/dist/esm/loader.js +1 -1
  366. package/dist/types/components/bh-date-picker/bh-date-picker.d.ts +11 -1
  367. package/dist/types/components/bh-pagination/bh-pagination.d.ts +7 -7
  368. package/dist/types/components/bh-popover/bh-popover.d.ts +9 -49
  369. package/dist/types/components.d.ts +43 -193
  370. package/dist/types/index.d.ts +13 -13
  371. package/hydrate/index.js +283 -297
  372. package/hydrate/index.mjs +283 -297
  373. package/llms.txt +22000 -1428
  374. package/package.json +1 -1
  375. package/components/bh-container-footer.d.ts +0 -11
  376. package/components/bh-container-footer.js +0 -73
  377. package/components/bh-container-footer.js.map +0 -1
  378. package/components/bh-container.d.ts +0 -11
  379. package/components/bh-container.js +0 -48
  380. package/components/bh-container.js.map +0 -1
  381. package/components/p-8bOZFmdg.js.map +0 -1
  382. package/components/p-BQKx1tGq.js.map +0 -1
  383. package/components/p-CMoGgYqw.js.map +0 -1
  384. package/components/p-CdwyUif-.js.map +0 -1
  385. package/components/p-Npcwl1Z8.js.map +0 -1
  386. package/components/p-WibqGBGu.js +0 -182
  387. package/components/p-WibqGBGu.js.map +0 -1
  388. package/dist/bellhop-core/bh-container-footer.entry.esm.js.map +0 -1
  389. package/dist/bellhop-core/bh-container.entry.esm.js.map +0 -1
  390. package/dist/bellhop-core/p-233540f9.entry.js +0 -13
  391. package/dist/bellhop-core/p-233540f9.entry.js.map +0 -1
  392. package/dist/bellhop-core/p-3194a87d.entry.js +0 -2
  393. package/dist/bellhop-core/p-3194a87d.entry.js.map +0 -1
  394. package/dist/bellhop-core/p-43c41dfb.entry.js +0 -2
  395. package/dist/bellhop-core/p-43c41dfb.entry.js.map +0 -1
  396. package/dist/bellhop-core/p-4e483d25.entry.js +0 -2
  397. package/dist/bellhop-core/p-5514d7fb.entry.js +0 -2
  398. package/dist/bellhop-core/p-5514d7fb.entry.js.map +0 -1
  399. package/dist/bellhop-core/p-7a85db89.entry.js +0 -2
  400. package/dist/bellhop-core/p-80e07b3d.entry.js +0 -2
  401. package/dist/bellhop-core/p-80e07b3d.entry.js.map +0 -1
  402. package/dist/bellhop-core/p-8962e1a6.entry.js +0 -2
  403. package/dist/bellhop-core/p-8962e1a6.entry.js.map +0 -1
  404. package/dist/bellhop-core/p-CSYwm_Ke.js +0 -2
  405. package/dist/bellhop-core/p-CSYwm_Ke.js.map +0 -1
  406. package/dist/bellhop-core/p-Ck1gRAmI.js.map +0 -1
  407. package/dist/bellhop-core/p-DY76Ee-p.js.map +0 -1
  408. package/dist/bellhop-core/p-b878539a.entry.js +0 -2
  409. package/dist/bellhop-core/p-b878539a.entry.js.map +0 -1
  410. package/dist/bellhop-core/p-c33f6e73.entry.js +0 -2
  411. package/dist/bellhop-core/p-c33f6e73.entry.js.map +0 -1
  412. package/dist/bellhop-core/p-ffb29d95.entry.js +0 -2
  413. package/dist/cjs/bh-button-DD0c0ODJ.js +0 -117
  414. package/dist/cjs/bh-button-DD0c0ODJ.js.map +0 -1
  415. package/dist/cjs/bh-container-footer.cjs.entry.js +0 -38
  416. package/dist/cjs/bh-container-footer.entry.cjs.js.map +0 -1
  417. package/dist/cjs/bh-container.cjs.entry.js +0 -26
  418. package/dist/cjs/bh-container.entry.cjs.js.map +0 -1
  419. package/dist/cjs/bh-label-MpXjm9k0.js +0 -110
  420. package/dist/cjs/bh-label-MpXjm9k0.js.map +0 -1
  421. package/dist/cjs/bh-pagination-CgER63yz.js +0 -152
  422. package/dist/cjs/bh-pagination-CgER63yz.js.map +0 -1
  423. package/dist/collection/components/bh-container/bh-container.css +0 -21
  424. package/dist/collection/components/bh-container/bh-container.js +0 -51
  425. package/dist/collection/components/bh-container/bh-container.js.map +0 -1
  426. package/dist/collection/components/bh-container-footer/bh-container-footer.css +0 -22
  427. package/dist/collection/components/bh-container-footer/bh-container-footer.js +0 -106
  428. package/dist/collection/components/bh-container-footer/bh-container-footer.js.map +0 -1
  429. package/dist/esm/bh-button-ImGVvXaj.js +0 -115
  430. package/dist/esm/bh-button-ImGVvXaj.js.map +0 -1
  431. package/dist/esm/bh-container-footer.entry.js +0 -36
  432. package/dist/esm/bh-container-footer.entry.js.map +0 -1
  433. package/dist/esm/bh-container.entry.js +0 -24
  434. package/dist/esm/bh-container.entry.js.map +0 -1
  435. package/dist/esm/bh-label-PLT7t4We.js +0 -108
  436. package/dist/esm/bh-label-PLT7t4We.js.map +0 -1
  437. package/dist/esm/bh-pagination-CUeRSYsV.js +0 -150
  438. package/dist/esm/bh-pagination-CUeRSYsV.js.map +0 -1
  439. package/dist/types/components/bh-container/bh-container.d.ts +0 -7
  440. package/dist/types/components/bh-container-footer/bh-container-footer.d.ts +0 -18
  441. /package/dist/bellhop-core/{p-bd00d5ad.entry.js.map → p-06b0ba5f.entry.js.map} +0 -0
  442. /package/dist/bellhop-core/{p-4a8844ff.entry.js.map → p-0a232a85.entry.js.map} +0 -0
  443. /package/dist/bellhop-core/{p-67956598.entry.js.map → p-0e773f4b.entry.js.map} +0 -0
  444. /package/dist/bellhop-core/{p-df4498cd.entry.js.map → p-11e84742.entry.js.map} +0 -0
  445. /package/dist/bellhop-core/{p-a41b3673.entry.js.map → p-20e65b2b.entry.js.map} +0 -0
  446. /package/dist/bellhop-core/{p-a30e22f7.entry.js.map → p-2349cd39.entry.js.map} +0 -0
  447. /package/dist/bellhop-core/{p-3a1c52a9.entry.js.map → p-2cc352e8.entry.js.map} +0 -0
  448. /package/dist/bellhop-core/{p-f85a9eaa.entry.js.map → p-439f8477.entry.js.map} +0 -0
  449. /package/dist/bellhop-core/{p-21bc4f77.entry.js.map → p-4cf74f24.entry.js.map} +0 -0
  450. /package/dist/bellhop-core/{p-62235d6e.entry.js.map → p-5a0b2d81.entry.js.map} +0 -0
  451. /package/dist/bellhop-core/{p-07c9b7fa.entry.js.map → p-6626f089.entry.js.map} +0 -0
  452. /package/dist/bellhop-core/{p-36166900.entry.js.map → p-6b428841.entry.js.map} +0 -0
  453. /package/dist/bellhop-core/{p-6bc81ebb.entry.js.map → p-6d4c6b6f.entry.js.map} +0 -0
  454. /package/dist/bellhop-core/{p-c0e36166.entry.js.map → p-6dad737e.entry.js.map} +0 -0
  455. /package/dist/bellhop-core/{p-5c4f74b8.entry.js.map → p-738f24c8.entry.js.map} +0 -0
  456. /package/dist/bellhop-core/{p-49edd1bb.entry.js.map → p-7534a8d4.entry.js.map} +0 -0
  457. /package/dist/bellhop-core/{p-7b0cba50.entry.js.map → p-84ecaf3b.entry.js.map} +0 -0
  458. /package/dist/bellhop-core/{p-d5bf49ab.entry.js.map → p-cad28e7e.entry.js.map} +0 -0
  459. /package/dist/bellhop-core/{p-1540001e.entry.js.map → p-cb0e4e35.entry.js.map} +0 -0
  460. /package/dist/bellhop-core/{p-091171da.entry.js.map → p-ce2aaf37.entry.js.map} +0 -0
  461. /package/dist/bellhop-core/{p-a9c914ee.entry.js.map → p-e0f7b6d1.entry.js.map} +0 -0
  462. /package/dist/bellhop-core/{p-b0dda4df.entry.js.map → p-e83a86d6.entry.js.map} +0 -0
  463. /package/dist/bellhop-core/{p-2db7990e.entry.js.map → p-e96e5aa3.entry.js.map} +0 -0
  464. /package/dist/bellhop-core/{p-c70d11a2.entry.js.map → p-ed780663.entry.js.map} +0 -0
  465. /package/dist/bellhop-core/{p-0e34250c.entry.js.map → p-f4dd33af.entry.js.map} +0 -0
  466. /package/dist/bellhop-core/{p-1be3e908.entry.js.map → p-fe7d5dcb.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bh-data-grid.js","sourceRoot":"","sources":["../../../src/components/bh-data-grid/bh-data-grid.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Event, EventEmitter, h, Watch, Element, forceUpdate } from '@stencil/core';\nimport {\n createTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n type Table,\n type ColumnDef,\n type SortingState,\n type ColumnFiltersState,\n type RowSelectionState,\n type ExpandedState,\n type VisibilityState,\n type Row,\n type Header,\n type Cell,\n type TableState,\n type Updater,\n} from '@tanstack/table-core';\n\nimport type {\n DataGridSize,\n DataGridSelectionMode,\n DataGridEditMode,\n DataGridLoadingType,\n DataGridCaptionPosition,\n DataGridSortChangeEvent,\n DataGridFilterChangeEvent,\n DataGridSelectionChangeEvent,\n DataGridPageChangeEvent,\n DataGridRowClickEvent,\n DataGridCellClickEvent,\n DataGridExpandChangeEvent,\n DataGridGroupToggleEvent,\n DataGridEditStartEvent,\n DataGridEditCancelEvent,\n DataGridEditSaveEvent,\n DataGridCellChangeEvent,\n DataGridValidationErrorEvent,\n RowData,\n GetRowIdFn,\n GetSubRowsFn,\n DataGridColumnMeta,\n} from './bh-data-grid.types';\n\n// Extend TanStack's ColumnMeta with our custom properties\ndeclare module '@tanstack/table-core' {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface ColumnMeta<TData, TValue> extends DataGridColumnMeta {}\n}\n\n@Component({\n tag: 'bh-data-grid',\n styleUrl: 'bh-data-grid.css',\n shadow: true,\n})\nexport class BhDataGrid<TData extends RowData = RowData> {\n @Element() el!: HTMLElement;\n\n // ===========================================================================\n // Props - Data\n // ===========================================================================\n\n /** Array of data objects to display */\n @Prop() data: TData[] = [];\n\n /** Column definitions (TanStack ColumnDef format) */\n @Prop() columns: ColumnDef<TData, unknown>[] = [];\n\n /** Function to get unique row ID */\n @Prop() getRowId?: GetRowIdFn<TData>;\n\n /** Function to get sub-rows for expansion */\n @Prop() getSubRows?: GetSubRowsFn<TData>;\n\n // ===========================================================================\n // Props - Display\n // ===========================================================================\n\n /** Size variant */\n @Prop() size: DataGridSize = 'default';\n\n /** Show striped rows */\n @Prop() striped: boolean = false;\n\n /** Show borders */\n @Prop() bordered: boolean = false;\n\n /** Sticky header */\n @Prop() stickyHeader: boolean = false;\n\n /** Max height for scrollable container (enables sticky header) */\n @Prop() maxHeight?: string;\n\n /** Caption text */\n @Prop() caption?: string;\n\n /** Caption position */\n @Prop() captionPosition: DataGridCaptionPosition = 'top';\n\n /** Empty state title */\n @Prop() emptyTitle: string = 'No data';\n\n /** Empty state description */\n @Prop() emptyDescription: string = 'There are no records to display.';\n\n // ===========================================================================\n // Props - Loading\n // ===========================================================================\n\n /** Loading state */\n @Prop() loading: boolean = false;\n\n /** Loading type */\n @Prop() loadingType: DataGridLoadingType = 'spinner';\n\n /** Number of skeleton rows to show */\n @Prop() skeletonRowCount: number = 5;\n\n // ===========================================================================\n // Props - Sorting\n // ===========================================================================\n\n /** Enable sorting */\n @Prop() enableSorting: boolean = true;\n\n /** Enable multi-column sorting */\n @Prop() enableMultiSort: boolean = false;\n\n /** Initial/controlled sort state */\n @Prop({ mutable: true }) sortState: SortingState = [];\n\n // ===========================================================================\n // Props - Filtering\n // ===========================================================================\n\n /** Enable column filtering */\n @Prop() enableFiltering: boolean = false;\n\n /** Enable global filter (search) */\n @Prop() enableGlobalFilter: boolean = false;\n\n /** Show filter row below header */\n @Prop() showFilterRow: boolean = false;\n\n /** Global filter placeholder text */\n @Prop() globalFilterPlaceholder: string = 'Search...';\n\n /** Initial/controlled filter state */\n @Prop({ mutable: true }) filterState: ColumnFiltersState = [];\n\n /** Initial/controlled global filter */\n @Prop({ mutable: true }) globalFilter: string = '';\n\n // ===========================================================================\n // Props - Selection\n // ===========================================================================\n\n /** Selection mode */\n @Prop() selectionMode: DataGridSelectionMode = 'none';\n\n /** Initial/controlled selected row IDs */\n @Prop({ mutable: true }) selectedRowIds: string[] = [];\n\n // ===========================================================================\n // Props - Pagination\n // ===========================================================================\n\n /** Enable pagination */\n @Prop() enablePagination: boolean = false;\n\n /** Current page (1-indexed) */\n @Prop({ mutable: true }) page: number = 1;\n\n /** Page size */\n @Prop({ mutable: true }) pageSize: number = 10;\n\n /** Page size options */\n @Prop() pageSizeOptions: number[] = [10, 25, 50, 100];\n\n // ===========================================================================\n // Props - Expansion\n // ===========================================================================\n\n /** Enable row expansion */\n @Prop() enableExpansion: boolean = false;\n\n /** Initial/controlled expanded row IDs */\n @Prop({ mutable: true }) expandedRowIds: string[] = [];\n\n // ===========================================================================\n // Props - Grouping\n // ===========================================================================\n\n /** Enable grouping */\n @Prop() enableGrouping: boolean = false;\n\n /** Column IDs to group by */\n @Prop() groupBy: string[] = [];\n\n // ===========================================================================\n // Props - Editing\n // ===========================================================================\n\n /** Enable editing */\n @Prop() enableEditing: boolean = false;\n\n /** Edit mode */\n @Prop() editMode: DataGridEditMode = 'cell';\n\n /** Show edit action buttons */\n @Prop() showEditActions: boolean = true;\n\n // ===========================================================================\n // Internal State\n // ===========================================================================\n\n @State() private tableState: Partial<TableState> = {};\n @State() private editingRowId: string | null = null;\n @State() private editingColumnId: string | null = null;\n @State() private editingValues: Record<string, unknown> = {};\n @State() private validationErrors: Record<string, string> = {};\n @State() private hoveredRowId: string | null = null;\n\n private table: Table<TData> | null = null;\n\n // ===========================================================================\n // Events\n // ===========================================================================\n\n @Event() bhSortChange!: EventEmitter<DataGridSortChangeEvent>;\n @Event() bhFilterChange!: EventEmitter<DataGridFilterChangeEvent>;\n @Event() bhSelectionChange!: EventEmitter<DataGridSelectionChangeEvent>;\n @Event() bhPageChange!: EventEmitter<DataGridPageChangeEvent>;\n @Event() bhRowClick!: EventEmitter<DataGridRowClickEvent>;\n @Event() bhCellClick!: EventEmitter<DataGridCellClickEvent>;\n @Event() bhExpandChange!: EventEmitter<DataGridExpandChangeEvent>;\n @Event() bhGroupToggle!: EventEmitter<DataGridGroupToggleEvent>;\n @Event() bhEditStart!: EventEmitter<DataGridEditStartEvent>;\n @Event() bhEditCancel!: EventEmitter<DataGridEditCancelEvent>;\n @Event() bhEditSave!: EventEmitter<DataGridEditSaveEvent>;\n @Event() bhCellChange!: EventEmitter<DataGridCellChangeEvent>;\n @Event() bhValidationError!: EventEmitter<DataGridValidationErrorEvent>;\n\n // ===========================================================================\n // Watchers\n // ===========================================================================\n\n @Watch('data')\n @Watch('columns')\n handleDataChange() {\n this.initializeTable();\n }\n\n @Watch('sortState')\n handleSortStateChange(newValue: SortingState) {\n if (this.table) {\n this.table.setSorting(newValue);\n }\n }\n\n @Watch('filterState')\n handleFilterStateChange(newValue: ColumnFiltersState) {\n if (this.table) {\n this.table.setColumnFilters(newValue);\n }\n }\n\n @Watch('selectedRowIds')\n handleSelectedRowIdsChange(newValue: string[]) {\n if (this.table) {\n const selection: RowSelectionState = {};\n newValue.forEach(id => { selection[id] = true; });\n this.table.setRowSelection(selection);\n }\n }\n\n @Watch('page')\n @Watch('pageSize')\n handlePaginationPropChange() {\n if (this.table) {\n this.table.setPagination({\n pageIndex: this.page - 1,\n pageSize: this.pageSize,\n });\n }\n }\n\n @Watch('expandedRowIds')\n handleExpandedRowIdsChange(newValue: string[]) {\n if (this.table) {\n const expanded: ExpandedState = {};\n newValue.forEach(id => { expanded[id] = true; });\n this.table.setExpanded(expanded);\n }\n }\n\n @Watch('groupBy')\n handleGroupByChange(newValue: string[]) {\n if (this.table) {\n this.table.setGrouping(newValue);\n }\n }\n\n // ===========================================================================\n // Lifecycle\n // ===========================================================================\n\n componentWillLoad() {\n this.initializeTable();\n }\n\n // ===========================================================================\n // Table Initialization\n // ===========================================================================\n\n private initializeTable() {\n // Build initial state\n const initialState: Partial<TableState> = {\n sorting: this.sortState,\n columnFilters: this.filterState,\n globalFilter: this.globalFilter,\n rowSelection: this.buildRowSelection(),\n expanded: this.buildExpanded(),\n pagination: {\n pageIndex: this.page - 1,\n pageSize: this.pageSize,\n },\n grouping: this.groupBy,\n columnVisibility: this.buildColumnVisibility(),\n columnPinning: { left: [], right: [] },\n columnSizing: {},\n };\n\n this.tableState = initialState;\n\n // Create table instance\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.table = createTable({\n data: this.data,\n columns: this.columns,\n state: this.tableState as TableState,\n onStateChange: (updater: Updater<TableState>) => {\n const newState = typeof updater === 'function'\n ? updater(this.tableState as TableState)\n : updater;\n this.handleStateChange(newState);\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: this.enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: this.enableFiltering || this.enableGlobalFilter ? getFilteredRowModel() : undefined,\n getPaginationRowModel: this.enablePagination ? getPaginationRowModel() : undefined,\n getExpandedRowModel: this.enableExpansion || this.enableGrouping ? getExpandedRowModel() : undefined,\n getGroupedRowModel: this.enableGrouping ? getGroupedRowModel() : undefined,\n getRowId: this.getRowId || ((row, index) => String((row as Record<string, unknown>).id ?? index)),\n getSubRows: this.getSubRows,\n enableRowSelection: this.selectionMode !== 'none',\n enableMultiRowSelection: this.selectionMode === 'multiple-click' || this.selectionMode === 'multiple-checkbox',\n enableSorting: this.enableSorting,\n enableFilters: this.enableFiltering || this.enableGlobalFilter,\n enableExpanding: this.enableExpansion || this.enableGrouping,\n enableGrouping: this.enableGrouping,\n manualPagination: false,\n autoResetExpanded: false,\n renderFallbackValue: null,\n } as any);\n\n // Force update after table creation\n forceUpdate(this.el);\n }\n\n private handleStateChange(newState: TableState) {\n const oldState = this.tableState;\n this.tableState = newState;\n\n // Update table options with new state\n if (this.table) {\n this.table.setOptions(prev => ({\n ...prev,\n state: newState,\n }));\n }\n\n // Emit events for state changes\n if (JSON.stringify(oldState.sorting) !== JSON.stringify(newState.sorting)) {\n this.sortState = newState.sorting;\n this.bhSortChange.emit({ sorting: newState.sorting });\n }\n\n if (JSON.stringify(oldState.columnFilters) !== JSON.stringify(newState.columnFilters) ||\n oldState.globalFilter !== newState.globalFilter) {\n this.filterState = newState.columnFilters;\n this.globalFilter = newState.globalFilter;\n this.bhFilterChange.emit({\n columnFilters: newState.columnFilters,\n globalFilter: newState.globalFilter,\n });\n }\n\n if (JSON.stringify(oldState.rowSelection) !== JSON.stringify(newState.rowSelection)) {\n const selectedIds = Object.keys(newState.rowSelection).filter(id => newState.rowSelection[id]);\n this.selectedRowIds = selectedIds;\n const selectedRows = this.table?.getSelectedRowModel().rows.map(r => r.original) ?? [];\n this.bhSelectionChange.emit({\n selectedRowIds: selectedIds,\n selectedRows,\n });\n }\n\n if (oldState.pagination?.pageIndex !== newState.pagination?.pageIndex ||\n oldState.pagination?.pageSize !== newState.pagination?.pageSize) {\n this.page = newState.pagination.pageIndex + 1;\n this.pageSize = newState.pagination.pageSize;\n this.bhPageChange.emit({\n page: this.page,\n pageSize: this.pageSize,\n });\n }\n\n // Force re-render\n forceUpdate(this.el);\n }\n\n private buildRowSelection(): RowSelectionState {\n const selection: RowSelectionState = {};\n this.selectedRowIds.forEach(id => { selection[id] = true; });\n return selection;\n }\n\n private buildExpanded(): ExpandedState {\n const expanded: ExpandedState = {};\n this.expandedRowIds.forEach(id => { expanded[id] = true; });\n return expanded;\n }\n\n private buildColumnVisibility(): VisibilityState {\n // Hide grouped columns\n const visibility: VisibilityState = {};\n if (this.enableGrouping) {\n this.groupBy.forEach(colId => { visibility[colId] = false; });\n }\n return visibility;\n }\n\n // ===========================================================================\n // Event Handlers\n // ===========================================================================\n\n private handleRowClick = (row: Row<TData>) => {\n const rowId = row.id;\n\n // Handle click-based selection\n if (this.selectionMode === 'single-click') {\n const isSelected = row.getIsSelected();\n this.table?.resetRowSelection();\n if (!isSelected) {\n row.toggleSelected(true);\n }\n } else if (this.selectionMode === 'multiple-click') {\n row.toggleSelected();\n }\n\n this.bhRowClick.emit({\n row: row.original,\n rowId,\n rowIndex: row.index,\n });\n };\n\n private handleCellClick = (row: Row<TData>, cell: Cell<TData, unknown>) => {\n this.bhCellClick.emit({\n row: row.original,\n rowId: row.id,\n rowIndex: row.index,\n columnId: cell.column.id,\n value: cell.getValue(),\n });\n };\n\n private handleHeaderClick = (header: Header<TData, unknown>) => {\n if (this.enableSorting && header.column.getCanSort()) {\n header.column.toggleSorting(undefined, this.enableMultiSort);\n }\n };\n\n private handleRowExpand = (row: Row<TData>) => {\n const wasExpanded = row.getIsExpanded();\n row.toggleExpanded();\n\n this.bhExpandChange.emit({\n rowId: row.id,\n expanded: !wasExpanded,\n });\n };\n\n private handleGroupToggle = (row: Row<TData>) => {\n const wasExpanded = row.getIsExpanded();\n row.toggleExpanded();\n\n this.bhGroupToggle.emit({\n groupId: row.id,\n expanded: !wasExpanded,\n });\n };\n\n private handleGlobalFilterChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.table?.setGlobalFilter(input.value);\n };\n\n private handleColumnFilterChange = (columnId: string, value: string) => {\n const column = this.table?.getColumn(columnId);\n if (column) {\n column.setFilterValue(value || undefined);\n }\n };\n\n private handlePaginationChange = (event: CustomEvent) => {\n const { page, pageSize } = event.detail;\n this.table?.setPagination({\n pageIndex: page - 1,\n pageSize,\n });\n };\n\n // ===========================================================================\n // Editing Handlers\n // ===========================================================================\n\n private startEditing = (row: Row<TData>, columnId?: string) => {\n if (!this.enableEditing) return;\n\n this.editingRowId = row.id;\n this.editingColumnId = this.editMode === 'cell' ? (columnId || null) : null;\n\n // Initialize editing values from current row\n const values: Record<string, unknown> = {};\n this.columns.forEach(col => {\n const colId = (col as { accessorKey?: string }).accessorKey || col.id;\n if (colId) {\n values[colId] = row.original[colId as keyof TData];\n }\n });\n this.editingValues = values;\n this.validationErrors = {};\n\n this.bhEditStart.emit({\n rowId: row.id,\n row: row.original,\n columnId,\n });\n };\n\n private cancelEditing = () => {\n if (!this.editingRowId) return;\n\n const row = this.table?.getRow(this.editingRowId);\n if (row) {\n this.bhEditCancel.emit({\n rowId: this.editingRowId,\n row: row.original,\n });\n }\n\n this.editingRowId = null;\n this.editingColumnId = null;\n this.editingValues = {};\n this.validationErrors = {};\n };\n\n private saveEditing = () => {\n if (!this.editingRowId || !this.table) return;\n\n const row = this.table.getRow(this.editingRowId);\n if (!row) return;\n\n // Validate all edited values\n const errors: Record<string, string> = {};\n for (const [columnId, value] of Object.entries(this.editingValues)) {\n const column = this.table.getColumn(columnId);\n const validate = column?.columnDef.meta?.validate;\n if (validate) {\n const error = validate(value, row.original);\n if (error) {\n errors[columnId] = error;\n this.bhValidationError.emit({\n rowId: this.editingRowId,\n columnId,\n value,\n error,\n });\n }\n }\n }\n\n if (Object.keys(errors).length > 0) {\n this.validationErrors = errors;\n return;\n }\n\n // Determine changes\n const changes: Record<string, unknown> = {};\n for (const [columnId, newValue] of Object.entries(this.editingValues)) {\n const originalValue = row.original[columnId as keyof TData];\n if (originalValue !== newValue) {\n changes[columnId] = newValue;\n }\n }\n\n // Build new row\n const newRow = { ...row.original, ...changes } as TData;\n\n this.bhEditSave.emit({\n rowId: this.editingRowId,\n rowIndex: row.index,\n originalRow: row.original,\n changes,\n newRow,\n });\n\n this.editingRowId = null;\n this.editingColumnId = null;\n this.editingValues = {};\n this.validationErrors = {};\n };\n\n private handleEditValueChange = (columnId: string, newValue: unknown) => {\n const oldValue = this.editingValues[columnId];\n this.editingValues = { ...this.editingValues, [columnId]: newValue };\n\n // Clear validation error for this column\n if (this.validationErrors[columnId]) {\n const { [columnId]: _, ...rest } = this.validationErrors;\n this.validationErrors = rest;\n }\n\n if (this.editingRowId) {\n this.bhCellChange.emit({\n rowId: this.editingRowId,\n columnId,\n oldValue,\n newValue,\n });\n }\n };\n\n private handleEditKeyDown = (event: KeyboardEvent, columnId: string) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.saveEditing();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.cancelEditing();\n } else if (event.key === 'Tab' && this.editMode === 'cell') {\n event.preventDefault();\n this.moveToNextEditableCell(columnId, event.shiftKey);\n }\n };\n\n private moveToNextEditableCell = (currentColumnId: string, reverse: boolean) => {\n const editableColumns = this.columns.filter(col => col.meta?.editable !== false);\n const currentIndex = editableColumns.findIndex(col => {\n const colId = (col as { accessorKey?: string }).accessorKey || col.id;\n return colId === currentColumnId;\n });\n\n if (currentIndex === -1) return;\n\n const nextIndex = reverse ? currentIndex - 1 : currentIndex + 1;\n\n if (nextIndex >= 0 && nextIndex < editableColumns.length) {\n const nextCol = editableColumns[nextIndex];\n const nextColId = (nextCol as { accessorKey?: string }).accessorKey || nextCol.id;\n this.editingColumnId = nextColId || null;\n } else {\n this.saveEditing();\n }\n };\n\n private isEditing(rowId: string, columnId?: string): boolean {\n if (this.editingRowId !== rowId) return false;\n if (this.editMode === 'cell') {\n return columnId ? this.editingColumnId === columnId : false;\n }\n return true;\n }\n\n private handleCellDoubleClick = (row: Row<TData>, cell: Cell<TData, unknown>) => {\n if (!this.enableEditing || cell.column.columnDef.meta?.editable === false) return;\n if (this.editMode === 'cell') {\n this.startEditing(row, cell.column.id);\n }\n };\n\n // ===========================================================================\n // Render Helpers\n // ===========================================================================\n\n private flexRender(renderer: unknown, context: unknown): unknown {\n if (typeof renderer === 'function') {\n return renderer(context);\n }\n return renderer;\n }\n\n private formatCellValue(value: unknown, meta?: { type?: string; numberFormat?: Intl.NumberFormatOptions; dateFormat?: Intl.DateTimeFormatOptions }): string {\n if (value === null || value === undefined) return '';\n\n switch (meta?.type) {\n case 'number':\n return typeof value === 'number'\n ? value.toLocaleString(undefined, meta.numberFormat)\n : String(value);\n case 'date':\n return value instanceof Date\n ? value.toLocaleDateString(undefined, meta.dateFormat)\n : new Date(value as string).toLocaleDateString(undefined, meta.dateFormat);\n case 'boolean':\n return value ? 'Yes' : 'No';\n default:\n return String(value);\n }\n }\n\n // ===========================================================================\n // Render Methods\n // ===========================================================================\n\n private renderCaption() {\n if (!this.caption) return null;\n\n const captionClasses = {\n 'data-grid-caption': true,\n [`data-grid-caption-${this.captionPosition}`]: true,\n };\n\n return (\n <div class={captionClasses}>\n <slot name=\"caption\">{this.caption}</slot>\n </div>\n );\n }\n\n private renderGlobalFilter() {\n if (!this.enableGlobalFilter) return null;\n\n return (\n <div class=\"data-grid-global-filter\">\n <span class=\"data-grid-search-icon material-symbols-outlined\">search</span>\n <input\n type=\"text\"\n class=\"data-grid-global-filter-input\"\n placeholder={this.globalFilterPlaceholder}\n value={this.globalFilter}\n onInput={this.handleGlobalFilterChange}\n />\n </div>\n );\n }\n\n private renderHeader() {\n if (!this.table) return null;\n\n const headerGroups = this.table.getHeaderGroups();\n\n return (\n <div class={{ 'data-grid-header': true, 'data-grid-header-sticky': this.stickyHeader }}>\n {headerGroups.map(headerGroup => (\n <div class=\"data-grid-header-row\" role=\"row\" key={headerGroup.id}>\n {/* Selection column */}\n {this.renderSelectionHeader()}\n\n {/* Expansion column */}\n {this.enableExpansion && !this.enableGrouping && (\n <div class=\"data-grid-header-cell data-grid-cell-expand\" role=\"columnheader\" />\n )}\n\n {/* Data columns */}\n {headerGroup.headers.map(header => this.renderHeaderCell(header))}\n\n {/* Edit actions column */}\n {this.enableEditing && this.showEditActions && this.editMode === 'row' && (\n <div class=\"data-grid-header-cell data-grid-cell-actions\" role=\"columnheader\" />\n )}\n </div>\n ))}\n\n {/* Filter row */}\n {this.showFilterRow && this.renderFilterRow()}\n </div>\n );\n }\n\n private renderSelectionHeader() {\n if (this.selectionMode === 'none' || this.selectionMode === 'single-click' || this.selectionMode === 'multiple-click') {\n return null;\n }\n\n if (this.selectionMode === 'single-radio') {\n return <div class=\"data-grid-header-cell data-grid-cell-select\" role=\"columnheader\" />;\n }\n\n // Multiple checkbox - show select all\n const isAllSelected = this.table?.getIsAllRowsSelected();\n const isSomeSelected = this.table?.getIsSomeRowsSelected();\n\n return (\n <div class=\"data-grid-header-cell data-grid-cell-select\" role=\"columnheader\">\n <bh-checkbox\n size=\"sm\"\n checked={isAllSelected}\n indeterminate={isSomeSelected && !isAllSelected}\n onBhChange={() => this.table?.toggleAllRowsSelected()}\n />\n </div>\n );\n }\n\n private renderHeaderCell(header: Header<TData, unknown>) {\n if (header.isPlaceholder) {\n return <div class=\"data-grid-header-cell\" role=\"columnheader\" key={header.id} />;\n }\n\n const canSort = header.column.getCanSort();\n const sortDirection = header.column.getIsSorted();\n const meta = header.column.columnDef.meta;\n\n const cellClasses = {\n 'data-grid-header-cell': true,\n 'data-grid-header-cell-sortable': canSort,\n 'data-grid-header-cell-sorted': !!sortDirection,\n [`data-grid-cell-align-${meta?.align || 'left'}`]: true,\n };\n\n const style = header.column.getSize()\n ? { width: `${header.column.getSize()}px` }\n : {};\n\n return (\n <div\n class={cellClasses}\n style={style}\n role=\"columnheader\"\n aria-sort={sortDirection === 'asc' ? 'ascending' : sortDirection === 'desc' ? 'descending' : 'none'}\n onClick={() => canSort && this.handleHeaderClick(header)}\n key={header.id}\n >\n <span class=\"data-grid-header-text\">\n {this.flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && sortDirection && (\n <span class=\"data-grid-sort-icon material-symbols-outlined\">\n {sortDirection === 'asc' ? 'arrow_upward' : 'arrow_downward'}\n </span>\n )}\n </div>\n );\n }\n\n private renderFilterRow() {\n if (!this.table) return null;\n\n const headers = this.table.getHeaderGroups()[0]?.headers || [];\n\n return (\n <div class=\"data-grid-filter-row\" role=\"row\">\n {/* Selection column placeholder */}\n {(this.selectionMode === 'single-radio' || this.selectionMode === 'multiple-checkbox') && (\n <div class=\"data-grid-filter-cell data-grid-cell-select\" role=\"cell\" />\n )}\n\n {/* Expansion column placeholder */}\n {this.enableExpansion && !this.enableGrouping && (\n <div class=\"data-grid-filter-cell data-grid-cell-expand\" role=\"cell\" />\n )}\n\n {/* Column filters */}\n {headers.map(header => {\n const canFilter = header.column.getCanFilter();\n const meta = header.column.columnDef.meta;\n\n if (!canFilter || meta?.filterable === false) {\n return <div class=\"data-grid-filter-cell\" role=\"cell\" key={header.id} />;\n }\n\n const filterValue = (header.column.getFilterValue() as string) ?? '';\n\n return (\n <div class=\"data-grid-filter-cell\" role=\"cell\" key={header.id}>\n <input\n type={meta?.type === 'number' ? 'number' : meta?.type === 'date' ? 'date' : 'text'}\n class=\"data-grid-filter-input\"\n placeholder={`Filter...`}\n value={filterValue}\n onInput={(e) => this.handleColumnFilterChange(header.column.id, (e.target as HTMLInputElement).value)}\n />\n </div>\n );\n })}\n\n {/* Edit actions column placeholder */}\n {this.enableEditing && this.showEditActions && this.editMode === 'row' && (\n <div class=\"data-grid-filter-cell data-grid-cell-actions\" role=\"cell\" />\n )}\n </div>\n );\n }\n\n private renderBody() {\n if (!this.table) return null;\n\n // Loading skeleton\n if (this.loading && this.loadingType === 'skeleton') {\n return this.renderSkeleton();\n }\n\n const rows = this.table.getRowModel().rows;\n\n // Empty state\n if (rows.length === 0) {\n return this.renderEmptyState();\n }\n\n return (\n <div class=\"data-grid-body\" role=\"rowgroup\">\n {rows.map(row => {\n if (row.getIsGrouped()) {\n return this.renderGroupRow(row);\n }\n return this.renderDataRow(row);\n })}\n </div>\n );\n }\n\n private renderDataRow(row: Row<TData>) {\n const isSelected = row.getIsSelected();\n const isExpanded = row.getIsExpanded();\n const isRowEditing = this.editingRowId === row.id;\n\n const rowClasses = {\n 'data-grid-row': true,\n 'data-grid-row-selected': isSelected,\n 'data-grid-row-expanded': isExpanded,\n 'data-grid-row-editing': isRowEditing,\n 'data-grid-row-hover': this.hoveredRowId === row.id,\n 'data-grid-row-striped': this.striped && row.index % 2 === 1,\n 'data-grid-row-clickable': this.selectionMode === 'single-click' || this.selectionMode === 'multiple-click',\n };\n\n return [\n <div\n class={rowClasses}\n role=\"row\"\n aria-selected={isSelected ? 'true' : 'false'}\n key={row.id}\n onClick={() => this.handleRowClick(row)}\n onMouseEnter={() => { this.hoveredRowId = row.id; }}\n onMouseLeave={() => { this.hoveredRowId = null; }}\n >\n {/* Selection cell */}\n {this.renderSelectionCell(row)}\n\n {/* Expansion cell */}\n {this.enableExpansion && !this.enableGrouping && (\n <div class=\"data-grid-cell data-grid-cell-expand\" role=\"cell\" onClick={(e) => { e.stopPropagation(); }}>\n {row.getCanExpand() && (\n <button\n class=\"data-grid-expand-btn\"\n onClick={() => this.handleRowExpand(row)}\n aria-label={isExpanded ? 'Collapse row' : 'Expand row'}\n >\n <span class=\"material-symbols-outlined\">\n {isExpanded ? 'expand_more' : 'chevron_right'}\n </span>\n </button>\n )}\n </div>\n )}\n\n {/* Data cells */}\n {row.getVisibleCells().map(cell => this.renderCell(row, cell))}\n\n {/* Edit actions cell */}\n {this.enableEditing && this.showEditActions && this.editMode === 'row' && (\n <div class=\"data-grid-cell data-grid-cell-actions\" role=\"cell\" onClick={(e) => e.stopPropagation()}>\n {isRowEditing ? (\n <div class=\"data-grid-edit-actions\">\n <button class=\"data-grid-action-btn\" onClick={() => this.saveEditing()} title=\"Save\">\n <span class=\"material-symbols-outlined\">check</span>\n </button>\n <button class=\"data-grid-action-btn\" onClick={() => this.cancelEditing()} title=\"Cancel\">\n <span class=\"material-symbols-outlined\">close</span>\n </button>\n </div>\n ) : (\n <button class=\"data-grid-action-btn\" onClick={() => this.startEditing(row)} title=\"Edit\">\n <span class=\"material-symbols-outlined\">edit</span>\n </button>\n )}\n </div>\n )}\n </div>,\n\n // Expanded content\n isExpanded && this.enableExpansion && !this.enableGrouping && (\n <div class=\"data-grid-row-expansion\" key={`${row.id}-expansion`}>\n <slot name=\"expanded-row\" />\n </div>\n ),\n ];\n }\n\n private renderSelectionCell(row: Row<TData>) {\n if (this.selectionMode === 'none' || this.selectionMode === 'single-click' || this.selectionMode === 'multiple-click') {\n return null;\n }\n\n const isSelected = row.getIsSelected();\n\n if (this.selectionMode === 'single-radio') {\n return (\n <div class=\"data-grid-cell data-grid-cell-select\" role=\"cell\" onClick={(e) => e.stopPropagation()}>\n <bh-radio-button\n selected={isSelected}\n onBhChange={() => {\n this.table?.resetRowSelection();\n row.toggleSelected(true);\n }}\n />\n </div>\n );\n }\n\n // Multiple checkbox\n return (\n <div class=\"data-grid-cell data-grid-cell-select\" role=\"cell\" onClick={(e) => e.stopPropagation()}>\n <bh-checkbox\n size=\"sm\"\n checked={isSelected}\n onBhChange={() => row.toggleSelected()}\n />\n </div>\n );\n }\n\n private renderCell(row: Row<TData>, cell: Cell<TData, unknown>) {\n const meta = cell.column.columnDef.meta;\n const columnId = cell.column.id;\n const isCellEditing = this.isEditing(row.id, columnId);\n const canEdit = this.enableEditing && meta?.editable !== false;\n const hasError = !!this.validationErrors[columnId];\n\n const cellClasses = {\n 'data-grid-cell': true,\n [`data-grid-cell-align-${meta?.align || (meta?.type === 'number' ? 'right' : 'left')}`]: true,\n [`data-grid-cell-type-${meta?.type || 'text'}`]: true,\n 'data-grid-cell-editing': isCellEditing,\n 'data-grid-cell-editable': canEdit && !isCellEditing,\n 'data-grid-cell-error': hasError,\n };\n\n const style = cell.column.getSize()\n ? { width: `${cell.column.getSize()}px` }\n : {};\n\n return (\n <div\n class={cellClasses}\n style={style}\n role=\"cell\"\n key={cell.id}\n onClick={(e) => {\n e.stopPropagation();\n this.handleCellClick(row, cell);\n }}\n onDblClick={(e) => {\n e.stopPropagation();\n this.handleCellDoubleClick(row, cell);\n }}\n >\n {isCellEditing ? this.renderEditInput(cell) : this.renderCellContent(cell)}\n {hasError && (\n <span class=\"data-grid-cell-error-text\">{this.validationErrors[columnId]}</span>\n )}\n </div>\n );\n }\n\n private renderCellContent(cell: Cell<TData, unknown>) {\n const rendered = this.flexRender(cell.column.columnDef.cell, cell.getContext());\n\n // If custom cell renderer returns something, use it\n if (rendered !== undefined && rendered !== null && rendered !== cell.getValue()) {\n return rendered;\n }\n\n // Default formatting\n return this.formatCellValue(cell.getValue(), cell.column.columnDef.meta);\n }\n\n private renderEditInput(cell: Cell<TData, unknown>) {\n const columnId = cell.column.id;\n const meta = cell.column.columnDef.meta;\n const currentValue = this.editingValues[columnId] ?? cell.getValue();\n\n const inputType = meta?.type === 'number' ? 'number'\n : meta?.type === 'date' ? 'date'\n : meta?.type === 'boolean' ? 'checkbox'\n : 'text';\n\n if (meta?.type === 'boolean') {\n return (\n <bh-checkbox\n size=\"sm\"\n checked={Boolean(currentValue)}\n onBhChange={(e: CustomEvent) => this.handleEditValueChange(columnId, e.detail.checked)}\n />\n );\n }\n\n return (\n <input\n type={inputType}\n class=\"data-grid-edit-input\"\n value={currentValue != null ? String(currentValue) : ''}\n onInput={(e) => {\n const input = e.target as HTMLInputElement;\n const newValue = meta?.type === 'number' ? Number(input.value) : input.value;\n this.handleEditValueChange(columnId, newValue);\n }}\n onKeyDown={(e) => this.handleEditKeyDown(e, columnId)}\n ref={(el) => el && requestAnimationFrame(() => el.focus())}\n />\n );\n }\n\n private renderGroupRow(row: Row<TData>): (HTMLElement | unknown)[] {\n const isExpanded = row.getIsExpanded();\n const groupingColumnId = row.groupingColumnId!;\n const groupValue = row.groupingValue;\n const leafRows = row.getLeafRows();\n\n // Check if all leaf rows are selected for group selection\n const allSelected = leafRows.every(r => r.getIsSelected());\n const someSelected = leafRows.some(r => r.getIsSelected());\n\n const rowClasses = {\n 'data-grid-row': true,\n 'data-grid-row-group': true,\n 'data-grid-row-group-expanded': isExpanded,\n };\n\n return [\n <div\n class={rowClasses}\n role=\"row\"\n aria-expanded={isExpanded ? 'true' : 'false'}\n key={row.id}\n onClick={() => this.handleGroupToggle(row)}\n >\n {/* Group selection checkbox */}\n {this.selectionMode === 'multiple-checkbox' && (\n <div class=\"data-grid-cell data-grid-cell-select\" role=\"cell\" onClick={(e) => e.stopPropagation()}>\n <bh-checkbox\n size=\"sm\"\n checked={allSelected}\n indeterminate={someSelected && !allSelected}\n onBhChange={() => {\n leafRows.forEach(r => r.toggleSelected(!allSelected));\n }}\n />\n </div>\n )}\n\n {/* Group toggle and label */}\n <div class=\"data-grid-cell data-grid-cell-group-label\" role=\"cell\">\n <button class=\"data-grid-group-toggle\" aria-label={isExpanded ? 'Collapse group' : 'Expand group'}>\n <span class=\"material-symbols-outlined\">\n {isExpanded ? 'expand_more' : 'chevron_right'}\n </span>\n </button>\n <span class=\"data-grid-group-label\">\n <span class=\"data-grid-group-column\">{groupingColumnId}: </span>\n <span class=\"data-grid-group-value\">{String(groupValue)}</span>\n </span>\n <span class=\"data-grid-group-count\">\n ({leafRows.length} {leafRows.length === 1 ? 'item' : 'items'})\n </span>\n </div>\n </div>,\n\n // Render child rows if expanded\n isExpanded && row.subRows.map(subRow => {\n if (subRow.getIsGrouped()) {\n return this.renderGroupRow(subRow);\n }\n return this.renderDataRow(subRow);\n }),\n ];\n }\n\n private renderEmptyState() {\n return (\n <div class=\"data-grid-empty\">\n <bh-empty-state\n emptyTitle={this.emptyTitle}\n description={this.emptyDescription}\n />\n </div>\n );\n }\n\n private renderSkeleton() {\n const skeletonRows = Array.from({ length: this.skeletonRowCount }, (_, i) => i);\n const columnCount = this.columns.length +\n (this.selectionMode === 'single-radio' || this.selectionMode === 'multiple-checkbox' ? 1 : 0) +\n (this.enableExpansion && !this.enableGrouping ? 1 : 0) +\n (this.enableEditing && this.showEditActions && this.editMode === 'row' ? 1 : 0);\n\n return (\n <div class=\"data-grid-body data-grid-skeleton\" role=\"rowgroup\">\n {skeletonRows.map(i => (\n <div class=\"data-grid-row data-grid-row-skeleton\" role=\"row\" key={i}>\n {Array.from({ length: columnCount }, (_, j) => (\n <div class=\"data-grid-cell\" role=\"cell\" key={j}>\n <bh-skeleton-loader width=\"80%\" height=\"16px\" />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n }\n\n private renderLoadingOverlay() {\n if (!this.loading || this.loadingType !== 'spinner') return null;\n\n return (\n <div class=\"data-grid-loading-overlay\">\n <bh-loader-spinner size=\"lg\" />\n </div>\n );\n }\n\n private renderPagination() {\n if (!this.enablePagination || !this.table) return null;\n\n const rowCount = this.table.getFilteredRowModel().rows.length;\n\n return (\n <bh-pagination\n page={this.page}\n totalItems={rowCount}\n pageSize={this.pageSize}\n pageSizeOptions={this.pageSizeOptions}\n onBhPageChange={this.handlePaginationChange}\n onBhPageSizeChange={this.handlePaginationChange}\n />\n );\n }\n\n // ===========================================================================\n // Main Render\n // ===========================================================================\n\n render() {\n const gridClasses = {\n 'data-grid': true,\n [`data-grid-${this.size}`]: true,\n 'data-grid-bordered': this.bordered,\n 'data-grid-striped': this.striped,\n 'data-grid-loading': this.loading,\n };\n\n const containerStyle = this.maxHeight\n ? { maxHeight: this.maxHeight, overflowY: 'auto' as const }\n : {};\n\n return (\n <div class={gridClasses} role=\"grid\" aria-busy={this.loading ? 'true' : 'false'}>\n {/* Caption (top) */}\n {this.captionPosition === 'top' && this.renderCaption()}\n\n {/* Global filter */}\n {this.renderGlobalFilter()}\n\n {/* Table container */}\n <div class=\"data-grid-container\" style={containerStyle}>\n <div class=\"data-grid-table\">\n {this.renderHeader()}\n {this.renderBody()}\n </div>\n {this.renderLoadingOverlay()}\n </div>\n\n {/* Caption (bottom) */}\n {this.captionPosition === 'bottom' && this.renderCaption()}\n\n {/* Pagination */}\n {this.renderPagination()}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"bh-data-grid.js","sourceRoot":"","sources":["../../../src/components/bh-data-grid/bh-data-grid.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n h,\n Watch,\n Element,\n forceUpdate,\n} from '@stencil/core';\nimport {\n createTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n type Table,\n type ColumnDef,\n type SortingState,\n type ColumnFiltersState,\n type RowSelectionState,\n type ExpandedState,\n type VisibilityState,\n type Row,\n type Header,\n type Cell,\n type TableState,\n type Updater,\n} from '@tanstack/table-core';\n\nimport type {\n DataGridSize,\n DataGridSelectionMode,\n DataGridEditMode,\n DataGridLoadingType,\n DataGridCaptionPosition,\n DataGridSortChangeEvent,\n DataGridFilterChangeEvent,\n DataGridSelectionChangeEvent,\n DataGridPageChangeEvent,\n DataGridRowClickEvent,\n DataGridCellClickEvent,\n DataGridExpandChangeEvent,\n DataGridGroupToggleEvent,\n DataGridEditStartEvent,\n DataGridEditCancelEvent,\n DataGridEditSaveEvent,\n DataGridCellChangeEvent,\n DataGridValidationErrorEvent,\n RowData,\n GetRowIdFn,\n GetSubRowsFn,\n DataGridColumnMeta,\n} from './bh-data-grid.types';\n\n// Extend TanStack's ColumnMeta with our custom properties\ndeclare module '@tanstack/table-core' {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface ColumnMeta<TData, TValue> extends DataGridColumnMeta {}\n}\n\n@Component({\n tag: 'bh-data-grid',\n styleUrl: 'bh-data-grid.css',\n shadow: true,\n})\nexport class BhDataGrid<TData extends RowData = RowData> {\n @Element() el!: HTMLElement;\n\n // ===========================================================================\n // Props - Data\n // ===========================================================================\n\n /** Array of data objects to display */\n @Prop() data: TData[] = [];\n\n /** Column definitions (TanStack ColumnDef format) */\n @Prop() columns: ColumnDef<TData, unknown>[] = [];\n\n /** Function to get unique row ID */\n @Prop() getRowId?: GetRowIdFn<TData>;\n\n /** Function to get sub-rows for expansion */\n @Prop() getSubRows?: GetSubRowsFn<TData>;\n\n // ===========================================================================\n // Props - Display\n // ===========================================================================\n\n /** Size variant */\n @Prop() size: DataGridSize = 'default';\n\n /** Show striped rows */\n @Prop() striped: boolean = false;\n\n /** Show borders */\n @Prop() bordered: boolean = false;\n\n /** Sticky header */\n @Prop() stickyHeader: boolean = false;\n\n /** Max height for scrollable container (enables sticky header) */\n @Prop() maxHeight?: string;\n\n /** Caption text */\n @Prop() caption?: string;\n\n /** Caption position */\n @Prop() captionPosition: DataGridCaptionPosition = 'top';\n\n /** Empty state title */\n @Prop() emptyTitle: string = 'No data';\n\n /** Empty state description */\n @Prop() emptyDescription: string = 'There are no records to display.';\n\n // ===========================================================================\n // Props - Loading\n // ===========================================================================\n\n /** Loading state */\n @Prop() loading: boolean = false;\n\n /** Loading type */\n @Prop() loadingType: DataGridLoadingType = 'spinner';\n\n /** Number of skeleton rows to show */\n @Prop() skeletonRowCount: number = 5;\n\n // ===========================================================================\n // Props - Sorting\n // ===========================================================================\n\n /** Enable sorting */\n @Prop() enableSorting: boolean = true;\n\n /** Enable multi-column sorting */\n @Prop() enableMultiSort: boolean = false;\n\n /** Initial/controlled sort state */\n @Prop({ mutable: true }) sortState: SortingState = [];\n\n // ===========================================================================\n // Props - Filtering\n // ===========================================================================\n\n /** Enable column filtering */\n @Prop() enableFiltering: boolean = false;\n\n /** Enable global filter (search) */\n @Prop() enableGlobalFilter: boolean = false;\n\n /** Show filter row below header */\n @Prop() showFilterRow: boolean = false;\n\n /** Global filter placeholder text */\n @Prop() globalFilterPlaceholder: string = 'Search...';\n\n /** Initial/controlled filter state */\n @Prop({ mutable: true }) filterState: ColumnFiltersState = [];\n\n /** Initial/controlled global filter */\n @Prop({ mutable: true }) globalFilter: string = '';\n\n // ===========================================================================\n // Props - Selection\n // ===========================================================================\n\n /** Selection mode */\n @Prop() selectionMode: DataGridSelectionMode = 'none';\n\n /** Initial/controlled selected row IDs */\n @Prop({ mutable: true }) selectedRowIds: string[] = [];\n\n // ===========================================================================\n // Props - Pagination\n // ===========================================================================\n\n /** Enable pagination */\n @Prop() enablePagination: boolean = false;\n\n /** Current page (1-indexed) */\n @Prop({ mutable: true }) page: number = 1;\n\n /** Page size */\n @Prop({ mutable: true }) pageSize: number = 10;\n\n /** Page size options */\n @Prop() pageSizeOptions: number[] = [10, 25, 50, 100];\n\n // ===========================================================================\n // Props - Expansion\n // ===========================================================================\n\n /** Enable row expansion */\n @Prop() enableExpansion: boolean = false;\n\n /** Initial/controlled expanded row IDs */\n @Prop({ mutable: true }) expandedRowIds: string[] = [];\n\n // ===========================================================================\n // Props - Grouping\n // ===========================================================================\n\n /** Enable grouping */\n @Prop() enableGrouping: boolean = false;\n\n /** Column IDs to group by */\n @Prop() groupBy: string[] = [];\n\n // ===========================================================================\n // Props - Editing\n // ===========================================================================\n\n /** Enable editing */\n @Prop() enableEditing: boolean = false;\n\n /** Edit mode */\n @Prop() editMode: DataGridEditMode = 'cell';\n\n /** Show edit action buttons */\n @Prop() showEditActions: boolean = true;\n\n // ===========================================================================\n // Internal State\n // ===========================================================================\n\n @State() private tableState: Partial<TableState> = {};\n @State() private editingRowId: string | null = null;\n @State() private editingColumnId: string | null = null;\n @State() private editingValues: Record<string, unknown> = {};\n @State() private validationErrors: Record<string, string> = {};\n @State() private hoveredRowId: string | null = null;\n\n private table: Table<TData> | null = null;\n\n // ===========================================================================\n // Events\n // ===========================================================================\n\n @Event() bhSortChange!: EventEmitter<DataGridSortChangeEvent>;\n @Event() bhFilterChange!: EventEmitter<DataGridFilterChangeEvent>;\n @Event() bhSelectionChange!: EventEmitter<DataGridSelectionChangeEvent>;\n @Event() bhPageChange!: EventEmitter<DataGridPageChangeEvent>;\n @Event() bhRowClick!: EventEmitter<DataGridRowClickEvent>;\n @Event() bhCellClick!: EventEmitter<DataGridCellClickEvent>;\n @Event() bhExpandChange!: EventEmitter<DataGridExpandChangeEvent>;\n @Event() bhGroupToggle!: EventEmitter<DataGridGroupToggleEvent>;\n @Event() bhEditStart!: EventEmitter<DataGridEditStartEvent>;\n @Event() bhEditCancel!: EventEmitter<DataGridEditCancelEvent>;\n @Event() bhEditSave!: EventEmitter<DataGridEditSaveEvent>;\n @Event() bhCellChange!: EventEmitter<DataGridCellChangeEvent>;\n @Event() bhValidationError!: EventEmitter<DataGridValidationErrorEvent>;\n\n // ===========================================================================\n // Watchers\n // ===========================================================================\n\n @Watch('data')\n @Watch('columns')\n handleDataChange() {\n this.initializeTable();\n }\n\n @Watch('sortState')\n handleSortStateChange(newValue: SortingState) {\n if (this.table) {\n this.table.setSorting(newValue);\n }\n }\n\n @Watch('filterState')\n handleFilterStateChange(newValue: ColumnFiltersState) {\n if (this.table) {\n this.table.setColumnFilters(newValue);\n }\n }\n\n @Watch('selectedRowIds')\n handleSelectedRowIdsChange(newValue: string[]) {\n if (this.table) {\n const selection: RowSelectionState = {};\n newValue.forEach((id) => {\n selection[id] = true;\n });\n this.table.setRowSelection(selection);\n }\n }\n\n @Watch('page')\n @Watch('pageSize')\n handlePaginationPropChange() {\n if (this.table) {\n this.table.setPagination({\n pageIndex: this.page - 1,\n pageSize: this.pageSize,\n });\n }\n }\n\n @Watch('expandedRowIds')\n handleExpandedRowIdsChange(newValue: string[]) {\n if (this.table) {\n const expanded: ExpandedState = {};\n newValue.forEach((id) => {\n expanded[id] = true;\n });\n this.table.setExpanded(expanded);\n }\n }\n\n @Watch('groupBy')\n handleGroupByChange(newValue: string[]) {\n if (this.table) {\n this.table.setGrouping(newValue);\n }\n }\n\n // ===========================================================================\n // Lifecycle\n // ===========================================================================\n\n componentWillLoad() {\n this.initializeTable();\n }\n\n // ===========================================================================\n // Table Initialization\n // ===========================================================================\n\n private initializeTable() {\n // Build initial state\n const initialState: Partial<TableState> = {\n sorting: this.sortState,\n columnFilters: this.filterState,\n globalFilter: this.globalFilter,\n rowSelection: this.buildRowSelection(),\n expanded: this.buildExpanded(),\n pagination: {\n pageIndex: this.page - 1,\n pageSize: this.pageSize,\n },\n grouping: this.groupBy,\n columnVisibility: this.buildColumnVisibility(),\n columnPinning: { left: [], right: [] },\n columnSizing: {},\n };\n\n this.tableState = initialState;\n\n // Create table instance\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.table = createTable({\n data: this.data,\n columns: this.columns,\n state: this.tableState as TableState,\n onStateChange: (updater: Updater<TableState>) => {\n const newState =\n typeof updater === 'function'\n ? updater(this.tableState as TableState)\n : updater;\n this.handleStateChange(newState);\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: this.enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel:\n this.enableFiltering || this.enableGlobalFilter\n ? getFilteredRowModel()\n : undefined,\n getPaginationRowModel: this.enablePagination\n ? getPaginationRowModel()\n : undefined,\n getExpandedRowModel:\n this.enableExpansion || this.enableGrouping\n ? getExpandedRowModel()\n : undefined,\n getGroupedRowModel: this.enableGrouping\n ? getGroupedRowModel()\n : undefined,\n getRowId:\n this.getRowId ||\n ((row, index) => String((row as Record<string, unknown>).id ?? index)),\n getSubRows: this.getSubRows,\n enableRowSelection: this.selectionMode !== 'none',\n enableMultiRowSelection:\n this.selectionMode === 'multiple-click' ||\n this.selectionMode === 'multiple-checkbox',\n enableSorting: this.enableSorting,\n enableFilters: this.enableFiltering || this.enableGlobalFilter,\n enableExpanding: this.enableExpansion || this.enableGrouping,\n enableGrouping: this.enableGrouping,\n manualPagination: false,\n autoResetExpanded: false,\n renderFallbackValue: null,\n } as any);\n\n // Force update after table creation\n forceUpdate(this.el);\n }\n\n private handleStateChange(newState: TableState) {\n const oldState = this.tableState;\n this.tableState = newState;\n\n // Update table options with new state\n if (this.table) {\n this.table.setOptions((prev) => ({\n ...prev,\n state: newState,\n }));\n }\n\n // Emit events for state changes\n if (JSON.stringify(oldState.sorting) !== JSON.stringify(newState.sorting)) {\n this.sortState = newState.sorting;\n this.bhSortChange.emit({ sorting: newState.sorting });\n }\n\n if (\n JSON.stringify(oldState.columnFilters) !==\n JSON.stringify(newState.columnFilters) ||\n oldState.globalFilter !== newState.globalFilter\n ) {\n this.filterState = newState.columnFilters;\n this.globalFilter = newState.globalFilter;\n this.bhFilterChange.emit({\n columnFilters: newState.columnFilters,\n globalFilter: newState.globalFilter,\n });\n }\n\n if (\n JSON.stringify(oldState.rowSelection) !==\n JSON.stringify(newState.rowSelection)\n ) {\n const selectedIds = Object.keys(newState.rowSelection).filter(\n (id) => newState.rowSelection[id]\n );\n this.selectedRowIds = selectedIds;\n const selectedRows =\n this.table?.getSelectedRowModel().rows.map((r) => r.original) ?? [];\n this.bhSelectionChange.emit({\n selectedRowIds: selectedIds,\n selectedRows,\n });\n }\n\n if (\n oldState.pagination?.pageIndex !== newState.pagination?.pageIndex ||\n oldState.pagination?.pageSize !== newState.pagination?.pageSize\n ) {\n this.page = newState.pagination.pageIndex + 1;\n this.pageSize = newState.pagination.pageSize;\n this.bhPageChange.emit({\n page: this.page,\n pageSize: this.pageSize,\n });\n }\n\n // Force re-render\n forceUpdate(this.el);\n }\n\n private buildRowSelection(): RowSelectionState {\n const selection: RowSelectionState = {};\n this.selectedRowIds.forEach((id) => {\n selection[id] = true;\n });\n return selection;\n }\n\n private buildExpanded(): ExpandedState {\n const expanded: ExpandedState = {};\n this.expandedRowIds.forEach((id) => {\n expanded[id] = true;\n });\n return expanded;\n }\n\n private buildColumnVisibility(): VisibilityState {\n // Hide grouped columns\n const visibility: VisibilityState = {};\n if (this.enableGrouping) {\n this.groupBy.forEach((colId) => {\n visibility[colId] = false;\n });\n }\n return visibility;\n }\n\n // ===========================================================================\n // Event Handlers\n // ===========================================================================\n\n private handleRowClick = (row: Row<TData>) => {\n const rowId = row.id;\n\n // Handle click-based selection\n if (this.selectionMode === 'single-click') {\n const isSelected = row.getIsSelected();\n this.table?.resetRowSelection();\n if (!isSelected) {\n row.toggleSelected(true);\n }\n } else if (this.selectionMode === 'multiple-click') {\n row.toggleSelected();\n }\n\n this.bhRowClick.emit({\n row: row.original,\n rowId,\n rowIndex: row.index,\n });\n };\n\n private handleCellClick = (row: Row<TData>, cell: Cell<TData, unknown>) => {\n this.bhCellClick.emit({\n row: row.original,\n rowId: row.id,\n rowIndex: row.index,\n columnId: cell.column.id,\n value: cell.getValue(),\n });\n };\n\n private handleHeaderClick = (header: Header<TData, unknown>) => {\n if (this.enableSorting && header.column.getCanSort()) {\n header.column.toggleSorting(undefined, this.enableMultiSort);\n }\n };\n\n private handleRowExpand = (row: Row<TData>) => {\n const wasExpanded = row.getIsExpanded();\n row.toggleExpanded();\n\n this.bhExpandChange.emit({\n rowId: row.id,\n expanded: !wasExpanded,\n });\n };\n\n private handleGroupToggle = (row: Row<TData>) => {\n const wasExpanded = row.getIsExpanded();\n row.toggleExpanded();\n\n this.bhGroupToggle.emit({\n groupId: row.id,\n expanded: !wasExpanded,\n });\n };\n\n private handleGlobalFilterChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.table?.setGlobalFilter(input.value);\n };\n\n private handleColumnFilterChange = (columnId: string, value: string) => {\n const column = this.table?.getColumn(columnId);\n if (column) {\n column.setFilterValue(value || undefined);\n }\n };\n\n private handlePaginationChange = (event: CustomEvent) => {\n const { page, pageSize } = event.detail;\n this.table?.setPagination({\n pageIndex: page - 1,\n pageSize,\n });\n };\n\n // ===========================================================================\n // Editing Handlers\n // ===========================================================================\n\n private startEditing = (row: Row<TData>, columnId?: string) => {\n if (!this.enableEditing) return;\n\n this.editingRowId = row.id;\n this.editingColumnId = this.editMode === 'cell' ? columnId || null : null;\n\n // Initialize editing values from current row\n const values: Record<string, unknown> = {};\n this.columns.forEach((col) => {\n const colId = (col as { accessorKey?: string }).accessorKey || col.id;\n if (colId) {\n values[colId] = row.original[colId as keyof TData];\n }\n });\n this.editingValues = values;\n this.validationErrors = {};\n\n this.bhEditStart.emit({\n rowId: row.id,\n row: row.original,\n columnId,\n });\n };\n\n private cancelEditing = () => {\n if (!this.editingRowId) return;\n\n const row = this.table?.getRow(this.editingRowId);\n if (row) {\n this.bhEditCancel.emit({\n rowId: this.editingRowId,\n row: row.original,\n });\n }\n\n this.editingRowId = null;\n this.editingColumnId = null;\n this.editingValues = {};\n this.validationErrors = {};\n };\n\n private saveEditing = () => {\n if (!this.editingRowId || !this.table) return;\n\n const row = this.table.getRow(this.editingRowId);\n if (!row) return;\n\n // Validate all edited values\n const errors: Record<string, string> = {};\n for (const [columnId, value] of Object.entries(this.editingValues)) {\n const column = this.table.getColumn(columnId);\n const validate = column?.columnDef.meta?.validate;\n if (validate) {\n const error = validate(value, row.original);\n if (error) {\n errors[columnId] = error;\n this.bhValidationError.emit({\n rowId: this.editingRowId,\n columnId,\n value,\n error,\n });\n }\n }\n }\n\n if (Object.keys(errors).length > 0) {\n this.validationErrors = errors;\n return;\n }\n\n // Determine changes\n const changes: Record<string, unknown> = {};\n for (const [columnId, newValue] of Object.entries(this.editingValues)) {\n const originalValue = row.original[columnId as keyof TData];\n if (originalValue !== newValue) {\n changes[columnId] = newValue;\n }\n }\n\n // Build new row\n const newRow = { ...row.original, ...changes } as TData;\n\n this.bhEditSave.emit({\n rowId: this.editingRowId,\n rowIndex: row.index,\n originalRow: row.original,\n changes,\n newRow,\n });\n\n this.editingRowId = null;\n this.editingColumnId = null;\n this.editingValues = {};\n this.validationErrors = {};\n };\n\n private handleEditValueChange = (columnId: string, newValue: unknown) => {\n const oldValue = this.editingValues[columnId];\n this.editingValues = { ...this.editingValues, [columnId]: newValue };\n\n // Clear validation error for this column\n if (this.validationErrors[columnId]) {\n const { [columnId]: _, ...rest } = this.validationErrors;\n this.validationErrors = rest;\n }\n\n if (this.editingRowId) {\n this.bhCellChange.emit({\n rowId: this.editingRowId,\n columnId,\n oldValue,\n newValue,\n });\n }\n };\n\n private handleEditKeyDown = (event: KeyboardEvent, columnId: string) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.saveEditing();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.cancelEditing();\n } else if (event.key === 'Tab' && this.editMode === 'cell') {\n event.preventDefault();\n this.moveToNextEditableCell(columnId, event.shiftKey);\n }\n };\n\n private moveToNextEditableCell = (\n currentColumnId: string,\n reverse: boolean\n ) => {\n const editableColumns = this.columns.filter(\n (col) => col.meta?.editable !== false\n );\n const currentIndex = editableColumns.findIndex((col) => {\n const colId = (col as { accessorKey?: string }).accessorKey || col.id;\n return colId === currentColumnId;\n });\n\n if (currentIndex === -1) return;\n\n const nextIndex = reverse ? currentIndex - 1 : currentIndex + 1;\n\n if (nextIndex >= 0 && nextIndex < editableColumns.length) {\n const nextCol = editableColumns[nextIndex];\n const nextColId =\n (nextCol as { accessorKey?: string }).accessorKey || nextCol.id;\n this.editingColumnId = nextColId || null;\n } else {\n this.saveEditing();\n }\n };\n\n private isEditing(rowId: string, columnId?: string): boolean {\n if (this.editingRowId !== rowId) return false;\n if (this.editMode === 'cell') {\n return columnId ? this.editingColumnId === columnId : false;\n }\n return true;\n }\n\n private handleCellDoubleClick = (\n row: Row<TData>,\n cell: Cell<TData, unknown>\n ) => {\n if (!this.enableEditing || cell.column.columnDef.meta?.editable === false)\n return;\n if (this.editMode === 'cell') {\n this.startEditing(row, cell.column.id);\n }\n };\n\n // ===========================================================================\n // Render Helpers\n // ===========================================================================\n\n private flexRender(renderer: unknown, context: unknown): unknown {\n if (typeof renderer === 'function') {\n return renderer(context);\n }\n return renderer;\n }\n\n private formatCellValue(\n value: unknown,\n meta?: {\n type?: string;\n numberFormat?: Intl.NumberFormatOptions;\n dateFormat?: Intl.DateTimeFormatOptions;\n }\n ): string {\n if (value === null || value === undefined) return '';\n\n switch (meta?.type) {\n case 'number':\n return typeof value === 'number'\n ? value.toLocaleString(undefined, meta.numberFormat)\n : String(value);\n case 'date':\n return value instanceof Date\n ? value.toLocaleDateString(undefined, meta.dateFormat)\n : new Date(value as string).toLocaleDateString(\n undefined,\n meta.dateFormat\n );\n case 'boolean':\n return value ? 'Yes' : 'No';\n default:\n return String(value);\n }\n }\n\n // ===========================================================================\n // Render Methods\n // ===========================================================================\n\n private renderCaption() {\n if (!this.caption) return null;\n\n const captionClasses = {\n 'data-grid-caption': true,\n [`data-grid-caption-${this.captionPosition}`]: true,\n };\n\n return (\n <div class={captionClasses}>\n <slot name=\"caption\">{this.caption}</slot>\n </div>\n );\n }\n\n private renderGlobalFilter() {\n if (!this.enableGlobalFilter) return null;\n\n return (\n <div class=\"data-grid-global-filter\">\n <span class=\"data-grid-search-icon material-symbols-outlined\">\n search\n </span>\n <input\n type=\"text\"\n class=\"data-grid-global-filter-input\"\n placeholder={this.globalFilterPlaceholder}\n value={this.globalFilter}\n onInput={this.handleGlobalFilterChange}\n />\n </div>\n );\n }\n\n private renderHeader() {\n if (!this.table) return null;\n\n const headerGroups = this.table.getHeaderGroups();\n\n return (\n <thead\n class={{\n 'data-grid-header': true,\n 'data-grid-header-sticky': this.stickyHeader,\n }}\n >\n {headerGroups.map((headerGroup) => (\n <tr class=\"data-grid-header-row\" role=\"row\" key={headerGroup.id}>\n {/* Selection column */}\n {this.renderSelectionHeader()}\n\n {/* Expansion column */}\n {this.enableExpansion && !this.enableGrouping && (\n <th\n class=\"data-grid-header-cell data-grid-cell-expand\"\n role=\"columnheader\"\n />\n )}\n\n {/* Data columns */}\n {headerGroup.headers.map((header) => this.renderHeaderCell(header))}\n\n {/* Edit actions column */}\n {this.enableEditing &&\n this.showEditActions &&\n this.editMode === 'row' && (\n <th\n class=\"data-grid-header-cell data-grid-cell-actions\"\n role=\"columnheader\"\n colSpan={1}\n />\n )}\n </tr>\n ))}\n\n {/* Filter row */}\n {this.showFilterRow && this.renderFilterRow()}\n </thead>\n );\n }\n\n private renderSelectionHeader() {\n if (\n this.selectionMode === 'none' ||\n this.selectionMode === 'single-click' ||\n this.selectionMode === 'multiple-click'\n ) {\n return null;\n }\n\n if (this.selectionMode === 'single-radio') {\n return (\n <th\n class=\"data-grid-header-cell data-grid-cell-select\"\n role=\"columnheader\"\n colSpan={1}\n />\n );\n }\n\n // Multiple checkbox - show select all\n const isAllSelected = this.table?.getIsAllRowsSelected();\n const isSomeSelected = this.table?.getIsSomeRowsSelected();\n\n return (\n <th\n class=\"data-grid-header-cell data-grid-cell-select\"\n role=\"columnheader\"\n colSpan={1}\n >\n <bh-checkbox\n size=\"sm\"\n checked={isAllSelected}\n indeterminate={isSomeSelected && !isAllSelected}\n onBhChange={() => this.table?.toggleAllRowsSelected()}\n />\n </th>\n );\n }\n\n private renderHeaderCell(header: Header<TData, unknown>) {\n if (header.isPlaceholder) {\n return (\n <th\n class=\"data-grid-header-cell\"\n role=\"columnheader\"\n key={header.id}\n colSpan={1}\n />\n );\n }\n\n const canSort = header.column.getCanSort();\n const sortDirection = header.column.getIsSorted();\n const meta = header.column.columnDef.meta;\n\n const cellClasses = {\n 'data-grid-header-cell': true,\n 'data-grid-header-cell-sortable': canSort,\n 'data-grid-header-cell-sorted': !!sortDirection,\n [`data-grid-cell-align-${meta?.align || 'left'}`]: true,\n };\n\n const style = header.column.getSize()\n ? { width: `${header.column.getSize()}px` }\n : {};\n\n return (\n <th\n class={cellClasses}\n style={style}\n role=\"columnheader\"\n aria-sort={\n sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n }\n onClick={() => canSort && this.handleHeaderClick(header)}\n key={header.id}\n colSpan={1}\n >\n <span class=\"data-grid-header-text\">\n {this.flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && sortDirection && (\n <span class=\"data-grid-sort-icon material-symbols-outlined\">\n {sortDirection === 'asc' ? 'north' : 'south'}\n </span>\n )}\n </th>\n );\n }\n\n private renderFilterRow() {\n if (!this.table) return null;\n\n const headers = this.table.getHeaderGroups()[0]?.headers || [];\n\n return (\n <tr class=\"data-grid-filter-row\" role=\"row\">\n {/* Selection column placeholder */}\n {(this.selectionMode === 'single-radio' ||\n this.selectionMode === 'multiple-checkbox') && (\n <td\n class=\"data-grid-filter-cell data-grid-cell-select\"\n role=\"cell\"\n />\n )}\n\n {/* Expansion column placeholder */}\n {this.enableExpansion && !this.enableGrouping && (\n <td\n class=\"data-grid-filter-cell data-grid-cell-expand\"\n role=\"cell\"\n />\n )}\n\n {/* Column filters */}\n {headers.map((header) => {\n const canFilter = header.column.getCanFilter();\n const meta = header.column.columnDef.meta;\n\n if (!canFilter || meta?.filterable === false) {\n return (\n <div class=\"data-grid-filter-cell\" role=\"cell\" key={header.id} />\n );\n }\n\n const filterValue = (header.column.getFilterValue() as string) ?? '';\n\n return (\n <td class=\"data-grid-filter-cell\" role=\"cell\" key={header.id}>\n <span class=\"data-grid-filter-icon material-symbols-outlined\">\n search\n </span>\n <input\n type={\n meta?.type === 'number'\n ? 'number'\n : meta?.type === 'date'\n ? 'date'\n : 'text'\n }\n class=\"data-grid-filter-input\"\n placeholder={``}\n value={filterValue}\n onInput={(e) =>\n this.handleColumnFilterChange(\n header.column.id,\n (e.target as HTMLInputElement).value\n )\n }\n />\n </td>\n );\n })}\n\n {/* Edit actions column placeholder */}\n {this.enableEditing &&\n this.showEditActions &&\n this.editMode === 'row' && (\n <td\n class=\"data-grid-filter-cell data-grid-cell-actions\"\n role=\"cell\"\n />\n )}\n </tr>\n );\n }\n\n private renderBody() {\n if (!this.table) return null;\n\n // Loading skeleton\n if (this.loading && this.loadingType === 'skeleton') {\n return this.renderSkeleton();\n }\n\n const rows = this.table.getRowModel().rows;\n\n // Empty state\n if (rows.length === 0) {\n return this.renderEmptyState();\n }\n\n return (\n <tbody class=\"data-grid-body\" role=\"rowgroup\">\n {rows.map((row) => {\n if (row.getIsGrouped()) {\n return this.renderGroupRow(row);\n }\n return this.renderDataRow(row);\n })}\n </tbody>\n );\n }\n\n private renderDataRow(row: Row<TData>) {\n const isSelected = row.getIsSelected();\n const isExpanded = row.getIsExpanded();\n const isRowEditing = this.editingRowId === row.id;\n\n const rowClasses = {\n 'data-grid-row': true,\n 'data-grid-row-selected': isSelected,\n 'data-grid-row-expanded': isExpanded,\n 'data-grid-row-editing': isRowEditing,\n 'data-grid-row-hover': this.hoveredRowId === row.id,\n 'data-grid-row-striped': this.striped && row.index % 2 === 1,\n 'data-grid-row-clickable':\n this.selectionMode === 'single-click' ||\n this.selectionMode === 'multiple-click',\n };\n\n return [\n <tr\n class={rowClasses}\n role=\"row\"\n aria-selected={isSelected ? 'true' : 'false'}\n key={row.id}\n onClick={() => this.handleRowClick(row)}\n onMouseEnter={() => {\n this.hoveredRowId = row.id;\n }}\n onMouseLeave={() => {\n this.hoveredRowId = null;\n }}\n >\n {/* Selection cell */}\n {this.renderSelectionCell(row)}\n\n {/* Expansion cell */}\n {this.enableExpansion && !this.enableGrouping && (\n <td\n class=\"data-grid-cell data-grid-cell-expand\"\n role=\"cell\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {row.getCanExpand() && (\n <button\n class=\"data-grid-expand-btn\"\n onClick={() => this.handleRowExpand(row)}\n aria-label={isExpanded ? 'Collapse row' : 'Expand row'}\n >\n <span class=\"material-symbols-outlined\">\n {isExpanded ? 'expand_more' : 'chevron_right'}\n </span>\n </button>\n )}\n </td>\n )}\n\n {/* Data cells */}\n {row.getVisibleCells().map((cell) => this.renderCell(row, cell))}\n\n {/* Edit actions cell */}\n {this.enableEditing &&\n this.showEditActions &&\n this.editMode === 'row' && (\n <td\n class=\"data-grid-cell data-grid-cell-actions\"\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n {isRowEditing ? (\n <div class=\"data-grid-edit-actions\">\n <bh-button\n hierarchy=\"tertiary\"\n kind=\"success\"\n size=\"sm\"\n icon=\"only\"\n iconName=\"check\"\n onClick={() => this.saveEditing()}\n title=\"Save\"\n >\n Save\n </bh-button>\n <bh-button\n hierarchy=\"tertiary\"\n kind=\"destructive\"\n size=\"sm\"\n icon=\"only\"\n iconName=\"close\"\n onClick={() => this.cancelEditing()}\n title=\"Cancel\"\n >\n Cancel\n </bh-button>\n </div>\n ) : (\n <bh-button\n hierarchy=\"tertiary\"\n size=\"sm\"\n icon=\"only\"\n iconName=\"edit\"\n onClick={() => this.startEditing(row)}\n title=\"Edit\"\n >\n <span class=\"material-symbols-outlined\">edit</span>\n </bh-button>\n )}\n </td>\n )}\n </tr>,\n\n // Expanded content\n isExpanded && this.enableExpansion && !this.enableGrouping && (\n <div class=\"data-grid-row-expansion\" key={`${row.id}-expansion`}>\n <slot name=\"expanded-row\" />\n </div>\n ),\n ];\n }\n\n private renderSelectionCell(row: Row<TData>) {\n if (\n this.selectionMode === 'none' ||\n this.selectionMode === 'single-click' ||\n this.selectionMode === 'multiple-click'\n ) {\n return null;\n }\n\n const isSelected = row.getIsSelected();\n\n if (this.selectionMode === 'single-radio') {\n return (\n <td\n class=\"data-grid-cell data-grid-cell-select\"\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n <bh-radio-button\n selected={isSelected}\n onBhChange={() => {\n this.table?.resetRowSelection();\n row.toggleSelected(true);\n }}\n />\n </td>\n );\n }\n\n // Multiple checkbox\n return (\n <td\n class=\"data-grid-cell data-grid-cell-select\"\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n <bh-checkbox\n size=\"sm\"\n checked={isSelected}\n onBhChange={() => row.toggleSelected()}\n />\n </td>\n );\n }\n\n private renderCell(row: Row<TData>, cell: Cell<TData, unknown>) {\n const meta = cell.column.columnDef.meta;\n const columnId = cell.column.id;\n const isCellEditing = this.isEditing(row.id, columnId);\n const canEdit = this.enableEditing && meta?.editable !== false;\n const hasError = !!this.validationErrors[columnId];\n\n const cellClasses = {\n 'data-grid-cell': true,\n [`data-grid-cell-align-${\n meta?.align || (meta?.type === 'number' ? 'right' : 'left')\n }`]: true,\n [`data-grid-cell-type-${meta?.type || 'text'}`]: true,\n 'data-grid-cell-editing': isCellEditing,\n 'data-grid-cell-editable': canEdit && !isCellEditing,\n 'data-grid-cell-error': hasError,\n };\n\n const style = cell.column.getSize()\n ? { width: `${cell.column.getSize()}px` }\n : {};\n\n return (\n <td\n class={cellClasses}\n style={style}\n role=\"cell\"\n key={cell.id}\n onClick={(e) => {\n e.stopPropagation();\n this.handleCellClick(row, cell);\n }}\n onDblClick={(e) => {\n e.stopPropagation();\n this.handleCellDoubleClick(row, cell);\n }}\n >\n {isCellEditing\n ? this.renderEditInput(cell)\n : this.renderCellContent(cell)}\n {hasError && (\n <span class=\"data-grid-cell-error-text\">\n {this.validationErrors[columnId]}\n </span>\n )}\n </td>\n );\n }\n\n private renderCellContent(cell: Cell<TData, unknown>) {\n const rendered = this.flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n );\n\n // If custom cell renderer returns something, use it\n if (\n rendered !== undefined &&\n rendered !== null &&\n rendered !== cell.getValue()\n ) {\n return rendered;\n }\n\n // Default formatting\n return this.formatCellValue(cell.getValue(), cell.column.columnDef.meta);\n }\n\n private renderEditInput(cell: Cell<TData, unknown>) {\n const columnId = cell.column.id;\n const meta = cell.column.columnDef.meta;\n const currentValue = this.editingValues[columnId] ?? cell.getValue();\n\n const inputType =\n meta?.type === 'number'\n ? 'number'\n : meta?.type === 'date'\n ? 'date'\n : meta?.type === 'boolean'\n ? 'checkbox'\n : 'text';\n\n if (meta?.type === 'boolean') {\n return (\n <bh-checkbox\n size=\"sm\"\n checked={Boolean(currentValue)}\n onBhChange={(e: CustomEvent) =>\n this.handleEditValueChange(columnId, e.detail.checked)\n }\n />\n );\n }\n\n return (\n <input\n type={inputType}\n class=\"data-grid-edit-input\"\n value={currentValue != null ? String(currentValue) : ''}\n onInput={(e) => {\n const input = e.target as HTMLInputElement;\n const newValue =\n meta?.type === 'number' ? Number(input.value) : input.value;\n this.handleEditValueChange(columnId, newValue);\n }}\n onKeyDown={(e) => this.handleEditKeyDown(e, columnId)}\n ref={(el) => el && requestAnimationFrame(() => el.focus())}\n />\n );\n }\n\n private renderGroupRow(row: Row<TData>): (HTMLElement | unknown)[] {\n const isExpanded = row.getIsExpanded();\n const groupingColumnId = row.groupingColumnId!;\n const groupValue = row.groupingValue;\n const leafRows = row.getLeafRows();\n\n // Check if all leaf rows are selected for group selection\n const allSelected = leafRows.every((r) => r.getIsSelected());\n const someSelected = leafRows.some((r) => r.getIsSelected());\n\n const rowClasses = {\n 'data-grid-row': true,\n 'data-grid-row-group': true,\n 'data-grid-row-group-expanded': isExpanded,\n };\n\n return [\n <tr\n class={rowClasses}\n role=\"row\"\n aria-expanded={isExpanded ? 'true' : 'false'}\n key={row.id}\n onClick={() => this.handleGroupToggle(row)}\n >\n {/* Group selection checkbox */}\n {this.selectionMode === 'multiple-checkbox' && (\n <div\n class=\"data-grid-cell data-grid-cell-select\"\n role=\"cell\"\n onClick={(e) => e.stopPropagation()}\n >\n <bh-checkbox\n size=\"sm\"\n checked={allSelected}\n indeterminate={someSelected && !allSelected}\n onBhChange={() => {\n leafRows.forEach((r) => r.toggleSelected(!allSelected));\n }}\n />\n </div>\n )}\n\n {/* Group toggle and label */}\n <div class=\"data-grid-cell data-grid-cell-group-label\" role=\"cell\">\n <button\n class=\"data-grid-group-toggle\"\n aria-label={isExpanded ? 'Collapse group' : 'Expand group'}\n >\n <span class=\"material-symbols-outlined\">\n {isExpanded ? 'expand_more' : 'chevron_right'}\n </span>\n </button>\n <span class=\"data-grid-group-label\">\n <span class=\"data-grid-group-column\">{groupingColumnId}: </span>\n <span class=\"data-grid-group-value\">{String(groupValue)}</span>\n </span>\n <span class=\"data-grid-group-count\">\n ({leafRows.length} {leafRows.length === 1 ? 'item' : 'items'})\n </span>\n </div>\n </tr>,\n\n // Render child rows if expanded\n isExpanded &&\n row.subRows.map((subRow) => {\n if (subRow.getIsGrouped()) {\n return this.renderGroupRow(subRow);\n }\n return this.renderDataRow(subRow);\n }),\n ];\n }\n\n private renderEmptyState() {\n const columnCount =\n this.columns.length +\n (this.selectionMode === 'single-radio' ||\n this.selectionMode === 'multiple-checkbox'\n ? 1\n : 0) +\n (this.enableExpansion && !this.enableGrouping ? 1 : 0) +\n (this.enableEditing && this.showEditActions && this.editMode === 'row'\n ? 1\n : 0);\n\n return (\n <tbody class=\"data-grid-body\" role=\"rowgroup\">\n <tr class=\"data-grid-empty\" role=\"row\">\n <td role=\"cell\" colSpan={columnCount}>\n <div class=\"empty-state-wrapper\">\n <bh-empty-state\n emptyTitle={this.emptyTitle}\n description={this.emptyDescription}\n />\n </div>\n </td>\n </tr>\n </tbody>\n );\n }\n\n private renderSkeleton() {\n const skeletonRows = Array.from(\n { length: this.skeletonRowCount },\n (_, i) => i\n );\n const columnCount =\n this.columns.length +\n (this.selectionMode === 'single-radio' ||\n this.selectionMode === 'multiple-checkbox'\n ? 1\n : 0) +\n (this.enableExpansion && !this.enableGrouping ? 1 : 0) +\n (this.enableEditing && this.showEditActions && this.editMode === 'row'\n ? 1\n : 0);\n\n return (\n <div class=\"data-grid-body data-grid-skeleton\" role=\"rowgroup\">\n {skeletonRows.map((i) => (\n <div class=\"data-grid-row data-grid-row-skeleton\" role=\"row\" key={i}>\n {Array.from({ length: columnCount }, (_, j) => (\n <div class=\"data-grid-cell\" role=\"cell\" key={j}>\n <bh-skeleton-loader width=\"80%\" height=\"16px\" />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n }\n\n private renderLoadingOverlay() {\n if (!this.loading || this.loadingType !== 'spinner') return null;\n\n return (\n <div class=\"data-grid-loading-overlay\">\n <bh-loader-spinner size=\"lg\" />\n </div>\n );\n }\n\n private renderPagination() {\n if (!this.enablePagination || !this.table) return null;\n\n const rowCount = this.table.getFilteredRowModel().rows.length;\n\n return (\n <bh-pagination\n page={this.page}\n totalItems={rowCount}\n pageSize={this.pageSize}\n pageSizeOptions={this.pageSizeOptions}\n showItemCount={false}\n compact={true}\n onBhPageChange={this.handlePaginationChange}\n onBhPageSizeChange={this.handlePaginationChange}\n />\n );\n }\n\n // ===========================================================================\n // Main Render\n // ===========================================================================\n\n render() {\n const gridClasses = {\n 'data-grid': true,\n [`data-grid-${this.size}`]: true,\n 'data-grid-bordered': this.bordered,\n 'data-grid-striped': this.striped,\n 'data-grid-loading': this.loading,\n };\n\n const containerStyle = this.maxHeight\n ? { maxHeight: this.maxHeight, overflowY: 'auto' as const }\n : {};\n\n return (\n <div\n class={gridClasses}\n role=\"grid\"\n aria-busy={this.loading ? 'true' : 'false'}\n >\n {/* Caption (top) */}\n {this.captionPosition === 'top' && this.renderCaption()}\n\n {/* Global filter */}\n {this.renderGlobalFilter()}\n\n {/* Table container */}\n <div class=\"data-grid-container\" style={containerStyle}>\n <table class=\"data-grid-table\">\n {this.renderHeader()}\n {this.renderBody()}\n </table>\n {this.renderLoadingOverlay()}\n </div>\n\n {/* Caption (bottom) */}\n {this.captionPosition === 'bottom' && this.renderCaption()}\n\n {/* Pagination */}\n {this.renderPagination()}\n </div>\n );\n }\n}\n"]}