@svgrid/grid 2.6.3 → 2.6.5

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 (66) hide show
  1. package/dist/SvGrid.controller.svelte.d.ts +2 -1
  2. package/dist/SvGrid.controller.svelte.js +145 -3
  3. package/dist/SvGrid.css +32 -0
  4. package/dist/SvGrid.svelte +64 -6
  5. package/dist/SvGrid.types.d.ts +61 -0
  6. package/dist/a11y/grid-announcements.d.ts +58 -0
  7. package/dist/a11y/grid-announcements.js +70 -0
  8. package/dist/advanced-filter.svelte.d.ts +42 -0
  9. package/dist/advanced-filter.svelte.js +13 -0
  10. package/dist/build-api.js +44 -2
  11. package/dist/cdn/{GridMenus-BoVKgAv8.js → GridMenus-CBvjL5u4.js} +14 -14
  12. package/dist/cdn/{GridMenus-DL1zrDwf.js → GridMenus-DAzp6YXc.js} +14 -14
  13. package/dist/cdn/{src-M2NfKnjX.js → src-3WKN7L4G.js} +5932 -5743
  14. package/dist/cdn/{src-CEpw6Ato.js → src-Cl7h5-Ux.js} +3371 -3182
  15. package/dist/cdn/svgrid.js +8 -8
  16. package/dist/cdn/svgrid.svelte-external.js +8 -8
  17. package/dist/filter-operators.d.ts +2 -1
  18. package/dist/filter-operators.js +5 -6
  19. package/dist/filtering/excel-filters.d.ts +1 -0
  20. package/dist/filtering/excel-filters.js +5 -0
  21. package/dist/filtering/filter-operator-catalogue.d.ts +42 -0
  22. package/dist/filtering/filter-operator-catalogue.js +42 -0
  23. package/dist/filtering/predicate-expr.d.ts +78 -0
  24. package/dist/filtering/predicate-expr.js +1 -0
  25. package/dist/filtering/row-predicate.d.ts +17 -0
  26. package/dist/filtering/row-predicate.js +55 -0
  27. package/dist/grid-messages.d.ts +7 -0
  28. package/dist/grid-messages.js +7 -0
  29. package/dist/index.d.ts +4 -0
  30. package/dist/index.js +5 -0
  31. package/dist/server-data-source.d.ts +34 -0
  32. package/dist/server-data-source.js +19 -0
  33. package/dist/svgrid-wrapper.types.d.ts +37 -5
  34. package/dist/themes/index.js +12 -4
  35. package/package.json +2 -1
  36. package/src/SvGrid.controller.svelte.ts +169 -2
  37. package/src/SvGrid.css +32 -0
  38. package/src/SvGrid.svelte +64 -6
  39. package/src/SvGrid.types.ts +61 -0
  40. package/src/a11y/grid-announcements.test.ts +78 -0
  41. package/src/a11y/grid-announcements.ts +94 -0
  42. package/src/a11y.announce.test.ts +250 -0
  43. package/src/a11y.axe.test.ts +194 -0
  44. package/src/advanced-filter.svelte.ts +59 -0
  45. package/src/build-api.ts +43 -2
  46. package/src/filter-operators.ts +9 -6
  47. package/src/filtering/excel-filters.ts +15 -0
  48. package/src/filtering/filter-operator-catalogue.ts +74 -0
  49. package/src/filtering/node-entry.test.ts +75 -0
  50. package/src/filtering/predicate-expr.ts +50 -0
  51. package/src/filtering/row-predicate.ts +57 -0
  52. package/src/grid-messages.ts +18 -0
  53. package/src/index.ts +28 -0
  54. package/src/server-data-source.test.ts +94 -0
  55. package/src/server-data-source.ts +56 -0
  56. package/src/svgrid-wrapper.types.ts +37 -5
  57. package/src/svgrid.advanced-filter.test.ts +481 -0
  58. package/src/svgrid.displayed-rows.test.ts +144 -0
  59. package/src/svgrid.group-props-reactive.svelte.test.ts +151 -0
  60. package/src/svgrid.group-props.test.ts +280 -0
  61. package/src/themes/contrast.test.ts +112 -0
  62. package/src/themes/index.ts +12 -4
  63. package/themes/catppuccin.css +3 -3
  64. package/themes/dracula.css +3 -3
  65. package/themes/nord.css +3 -3
  66. package/themes/notion.css +4 -4
