@functionalcms/svelte-components 5.3.6 → 5.4.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.
@@ -10,7 +10,10 @@
10
10
  type TimePickerField,
11
11
  SubmitResult,
12
12
  type ButtonConfig,
13
- type HiddenField
13
+ type HiddenField,
14
+
15
+ DatePickerField
16
+
14
17
  } from './form.js';
15
18
  import {
16
19
  Button,
@@ -23,7 +26,8 @@
23
26
  Input,
24
27
  FloatingLabelInput,
25
28
  Timepicker,
26
- PhoneInput
29
+ PhoneInput,
30
+ Datepicker
27
31
  } from 'flowbite-svelte';
28
32
  import { fade } from 'svelte/transition';
29
33
 
@@ -95,6 +99,7 @@
95
99
  type={field.type}
96
100
  variant={field.floatVariant}
97
101
  placeholder={field.placeholder}
102
+ bind:value={field.value}
98
103
  >
99
104
  {field.label}
100
105
  </FloatingLabelInput>
@@ -110,6 +115,7 @@
110
115
  size={field.size}
111
116
  type={field.type}
112
117
  placeholder={field.placeholder}
118
+ bind:value={field.value}
113
119
  />
114
120
  {/if}
115
121
  {/snippet}
@@ -123,10 +129,10 @@
123
129
  readonly={field.readonly}
124
130
  disabled={field.disabled}
125
131
  class={field.class}
126
- label={field.label}
127
132
  rows={field.rows}
128
133
  cols={field.cols}
129
134
  placeholder={field.placeholder}
135
+ bind:value={field.value}
130
136
  />
131
137
  {/snippet}
132
138
 
@@ -197,8 +203,14 @@
197
203
  <Timepicker id={field.id} required={field.required} disabled={field.disabled} />
198
204
  {/snippet}
199
205
 
206
+ {#snippet renderDatePicker(field: DatePickerField)}
207
+ <Label for={field.id} class={field.labelClass}>{field.label}</Label>
208
+ <Datepicker required={field.required} bind:value={field.value} />
209
+ <input type="hidden" name={field.id} bind:value={field.value} />
210
+ {/snippet}
211
+
200
212
  {#snippet renderHidden(field: HiddenField)}
201
- <input type="hidden" id={field.id} name={field.id} value={field.value} />
213
+ <input type="hidden" id={field.id} name={field.id} bind:value={field.value} />
202
214
  {/snippet}
203
215
 
204
216
  {#if showMessage}
@@ -225,6 +237,8 @@
225
237
  {@render renderTimePicker(field)}
226
238
  {:else if field.typeOfField === 'hidden'}
227
239
  {@render renderHidden(field)}
240
+ {:else if field.typeOfField === 'date'}
241
+ {@render renderDatePicker(field)}
228
242
  {/if}
229
243
  {/each}
230
244
 
@@ -19,7 +19,7 @@ export type FieldDef = {
19
19
  label: string;
20
20
  class?: string;
21
21
  labelClass?: string;
22
- typeOfField: "input" | "textarea" | "select" | "collection" | "phoneInput" | "file" | "timepicker" | "hidden";
22
+ typeOfField: "input" | "textarea" | "select" | "collection" | "phoneInput" | "file" | "timepicker" | "date" | "hidden";
23
23
  disabled?: boolean;
24
24
  readonly?: boolean;
25
25
  required?: boolean;
@@ -46,7 +46,15 @@ export type FilePickerField = FieldDef & {
46
46
  typeOfField: "file";
47
47
  size: "md" | "sm" | "lg";
48
48
  multiple?: boolean;
49
+ filter?: string;
49
50
  };
51
+ export type DatePickerField = FieldDef & {
52
+ typeOfField: "date";
53
+ inline?: boolean;
54
+ rangeFrom?: Date | undefined;
55
+ rangeTo?: Date | undefined;
56
+ };
57
+ export type DropzoneField = FieldDef & {};
50
58
  export type CollectionField = FieldDef & {
51
59
  items: Array<{
52
60
  name: string;
@@ -74,7 +82,7 @@ export type PhoneInputField = FieldDef & {
74
82
  size: "md" | "sm" | "lg";
75
83
  placeholder?: string;
76
84
  };
77
- export type Field = InputField | TextareaField | CollectionField | SelectField | FilePickerField | TimePickerField | PhoneInputField | HiddenField;
85
+ export type Field = InputField | TextareaField | CollectionField | SelectField | FilePickerField | DatePickerField | DropzoneField | TimePickerField | PhoneInputField | HiddenField;
78
86
  export declare enum SubmitResult {
79
87
  Success = "success",
80
88
  Error = "error"
@@ -87,6 +95,7 @@ export type HiddenField = {
87
95
  export declare function createInputField(id: string, label: string, type?: InputType, value?: any, options?: Partial<Omit<InputField, "id" | "label" | "typeOfField" | "type">>): InputField;
88
96
  export declare function createTextareaField(id: string, label: string, value?: any, rows?: number, cols?: number, options?: Partial<Omit<TextareaField, "id" | "label" | "typeOfField" | "rows" | "cols">>): TextareaField;
89
97
  export declare function createFilePickerField(id: string, label: string, value?: any, options?: Partial<Omit<FilePickerField, "id" | "label" | "typeOfField">>): FilePickerField;
98
+ export declare function createDatePickerField(id: string, label: string, value?: any, options?: Partial<Omit<DatePickerField, "id" | "label" | "typeOfField">>): DatePickerField;
90
99
  export declare function createCollectionField(id: string, label: string, items: Array<{
91
100
  name: string;
92
101
  checked: boolean;
@@ -1,3 +1,4 @@
1
+ import { Dropzone } from "flowbite-svelte";
1
2
  export var InputType;
2
3
  (function (InputType) {
3
4
  InputType["Text"] = "text";
@@ -54,6 +55,15 @@ export function createFilePickerField(id, label, value = null, options = {}) {
54
55
  ...options
55
56
  };
56
57
  }
58
+ export function createDatePickerField(id, label, value = null, options = {}) {
59
+ return {
60
+ id,
61
+ label,
62
+ value,
63
+ typeOfField: "date",
64
+ ...options
65
+ };
66
+ }
57
67
  export function createCollectionField(id, label, items, groupName, type = "checkbox", value = [], options = {}) {
58
68
  return {
59
69
  id,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@functionalcms/svelte-components",
3
- "version": "5.3.6",
3
+ "version": "5.4.0",
4
4
  "license": "MIT",
5
5
  "watch": {
6
6
  "build": {