@lobb-js/studio 0.48.0 → 0.49.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 (63) hide show
  1. package/dist/components/detailView/detailView.svelte +12 -62
  2. package/dist/components/detailView/detailView.svelte.d.ts +1 -1
  3. package/dist/components/detailView/fieldInput.svelte +161 -288
  4. package/dist/components/detailView/fieldInput.svelte.d.ts +1 -1
  5. package/dist/components/detailView/fields/BoolField.svelte +42 -0
  6. package/dist/components/detailView/fields/BoolField.svelte.d.ts +13 -0
  7. package/dist/components/detailView/fields/CodeField.svelte +30 -0
  8. package/dist/components/detailView/fields/CodeField.svelte.d.ts +13 -0
  9. package/dist/components/detailView/fields/CustomInputField.svelte +50 -0
  10. package/dist/components/detailView/fields/CustomInputField.svelte.d.ts +18 -0
  11. package/dist/components/detailView/fields/DateField.svelte +47 -0
  12. package/dist/components/detailView/fields/DateField.svelte.d.ts +14 -0
  13. package/dist/components/detailView/fields/EmbeddedField.svelte +139 -0
  14. package/dist/components/detailView/fields/EmbeddedField.svelte.d.ts +13 -0
  15. package/dist/components/detailView/fields/EmbeddedPolymorphicField.svelte +197 -0
  16. package/dist/components/detailView/fields/EmbeddedPolymorphicField.svelte.d.ts +13 -0
  17. package/dist/components/detailView/fields/EnumField.svelte +70 -0
  18. package/dist/components/detailView/fields/EnumField.svelte.d.ts +17 -0
  19. package/dist/components/detailView/fields/FieldWrapper.svelte +68 -0
  20. package/dist/components/detailView/fields/FieldWrapper.svelte.d.ts +18 -0
  21. package/dist/components/detailView/fields/ForeignKeyField.svelte +78 -0
  22. package/dist/components/detailView/fields/ForeignKeyField.svelte.d.ts +17 -0
  23. package/dist/components/detailView/fields/IdField.svelte +21 -0
  24. package/dist/components/detailView/fields/IdField.svelte.d.ts +12 -0
  25. package/dist/components/detailView/fields/NumberField.svelte +38 -0
  26. package/dist/components/detailView/fields/NumberField.svelte.d.ts +16 -0
  27. package/dist/components/detailView/fields/PasswordField.svelte +29 -0
  28. package/dist/components/detailView/fields/PasswordField.svelte.d.ts +12 -0
  29. package/dist/components/detailView/fields/PolymorphicField.svelte +51 -0
  30. package/dist/components/detailView/fields/PolymorphicField.svelte.d.ts +16 -0
  31. package/dist/components/detailView/fields/RichTextField.svelte +30 -0
  32. package/dist/components/detailView/fields/RichTextField.svelte.d.ts +13 -0
  33. package/dist/components/detailView/fields/StringField.svelte +35 -0
  34. package/dist/components/detailView/fields/StringField.svelte.d.ts +14 -0
  35. package/dist/components/detailView/fields/TextField.svelte +35 -0
  36. package/dist/components/detailView/fields/TextField.svelte.d.ts +14 -0
  37. package/dist/components/foreingKeyInput.svelte +1 -1
  38. package/dist/components/polymorphicInput.svelte +1 -1
  39. package/dist/extensions/extension.types.d.ts +3 -1
  40. package/dist/extensions/extensionUtils.js +2 -0
  41. package/package.json +7 -6
  42. package/src/lib/components/detailView/detailView.svelte +12 -62
  43. package/src/lib/components/detailView/fieldInput.svelte +161 -288
  44. package/src/lib/components/detailView/fields/BoolField.svelte +42 -0
  45. package/src/lib/components/detailView/fields/CodeField.svelte +30 -0
  46. package/src/lib/components/detailView/fields/CustomInputField.svelte +50 -0
  47. package/src/lib/components/detailView/fields/DateField.svelte +47 -0
  48. package/src/lib/components/detailView/fields/EmbeddedField.svelte +139 -0
  49. package/src/lib/components/detailView/fields/EmbeddedPolymorphicField.svelte +197 -0
  50. package/src/lib/components/detailView/fields/EnumField.svelte +70 -0
  51. package/src/lib/components/detailView/fields/FieldWrapper.svelte +68 -0
  52. package/src/lib/components/detailView/fields/ForeignKeyField.svelte +78 -0
  53. package/src/lib/components/detailView/fields/IdField.svelte +21 -0
  54. package/src/lib/components/detailView/fields/NumberField.svelte +38 -0
  55. package/src/lib/components/detailView/fields/PasswordField.svelte +29 -0
  56. package/src/lib/components/detailView/fields/PolymorphicField.svelte +51 -0
  57. package/src/lib/components/detailView/fields/RichTextField.svelte +30 -0
  58. package/src/lib/components/detailView/fields/StringField.svelte +35 -0
  59. package/src/lib/components/detailView/fields/TextField.svelte +35 -0
  60. package/src/lib/components/foreingKeyInput.svelte +1 -1
  61. package/src/lib/components/polymorphicInput.svelte +1 -1
  62. package/src/lib/extensions/extension.types.ts +2 -1
  63. package/src/lib/extensions/extensionUtils.ts +2 -0
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import NumberInput from "../../ui/input/numberInput.svelte";
4
+ import FieldWrapper from "./FieldWrapper.svelte";
5
+
6
+ interface Props {
7
+ value?: any;
8
+ scale?: number;
9
+ groupDigits?: boolean;
10
+ placeholder?: string;
11
+ destructive?: boolean;
12
+ changedClass?: string;
13
+ isDisabled?: boolean;
14
+ errorMessages?: any;
15
+ header?: any;
16
+ clearBtn?: Snippet<[]>;
17
+ }
18
+ let { value = $bindable(), scale = 0, groupDigits = false, placeholder = "NULL", destructive = false, changedClass = '', isDisabled = false, errorMessages = [], header, clearBtn }: Props = $props();
19
+ </script>
20
+
21
+ <FieldWrapper span={1} {isDisabled} {errorMessages} {header}>
22
+ {#snippet children()}
23
+ <div class="relative">
24
+ {#if clearBtn}
25
+ <div class="absolute right-1 inset-y-0 z-10 flex items-center">
26
+ {@render clearBtn()}
27
+ </div>
28
+ {/if}
29
+ <NumberInput
30
+ {placeholder}
31
+ {scale}
32
+ {groupDigits}
33
+ class="bg-muted text-xs pr-9 {changedClass} {destructive ? 'border-destructive' : ''}"
34
+ bind:value
35
+ />
36
+ </div>
37
+ {/snippet}
38
+ </FieldWrapper>
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import PasswordInput from "../passwordInput.svelte";
4
+ import FieldWrapper from "./FieldWrapper.svelte";
5
+
6
+ interface Props {
7
+ value?: any;
8
+ destructive?: boolean;
9
+ isDisabled?: boolean;
10
+ errorMessages?: any;
11
+ header?: any;
12
+ clearBtn?: Snippet<[]>;
13
+ }
14
+
15
+ let { value = $bindable(), destructive = false, isDisabled = false, errorMessages = [], header, clearBtn }: Props = $props();
16
+ </script>
17
+
18
+ <FieldWrapper span={1} {isDisabled} {errorMessages} {header}>
19
+ {#snippet children()}
20
+ <div class="relative">
21
+ {#if clearBtn}
22
+ <div class="absolute right-1 inset-y-0 z-10 flex items-center">
23
+ {@render clearBtn()}
24
+ </div>
25
+ {/if}
26
+ <PasswordInput bind:value {destructive} />
27
+ </div>
28
+ {/snippet}
29
+ </FieldWrapper>
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import PolymorphicInput from "../../polymorphicInput.svelte";
4
+ import FieldWrapper from "./FieldWrapper.svelte";
5
+
6
+ interface Props {
7
+ collectionField: string;
8
+ idField: string;
9
+ virtualField: string;
10
+ targetCollections: string[];
11
+ entry: Record<string, any>;
12
+ destructive?: boolean;
13
+ isDisabled?: boolean;
14
+ errorMessages?: any;
15
+ header?: any;
16
+ clearBtn?: Snippet<[]>;
17
+ }
18
+
19
+ let {
20
+ collectionField,
21
+ idField,
22
+ virtualField,
23
+ targetCollections,
24
+ entry = $bindable(),
25
+ destructive = false,
26
+ isDisabled = false,
27
+ errorMessages = [],
28
+ header,
29
+ clearBtn,
30
+ }: Props = $props();
31
+ </script>
32
+
33
+ <FieldWrapper span={2} {isDisabled} {errorMessages} {header}>
34
+ {#snippet children()}
35
+ <div class="relative">
36
+ {#if clearBtn}
37
+ <div class="absolute right-1 inset-y-0 z-10 flex items-center">
38
+ {@render clearBtn()}
39
+ </div>
40
+ {/if}
41
+ <PolymorphicInput
42
+ {collectionField}
43
+ {idField}
44
+ {virtualField}
45
+ {targetCollections}
46
+ bind:entry
47
+ {destructive}
48
+ />
49
+ </div>
50
+ {/snippet}
51
+ </FieldWrapper>
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import RichTextEditor from "../../richTextEditor.svelte";
4
+ import FieldWrapper from "./FieldWrapper.svelte";
5
+
6
+ interface Props {
7
+ value?: any;
8
+ field: any;
9
+ destructive?: boolean;
10
+ isDisabled?: boolean;
11
+ errorMessages?: any;
12
+ header?: any;
13
+ clearBtn?: Snippet<[]>;
14
+ }
15
+
16
+ let { value = $bindable(), field, destructive = false, isDisabled = false, errorMessages = [], header, clearBtn }: Props = $props();
17
+ </script>
18
+
19
+ <FieldWrapper span={2} {isDisabled} {errorMessages} {header}>
20
+ {#snippet children()}
21
+ <div class="relative {destructive ? 'rounded-md ring-1 ring-destructive' : ''}">
22
+ {#if clearBtn}
23
+ <div class="absolute right-1 top-1 z-10">
24
+ {@render clearBtn()}
25
+ </div>
26
+ {/if}
27
+ <RichTextEditor name={field.key} bind:value />
28
+ </div>
29
+ {/snippet}
30
+ </FieldWrapper>
@@ -0,0 +1,35 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import Input from "../../ui/input/input.svelte";
4
+ import FieldWrapper from "./FieldWrapper.svelte";
5
+
6
+ interface Props {
7
+ value?: any;
8
+ placeholder?: string;
9
+ destructive?: boolean;
10
+ changedClass?: string;
11
+ isDisabled?: boolean;
12
+ errorMessages?: any;
13
+ header?: any;
14
+ clearBtn?: Snippet<[]>;
15
+ }
16
+ let { value = $bindable(), placeholder = "NULL", destructive = false, changedClass = '', isDisabled = false, errorMessages = [], header, clearBtn }: Props = $props();
17
+ </script>
18
+
19
+ <FieldWrapper span={1} {isDisabled} {errorMessages} {header}>
20
+ {#snippet children()}
21
+ <div class="relative">
22
+ {#if clearBtn}
23
+ <div class="absolute right-1 inset-y-0 z-10 flex items-center">
24
+ {@render clearBtn()}
25
+ </div>
26
+ {/if}
27
+ <Input
28
+ {placeholder}
29
+ type="text"
30
+ class="bg-muted text-xs pr-9 {changedClass} {destructive ? 'border-destructive' : ''}"
31
+ bind:value
32
+ />
33
+ </div>
34
+ {/snippet}
35
+ </FieldWrapper>
@@ -0,0 +1,35 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import Textarea from "../../ui/textarea/textarea.svelte";
4
+ import FieldWrapper from "./FieldWrapper.svelte";
5
+
6
+ interface Props {
7
+ value?: any;
8
+ placeholder?: string;
9
+ destructive?: boolean;
10
+ changedClass?: string;
11
+ isDisabled?: boolean;
12
+ errorMessages?: any;
13
+ header?: any;
14
+ clearBtn?: Snippet<[]>;
15
+ }
16
+ let { value = $bindable(), placeholder = "NULL", destructive = false, changedClass = '', isDisabled = false, errorMessages = [], header, clearBtn }: Props = $props();
17
+ </script>
18
+
19
+ <FieldWrapper span={2} {isDisabled} {errorMessages} {header}>
20
+ {#snippet children()}
21
+ <div class="relative">
22
+ {#if clearBtn}
23
+ <div class="absolute right-1 top-1 z-10">
24
+ {@render clearBtn()}
25
+ </div>
26
+ {/if}
27
+ <Textarea
28
+ {placeholder}
29
+ rows={5}
30
+ class="bg-muted text-xs pr-9 {changedClass} {destructive ? 'border-destructive' : ''}"
31
+ bind:value
32
+ />
33
+ </div>
34
+ {/snippet}
35
+ </FieldWrapper>
@@ -80,7 +80,7 @@
80
80
  <Input
81
81
  placeholder={isPendingCreate ? "AUTO GENERATED" : isEmpty ? "NULL" : ""}
82
82
  type="number"
83
- class="bg-muted text-xs {bgClass} {destructive ? '!bg-destructive/10 border-destructive' : ''}"
83
+ class="bg-muted text-xs {bgClass} {destructive ? 'border-destructive' : ''}"
84
84
  bind:value={
85
85
  () => hasRealId ? value : "",
86
86
  (v) => { value = (v === "" || v == null) ? null : Number(v); }
@@ -80,7 +80,7 @@
80
80
  }
81
81
  </script>
82
82
 
83
- <div class="flex h-9 w-full items-center gap-1.5 rounded-md border pl-1.5 pr-9 text-xs bg-muted {bgClass} {destructive ? '!bg-destructive/10 border-destructive' : ''}">
83
+ <div class="flex h-9 w-full items-center gap-1.5 rounded-md border pl-1.5 pr-9 text-xs bg-muted {bgClass} {destructive ? 'border-destructive' : ''}">
84
84
  <Popover.Root bind:open={collectionPopoverOpen}>
85
85
  <Popover.Trigger>
86
86
  {#snippet child({ props })}
@@ -17,6 +17,7 @@ import type RangeCalendarButton from "../components/rangeCalendarButton.svelte";
17
17
  import type DataTable from "../components/dataTable/dataTable.svelte";
18
18
  import type Drawer from "../components/drawer.svelte";
19
19
  import type SelectRecord from "../components/selectRecord.svelte";
20
+ import type FieldWrapper from "../components/detailView/fields/FieldWrapper.svelte";
20
21
  import * as Popover from "../components/ui/popover";
21
22
  import * as intlDate from "@internationalized/date";
22
23
  import * as Icons from "lucide-svelte"
@@ -51,6 +52,7 @@ export interface Components {
51
52
  Drawer: typeof Drawer;
52
53
  SelectRecord: typeof SelectRecord,
53
54
  Switch: typeof Switch,
55
+ FieldWrapper: typeof FieldWrapper,
54
56
  }
55
57
 
56
58
  export interface ExtensionUtils {
@@ -137,7 +139,6 @@ export type ExtensionComponentKey =
137
139
  | `pages.${string}`
138
140
  | `publicPages.${string}`
139
141
  | "studio.listView"
140
- | `dvFields.topRight.${string}.${string}`
141
142
  | `detailView.update.subRecords.${string}`
142
143
  | `detailView.create.subRecords.${string}`
143
144
  | `detailView.fields.topRight.${string}.${string}`
@@ -33,6 +33,7 @@ import RangeCalendarButton from "../components/rangeCalendarButton.svelte";
33
33
  import DataTable from "../components/dataTable/dataTable.svelte";
34
34
  import Drawer from "../components/drawer.svelte";
35
35
  import SelectRecord from "../components/selectRecord.svelte";
36
+ import FieldWrapper from "../components/detailView/fields/FieldWrapper.svelte";
36
37
  import { Switch } from "../components/ui/switch";
37
38
 
38
39
  export function getComponents(): Components {
@@ -57,6 +58,7 @@ export function getComponents(): Components {
57
58
  Drawer: Drawer,
58
59
  SelectRecord: SelectRecord,
59
60
  Switch: Switch,
61
+ FieldWrapper: FieldWrapper,
60
62
  };
61
63
  }
62
64