@svgrid/enterprise 3.1.17 → 3.1.18

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 (57) hide show
  1. package/dist/SvGridEditPanel.svelte +14 -1
  2. package/dist/SvGridScheduler.svelte +15 -6
  3. package/dist/SvSheet.svelte +2 -0
  4. package/dist/cdn/svgrid-enterprise.svelte-external.js +6582 -6501
  5. package/dist/designer/assets/{index-C1Ujg62Z.js → index-DKudY-XD.js} +357 -346
  6. package/dist/designer/assets/index-WCxj6WfJ.css +1 -0
  7. package/dist/designer/index.html +2 -2
  8. package/dist/fields/SvBase.svelte +36 -33
  9. package/dist/fields/base-connect.js +50 -9
  10. package/dist/fields/base-sql.d.ts +8 -0
  11. package/dist/fields/base-sql.js +12 -3
  12. package/dist/install.js +3 -3
  13. package/dist/node/studio.js +205 -60
  14. package/dist/sheet-enable.d.ts +8 -2
  15. package/dist/sheet-enable.js +21 -9
  16. package/dist/sources/introspect-supabase.d.ts +6 -3
  17. package/dist/sources/introspect-supabase.js +29 -11
  18. package/dist/sources/supabase.d.ts +10 -0
  19. package/dist/sources/supabase.js +11 -2
  20. package/dist/studio/cli.d.ts +9 -0
  21. package/dist/studio/cli.js +41 -7
  22. package/dist/studio/emit-project.d.ts +3 -1
  23. package/dist/studio/emit-project.js +84 -33
  24. package/dist/studio/emit-schema.js +9 -2
  25. package/dist/studio/index.d.ts +1 -1
  26. package/dist/studio/init-flow.d.ts +7 -0
  27. package/dist/studio/init-flow.js +23 -2
  28. package/dist/studio/introspect-db.d.ts +15 -1
  29. package/dist/studio/introspect-db.js +29 -5
  30. package/dist/sveltekit/sql-source.d.ts +24 -0
  31. package/dist/sveltekit/sql-source.js +34 -1
  32. package/dist/sveltekit/sql.js +14 -2
  33. package/dist/version.d.ts +2 -2
  34. package/dist/version.js +2 -2
  35. package/dist/wc/GridFooter-BgoA77TJ.js +145 -0
  36. package/dist/wc/{GridMenus-q9qYpzKh.js → GridMenus-DVGuqp2l.js} +430 -430
  37. package/dist/wc/{PinSplitter-D-qtDhSM.js → PinSplitter-Btco0txr.js} +24 -24
  38. package/dist/wc/{SvChartMenu-CQNrQGT2.js → SvChartMenu-Ue-HFR5c.js} +58 -58
  39. package/dist/wc/{SvDateRangeInput-BYNOfYxD.js → SvDateRangeInput-CJZohgBe.js} +43 -43
  40. package/dist/wc/{SvDateTimePicker-Bq9N0Oiy.js → SvDateTimePicker-DmK_QkkU.js} +241 -241
  41. package/dist/wc/{SvField-B_kurx_P.js → SvField-C-OodMMv.js} +71 -71
  42. package/dist/wc/SvGridCellEditor-C7ios4i_.js +582 -0
  43. package/dist/wc/{SvGridChart-DrmqEen2.js → SvGridChart-DWRqlhCV.js} +549 -549
  44. package/dist/wc/{SvGridChartBuilder-XFvW1BdT.js → SvGridChartBuilder-BXW3yUR0.js} +337 -337
  45. package/dist/wc/{SvGridChartPanel-oJJtUKG6.js → SvGridChartPanel-28n4tomx.js} +354 -354
  46. package/dist/wc/{SvGridChartView-Cetuj70H.js → SvGridChartView-CbG_WrU-.js} +7 -7
  47. package/dist/wc/{SvGridDropdown-45WsObLL.js → SvGridDropdown-BVnpNU_I.js} +130 -130
  48. package/dist/wc/{SvModal-DrfOYYyX.js → SvModal-DLppAQED.js} +91 -91
  49. package/dist/wc/{client-DQIzjDBG.js → client-GWAV79ON.js} +479 -476
  50. package/dist/wc/{date-format-DS-z_h9v.js → date-format-4_QoS4zZ.js} +393 -393
  51. package/dist/wc/{grid-extension.svelte-Bufq4B4C.js → grid-extension.svelte-CucBS4FL.js} +1 -1
  52. package/dist/wc/sv-sheet-element.js +10474 -10460
  53. package/dist/wc/{svelte-virtualizer.svelte-CkZaFakp.js → svelte-virtualizer.svelte-BDcouWqw.js} +3 -3
  54. package/package.json +17 -4
  55. package/dist/designer/assets/index-DdmxO6Dd.css +0 -1
  56. package/dist/wc/GridFooter-4T29pfok.js +0 -145
  57. package/dist/wc/SvGridCellEditor-Nnl8C3Yj.js +0 -582
@@ -992,7 +992,6 @@
992
992
  /* The heading owns the gap above its fields, so the group reads as one thing. */
