@stubber/form-fields 2.2.6 → 3.0.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 (126) hide show
  1. package/README.md +63 -25
  2. package/dist/form-fields/Autocomplete.svelte +261 -0
  3. package/dist/form-fields/Autocomplete.svelte.d.ts +43 -0
  4. package/dist/form-fields/CollapsibleSection.svelte +127 -0
  5. package/dist/form-fields/CollapsibleSection.svelte.d.ts +26 -0
  6. package/dist/form-fields/FieldLabel.svelte +18 -3
  7. package/dist/form-fields/FieldLabel.svelte.d.ts +1 -0
  8. package/dist/form-fields/FieldMessage.svelte +20 -9
  9. package/dist/form-fields/Form.svelte +19 -2
  10. package/dist/form-fields/Form.svelte.d.ts +2 -0
  11. package/dist/form-fields/UploadStatus.svelte +76 -0
  12. package/dist/form-fields/UploadStatus.svelte.d.ts +18 -0
  13. package/dist/form-fields/fields/_field-builder-reorder.svelte +35 -0
  14. package/dist/form-fields/fields/_field-builder-reorder.svelte.d.ts +22 -0
  15. package/dist/form-fields/{sub → fields}/array-builder-field.svelte +104 -38
  16. package/dist/form-fields/fields/checkbox-autocomplete.svelte +153 -0
  17. package/dist/form-fields/fields/checkbox-field.svelte +69 -0
  18. package/dist/form-fields/{sub → fields}/contact-selector-field.svelte +9 -6
  19. package/dist/form-fields/{sub → fields}/currency-field.svelte +108 -70
  20. package/dist/form-fields/fields/data-indication-field.svelte +39 -0
  21. package/dist/form-fields/fields/date-field.svelte +31 -0
  22. package/dist/form-fields/fields/date-time-field.svelte +31 -0
  23. package/dist/form-fields/{sub → fields}/email-field.svelte +25 -11
  24. package/dist/form-fields/fields/field-builder-field.svelte +568 -0
  25. package/dist/form-fields/fields/file-field.svelte +284 -0
  26. package/dist/form-fields/{sub → fields}/file-field.svelte.d.ts +2 -0
  27. package/dist/form-fields/fields/grid-field.svelte +152 -0
  28. package/dist/form-fields/{sub → fields}/heading-field.svelte +7 -4
  29. package/dist/form-fields/{sub → fields}/html-field.svelte +6 -4
  30. package/dist/form-fields/{sub → fields}/map-field.svelte +121 -78
  31. package/dist/form-fields/{sub → fields}/multi-checkbox-field.svelte +35 -20
  32. package/dist/form-fields/fields/multistep-field.svelte +135 -0
  33. package/dist/form-fields/fields/note-field.svelte +35 -0
  34. package/dist/form-fields/{sub → fields}/number-field.svelte +29 -14
  35. package/dist/form-fields/fields/object-builder-field.svelte +176 -0
  36. package/dist/form-fields/fields/qr-code-scanner-field.svelte +203 -0
  37. package/dist/form-fields/fields/radio-field.svelte +82 -0
  38. package/dist/form-fields/{sub → fields}/radio-field.svelte.d.ts +1 -1
  39. package/dist/form-fields/fields/screenrecorder-field.svelte +255 -0
  40. package/dist/form-fields/{sub → fields}/screenshot-field.svelte +101 -40
  41. package/dist/form-fields/{sub → fields}/scroll-and-read-display-field.svelte +43 -27
  42. package/dist/form-fields/fields/section-field.svelte +73 -0
  43. package/dist/form-fields/fields/select-field.svelte +104 -0
  44. package/dist/form-fields/{sub → fields}/signature-field.svelte +78 -22
  45. package/dist/form-fields/fields/slider-field.svelte +53 -0
  46. package/dist/form-fields/{sub → fields}/smart-text-field.svelte +62 -82
  47. package/dist/form-fields/fields/telephone-field.svelte +108 -0
  48. package/dist/form-fields/{sub → fields}/telephone-field.svelte.d.ts +1 -1
  49. package/dist/form-fields/{sub → fields}/text-field.svelte +28 -11
  50. package/dist/form-fields/{sub → fields}/voicenote-field.svelte +117 -46
  51. package/dist/form-fields/file_creation_options.d.ts +1 -1
  52. package/dist/form-fields/form-field.svelte +8 -1
  53. package/dist/form-fields/icons/ChevronDownIcon.svelte +21 -0
  54. package/dist/form-fields/icons/ChevronDownIcon.svelte.d.ts +20 -0
  55. package/dist/form-fields/icons/QrCodeScannerIcon.svelte +25 -0
  56. package/dist/form-fields/icons/QrCodeScannerIcon.svelte.d.ts +19 -0
  57. package/dist/form-fields/icons/ScreenRecordingIcon.svelte +21 -0
  58. package/dist/form-fields/icons/ScreenRecordingIcon.svelte.d.ts +19 -0
  59. package/dist/form-fields/icons/ScreenshotIcon.svelte +22 -0
  60. package/dist/form-fields/icons/ScreenshotIcon.svelte.d.ts +19 -0
  61. package/dist/form-fields/index.d.ts +5 -1
  62. package/dist/form-fields/index.js +3 -1
  63. package/dist/form-fields/interfaces.d.ts +63 -63
  64. package/dist/form-fields/interfaces.js +42 -39
  65. package/dist/form-fields/intl-tel-input.css +1 -0
  66. package/dist/form-fields/styles.d.ts +17 -0
  67. package/dist/form-fields/styles.js +4 -0
  68. package/package.json +2 -4
  69. package/dist/form-fields/sub/checkbox-autocomplete.svelte +0 -56
  70. package/dist/form-fields/sub/checkbox-field.svelte +0 -42
  71. package/dist/form-fields/sub/data-indication-field.svelte +0 -19
  72. package/dist/form-fields/sub/date-field.svelte +0 -31
  73. package/dist/form-fields/sub/date-time-field.svelte +0 -31
  74. package/dist/form-fields/sub/field-builder-field.svelte +0 -657
  75. package/dist/form-fields/sub/file-field.svelte +0 -159
  76. package/dist/form-fields/sub/grid-field.svelte +0 -69
  77. package/dist/form-fields/sub/multistep-field.svelte +0 -70
  78. package/dist/form-fields/sub/note-field.svelte +0 -18
  79. package/dist/form-fields/sub/object-builder-field.svelte +0 -134
  80. package/dist/form-fields/sub/qr-code-scanner-field.svelte +0 -84
  81. package/dist/form-fields/sub/radio-field.svelte +0 -69
  82. package/dist/form-fields/sub/screenrecorder-field.svelte +0 -178
  83. package/dist/form-fields/sub/section-field.svelte +0 -50
  84. package/dist/form-fields/sub/select-field.svelte +0 -150
  85. package/dist/form-fields/sub/slider-field.svelte +0 -28
  86. package/dist/form-fields/sub/telephone-field.svelte +0 -64
  87. /package/dist/form-fields/{sub → fields}/array-builder-field.svelte.d.ts +0 -0
  88. /package/dist/form-fields/{sub → fields}/checkbox-autocomplete.svelte.d.ts +0 -0
  89. /package/dist/form-fields/{sub → fields}/checkbox-field.svelte.d.ts +0 -0
  90. /package/dist/form-fields/{sub → fields}/code-field.svelte +0 -0
  91. /package/dist/form-fields/{sub → fields}/code-field.svelte.d.ts +0 -0
  92. /package/dist/form-fields/{sub → fields}/contact-selector-field.svelte.d.ts +0 -0
  93. /package/dist/form-fields/{sub → fields}/currency-field.svelte.d.ts +0 -0
  94. /package/dist/form-fields/{sub → fields}/data-indication-field.svelte.d.ts +0 -0
  95. /package/dist/form-fields/{sub → fields}/date-field.svelte.d.ts +0 -0
  96. /package/dist/form-fields/{sub → fields}/date-time-field.svelte.d.ts +0 -0
  97. /package/dist/form-fields/{sub → fields}/email-field.svelte.d.ts +0 -0
  98. /package/dist/form-fields/{sub → fields}/field-builder-field.svelte.d.ts +0 -0
  99. /package/dist/form-fields/{sub → fields}/grid-field.svelte.d.ts +0 -0
  100. /package/dist/form-fields/{sub → fields}/heading-field.svelte.d.ts +0 -0
  101. /package/dist/form-fields/{sub → fields}/hidden-field.svelte +0 -0
  102. /package/dist/form-fields/{sub → fields}/hidden-field.svelte.d.ts +0 -0
  103. /package/dist/form-fields/{sub → fields}/hidden-location-field.svelte +0 -0
  104. /package/dist/form-fields/{sub → fields}/hidden-location-field.svelte.d.ts +0 -0
  105. /package/dist/form-fields/{sub → fields}/html-field.svelte.d.ts +0 -0
  106. /package/dist/form-fields/{sub → fields}/jsoneditor-field.svelte +0 -0
  107. /package/dist/form-fields/{sub → fields}/jsoneditor-field.svelte.d.ts +0 -0
  108. /package/dist/form-fields/{sub → fields}/map-field.svelte.d.ts +0 -0
  109. /package/dist/form-fields/{sub → fields}/multi-checkbox-field.svelte.d.ts +0 -0
  110. /package/dist/form-fields/{sub → fields}/multistep-field.svelte.d.ts +0 -0
  111. /package/dist/form-fields/{sub → fields}/note-field.svelte.d.ts +0 -0
  112. /package/dist/form-fields/{sub → fields}/number-field.svelte.d.ts +0 -0
  113. /package/dist/form-fields/{sub → fields}/object-builder-field.svelte.d.ts +0 -0
  114. /package/dist/form-fields/{sub → fields}/qr-code-scanner-field.svelte.d.ts +0 -0
  115. /package/dist/form-fields/{sub → fields}/screenrecorder-field.svelte.d.ts +0 -0
  116. /package/dist/form-fields/{sub → fields}/screenshot-field.svelte.d.ts +0 -0
  117. /package/dist/form-fields/{sub → fields}/scroll-and-read-display-field.svelte.d.ts +0 -0
  118. /package/dist/form-fields/{sub → fields}/section-field.svelte.d.ts +0 -0
  119. /package/dist/form-fields/{sub → fields}/select-field.svelte.d.ts +0 -0
  120. /package/dist/form-fields/{sub → fields}/selectresource-field.svelte +0 -0
  121. /package/dist/form-fields/{sub → fields}/selectresource-field.svelte.d.ts +0 -0
  122. /package/dist/form-fields/{sub → fields}/signature-field.svelte.d.ts +0 -0
  123. /package/dist/form-fields/{sub → fields}/slider-field.svelte.d.ts +0 -0
  124. /package/dist/form-fields/{sub → fields}/smart-text-field.svelte.d.ts +0 -0
  125. /package/dist/form-fields/{sub → fields}/text-field.svelte.d.ts +0 -0
  126. /package/dist/form-fields/{sub → fields}/voicenote-field.svelte.d.ts +0 -0
