@lobb-js/studio 0.37.1 → 0.39.0

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 (29) hide show
  1. package/dist/actions.d.ts +1 -0
  2. package/dist/components/dataTable/dataTable.svelte +3 -0
  3. package/dist/components/dataTable/dataTable.svelte.d.ts +1 -0
  4. package/dist/components/dataTable/fieldPicker.svelte +61 -0
  5. package/dist/components/dataTable/fieldPicker.svelte.d.ts +9 -0
  6. package/dist/components/dataTable/filter.svelte +469 -238
  7. package/dist/components/dataTable/filter.svelte.d.ts +1 -4
  8. package/dist/components/dataTable/filterButton.svelte +24 -6
  9. package/dist/components/dataTable/header.svelte +9 -31
  10. package/dist/components/dataTable/header.svelte.d.ts +1 -0
  11. package/dist/components/dataTable/sort.svelte +169 -104
  12. package/dist/components/dataTable/sortButton.svelte +33 -7
  13. package/dist/components/dataTable/table.svelte +2 -1
  14. package/dist/components/dataTable/table.svelte.d.ts +1 -0
  15. package/dist/components/dataTablePopup/dataTablePopup.svelte +7 -0
  16. package/dist/components/dataTablePopup/dataTablePopup.svelte.d.ts +1 -0
  17. package/dist/components/importButton.svelte +154 -31
  18. package/package.json +4 -3
  19. package/src/lib/actions.ts +1 -0
  20. package/src/lib/components/dataTable/dataTable.svelte +3 -0
  21. package/src/lib/components/dataTable/fieldPicker.svelte +61 -0
  22. package/src/lib/components/dataTable/filter.svelte +469 -238
  23. package/src/lib/components/dataTable/filterButton.svelte +24 -6
  24. package/src/lib/components/dataTable/header.svelte +9 -31
  25. package/src/lib/components/dataTable/sort.svelte +169 -104
  26. package/src/lib/components/dataTable/sortButton.svelte +33 -7
  27. package/src/lib/components/dataTable/table.svelte +2 -1
  28. package/src/lib/components/dataTablePopup/dataTablePopup.svelte +7 -0
  29. package/src/lib/components/importButton.svelte +154 -31
package/dist/actions.d.ts CHANGED
@@ -19,6 +19,7 @@ export interface OpenDataTablePopupProps {
19
19
  title?: string;
20
20
  showHeader?: boolean;
21
21
  showFooter?: boolean;
22
+ showFilter?: boolean;
22
23
  tabs?: CollectionTab[];
23
24
  view?: {
24
25
  id: string;
@@ -44,6 +44,7 @@
44
44
  showImport?: boolean;
45
45
  showDelete?: boolean;
46
46
  showEdit?: boolean;
47
+ showFilter?: boolean;
47
48
  onDataLoad?: (total: number) => void;
48
49
  tableProps?: Partial<TableProps>;
49
50
  tabs?: CollectionTab[];
@@ -63,6 +64,7 @@
63
64
  showImport = true,
64
65
  showDelete = false,
65
66
  showEdit = true,
67
+ showFilter = true,
66
68
  onDataLoad,
67
69
  tableProps,
68
70
  tabs,
@@ -299,6 +301,7 @@
299
301
  {collectionName}
300
302
  bind:selectedRecords
301
303
  {showImport}
304
+ {showFilter}
302
305
  {loading}
303
306
  {parentContext}
304
307
  onLink={isRecordingMode ? handleLink : undefined}
@@ -18,6 +18,7 @@ interface Props {
18
18
  showImport?: boolean;
19
19
  showDelete?: boolean;
20
20
  showEdit?: boolean;
21
+ showFilter?: boolean;
21
22
  onDataLoad?: (total: number) => void;
22
23
  tableProps?: Partial<TableProps>;
23
24
  tabs?: CollectionTab[];
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ // Typeahead field picker. Renders inside a parent-owned <Popover.Content>
3
+ // so the parent controls open/close. Used by SortButton's fast-path
4
+ // picker and by Sort's "add a rule" popover.
5
+ import { getStudioContext } from "../../context";
6
+ import { getFieldIcon } from "./utils";
7
+
8
+ interface Props {
9
+ collectionName: string;
10
+ excludeFields?: string[];
11
+ placeholder?: string;
12
+ onPick: (fieldName: string) => void;
13
+ }
14
+
15
+ let {
16
+ collectionName,
17
+ excludeFields = [],
18
+ placeholder = "Pick a field…",
19
+ onPick,
20
+ }: Props = $props();
21
+
22
+ const { ctx } = getStudioContext();
23
+
24
+ let search = $state("");
25
+
26
+ const allFields = $derived(
27
+ Object.keys(ctx.meta.collections[collectionName].fields).filter(
28
+ (f) => !excludeFields.includes(f),
29
+ ),
30
+ );
31
+ const filteredFields = $derived(
32
+ search
33
+ ? allFields.filter((f) =>
34
+ f.toLowerCase().includes(search.toLowerCase()),
35
+ )
36
+ : allFields,
37
+ );
38
+ </script>
39
+
40
+ <input
41
+ {placeholder}
42
+ bind:value={search}
43
+ class="w-full rounded-md border bg-muted px-2 py-1 text-xs focus:outline-none focus:ring-1 focus:ring-ring"
44
+ />
45
+ <div class="mt-2 max-h-60 overflow-auto">
46
+ {#each filteredFields as fieldName}
47
+ {@const FieldIcon = getFieldIcon(ctx, fieldName, collectionName)}
48
+ <button
49
+ type="button"
50
+ onclick={() => onPick(fieldName)}
51
+ class="flex w-full items-center gap-2 rounded-md p-2 text-left text-xs text-muted-foreground hover:bg-muted hover:text-foreground"
52
+ >
53
+ <FieldIcon size="14" />
54
+ <span>{fieldName}</span>
55
+ </button>
56
+ {:else}
57
+ <div class="p-2 text-center text-xs text-muted-foreground">
58
+ No matching fields
59
+ </div>
60
+ {/each}
61
+ </div>
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ collectionName: string;
3
+ excludeFields?: string[];
4
+ placeholder?: string;
5
+ onPick: (fieldName: string) => void;
6
+ }
7
+ declare const FieldPicker: import("svelte").Component<Props, {}, "">;
8
+ type FieldPicker = ReturnType<typeof FieldPicker>;
9
+ export default FieldPicker;