@svgrid/enterprise 3.0.0 → 3.0.1

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 (235) hide show
  1. package/README.md +95 -95
  2. package/dist/ExpressionEditorHarness.svelte.d.ts +2 -2
  3. package/dist/SvAdvancedFilter.svelte.d.ts +2 -2
  4. package/dist/SvAlertRuleEditor.svelte.d.ts +2 -2
  5. package/dist/SvAlertsManager.svelte.d.ts +3 -3
  6. package/dist/SvAlertsPanel.svelte.d.ts +1 -1
  7. package/dist/SvAuthGate.svelte +115 -115
  8. package/dist/SvAuthGate.svelte.d.ts +1 -1
  9. package/dist/SvBoard.svelte.d.ts +1 -1
  10. package/dist/SvExportMenu.svelte +553 -553
  11. package/dist/SvExportMenu.svelte.d.ts +2 -2
  12. package/dist/SvExpressionEditor.svelte.d.ts +2 -2
  13. package/dist/SvFileInput.svelte +113 -113
  14. package/dist/SvGridAlerts.svelte.d.ts +2 -2
  15. package/dist/SvGridBoard.svelte +2358 -2358
  16. package/dist/SvGridBulkEditDrawer.svelte.d.ts +1 -1
  17. package/dist/SvGridEditPanel.svelte +1157 -1157
  18. package/dist/SvGridEditPanel.svelte.d.ts +3 -3
  19. package/dist/SvGridMasterDetail.svelte +116 -116
  20. package/dist/SvGridMasterDetail.svelte.d.ts +1 -1
  21. package/dist/SvGridScheduler.svelte +5358 -5358
  22. package/dist/SvImportDialog.svelte +1020 -1020
  23. package/dist/SvImportDialog.svelte.d.ts +2 -2
  24. package/dist/SvLookupInput.svelte +180 -180
  25. package/dist/SvLookupInput.svelte.d.ts +1 -1
  26. package/dist/SvPivotDesigner.svelte +1990 -1990
  27. package/dist/SvPivotDesigner.svelte.d.ts +2 -2
  28. package/dist/SvRecordDetail.svelte.d.ts +1 -1
  29. package/dist/SvSchedule.svelte.d.ts +1 -1
  30. package/dist/SvSchemaChart.svelte +234 -234
  31. package/dist/SvSchemaChart.svelte.d.ts +2 -2
  32. package/dist/SvSchemaDashboard.svelte +130 -130
  33. package/dist/SvSchemaDashboard.svelte.d.ts +3 -3
  34. package/dist/advanced-filter/expr-columns-from-grid.d.ts +1 -1
  35. package/dist/advanced-filter-enable.js +3 -3
  36. package/dist/alerts/alert-engine-attach.d.ts +2 -2
  37. package/dist/alerts/alert-engine-attach.js +3 -3
  38. package/dist/alerts/alert-engine.d.ts +1 -1
  39. package/dist/alerts/alert-engine.js +2 -2
  40. package/dist/alerts/alert-formats.d.ts +1 -1
  41. package/dist/alerts/alert-formats.js +1 -1
  42. package/dist/alerts/alert-observer.d.ts +3 -3
  43. package/dist/alerts/alert-observer.js +1 -1
  44. package/dist/alerts/alert-storage.d.ts +1 -1
  45. package/dist/alerts/alert-store.svelte.d.ts +1 -1
  46. package/dist/alerts/alert-types.d.ts +2 -2
  47. package/dist/alerts.js +2 -2
  48. package/dist/board.js +2 -2
  49. package/dist/cdn/svgrid-enterprise.svelte-external.js +1161 -1144
  50. package/dist/designer/assets/GridMenus-B1JtIN21.js +8 -0
  51. package/dist/designer/assets/SvDateRangeInput-C0iCCZ8o.css +1 -0
  52. package/dist/designer/assets/{SvDateRangeInput-CVn-yqrQ.js → SvDateRangeInput-CjO7nn_x.js} +1 -1
  53. package/dist/designer/assets/SvDateTimePicker-ByBD_ov6.js +1 -0
  54. package/dist/designer/assets/SvDateTimePicker-DPv09DIT.css +1 -0
  55. package/dist/designer/assets/SvField-YDLipR6O.css +1 -0
  56. package/dist/designer/assets/{SvField-BsqiA5me.js → SvField-cj1PFNgZ.js} +1 -1
  57. package/dist/designer/assets/{preload-helper-CG0n22O7.js → SvGrid.helpers-BgT-gnCo.js} +1 -1
  58. package/dist/designer/assets/SvGridCellEditor-0W1L2hJ1.js +2 -0
  59. package/dist/designer/assets/SvGridChart-DBOR4xcz.js +2 -0
  60. package/dist/designer/assets/SvGridChart-fkMWeh1J.css +1 -0
  61. package/dist/designer/assets/SvGridChartPanel-symrhNnR.js +11 -0
  62. package/dist/designer/assets/SvGridChartView-BmRxq6mU.js +1 -0
  63. package/dist/designer/assets/SvGridChartView-DUc-1RUf.css +1 -0
  64. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +1 -0
  65. package/dist/designer/assets/SvGridDropdown-CcidB3rm.css +1 -0
  66. package/dist/designer/assets/SvListBox-1oUF6Iav.js +110 -0
  67. package/dist/designer/assets/SvListBox-BXfyqy4a.css +1 -0
  68. package/dist/designer/assets/cell-formatting-wr5wm7US.js +1 -0
  69. package/dist/designer/assets/chart-DXFganU8.js +1 -0
  70. package/dist/designer/assets/date-format-DGagAqRc.css +1 -0
  71. package/dist/designer/assets/{date-format-4DJvNtG2.js → date-format-onlYDsrY.js} +1 -1
  72. package/dist/designer/assets/export-format-D-eP4b2l.js +6 -0
  73. package/dist/designer/assets/{index-zUBix-JQ.js → index-C_a9Cj8Y.js} +2984 -141
  74. package/dist/designer/assets/index-k2stW6L8.css +1 -0
  75. package/dist/designer/assets/preload-helper-HclGiUj8.js +1 -0
  76. package/dist/designer/assets/src-D9p27OGC.js +58 -0
  77. package/dist/designer/index.html +22 -22
  78. package/dist/export-conditional.d.ts +1 -1
  79. package/dist/export-print.js +19 -19
  80. package/dist/export-xls.d.ts +2 -2
  81. package/dist/export.d.ts +2 -2
  82. package/dist/export.js +7 -7
  83. package/dist/expressions/builder-tree.d.ts +2 -2
  84. package/dist/expressions/builder-tree.js +1 -1
  85. package/dist/expressions/compile.d.ts +1 -1
  86. package/dist/import.js +1 -1
  87. package/dist/index.d.ts +53 -53
  88. package/dist/index.js +50 -50
  89. package/dist/install.d.ts +4 -4
  90. package/dist/install.js +11 -11
  91. package/dist/license.d.ts +3 -2
  92. package/dist/license.js +9 -4
  93. package/dist/node/studio.js +123 -114
  94. package/dist/pivot-chart.d.ts +1 -1
  95. package/dist/pivot-designer.d.ts +1 -1
  96. package/dist/pivot-enable.js +3 -3
  97. package/dist/print.d.ts +1 -1
  98. package/dist/print.js +4 -4
  99. package/dist/scheduler-config.d.ts +5 -5
  100. package/dist/scheduler-freebusy.d.ts +1 -1
  101. package/dist/scheduler-freebusy.js +1 -1
  102. package/dist/scheduler.js +2 -2
  103. package/dist/schema-designer.d.ts +1 -1
  104. package/dist/schema-designer.js +2 -2
  105. package/dist/selection-bar.js +2 -2
  106. package/dist/sources/aggregate.d.ts +1 -1
  107. package/dist/sources/auth-supabase.js +1 -1
  108. package/dist/sources/dashboard.d.ts +2 -2
  109. package/dist/sources/dashboard.js +1 -1
  110. package/dist/sources/index.d.ts +13 -13
  111. package/dist/sources/index.js +13 -13
  112. package/dist/sources/realtime-supabase.js +1 -1
  113. package/dist/sources/relation-lookup.d.ts +1 -1
  114. package/dist/sources/relation-lookup.js +1 -1
  115. package/dist/sources/rest-adapters.d.ts +1 -1
  116. package/dist/sources/rest-adapters.js +1 -1
  117. package/dist/sources/rest.d.ts +2 -2
  118. package/dist/sources/rest.js +3 -3
  119. package/dist/sources/supabase.d.ts +2 -2
  120. package/dist/sources/supabase.js +3 -3
  121. package/dist/sources/with-entity-rules.d.ts +1 -1
  122. package/dist/sources/with-entity-rules.js +1 -1
  123. package/dist/sources/with-relation-labels.d.ts +1 -1
  124. package/dist/studio/emit-project.js +2161 -2127
  125. package/dist/studio/emit-schema.js +369 -369
  126. package/dist/studio/index.d.ts +1 -1
  127. package/dist/studio/index.js +1 -1
  128. package/dist/studio/introspect-db.js +45 -45
  129. package/dist/studio/project.d.ts +10 -0
  130. package/dist/studio/samples/crm.js +6 -6
  131. package/dist/studio/samples/fleet.js +7 -7
  132. package/dist/studio/samples/insurance.js +9 -9
  133. package/dist/studio/samples/inventory.js +12 -12
  134. package/dist/studio/samples/projects.js +5 -5
  135. package/dist/studio/samples/support.js +8 -8
  136. package/dist/studio/scaffold-app.js +104 -104
  137. package/dist/studio/scaffold.js +151 -151
  138. package/dist/studio/ui-components.d.ts +7 -0
  139. package/dist/studio/ui-components.js +35 -0
  140. package/dist/sveltekit/in-memory.d.ts +3 -3
  141. package/dist/sveltekit/in-memory.js +4 -4
  142. package/dist/sveltekit/index.d.ts +6 -6
  143. package/dist/sveltekit/index.js +5 -5
  144. package/dist/sveltekit/query-plan.d.ts +1 -1
  145. package/dist/sveltekit/sql-source.d.ts +4 -4
  146. package/dist/sveltekit/sql-source.js +4 -4
  147. package/dist/sveltekit/sql.d.ts +1 -1
  148. package/dist/sveltekit/transport.d.ts +2 -2
  149. package/dist/sveltekit/transport.js +1 -1
  150. package/dist/upgrade-prompt.js +25 -25
  151. package/package.json +6 -3
  152. package/dist/designer/assets/GridMenus-Cgilexpk.js +0 -8
  153. package/dist/designer/assets/SvDateRangeInput-BV5OXYQ2.css +0 -1
  154. package/dist/designer/assets/SvDateTimePicker-BdioTrJQ.js +0 -1
  155. package/dist/designer/assets/SvDateTimePicker-CY8TK4BT.css +0 -1
  156. package/dist/designer/assets/SvField-BF-9TJSd.css +0 -1
  157. package/dist/designer/assets/SvGridCellEditor-dLY7_kk9.js +0 -2
  158. package/dist/designer/assets/SvGridChart-BEDNTdc5.js +0 -2
  159. package/dist/designer/assets/SvGridChart-Vu4Nvjiv.css +0 -1
  160. package/dist/designer/assets/SvGridChartPanel-x3lzSxuf.js +0 -10
  161. package/dist/designer/assets/SvGridChartView-CAKhPELi.js +0 -1
  162. package/dist/designer/assets/SvGridChartView-DX9HfkBR.css +0 -1
  163. package/dist/designer/assets/SvGridDropdown-CAYG7Y-O.js +0 -1
  164. package/dist/designer/assets/SvGridDropdown-Crwb2P3Q.css +0 -1
  165. package/dist/designer/assets/SvListBox-CVYQcLX9.js +0 -1
  166. package/dist/designer/assets/SvListBox-DgN8kvjt.css +0 -1
  167. package/dist/designer/assets/chart-DHEgt4lN.js +0 -1
  168. package/dist/designer/assets/date-format-Dzy4mTGh.css +0 -1
  169. package/dist/designer/assets/export-format-DwjuTfrQ.js +0 -6
  170. package/dist/designer/assets/index-Cp7fDJ3b.css +0 -1
  171. package/dist/designer/assets/js-scroller.svelte-Bhxqb3-c.js +0 -110
  172. package/dist/designer/assets/src-B7DNcoQK.css +0 -1
  173. package/dist/designer/assets/src-BoYyigAC.js +0 -2896
  174. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  175. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  176. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -3875
  177. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -1
  178. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -21
  179. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -1
  180. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -1938
  181. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -1
  182. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -205
  183. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -1
  184. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -18
  185. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -1
  186. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -264
  187. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -1
  188. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -697
  189. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -1
  190. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  191. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  192. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  193. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  194. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  195. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  196. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  197. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  198. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  199. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  200. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  201. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  202. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  203. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  204. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  205. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  206. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  207. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  208. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  209. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  210. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  211. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  212. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  213. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  214. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  215. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  216. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  217. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  218. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  219. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  220. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  221. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  222. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  223. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  224. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  225. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  226. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -4938
  227. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -1
  228. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -495
  229. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -1
  230. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -190
  231. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -1
  232. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -8
  233. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -1
  234. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -138
  235. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  type EditRow = Record<string, unknown>;