@@ -1,41 +1,42 @@
1
- import ArrayBuilderField from "./sub/array-builder-field.svelte";
2
- import CheckboxAutocomplete from "./sub/checkbox-autocomplete.svelte";
3
- import CheckboxField from "./sub/checkbox-field.svelte";
4
- import CodeField from "./sub/code-field.svelte";
5
- import ContactSelectorField from "./sub/contact-selector-field.svelte";
6
- import CurrencyField from "./sub/currency-field.svelte";
7
- import DataIndicationField, {} from "./sub/data-indication-field.svelte";
8
- import DateField from "./sub/date-field.svelte";
9
- import DateTimeField from "./sub/date-time-field.svelte";
10
- import EmailField from "./sub/email-field.svelte";
11
- import FieldBuilderField, {} from "./sub/field-builder-field.svelte";
12
- import FileField, {} from "./sub/file-field.svelte";
13
- import GridField from "./sub/grid-field.svelte";
14
- import HeadingField, {} from "./sub/heading-field.svelte";
15
- import HiddenField, {} from "./sub/hidden-field.svelte";
16
- import HiddenLocationField from "./sub/hidden-location-field.svelte";
17
- import HtmlField, {} from "./sub/html-field.svelte";
18
- import JSONEditorField, {} from "./sub/jsoneditor-field.svelte";
19
- import MapField from "./sub/map-field.svelte";
20
- import MultiCheckboxField from "./sub/multi-checkbox-field.svelte";
21
- import MultistepField from "./sub/multistep-field.svelte";
22
- import NoteField, {} from "./sub/note-field.svelte";
23
- import NumberField from "./sub/number-field.svelte";
24
- import ObjectBuilderField, {} from "./sub/object-builder-field.svelte";
25
- import QrCodeScannerField, {} from "./sub/qr-code-scanner-field.svelte";
26
- import RadioField from "./sub/radio-field.svelte";
27
- import ScreenrecorderField from "./sub/screenrecorder-field.svelte";
28
- import ScreenshotField from "./sub/screenshot-field.svelte";
29
- import ScrollAndReadDisplayField, {} from "./sub/scroll-and-read-display-field.svelte";
30
- import SectionField from "./sub/section-field.svelte";
31
- import SelectField from "./sub/select-field.svelte";
32
- import SelectresourceField, {} from "./sub/selectresource-field.svelte";
33
- import SignatureField, {} from "./sub/signature-field.svelte";
34
- import SliderField from "./sub/slider-field.svelte";
35
- import SmartTextField from "./sub/smart-text-field.svelte";
36
- import TelephoneField from "./sub/telephone-field.svelte";
37
- import TextField from "./sub/text-field.svelte";
38
- import VoicenoteField from "./sub/voicenote-field.svelte";
1
+ import { isEqual } from "lodash-es";
2
+ import ArrayBuilderField from "./fields/array-builder-field.svelte";
3
+ import CheckboxAutocomplete from "./fields/checkbox-autocomplete.svelte";
4
+ import CheckboxField from "./fields/checkbox-field.svelte";
5
+ import CodeField from "./fields/code-field.svelte";
6
+ import ContactSelectorField from "./fields/contact-selector-field.svelte";
7
+ import CurrencyField from "./fields/currency-field.svelte";
8
+ import DataIndicationField, {} from "./fields/data-indication-field.svelte";
9
+ import DateField from "./fields/date-field.svelte";
10
+ import DateTimeField from "./fields/date-time-field.svelte";
11
+ import EmailField from "./fields/email-field.svelte";
12
+ import FieldBuilderField, {} from "./fields/field-builder-field.svelte";
13
+ import FileField, {} from "./fields/file-field.svelte";
14
+ import GridField from "./fields/grid-field.svelte";
15
+ import HeadingField, {} from "./fields/heading-field.svelte";
16
+ import HiddenField, {} from "./fields/hidden-field.svelte";
17
+ import HiddenLocationField from "./fields/hidden-location-field.svelte";
18
+ import HtmlField, {} from "./fields/html-field.svelte";
19
+ import JSONEditorField, {} from "./fields/jsoneditor-field.svelte";
20
+ import MapField from "./fields/map-field.svelte";
21
+ import MultiCheckboxField from "./fields/multi-checkbox-field.svelte";
22
+ import MultistepField from "./fields/multistep-field.svelte";
23
+ import NoteField, {} from "./fields/note-field.svelte";
24
+ import NumberField from "./fields/number-field.svelte";
25
+ import ObjectBuilderField, {} from "./fields/object-builder-field.svelte";
26
+ import QrCodeScannerField, {} from "./fields/qr-code-scanner-field.svelte";
27
+ import RadioField from "./fields/radio-field.svelte";
28
+ import ScreenrecorderField from "./fields/screenrecorder-field.svelte";
29
+ import ScreenshotField from "./fields/screenshot-field.svelte";
30
+ import ScrollAndReadDisplayField, {} from "./fields/scroll-and-read-display-field.svelte";
31
+ import SectionField from "./fields/section-field.svelte";
32
+ import SelectField from "./fields/select-field.svelte";
33
+ import SelectresourceField, {} from "./fields/selectresource-field.svelte";
34
+ import SignatureField, {} from "./fields/signature-field.svelte";
35
+ import SliderField from "./fields/slider-field.svelte";
36
+ import SmartTextField from "./fields/smart-text-field.svelte";
37
+ import TelephoneField from "./fields/telephone-field.svelte";
38
+ import TextField from "./fields/text-field.svelte";
39
+ import VoicenoteField from "./fields/voicenote-field.svelte";
39
40
  export const fields = {
40
41
  text: TextField,
41
42
  number: NumberField,
@@ -86,6 +87,8 @@ const string_fields = [
86
87
  "date",
87
88
  "datetime",
88
89
  "hidden",
90
+ "currency",
91
+ "dataindication",
89
92
  ];
90
93
  export const final_field_type = (f, allow_dynamic_switching) => {
91
94
  if (!allow_dynamic_switching) {
@@ -96,7 +99,7 @@ export const final_field_type = (f, allow_dynamic_switching) => {
96
99
  if (!Array.isArray(options)) {
97
100
  return "smart_text";
98
101
  }
99
- const has_value_in_options = options.some((opt) => opt.value === f.value);
102
+ const has_value_in_options = options.some((opt) => isEqual(opt.value, f.value));
100
103
  if (has_value_in_options) {
101
104
  return "select";
102
105
  }
@@ -0,0 +1 @@
1
+ @import "intl-tel-input/styles";
@@ -0,0 +1,17 @@
1
+ import type { Writable } from "svelte/store";
2
+ export interface FormFieldStyles {
3
+ label?: string;
4
+ input?: string;
5
+ choice?: string;
6
+ range?: string;
7
+ message?: string;
8
+ group?: string;
9
+ dropzone?: string;
10
+ popover?: string;
11
+ option?: string;
12
+ button?: string;
13
+ uploadItem?: string;
14
+ }
15
+ export declare const STYLES_CONTEXT: unique symbol;
16
+ export type StylesContext = Writable<FormFieldStyles>;
17
+ export declare function classNames(...values: Array<string | undefined | false>): string;
@@ -0,0 +1,4 @@
1
+ export const STYLES_CONTEXT = Symbol("form-field-styles");
2
+ export function classNames(...values) {
3
+ return values.filter(Boolean).join(" ");
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stubber/form-fields",
3
- "version": "2.2.6",
3
+ "version": "3.0.0",
4
4
  "description": "An automatic form builder based on field specifications",
5
5
  "keywords": [
6
6
  "components",
@@ -64,7 +64,6 @@
64
64
  "@codemirror/lang-javascript": "^6.2.4",
65
65
  "@codemirror/state": "^6.5.2",
66
66
  "@codemirror/view": "^6.38.4",
67
- "@stubber/ui": "^1.13.9",
68
67
  "ag-grid-community": "^31.0.2",
69
68
  "ag-grid-enterprise": "^31.0.2",
70
69
  "codemirror": "^6.0.2",
@@ -74,13 +73,12 @@
74
73
  "fast-equals": "^5.0.1",
75
74
  "github-markdown-css": "^5.2.0",
76
75
  "html5-qrcode": "^2.3.8",
77
- "intl-tel-input": "^29.1.1",
76
+ "intl-tel-input": "^29.2.3",
78
77
  "jsonata": "^2.0.3",
79
78
  "lodash-es": "^4.17.21",
80
79
  "markdown-it": "^13.0.1",
81
80
  "signature_pad": "^4.1.6",
82
81
  "svelte": "^4.2.19",
83
- "svelte-file-dropzone": "^2.0.4",
84
82
  "svelte-jsoneditor": "^2.3.3",
85
83
  "svelte-markdown": "^0.4.0",
86
84
  "svelte-writable-derived": "^3.1.0"
@@ -1,56 +0,0 @@
1
- <script context="module"></script>
2
-
3
- <script>import { Button } from "@stubber/ui/button";
4
- import { Label } from "@stubber/ui/label";
5
- import * as Popover from "@stubber/ui/popover";
6
- import * as RadioGroup from "@stubber/ui/radio-group";
7
- import CheckboxField, {} from "./checkbox-field.svelte";
8
- import SmartTextField, {} from "./smart-text-field.svelte";
9
- import { isEqual } from "lodash-es";
10
- export let fieldStore;
11
- $fieldStore.without_value_details = true;
12
- let selected_option = $fieldStore.value === void 0 || typeof $fieldStore.value === "boolean" || isEqual($fieldStore.value, $fieldStore.params?.checkedvalue || true) ? "Checkbox" : "Smart Text";
13
- const options = ["Checkbox", "Smart Text"];
14
- function select_option(new_option) {
15
- selected_option = new_option;
16
- switch (selected_option) {
17
- case "Checkbox":
18
- $fieldStore.value = false;
19
- break;
20
- case "Smart Text":
21
- $fieldStore.value = "";
22
- break;
23
- default:
24
- break;
25
- }
26
- }
27
- </script>
28
-
29
- <div class="w-full flex items-start space-x-2">
30
- <Popover.Root>
31
- <Popover.Trigger let:builder asChild>
32
- <Button builders={[builder]} class="w-5 h-5 p-0" variant="outline">
33
- <i class="fa fa-chevron-down" />
34
- </Button>
35
- </Popover.Trigger>
36
- <Popover.Content>
37
- <RadioGroup.Root value={selected_option} onValueChange={select_option}>
38
- {#each options as option}
39
- <div class="flex items-center space-x-2">
40
- <RadioGroup.Item value={option} id={option} />
41
- <Label for={option}>{option}</Label>
42
- </div>
43
- {/each}
44
- </RadioGroup.Root>
45
- </Popover.Content>
46
- </Popover.Root>
47
- {#if selected_option === "Smart Text"}
48
- <div class="w-full">
49
- <SmartTextField {fieldStore} />
50
- </div>
51
- {:else}
52
- <div class="w-full">
53
- <CheckboxField {fieldStore} />
54
- </div>
55
- {/if}
56
- </div>
@@ -1,42 +0,0 @@
1
- <script context="module">export const checkbox_field_param_spec = {
2
- spec: {
3
- fields: {
4
- checkedvalue: {
5
- fieldtype: "jsoneditor",
6
- initvalue: { has_default: true, default: true }
7
- },
8
- uncheckedvalue: {
9
- fieldtype: "jsoneditor",
10
- initvalue: { has_default: true, default: false }
11
- }
12
- }
13
- }
14
- };
15
- </script>
16
-
17
- <script>import { Checkbox } from "@stubber/ui/checkbox";
18
- import { Label } from "@stubber/ui/label";
19
- import { isEqual } from "lodash-es";
20
- import FieldMessage from "../FieldMessage.svelte";
21
- import { set_value_details } from "../utils";
22
- import FieldExprToggle from "../FieldExprToggle.svelte";
23
- export let fieldStore;
24
- set_value_details($fieldStore, "label", $fieldStore.label);
25
- $: checked = isEqual($fieldStore.value, $fieldStore.params?.checkedvalue || true);
26
- const on_change = (new_value) => {
27
- const checked_value = $fieldStore.params?.checkedvalue ?? true;
28
- const unchecked_value = $fieldStore.params?.uncheckedvalue ?? false;
29
- if (new_value === true) {
30
- $fieldStore.value = checked_value;
31
- } else {
32
- $fieldStore.value = unchecked_value;
33
- }
34
- };
35
- </script>
36
-
37
- <div class="flex w-full items-center gap-x-2">
38
- <Checkbox {checked} onCheckedChange={on_change} />
39
- <Label>{$fieldStore.label}</Label>
40
- <FieldExprToggle {fieldStore} />
41
- </div>
42
- <FieldMessage {fieldStore} />
@@ -1,19 +0,0 @@
1
- <script context="module"></script>
2
-
3
- <script>import { isString } from "lodash-es";
4
- import FieldLabel from "../FieldLabel.svelte";
5
- import FieldMessage from "../FieldMessage.svelte";
6
- export let fieldStore;
7
- let value;
8
- $: {
9
- const new_value = $fieldStore.value;
10
- const is_string = isString(new_value);
11
- value = is_string ? new_value : JSON.stringify(new_value, null, 2);
12
- }
13
- </script>
14
-
15
- <FieldLabel {fieldStore} />
16
- <div class="relative mt-2 rounded-md bg-surface-100 p-2">
17
- <pre class="rounded-md">{value ?? ""}</pre>
18
- </div>
19
- <FieldMessage {fieldStore} />
@@ -1,31 +0,0 @@
1
- <script context="module"></script>
2
-
3
- <script>import { Input } from "@stubber/ui/input";
4
- import FieldLabel from "../FieldLabel.svelte";
5
- import FieldMessage from "../FieldMessage.svelte";
6
- export let fieldStore;
7
- </script>
8
-
9
- <FieldLabel {fieldStore} />
10
- <Input
11
- id={$fieldStore.id}
12
- bind:value={$fieldStore.value}
13
- type="date"
14
- aria-invalid={$fieldStore.validation_result?.type == "error" ? true : undefined}
15
- class="w-full date-input {!$fieldStore.value ? 'text-muted-foreground' : ''}"
16
- aria-describedby="message-{$fieldStore.id}"
17
- />
18
- <FieldMessage {fieldStore} />
19
-
20
- <style>
21
- :global(input[type="date"].date-input) {
22
- position: relative;
23
- padding-right: 2rem;
24
- }
25
-
26
- :global(input[type="date"].date-input::-webkit-calendar-picker-indicator) {
27
- position: absolute;
28
- right: 0.5rem;
29
- cursor: pointer;
30
- }
31
- </style>
@@ -1,31 +0,0 @@
1
- <script context="module"></script>
2
-
3
- <script>import { Input } from "@stubber/ui/input";
4
- import FieldLabel from "../FieldLabel.svelte";
5
- import FieldMessage from "../FieldMessage.svelte";
6
- export let fieldStore;
7
- </script>
8
-
9
- <FieldLabel {fieldStore} />
10
- <Input
11
- id={$fieldStore.id}
12
- bind:value={$fieldStore.value}
13
- type="datetime-local"
14
- aria-invalid={$fieldStore.validation_result?.type == "error" ? true : undefined}
15
- class="w-full date-input {!$fieldStore.value ? 'text-muted-foreground' : ''}"
16
- aria-describedby="message-{$fieldStore.id}"
17
- />
18
- <FieldMessage {fieldStore} />
19
-
20
- <style>
21
- :global(input[type="datetime-local"].date-input) {
22
- position: relative;
23
- padding-right: 2rem;
24
- }
25
-
26
- :global(input[type="datetime-local"].date-input::-webkit-calendar-picker-indicator) {
27
- position: absolute;
28
- right: 0.5rem;
29
- cursor: pointer;
30
- }
31
- </style>