package/dist/build-api.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import "./sv-grid-scrollbar";
2
2
  import { untrack } from "svelte";
3
3
  import { isGroupRow, getColumnAlign, columnDefMatchesId, } from "./cell-values";
4
+ import { hasAdvancedFilterEngine } from "./advanced-filter.svelte";
4
5
  export function createGridApi(ctx) {
5
6
  function buildApi() {
6
7
  const findColumn = (columnId) => ctx.grid.getAllColumns().find((column) => column.id === columnId);
@@ -335,14 +336,35 @@ export function createGridApi(ctx) {
335
336
  // See `setFilter` for why the read-modify-write is untracked.
336
337
  untrack(() => {
337
338
  // Wipe every filter surface in one go: column-menu, filter-row, set
338
- // filters, and the global search box.
339
+ // filters, the global search box, and the advanced filter. This
340
+ // promises "every filter surface", so leaving the advanced one set
341
+ // would strand rows nobody can see a cause for.
339
342
  ctx.filterMenuValues = {};
340
343
  ctx.filterRowValues = {};
341
344
  ctx.valueFilters = {};
342
345
  if (ctx.globalFilter !== "")
343
346
  ctx.globalFilter = "";
347
+ if (ctx.advancedFilter !== null)
348
+ ctx.advancedFilter = null;
344
349
  });
345
350
  },
351
+ setAdvancedFilter(expr) {
352
+ // See `setFilter` for why the write is untracked.
353
+ untrack(() => {
354
+ ctx.advancedFilter = expr ?? null;
355
+ });
356
+ },
357
+ getAdvancedFilter() {
358
+ return ctx.advancedFilter ?? null;
359
+ },
360
+ clearAdvancedFilter() {
361
+ untrack(() => {
362
+ ctx.advancedFilter = null;
363
+ });
364
+ },
365
+ isAdvancedFilterActive() {
366
+ return ctx.advancedFilter != null && hasAdvancedFilterEngine();
367
+ },
346
368
  getFilters() {
347
369
  // Return a defensive copy so callers can't mutate internal state.
348
370
  const out = {};
@@ -361,9 +383,14 @@ export function createGridApi(ctx) {
361
383
  // `allRows` is the final, post-filter, post-sort, post-group,
362
384
  // post-pagination list - exactly what the body renders. Skip group
363
385
  // header rows (they wrap an aggregate, not a TData row).
386
+ //
387
+ // `isGroupRow` rather than a `subRows.length` test: a TREE parent also
388
+ // has subRows, but it is a real data row that renders its own cells, so
389
+ // dropping it here silently truncated every tree read - including the
390
+ // enterprise export, whose default row source is this method.
364
391
  const out = [];
365
392
  for (const row of ctx.allRows) {
366
- if (row.subRows && row.subRows.length > 0)
393
+ if (isGroupRow(row))
367
394
  continue;
368
395
  out.push(row.original);
369
396
  }
@@ -392,6 +419,10 @@ export function createGridApi(ctx) {
392
419
  // editorType-based default the body uses.
393
420
  format: c.columnDef.format,
394
421
  align: getColumnAlign(c),
422
+ // The column's declared value type. Lets a filter or expression UI
423
+ // offer the right operators (numeric ranges vs text matching) without
424
+ // re-walking the columnDef tree.
425
+ editorType: c.columnDef.editorType,
395
426
  });
396
427
  // Visible columns first, in their current visual order...
397
428
  const out = ctx.allColumns.map((c) => describe(c, true));
@@ -666,6 +697,11 @@ export function createGridApi(ctx) {
666
697
  k,
667
698
  Array.from(set),
668
699
  ])),
700
+ // Emitted only when set. `attachAutoSavedView` diffs
701
+ // JSON.stringify(getState()) on a timer, so adding an always-present
702
+ // key would change every existing snapshot and force one spurious
703
+ // save in every app on upgrade.
704
+ ...(ctx.advancedFilter ? { advancedFilter: ctx.advancedFilter } : {}),
669
705
  ...(ctx.chartingEnabled
670
706
  ? {
671
707
  chart: {
@@ -726,6 +762,12 @@ export function createGridApi(ctx) {
726
762
  next[k] = new Set(arr);
727
763
  ctx.valueFilters = next;
728
764
  }
765
+ // `in` rather than a truthiness check, so an explicit null clears while
766
+ // an absent key leaves the current filter alone (the documented
767
+ // "only the keys present are applied" contract).
768
+ if ("advancedFilter" in state) {
769
+ ctx.advancedFilter = state.advancedFilter ?? null;
770
+ }
729
771
  if ((state.chart || state.charts) && ctx.chartingEnabled) {
730
772
  if (Array.isArray(state.charts) && state.charts.length) {
731
773
  ctx.applyChartsState(state.charts, state.chartActive);
@@ -1,4 +1,4 @@
1
- import { Gn as e, ao as t, io as n, ro as r } from "./src-CEpw6Ato.js";
1
+ import { Kn as e, co as t, lo as n, so as r } from "./src-Cl7h5-Ux.js";
2
2
  import { l as i } from "./SvDateTimePicker-CHnUkWcH.js";
3
3
  import * as a from "svelte/internal/client";
4
4
  import "svelte/internal/disclose-version";
@@ -6,8 +6,8 @@ import "svelte/internal/disclose-version";
6
6
  var o = a.from_html("<option> </option>"), s = a.from_html("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), c = a.from_html("<option> </option>"), l = a.from_html("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), u = a.from_html("<input class=\"sv-grid-menu-condition-value\"/> <!>", 1), d = a.from_html("<div class=\"sv-grid-menu-join\" role=\"radiogroup\" aria-label=\"Combine conditions\"><button type=\"button\">AND</button> <button type=\"button\">OR</button> <button type=\"button\" class=\"sv-grid-menu-join-x\" title=\"Remove second condition\" aria-label=\"Remove second condition\">×</button></div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Second filter condition\"></select> <!>", 1), f = a.from_html("<button type=\"button\" class=\"sv-grid-menu-add-cond\">+ Add condition</button>"), p = a.from_html("<input class=\"sv-grid-menu-condition-value\"/> <!> <!>", 1), m = a.from_html("<div class=\"sv-grid-facet-empty\">No values</div>"), h = a.from_html("<div class=\"sv-grid-facet-note\"> </div>"), g = a.from_html("<div class=\"sv-grid-menu-filter\"><div class=\"sv-grid-menu-filter-head\"><span class=\"sv-grid-header-icon\"><!></span> Filter\n condition</div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Filter condition\"></select> <!> <div class=\"sv-grid-menu-sep\"></div> <div class=\"sv-grid-menu-filter-head\">Values</div> <input class=\"sv-grid-menu-search\" placeholder=\"Search values...\"/> <label class=\"sv-grid-facet sv-grid-facet-all\"><input type=\"checkbox\"/> <span class=\"sv-grid-facet-label\">(Select all)</span></label> <!> <!> <div class=\"sv-grid-menu-actions\"><button type=\"button\" class=\"sv-grid-menu-btn\">Clear filter</button> <button type=\"button\" class=\"sv-grid-menu-btn sv-grid-menu-btn-primary\">Done</button></div></div>"), _ = a.from_html("<div role=\"tooltip\"> </div>"), v = a.from_html("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div>"), y = a.from_html("<button type=\"button\" role=\"tab\">Filter</button>"), b = a.from_html("<div class=\"sv-grid-menu-tabs\" role=\"tablist\"><button type=\"button\" role=\"tab\">General</button> <!> <button type=\"button\" role=\"tab\">Columns</button></div>"), x = a.from_html("<div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!>", 1), S = a.from_html("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n ascending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n descending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove sort</button>", 1), ee = a.from_html("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to left</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to right</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Unpin column</button>", 1), C = a.from_html("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Group\n by this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove grouping</button>", 1), w = a.from_html("<button type=\"button\" role=\"menuitem\" aria-haspopup=\"menu\"><span class=\"sv-grid-header-icon\"><!></span> Choose columns <span class=\"sv-grid-header-icon sv-grid-menu-item-chevron\"><!></span></button>"), T = a.from_html("<!> <!> <div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n all columns</button> <!> <div class=\"sv-grid-menu-sep\"></div> <!> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Reset columns</button>", 1), te = a.from_html("<div class=\"sv-grid-menu sv-grid-column-menu\" role=\"menu\"><!> <!></div>"), E = a.from_html("<div class=\"sv-grid-menu sv-grid-filter-menu\" role=\"menu\"><!></div>"), D = a.from_html("<div class=\"sv-grid-menu sv-grid-choose-columns-menu\" role=\"menu\"><div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!></div>"), O = a.from_html("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitemradio\"><span class=\"sv-grid-header-icon\"><!></span> </button>"), k = a.from_html("<div class=\"sv-grid-menu sv-grid-operator-menu\" role=\"menu\"></div>"), ne = a.from_html("<div class=\"sv-grid-facet-empty\">No values</div>"), re = a.from_html("<div class=\"sv-grid-menu sv-grid-in-suggest\"><!></div>"), A = a.from_html("<div class=\"sv-grid-menu-sep\"></div>"), ie = a.from_html("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"> </button>"), j = a.from_html("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-context-menu\" role=\"menu\"></div>", 1), M = a.from_html("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-comment-editor\" role=\"dialog\" aria-label=\"Edit comment\"><textarea class=\"sv-grid-comment-textarea\" rows=\"3\" placeholder=\"Add a comment…\"></textarea> <div class=\"sv-grid-comment-actions\"><button type=\"button\" class=\"sv-grid-comment-remove\">Remove</button> <span class=\"sv-grid-comment-spacer\"></span> <button type=\"button\" class=\"sv-grid-comment-cancel\">Cancel</button> <button type=\"button\" class=\"sv-grid-comment-save\">Save</button></div></div>", 1), ae = a.from_html("<!> <!> <!> <!> <!> <!> <!> <!> <!>", 1);
7
7
  function oe(oe, N) {
8
8
  a.push(N, !0);
9
- let se = (n, r = a.noop) => {
10
- let i = a.derived(() => a.get(G).find((e) => e.id === r())), _ = a.derived(() => a.get(xe)(a.get(i))), v = a.derived(() => a.get(F)[r()]?.operator ?? a.get(K)(a.get(i))), y = a.derived(() => t(a.get(i)?.columnDef.editorType ?? "text"));
9
+ let se = (t, r = a.noop) => {
10
+ let i = a.derived(() => a.get(G).find((e) => e.id === r())), _ = a.derived(() => a.get(xe)(a.get(i))), v = a.derived(() => a.get(F)[r()]?.operator ?? a.get(K)(a.get(i))), y = a.derived(() => n(a.get(i)?.columnDef.editorType ?? "text"));
11
11
  var b = g(), x = a.child(b), S = a.child(x), ee = a.child(S);
12
12
  a.snippet(ee, () => N.icon, () => "filter"), a.reset(S), a.next(), a.reset(x);
13
13
  var C = a.sibling(x, 2);
@@ -148,7 +148,7 @@ function oe(oe, N) {
148
148
  w !== (w = a.get(v)) && (C.value = (C.__value = a.get(v)) ?? "", a.select_option(C, a.get(v))), a.set_checked(O, e), M.disabled = t;
149
149
  }, [() => a.get(Ve)(r()), () => !a.get(Te)(r())]), a.delegated("change", C, (e) => a.get(ve)(r(), e.currentTarget.value)), a.bind_value(E, () => P().columnMenuSearch, (e) => P().columnMenuSearch = e), a.delegated("change", O, () => a.get(He)(r())), a.delegated("click", M, () => a.get(Ye)(r())), a.delegated("click", ae, function(...e) {
150
150
  a.get(Y)?.apply(this, e);
151
- }), a.append(n, b);
151
+ }), a.append(t, b);
152
152
  }, P = a.prop(N, "ctrl", 7), ce = a.derived(() => P().groupingControlsEnabled), F = a.derived(() => P().filterMenuValues), I = a.derived(() => P().tooltip), L = a.derived(() => P().columnMenuFor), R = a.derived(() => P().columnMenuPos), z = a.derived(() => P().filterMenuFor), B = a.derived(() => P().filterMenuPos), V = a.derived(() => P().operatorMenuFor), le = a.derived(() => P().operatorMenuPos), H = a.derived(() => P().chooseColumnsPos), U = a.derived(() => P().showColumnFiltersEffective), W = a.derived(() => P().props.columnMenuTabs === !0), ue = a.derived(() => P().grid), G = a.derived(() => P().allColumns), de = a.derived(() => P().isColumnPinned), fe = a.derived(() => P().pinColumnLeft), pe = a.derived(() => P().pinColumnRight), me = a.derived(() => P().unpinColumn), he = a.derived(() => P().sortDirectionByColumn), ge = a.derived(() => P().groupingColumns), _e = a.derived(() => P().columnVirtualizationEnabled), ve = a.derived(() => P().updateFilterOperator), ye = a.derived(() => P().updateFilterMenuValue), be = a.derived(() => P().updateFilterMenuValueTo), xe = a.derived(() => P().operatorsForColumn), K = a.derived(() => P().defaultOperatorFor), q = a.derived(() => P().operatorLabelFor), Se = a.derived(() => P().filterRowValues), Ce = a.derived(() => P().inSuggestFor), we = a.derived(() => P().inSuggestPos);
153
153
  function J(e, t) {
154
154
  let n = a.get(G).find((t) => t.id === e), r = P().filterMenuValues[e] ?? {
@@ -172,11 +172,11 @@ function oe(oe, N) {
172
172
  };
173
173
  });
174
174
  let Ee = a.derived(() => P().autosizeColumn), De = a.derived(() => P().autosizeAllColumns), Oe = a.derived(() => P().resetColumns), ke = a.derived(() => P().openChooseColumns), Ae = a.derived(() => P().sortColumnFromMenu), je = a.derived(() => P().clearColumnSort), Me = a.derived(() => P().groupByColumnFromMenu), Ne = a.derived(() => P().clearGroupingFromMenu), Pe = a.derived(() => P().columnMenuFacetValues), Fe = a.derived(() => P().columnMenuVisibleFacets), X = a.derived(() => P().columnMenuFacetOptions), Ie = a.derived(() => P().columnMenuSelectedFacets), Le = a.derived(() => P().setFacetSelection), Re = a.derived(() => P().setFilterTokens), Z = a.derived(() => P().inSuggestOptions), ze = a.derived(() => P().openInSuggest), Be = a.derived(() => P().closeInSuggest), Ve = a.derived(() => P().isAllFacetsChecked), He = a.derived(() => P().toggleAllFacets), Ue = 40;
175
- function We(e, t) {
176
- a.get(ze)(e, t), P().inSuggestQuery = n(e.value);
175
+ function We(e, n) {
176
+ a.get(ze)(e, n), P().inSuggestQuery = t(e.value);
177
177
  }
178
- function Ge(e, t) {
179
- P().inSuggestQuery = n(e.value), P().inSuggestFor !== t && a.get(ze)(e, t);
178
+ function Ge(e, n) {
179
+ P().inSuggestQuery = t(e.value), P().inSuggestFor !== n && a.get(ze)(e, n);
180
180
  }
181
181
  function Ke(e) {
182
182
  return e.map((e) => ({
@@ -391,12 +391,12 @@ function oe(oe, N) {
391
391
  a.if(pt, (e) => {
392
392
  a.get(V) && e(mt);
393
393
  });
394
- var ht = a.sibling(pt, 2), gt = (t) => {
394
+ var ht = a.sibling(pt, 2), gt = (n) => {
395
395
  let i = a.derived(() => a.get(Ce)), o = a.derived(() => new Set(r(a.get(Se)[a.get(i)] ?? "")));
396
- var s = re(), c = a.child(s), l = (t) => {
396
+ var s = re(), c = a.child(s), l = (n) => {
397
397
  {
398
398
  let r = a.derived(() => a.get(Z).length > 40);
399
- e(t, {
399
+ e(n, {
400
400
  block: !0,
401
401
  checkbox: !0,
402
402
  multiple: !0,
@@ -414,8 +414,8 @@ function oe(oe, N) {
414
414
  return a.get(o);
415
415
  },
416
416
  onChange: (e) => {
417
- let t = new Set(e), r = n(a.get(Se)[a.get(i)] ?? "");
418
- r && t.delete(r), a.get(Re)(a.get(i), [...t]), P().inSuggestQuery = "";
417
+ let n = new Set(e), r = t(a.get(Se)[a.get(i)] ?? "");
418
+ r && n.delete(r), a.get(Re)(a.get(i), [...n]), P().inSuggestQuery = "";
419
419
  }
420
420
  });
421
421
  }
@@ -425,7 +425,7 @@ function oe(oe, N) {
425
425
  };
426
426
  a.if(c, (e) => {
427
427
  a.get(Z).length ? e(l) : e(u, -1);
428
- }), a.reset(s), a.template_effect(() => a.set_style(s, `left: ${a.get(we).x}px; top: ${a.get(we).y}px;`)), a.delegated("mousedown", s, (e) => e.preventDefault()), a.append(t, s);
428
+ }), a.reset(s), a.template_effect(() => a.set_style(s, `left: ${a.get(we).x}px; top: ${a.get(we).y}px;`)), a.delegated("mousedown", s, (e) => e.preventDefault()), a.append(n, s);
429
429
  };
430
430
  a.if(ht, (e) => {
431
431
  a.get(Ce) && e(gt);
@@ -1,12 +1,12 @@
1
- import { Gn as e, ao as t, io as n, ro as r } from "./src-M2NfKnjX.js";
1
+ import { Kn as e, co as t, lo as n, so as r } from "./src-3WKN7L4G.js";
2
2
  import { E as i, F as a, G as o, H as s, I as c, L as l, N as u, Q as d, U as f, V as p, X as m, Y as h, Z as g, _, d as v, et as y, f as b, ft as x, g as S, h as ee, j as C, k as w, lt as T, m as E, mt as D, nt as O, o as k, pt as A, st as j, t as te, tt as M, u as N, ut as P, v as F } from "./disclose-version-Dr7rEVv-.js";
3
3
  import { l as ne } from "./SvDateTimePicker-CRQH_U7E.js";
4
4
  //#region src/GridMenus.svelte
5
5
  var re = l("<option> </option>"), ie = l("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), ae = l("<option> </option>"), oe = l("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), se = l("<input class=\"sv-grid-menu-condition-value\"/> <!>", 1), ce = l("<div class=\"sv-grid-menu-join\" role=\"radiogroup\" aria-label=\"Combine conditions\"><button type=\"button\">AND</button> <button type=\"button\">OR</button> <button type=\"button\" class=\"sv-grid-menu-join-x\" title=\"Remove second condition\" aria-label=\"Remove second condition\">×</button></div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Second filter condition\"></select> <!>", 1), le = l("<button type=\"button\" class=\"sv-grid-menu-add-cond\">+ Add condition</button>"), ue = l("<input class=\"sv-grid-menu-condition-value\"/> <!> <!>", 1), de = l("<div class=\"sv-grid-facet-empty\">No values</div>"), fe = l("<div class=\"sv-grid-facet-note\"> </div>"), pe = l("<div class=\"sv-grid-menu-filter\"><div class=\"sv-grid-menu-filter-head\"><span class=\"sv-grid-header-icon\"><!></span> Filter\n condition</div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Filter condition\"></select> <!> <div class=\"sv-grid-menu-sep\"></div> <div class=\"sv-grid-menu-filter-head\">Values</div> <input class=\"sv-grid-menu-search\" placeholder=\"Search values...\"/> <label class=\"sv-grid-facet sv-grid-facet-all\"><input type=\"checkbox\"/> <span class=\"sv-grid-facet-label\">(Select all)</span></label> <!> <!> <div class=\"sv-grid-menu-actions\"><button type=\"button\" class=\"sv-grid-menu-btn\">Clear filter</button> <button type=\"button\" class=\"sv-grid-menu-btn sv-grid-menu-btn-primary\">Done</button></div></div>"), me = l("<div role=\"tooltip\"> </div>"), he = l("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div>"), I = l("<button type=\"button\" role=\"tab\">Filter</button>"), L = l("<div class=\"sv-grid-menu-tabs\" role=\"tablist\"><button type=\"button\" role=\"tab\">General</button> <!> <button type=\"button\" role=\"tab\">Columns</button></div>"), R = l("<div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!>", 1), ge = l("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n ascending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n descending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove sort</button>", 1), _e = l("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to left</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to right</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Unpin column</button>", 1), ve = l("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Group\n by this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove grouping</button>", 1), ye = l("<button type=\"button\" role=\"menuitem\" aria-haspopup=\"menu\"><span class=\"sv-grid-header-icon\"><!></span> Choose columns <span class=\"sv-grid-header-icon sv-grid-menu-item-chevron\"><!></span></button>"), be = l("<!> <!> <div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n all columns</button> <!> <div class=\"sv-grid-menu-sep\"></div> <!> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Reset columns</button>", 1), z = l("<div class=\"sv-grid-menu sv-grid-column-menu\" role=\"menu\"><!> <!></div>"), B = l("<div class=\"sv-grid-menu sv-grid-filter-menu\" role=\"menu\"><!></div>"), xe = l("<div class=\"sv-grid-menu sv-grid-choose-columns-menu\" role=\"menu\"><div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!></div>"), Se = l("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitemradio\"><span class=\"sv-grid-header-icon\"><!></span> </button>"), Ce = l("<div class=\"sv-grid-menu sv-grid-operator-menu\" role=\"menu\"></div>"), we = l("<div class=\"sv-grid-facet-empty\">No values</div>"), Te = l("<div class=\"sv-grid-menu sv-grid-in-suggest\"><!></div>"), Ee = l("<div class=\"sv-grid-menu-sep\"></div>"), De = l("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"> </button>"), Oe = l("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-context-menu\" role=\"menu\"></div>", 1), ke = l("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-comment-editor\" role=\"dialog\" aria-label=\"Edit comment\"><textarea class=\"sv-grid-comment-textarea\" rows=\"3\" placeholder=\"Add a comment…\"></textarea> <div class=\"sv-grid-comment-actions\"><button type=\"button\" class=\"sv-grid-comment-remove\">Remove</button> <span class=\"sv-grid-comment-spacer\"></span> <button type=\"button\" class=\"sv-grid-comment-cancel\">Cancel</button> <button type=\"button\" class=\"sv-grid-comment-save\">Save</button></div></div>", 1), Ae = l("<!> <!> <!> <!> <!> <!> <!> <!> <!>", 1);
6
6
  function V(l, p) {
7
7
  P(p, !0);
8
- let V = (n, r = D) => {
9
- let c = j(() => o(X).find((e) => e.id === r())), l = j(() => o(qe)(o(c))), d = j(() => o(U)[r()]?.operator ?? o(Z)(o(c))), m = j(() => t(o(c)?.columnDef.editorType ?? "text"));
8
+ let V = (t, r = D) => {
9
+ let c = j(() => o(X).find((e) => e.id === r())), l = j(() => o(qe)(o(c))), d = j(() => o(U)[r()]?.operator ?? o(Z)(o(c))), m = j(() => n(o(c)?.columnDef.editorType ?? "text"));
10
10
  var g = pe(), _ = y(g), T = y(_), te = y(T);
11
11
  C(te, () => p.icon, () => "filter"), A(T), x(), A(_);
12
12
  var P = O(_, 2);
@@ -147,7 +147,7 @@ function V(l, p) {
147
147
  ne !== (ne = o(d)) && (P.value = (P.__value = o(d)) ?? "", S(P, o(d))), b(R, e), B.disabled = t;
148
148
  }, [() => o(gt)(r()), () => !o(Qe)(r())]), s("change", P, (e) => o(We)(r(), e.currentTarget.value)), k(I, () => H().columnMenuSearch, (e) => H().columnMenuSearch = e), s("change", R, () => o(_t)(r())), s("click", B, () => o(wt)(r())), s("click", xe, function(...e) {
149
149
  o($)?.apply(this, e);
150
- }), a(n, g);
150
+ }), a(t, g);
151
151
  }, H = te(p, "ctrl", 7), je = j(() => H().groupingControlsEnabled), U = j(() => H().filterMenuValues), W = j(() => H().tooltip), G = j(() => H().columnMenuFor), Me = j(() => H().columnMenuPos), K = j(() => H().filterMenuFor), Ne = j(() => H().filterMenuPos), q = j(() => H().operatorMenuFor), Pe = j(() => H().operatorMenuPos), J = j(() => H().chooseColumnsPos), Fe = j(() => H().showColumnFiltersEffective), Y = j(() => H().props.columnMenuTabs === !0), Ie = j(() => H().grid), X = j(() => H().allColumns), Le = j(() => H().isColumnPinned), Re = j(() => H().pinColumnLeft), ze = j(() => H().pinColumnRight), Be = j(() => H().unpinColumn), Ve = j(() => H().sortDirectionByColumn), He = j(() => H().groupingColumns), Ue = j(() => H().columnVirtualizationEnabled), We = j(() => H().updateFilterOperator), Ge = j(() => H().updateFilterMenuValue), Ke = j(() => H().updateFilterMenuValueTo), qe = j(() => H().operatorsForColumn), Z = j(() => H().defaultOperatorFor), Je = j(() => H().operatorLabelFor), Ye = j(() => H().filterRowValues), Xe = j(() => H().inSuggestFor), Ze = j(() => H().inSuggestPos);
152
152
  function Q(e, t) {
153
153
  let n = o(X).find((t) => t.id === e), r = H().filterMenuValues[e] ?? {
@@ -171,11 +171,11 @@ function V(l, p) {
171
171
  };
172
172
  });
173
173
  let $e = j(() => H().autosizeColumn), et = j(() => H().autosizeAllColumns), tt = j(() => H().resetColumns), nt = j(() => H().openChooseColumns), rt = j(() => H().sortColumnFromMenu), it = j(() => H().clearColumnSort), at = j(() => H().groupByColumnFromMenu), ot = j(() => H().clearGroupingFromMenu), st = j(() => H().columnMenuFacetValues), ct = j(() => H().columnMenuVisibleFacets), lt = j(() => H().columnMenuFacetOptions), ut = j(() => H().columnMenuSelectedFacets), dt = j(() => H().setFacetSelection), ft = j(() => H().setFilterTokens), pt = j(() => H().inSuggestOptions), mt = j(() => H().openInSuggest), ht = j(() => H().closeInSuggest), gt = j(() => H().isAllFacetsChecked), _t = j(() => H().toggleAllFacets), vt = 40;
174
- function yt(e, t) {
175
- o(mt)(e, t), H().inSuggestQuery = n(e.value);
174
+ function yt(e, n) {
175
+ o(mt)(e, n), H().inSuggestQuery = t(e.value);
176
176
  }
177
- function bt(e, t) {
178
- H().inSuggestQuery = n(e.value), H().inSuggestFor !== t && o(mt)(e, t);
177
+ function bt(e, n) {
178
+ H().inSuggestQuery = t(e.value), H().inSuggestFor !== n && o(mt)(e, n);
179
179
  }
180
180
  function xt(e) {
181
181
  return e.map((e) => ({
@@ -390,12 +390,12 @@ function V(l, p) {
390
390
  w(Wt, (e) => {
391
391
  o(q) && e(Gt);
392
392
  });
393
- var Kt = O(Wt, 2), qt = (t) => {
393
+ var Kt = O(Wt, 2), qt = (n) => {
394
394
  let i = j(() => o(Xe)), c = j(() => new Set(r(o(Ye)[o(i)] ?? "")));
395
- var l = Te(), u = y(l), d = (t) => {
395
+ var l = Te(), u = y(l), d = (n) => {
396
396
  {
397
397
  let r = j(() => o(pt).length > 40);
398
- e(t, {
398
+ e(n, {
399
399
  block: !0,
400
400
  checkbox: !0,
401
401
  multiple: !0,
@@ -413,8 +413,8 @@ function V(l, p) {
413
413
  return o(c);
414
414
  },
415
415
  onChange: (e) => {
416
- let t = new Set(e), r = n(o(Ye)[o(i)] ?? "");
417
- r && t.delete(r), o(ft)(o(i), [...t]), H().inSuggestQuery = "";
416
+ let n = new Set(e), r = t(o(Ye)[o(i)] ?? "");
417
+ r && n.delete(r), o(ft)(o(i), [...n]), H().inSuggestQuery = "";
418
418
  }
419
419
  });
420
420
  }
@@ -424,7 +424,7 @@ function V(l, p) {
424
424
  };
425
425
  w(u, (e) => {
426
426
  o(pt).length ? e(d) : e(f, -1);
427
- }), A(l), h(() => _(l, `left: ${o(Ze).x}px; top: ${o(Ze).y}px;`)), s("mousedown", l, (e) => e.preventDefault()), a(t, l);
427
+ }), A(l), h(() => _(l, `left: ${o(Ze).x}px; top: ${o(Ze).y}px;`)), s("mousedown", l, (e) => e.preventDefault()), a(n, l);
428
428
  };
429
429
  w(Kt, (e) => {
430
430
  o(Xe) && e(qt);