993
993
  .sv-ep__section-title + .sv-ep__body, .sv-ep__section-desc + .sv-ep__body { padding-top: 10px; }
994
994
  .sv-ep__discard { margin-right: auto; font-size: 12.5px; font-weight: 600; color: var(--ep-danger); }
995
- .sv-ep__btn--danger { border-color: var(--ep-danger); background: var(--ep-danger); color: #fff; }
996
995
  .sv-ep__section .sv-ep__body { flex: 0 0 auto; overflow: visible; }
997
996
  .sv-ep-field {
998
997
  display: flex;
@@ -1150,7 +1149,21 @@
1150
1149
  background: var(--ep-accent);
1151
1150
  border-color: var(--ep-accent);
1152
1151
  }
1152
+ /* Restate the fill: `.sv-ep__btn:hover:not(:disabled)` outranks the modifier
1153
+ class and painted the subtle background under white text. */
1153
1154
  .sv-ep__btn--primary:hover:not(:disabled) {
1155
+ background: var(--ep-accent);
1156
+ filter: brightness(1.06);
1157
+ }
1158
+ /* After `.sv-ep__btn`, not before it: at equal specificity the base rule
1159
+ came later and the Discard button rendered as a plain one. */
1160
+ .sv-ep__btn--danger {
1161
+ color: #fff;
1162
+ background: var(--ep-danger);
1163
+ border-color: var(--ep-danger);
1164
+ }
1165
+ .sv-ep__btn--danger:hover:not(:disabled) {
1166
+ background: var(--ep-danger);
1154
1167
  filter: brightness(1.06);
1155
1168
  }
1156
1169
  .sv-ep__btn:disabled {
@@ -299,18 +299,23 @@
299
299
 
300
300
  // --- resources: full list (for the legend/grouping) derived from config or
301
301
  // the data. `hiddenResources` is a per-view filter applied to `viewEvents`. ---
302
+ // Read from every row, not only the events in the visible range: built from
303
+ // `events`, an empty week had no resources, so a grouped Week/Day view drew
304
+ // zero day columns, and the columns changed as the user paged through time.
305
+ // Events still feed in after the rows, for ids the rows do not carry.
302
306
  const resources = $derived.by<SchedulerResource[]>(() => {
303
307
  if (!resourceField) return [];
304
308
  if (scheduler.resources?.length) return [...scheduler.resources];
305
309
  const seen = new Set<string>();
306
310
  const out: SchedulerResource[] = [];
307
- for (const e of events) {
308
- const id = e.resourceId ?? "";
311
+ const add = (id: string) => {
309
312
  if (!seen.has(id)) {
310
313
  seen.add(id);
311
314
  out.push({ id, title: id || "(none)" });
312
315
  }
313
- }
316
+ };
317
+ for (const r of data) add(spec.getResource?.(r) ?? "");
318
+ for (const e of events) add(e.resourceId ?? "");
314
319
  return out;
315
320
  });
316
321
  let hiddenResources = $state<Set<string>>(new Set());
@@ -360,7 +365,8 @@
360
365
  }
361
366
 
362
367
  // Resource grouping applies to the time-grid (Week / Day) views.
363
- const resourcesEnabled = $derived(!!resourceField && (view === "day" || view === "week"));
368
+ // No resources at all (no rows yet) means plain day columns, not zero columns.
369
+ const resourcesEnabled = $derived(!!resourceField && (view === "day" || view === "week") && resources.length > 0);
364
370
  const groupByDate = $derived(scheduler.groupByDate === true);
365
371
 
366
372
  // --- timeline views (horizontal: time left→right, resources as rows) ---
@@ -4314,10 +4320,13 @@
4314
4320
  line-height: 1.4;
4315
4321
  }
4316
4322
  .sv-sched-btn:hover { background: color-mix(in srgb, var(--sg-fg, #1f2937) 8%, transparent); }
4317
- .sv-sched-btn-active {
4323
+ /* `:hover` listed too: `.sv-sched-btn:hover` outranks the bare class, so the
4324
+ active view button lost its fill under the pointer. */
4325
+ .sv-sched-btn-active,
4326
+ .sv-sched-btn-active:hover {
4318
4327
  background: var(--sv-sched-accent);
4319
4328
  border-color: var(--sv-sched-accent);
4320
- color: #fff;
4329
+ color: var(--sg-on-accent, #fff);
4321
4330
  }
4322
4331
 
4323
4332
  /* month */
@@ -3255,6 +3255,8 @@
3255
3255
  let hashMeasure: CanvasRenderingContext2D | null = null
3256
3256
  function hashesFor(text: string, c: number, entry: CellFormatEntry | undefined, r = -1, general?: number): string | null {
3257
3257
  if (!text) return null
3258
+ // Cells render on the server too; there is nothing to measure there.
3259
+ if (typeof document === 'undefined') return null
3258
3260
  hashMeasure ??= document.createElement('canvas').getContext('2d')
3259
3261
  if (!hashMeasure) return null
3260
3262
  const size = entry?.fontSize ?? 13