2
2
  import { type CellEditorOption } from '@svgrid/grid';
3
- import { type EntitySchema, type FormSection } from './schema';
4
- import { type EditMode } from './edit-panel';
5
- import type { RelationLookup } from './sources/relation-lookup';
3
+ import { type EntitySchema, type FormSection } from './schema.js';
4
+ import { type EditMode } from './edit-panel.js';
5
+ import type { RelationLookup } from './sources/relation-lookup.js';
6
6
  declare function $$render<TData extends EditRow>(): {
7
7
  props: {
8
8
  schema: EntitySchema<TData>;
@@ -1,116 +1,116 @@
1
- <script lang="ts" module>
2
- type MdRow = Record<string, unknown>
3
- </script>
4
-
5
- <script lang="ts" generics="TParent extends MdRow, TChild extends MdRow">
6
- /**
7
- * SvGridMasterDetail - expand a master row into a nested grid of related
8
- * records. A feature of the grid's data stack (built on SvGrid's own
9
- * `isDetailRow` / `renderDetailRow`), not a separate widget. Click a master
10
- * row to expand or collapse its detail region.
11
- *
12
- * Minimal wire-up:
13
- * <SvGridMasterDetail
14
- * schema={orderSchema}
15
- * data={orders}
16
- * detailSchema={lineItemSchema}
17
- * getChildren={(order) => lineItems.filter((li) => li.orderId === order.id)}
18
- * />
19
- */
20
- import { SvGrid } from '@svgrid/grid'
21
- import { resolveIdField, schemaToColumns, type EntitySchema } from './schema'
22
- import { buildDisplayRows, isDetailRow, toggleExpanded, type DetailRow } from './master-detail'
23
-
24
- type Props = {
25
- /** The master entity. */
26
- schema: EntitySchema<TParent>
27
- /** Master rows. */
28
- data: ReadonlyArray<TParent>
29
- /** The detail entity, rendered in the nested grid. */
30
- detailSchema: EntitySchema<TChild>
31
- /** Return the child rows for a given master row. */
32
- getChildren: (parent: TParent) => ReadonlyArray<TChild>
33
- /** Height of the outer grid. Default 320. */
34
- containerHeight?: number | string
35
- /** Height of each nested detail grid. Default 200. */
36
- detailHeight?: number | string
37
- /** When set, a parent row click calls this (with the row id) to drill into a
38
- * detail page, instead of expanding the inline child grid. */
39
- onParentClick?: (id: string) => void
40
- /** Stretch columns to fill the width, like a standard grid. Default `true` so the
41
- * master + detail cells match a plain `<SvGrid>` instead of using natural widths. */
42
- fitColumns?: boolean
43
- /** Row height (px) - keep in sync with your other grids. Defaults to the grid's own 30. */
44
- rowHeight?: number
45
- /** Zebra-stripe the rows (match a striped grid). */
46
- zebraRows?: boolean
47
- }
48
-
49
- let {
50
- schema,
51
- data,
52
- detailSchema,
53
- getChildren,
54
- containerHeight = 320,
55
- detailHeight = 200,
56
- onParentClick,
57
- fitColumns = true,
58
- rowHeight,
59
- zebraRows = false,
60
- }: Props = $props()
61
-
62
- const parentIdOf = (p: TParent) => String(p[resolveIdField(schema)])
63
- const columns = $derived(schemaToColumns(schema))
64
- const detailColumns = $derived(schemaToColumns(detailSchema))
65
-
66
- let expanded = $state<Set<string>>(new Set())
67
- // Detail rows are woven in; SvGrid renders them full-width via isDetailRow.
68
- const displayRows = $derived(buildDisplayRows(data, expanded, parentIdOf) as unknown as TParent[])
69
-
70
- function handleRowClick(row: unknown) {
71
- if (isDetailRow(row)) return
72
- // When wired to a detail page, a parent row navigates there (the detail page
73
- // shows this record's children); otherwise it expands the child grid inline.
74
- if (onParentClick) { onParentClick(parentIdOf(row as TParent)); return }
75
- expanded = toggleExpanded(expanded, parentIdOf(row as TParent))
76
- }
77
- </script>
78
-
79
- <SvGrid
80
- data={displayRows}
81
- {columns}
82
- {containerHeight}
83
- {fitColumns}
84
- {rowHeight}
85
- {zebraRows}
86
- virtualization={false}
87
- isDetailRow={(row) => isDetailRow(row)}
88
- onRowClick={(e) => handleRowClick(e.row)}
89
- >
90
- {#snippet renderDetailRow({ row })}
91
- {@const parent = (row as unknown as DetailRow<TParent>).parent}
92
- <div class="sv-md-detail">
93
- <SvGrid data={getChildren(parent)} columns={detailColumns} containerHeight={detailHeight} {fitColumns} {rowHeight} {zebraRows} />
94
- </div>
95
- {/snippet}
96
- </SvGrid>
97
-
98
- <style>
99
- /* `:global` because this div lives in the `renderDetailRow` snippet, which SvGrid
100
- renders inside ITS OWN tree - a scoped rule can get pruned / not match there, which
101
- left the detail region with no padding / background. Global keeps it reliable. */
102
- :global(.sv-md-detail) {
103
- /* Sit the detail as a separated, inset card below its master row - the margin
104
- spaces it off the surrounding master rows; the radius + border read as a nested block. */
105
- margin: 10px 12px;
106
- padding: 12px 14px;
107
- /* Fall back to the themed header surface (not a fixed light grey) so the
108
- detail region tracks light/dark - `--sg-bg-subtle` is unset by default,
109
- which used to leave this white on every dark theme. */
110
- background: var(--sg-bg-subtle, var(--sg-header-bg, #f8fafc));
111
- color: var(--sg-fg, inherit);
112
- border: 1px solid var(--sg-border, #e2e8f0);
113
- border-left: 3px solid var(--sg-accent, #2563eb);
114
- border-radius: 8px;
115
- }
116
- </style>
1
+ <script lang="ts" module>
2
+ type MdRow = Record<string, unknown>
3
+ </script>
4
+
5
+ <script lang="ts" generics="TParent extends MdRow, TChild extends MdRow">
6
+ /**
7
+ * SvGridMasterDetail - expand a master row into a nested grid of related
8
+ * records. A feature of the grid's data stack (built on SvGrid's own
9
+ * `isDetailRow` / `renderDetailRow`), not a separate widget. Click a master
10
+ * row to expand or collapse its detail region.
11
+ *
12
+ * Minimal wire-up:
13
+ * <SvGridMasterDetail
14
+ * schema={orderSchema}
15
+ * data={orders}
16
+ * detailSchema={lineItemSchema}
17
+ * getChildren={(order) => lineItems.filter((li) => li.orderId === order.id)}
18
+ * />
19
+ */
20
+ import { SvGrid } from '@svgrid/grid'
21
+ import { resolveIdField, schemaToColumns, type EntitySchema } from './schema'
22
+ import { buildDisplayRows, isDetailRow, toggleExpanded, type DetailRow } from './master-detail'
23
+
24
+ type Props = {
25
+ /** The master entity. */
26
+ schema: EntitySchema<TParent>
27
+ /** Master rows. */
28
+ data: ReadonlyArray<TParent>
29
+ /** The detail entity, rendered in the nested grid. */
30
+ detailSchema: EntitySchema<TChild>
31
+ /** Return the child rows for a given master row. */
32
+ getChildren: (parent: TParent) => ReadonlyArray<TChild>
33
+ /** Height of the outer grid. Default 320. */
34
+ containerHeight?: number | string
35
+ /** Height of each nested detail grid. Default 200. */
36
+ detailHeight?: number | string
37
+ /** When set, a parent row click calls this (with the row id) to drill into a
38
+ * detail page, instead of expanding the inline child grid. */
39
+ onParentClick?: (id: string) => void
40
+ /** Stretch columns to fill the width, like a standard grid. Default `true` so the
41
+ * master + detail cells match a plain `<SvGrid>` instead of using natural widths. */
42
+ fitColumns?: boolean
43
+ /** Row height (px) - keep in sync with your other grids. Defaults to the grid's own 30. */
44
+ rowHeight?: number
45
+ /** Zebra-stripe the rows (match a striped grid). */
46
+ zebraRows?: boolean
47
+ }
48
+
49
+ let {
50
+ schema,
51
+ data,
52
+ detailSchema,
53
+ getChildren,
54
+ containerHeight = 320,
55
+ detailHeight = 200,
56
+ onParentClick,
57
+ fitColumns = true,
58
+ rowHeight,
59
+ zebraRows = false,
60
+ }: Props = $props()
61
+
62
+ const parentIdOf = (p: TParent) => String(p[resolveIdField(schema)])
63
+ const columns = $derived(schemaToColumns(schema))
64
+ const detailColumns = $derived(schemaToColumns(detailSchema))
65
+
66
+ let expanded = $state<Set<string>>(new Set())
67
+ // Detail rows are woven in; SvGrid renders them full-width via isDetailRow.
68
+ const displayRows = $derived(buildDisplayRows(data, expanded, parentIdOf) as unknown as TParent[])
69
+
70
+ function handleRowClick(row: unknown) {
71
+ if (isDetailRow(row)) return
72
+ // When wired to a detail page, a parent row navigates there (the detail page
73
+ // shows this record's children); otherwise it expands the child grid inline.
74
+ if (onParentClick) { onParentClick(parentIdOf(row as TParent)); return }
75
+ expanded = toggleExpanded(expanded, parentIdOf(row as TParent))
76
+ }
77
+ </script>
78
+
79
+ <SvGrid
80
+ data={displayRows}
81
+ {columns}
82
+ {containerHeight}
83
+ {fitColumns}
84
+ {rowHeight}
85
+ {zebraRows}
86
+ virtualization={false}
87
+ isDetailRow={(row) => isDetailRow(row)}
88
+ onRowClick={(e) => handleRowClick(e.row)}
89
+ >
90
+ {#snippet renderDetailRow({ row })}
91
+ {@const parent = (row as unknown as DetailRow<TParent>).parent}
92
+ <div class="sv-md-detail">
93
+ <SvGrid data={getChildren(parent)} columns={detailColumns} containerHeight={detailHeight} {fitColumns} {rowHeight} {zebraRows} />
94
+ </div>
95
+ {/snippet}
96
+ </SvGrid>
97
+
98
+ <style>
99
+ /* `:global` because this div lives in the `renderDetailRow` snippet, which SvGrid
100
+ renders inside ITS OWN tree - a scoped rule can get pruned / not match there, which
101
+ left the detail region with no padding / background. Global keeps it reliable. */
102
+ :global(.sv-md-detail) {
103
+ /* Sit the detail as a separated, inset card below its master row - the margin
104
+ spaces it off the surrounding master rows; the radius + border read as a nested block. */
105
+ margin: 10px 12px;
106
+ padding: 12px 14px;
107
+ /* Fall back to the themed header surface (not a fixed light grey) so the
108
+ detail region tracks light/dark - `--sg-bg-subtle` is unset by default,
109
+ which used to leave this white on every dark theme. */
110
+ background: var(--sg-bg-subtle, var(--sg-header-bg, #f8fafc));
111
+ color: var(--sg-fg, inherit);
112
+ border: 1px solid var(--sg-border, #e2e8f0);
113
+ border-left: 3px solid var(--sg-accent, #2563eb);
114
+ border-radius: 8px;
115
+ }
116
+ </style>
@@ -1,5 +1,5 @@
1
1
  type MdRow = Record<string, unknown>;
2
- import { type EntitySchema } from './schema';
2
+ import { type EntitySchema } from './schema.js';
3
3
  declare function $$render<TParent extends MdRow, TChild extends MdRow>(): {
4
4
  props: {
5
5
  /** The master entity. */