@sentropic/design-system-vue 0.32.0 → 0.33.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.
@@ -6,13 +6,18 @@ export type ComboboxOption = {
6
6
  export type ComboboxSize = "sm" | "md" | "lg";
7
7
  export type ComboboxProps = {
8
8
  label?: unknown;
9
+ helperText?: string;
10
+ errorText?: string;
11
+ invalid?: boolean;
9
12
  options: ComboboxOption[];
10
13
  value?: string;
11
14
  size?: ComboboxSize;
12
15
  placeholder?: string;
16
+ disabled?: boolean;
13
17
  open?: boolean;
14
18
  allowCustomValue?: boolean;
15
19
  noResultsLabel?: unknown;
20
+ listLabel?: string;
16
21
  class?: string;
17
22
  };
18
23
  export declare const Combobox: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
@@ -20,6 +25,18 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
20
25
  type: () => unknown;
21
26
  default: undefined;
22
27
  };
28
+ helperText: {
29
+ type: StringConstructor;
30
+ default: undefined;
31
+ };
32
+ errorText: {
33
+ type: StringConstructor;
34
+ default: undefined;
35
+ };
36
+ invalid: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
23
40
  options: {
24
41
  type: () => ComboboxOption[];
25
42
  required: true;
@@ -36,6 +53,10 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
36
53
  type: StringConstructor;
37
54
  default: string;
38
55
  };
56
+ disabled: {
57
+ type: BooleanConstructor;
58
+ default: boolean;
59
+ };
39
60
  open: {
40
61
  type: BooleanConstructor;
41
62
  default: undefined;
@@ -48,6 +69,10 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
48
69
  type: () => unknown;
49
70
  default: string;
50
71
  };
72
+ listLabel: {
73
+ type: StringConstructor;
74
+ default: undefined;
75
+ };
51
76
  class: {
52
77
  type: StringConstructor;
53
78
  default: undefined;
@@ -59,6 +84,18 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
59
84
  type: () => unknown;
60
85
  default: undefined;
61
86
  };
87
+ helperText: {
88
+ type: StringConstructor;
89
+ default: undefined;
90
+ };
91
+ errorText: {
92
+ type: StringConstructor;
93
+ default: undefined;
94
+ };
95
+ invalid: {
96
+ type: BooleanConstructor;
97
+ default: boolean;
98
+ };
62
99
  options: {
63
100
  type: () => ComboboxOption[];
64
101
  required: true;
@@ -75,6 +112,10 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
75
112
  type: StringConstructor;
76
113
  default: string;
77
114
  };
115
+ disabled: {
116
+ type: BooleanConstructor;
117
+ default: boolean;
118
+ };
78
119
  open: {
79
120
  type: BooleanConstructor;
80
121
  default: undefined;
@@ -87,6 +128,10 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
87
128
  type: () => unknown;
88
129
  default: string;
89
130
  };
131
+ listLabel: {
132
+ type: StringConstructor;
133
+ default: undefined;
134
+ };
90
135
  class: {
91
136
  type: StringConstructor;
92
137
  default: undefined;
@@ -100,10 +145,15 @@ export declare const Combobox: import("vue").DefineComponent<import("vue").Extra
100
145
  open: boolean;
101
146
  class: string;
102
147
  label: undefined;
148
+ invalid: boolean;
149
+ disabled: boolean;
103
150
  size: ComboboxSize;
104
151
  value: string;
105
152
  placeholder: string;
153
+ helperText: string;
154
+ errorText: string;
106
155
  allowCustomValue: boolean;
107
156
  noResultsLabel: string;
157
+ listLabel: string;
108
158
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
109
159
  //# sourceMappingURL=Combobox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../src/Combobox.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF,eAAO,MAAM,QAAQ;;cAG6B,MAAM,OAAO;;;;cACjC,MAAM,cAAc,EAAE;;;;;;;;cAExB,MAAM,YAAY;;;;;;;;;;;;;;;;cAIa,MAAM,OAAO;;;;;;;;;;;cAPtB,MAAM,OAAO;;;;cACjC,MAAM,cAAc,EAAE;;;;;;;;cAExB,MAAM,YAAY;;;;;;;;;;;;;;;;cAIa,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;4EAmMtE,CAAC"}
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../src/Combobox.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF,eAAO,MAAM,QAAQ;;cAG6B,MAAM,OAAO;;;;;;;;;;;;;;;;cAIjC,MAAM,cAAc,EAAE;;;;;;;;cAExB,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;cAKa,MAAM,OAAO;;;;;;;;;;;;;;;cAXtB,MAAM,OAAO;;;;;;;;;;;;;;;;cAIjC,MAAM,cAAc,EAAE;;;;;;;;cAExB,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;cAKa,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA+NtE,CAAC"}
package/dist/Combobox.js CHANGED
@@ -14,13 +14,18 @@ export const Combobox = defineComponent({
14
14
  name: "Combobox",
15
15
  props: {
16
16
  label: { type: [String, Object], default: undefined },
17
+ helperText: { type: String, default: undefined },
18
+ errorText: { type: String, default: undefined },
19
+ invalid: { type: Boolean, default: false },
17
20
  options: { type: Array, required: true },
18
21
  value: { type: String, default: undefined },
19
22
  size: { type: String, default: "md" },
20
23
  placeholder: { type: String, default: "Select or type" },
24
+ disabled: { type: Boolean, default: false },
21
25
  open: { type: Boolean, default: undefined },
22
26
  allowCustomValue: { type: Boolean, default: true },
23
27
  noResultsLabel: { type: [String, Object], default: "No results" },
28
+ listLabel: { type: String, default: undefined },
24
29
  class: { type: String, default: undefined },
25
30
  },
26
31
  emits: ["change", "select", "update:open", "update:modelValue"],
@@ -61,16 +66,14 @@ export const Combobox = defineComponent({
61
66
  const open = isOpen();
62
67
  const selected = props.options.find((opt) => opt.value === props.value);
63
68
  const displayValue = selected ? String(selected.label) : inputValue.value;
69
+ const isInvalid = props.invalid || Boolean(props.errorText);
64
70
  const activeDescendant = activeIndex.value >= 0 && filtered.value[activeIndex.value]
65
71
  ? `${listId.value}-${filtered.value[activeIndex.value].value}`
66
72
  : undefined;
67
- return h("div", {
68
- ...attrs,
69
- class: classNames("st-combobox", `st-combobox--${props.size}`, props.class),
70
- }, [
71
- props.label
72
- ? h("label", { class: "st-field__label", for: inputId.value }, props.label)
73
- : null,
73
+ // Structure mirrors the Svelte reference: a `st-field` grid wrapping a
74
+ // `st-field__control` label that stacks the field label above the bordered
75
+ // `st-combobox` box (input + clear/toggle). List + help/error are siblings.
76
+ const controlBox = h("span", { class: classNames("st-combobox", `st-combobox--${props.size}`) }, [
74
77
  h("input", {
75
78
  id: inputId.value,
76
79
  class: "st-combobox__control",
@@ -78,10 +81,15 @@ export const Combobox = defineComponent({
78
81
  "aria-expanded": open,
79
82
  "aria-autocomplete": "list",
80
83
  "aria-controls": listId.value,
84
+ "aria-invalid": isInvalid ? "true" : undefined,
81
85
  "aria-activedescendant": activeDescendant,
82
86
  placeholder: props.placeholder,
87
+ disabled: props.disabled,
83
88
  value: displayValue,
84
- onFocus: () => setOpen(true),
89
+ onFocus: () => {
90
+ if (!props.disabled)
91
+ setOpen(true);
92
+ },
85
93
  onInput: (event) => {
86
94
  const val = event.target.value;
87
95
  inputValue.value = val;
@@ -115,11 +123,12 @@ export const Combobox = defineComponent({
115
123
  }
116
124
  },
117
125
  }),
118
- selected || inputValue.value
126
+ displayValue
119
127
  ? h("button", {
120
128
  type: "button",
121
129
  class: "st-combobox__clear",
122
- "aria-label": "Clear",
130
+ "aria-label": "Clear selection",
131
+ disabled: props.disabled,
123
132
  onClick: () => {
124
133
  inputValue.value = "";
125
134
  activeIndex.value = -1;
@@ -133,6 +142,7 @@ export const Combobox = defineComponent({
133
142
  class: "st-combobox__toggle",
134
143
  "aria-label": "Toggle options",
135
144
  "aria-expanded": open,
145
+ disabled: props.disabled,
136
146
  onClick: () => setOpen(!open),
137
147
  }, [
138
148
  h(ChevronDown, {
@@ -142,37 +152,54 @@ export const Combobox = defineComponent({
142
152
  "aria-hidden": "true",
143
153
  }),
144
154
  ]),
145
- selected
146
- ? h("span", { class: "st-combobox__value st-visually-hidden" }, String(selected.label))
147
- : null,
148
- open
149
- ? h("ul", {
150
- id: listId.value,
151
- class: "st-combobox__list",
152
- role: "listbox",
153
- "aria-label": String(props.label) || "Options",
154
- }, filtered.value.length
155
- ? filtered.value.map((option, index) => h("li", {
156
- key: option.value,
157
- id: `${listId.value}-${option.value}`,
158
- class: classNames("st-combobox__option", index === activeIndex.value && "st-combobox__option--active", option.value === props.value && "st-combobox__option--selected"),
155
+ ]);
156
+ const list = open
157
+ ? h("div", {
158
+ id: listId.value,
159
+ class: "st-combobox__list",
160
+ role: "listbox",
161
+ "aria-label": props.listLabel ?? (props.label ? String(props.label) : "Options"),
162
+ }, filtered.value.length
163
+ ? filtered.value.map((option, index) => h("button", {
164
+ key: option.value,
165
+ id: `${listId.value}-${option.value}`,
166
+ type: "button",
167
+ class: classNames("st-combobox__option", index === activeIndex.value && "st-combobox__option--active"),
168
+ role: "option",
169
+ "aria-selected": displayValue === String(option.label) ? "true" : "false",
170
+ "aria-disabled": option.disabled ? "true" : undefined,
171
+ disabled: option.disabled,
172
+ onMousedown: (event) => {
173
+ event.preventDefault();
174
+ selectOption(option);
175
+ },
176
+ }, String(option.label)))
177
+ : [
178
+ h("div", {
179
+ class: "st-combobox__empty",
159
180
  role: "option",
160
- "aria-selected": option.value === props.value,
161
- "aria-disabled": option.disabled ? "true" : undefined,
162
- onMousedown: (event) => {
163
- event.preventDefault();
164
- selectOption(option);
165
- },
166
- }, String(option.label)))
167
- : [
168
- h("li", {
169
- class: "st-combobox__empty",
170
- role: "option",
171
- "aria-disabled": "true",
172
- "aria-selected": "false",
173
- }, String(props.noResultsLabel)),
174
- ])
175
- : null,
181
+ "aria-disabled": "true",
182
+ "aria-selected": "false",
183
+ }, String(props.noResultsLabel)),
184
+ ])
185
+ : null;
186
+ const feedback = props.errorText
187
+ ? h("span", { class: "st-field__error" }, props.errorText)
188
+ : props.helperText
189
+ ? h("span", { class: "st-field__help" }, props.helperText)
190
+ : null;
191
+ return h("div", {
192
+ ...attrs,
193
+ class: classNames("st-field", props.class),
194
+ }, [
195
+ h("label", { class: "st-field__control", for: inputId.value }, [
196
+ props.label
197
+ ? h("span", { class: "st-field__label" }, props.label)
198
+ : null,
199
+ controlBox,
200
+ ]),
201
+ list,
202
+ feedback,
176
203
  ]);
177
204
  };
178
205
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../src/Combobox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../src/Combobox.ts"],"names":[],"mappings":"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"}
@@ -17,23 +17,63 @@ export type FileUploadItem = {
17
17
  };
18
18
  export type FileUploaderProps = {
19
19
  label?: string;
20
- items?: FileUploadItem[];
20
+ helperText?: string;
21
+ errorText?: string;
22
+ invalid?: boolean;
23
+ accept?: string;
24
+ multiple?: boolean;
21
25
  disabled?: boolean;
26
+ items?: FileUploadItem[];
27
+ triggerLabel?: string;
28
+ dropzoneLabel?: string;
29
+ removeLabel?: (filename: string) => string;
22
30
  class?: string;
23
31
  };
24
32
  export declare const FileUploader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
25
33
  label: {
26
34
  type: StringConstructor;
27
- default: string;
35
+ default: undefined;
28
36
  };
29
- items: {
30
- type: () => FileUploadItem[];
31
- default: () => never[];
37
+ helperText: {
38
+ type: StringConstructor;
39
+ default: undefined;
40
+ };
41
+ errorText: {
42
+ type: StringConstructor;
43
+ default: undefined;
44
+ };
45
+ invalid: {
46
+ type: BooleanConstructor;
47
+ default: boolean;
48
+ };
49
+ accept: {
50
+ type: StringConstructor;
51
+ default: undefined;
52
+ };
53
+ multiple: {
54
+ type: BooleanConstructor;
55
+ default: boolean;
32
56
  };
33
57
  disabled: {
34
58
  type: BooleanConstructor;
35
59
  default: boolean;
36
60
  };
61
+ items: {
62
+ type: () => FileUploadItem[];
63
+ default: () => never[];
64
+ };
65
+ triggerLabel: {
66
+ type: StringConstructor;
67
+ default: undefined;
68
+ };
69
+ dropzoneLabel: {
70
+ type: StringConstructor;
71
+ default: string;
72
+ };
73
+ removeLabel: {
74
+ type: () => (filename: string) => string;
75
+ default: (filename: string) => string;
76
+ };
37
77
  class: {
38
78
  type: StringConstructor;
39
79
  default: undefined;
@@ -43,24 +83,64 @@ export declare const FileUploader: import("vue").DefineComponent<import("vue").E
43
83
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
44
84
  label: {
45
85
  type: StringConstructor;
46
- default: string;
86
+ default: undefined;
47
87
  };
48
- items: {
49
- type: () => FileUploadItem[];
50
- default: () => never[];
88
+ helperText: {
89
+ type: StringConstructor;
90
+ default: undefined;
91
+ };
92
+ errorText: {
93
+ type: StringConstructor;
94
+ default: undefined;
95
+ };
96
+ invalid: {
97
+ type: BooleanConstructor;
98
+ default: boolean;
99
+ };
100
+ accept: {
101
+ type: StringConstructor;
102
+ default: undefined;
103
+ };
104
+ multiple: {
105
+ type: BooleanConstructor;
106
+ default: boolean;
51
107
  };
52
108
  disabled: {
53
109
  type: BooleanConstructor;
54
110
  default: boolean;
55
111
  };
112
+ items: {
113
+ type: () => FileUploadItem[];
114
+ default: () => never[];
115
+ };
116
+ triggerLabel: {
117
+ type: StringConstructor;
118
+ default: undefined;
119
+ };
120
+ dropzoneLabel: {
121
+ type: StringConstructor;
122
+ default: string;
123
+ };
124
+ removeLabel: {
125
+ type: () => (filename: string) => string;
126
+ default: (filename: string) => string;
127
+ };
56
128
  class: {
57
129
  type: StringConstructor;
58
130
  default: undefined;
59
131
  };
60
132
  }>> & Readonly<{}>, {
61
133
  items: FileUploadItem[];
134
+ multiple: boolean;
62
135
  class: string;
63
136
  label: string;
137
+ invalid: boolean;
64
138
  disabled: boolean;
139
+ helperText: string;
140
+ errorText: string;
141
+ accept: string;
142
+ triggerLabel: string;
143
+ dropzoneLabel: string;
144
+ removeLabel: (filename: string) => string;
65
145
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
66
146
  //# sourceMappingURL=FileUploader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../src/FileUploader.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;cAIG,MAAM,cAAc,EAAE;;;;;;;;;;;;;;;;;;;cAAtB,MAAM,cAAc,EAAE;;;;;;;;;;;;;;;;4EA6FhD,CAAC"}
1
+ {"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../src/FileUploader.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAUG,MAAM,cAAc,EAAE;;;;;;;;;;;;cAIf,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;4BAC3C,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cALJ,MAAM,cAAc,EAAE;;;;;;;;;;;;cAIf,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;4BAC3C,MAAM;;;;;;;;;;;;;;;;;;4BADoB,MAAM,KAAK,MAAM;4EA2HnE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, h } from "vue";
2
- import { CircleAlert, CircleCheck, File as FileIcon, LoaderCircle, Upload } from "lucide-vue-next";
2
+ import { CircleAlert, CircleCheck, File as FileIcon, LoaderCircle, Upload, X } from "lucide-vue-next";
3
3
  import { classNames } from "./classNames.js";
4
4
  function formatFileSize(bytes) {
5
5
  if (typeof bytes !== "number" || !Number.isFinite(bytes) || bytes < 0)
@@ -21,56 +21,95 @@ function fileItemSize(item) {
21
21
  export const FileUploader = defineComponent({
22
22
  name: "FileUploader",
23
23
  props: {
24
- label: { type: String, default: "Upload" },
25
- items: { type: Array, default: () => [] },
24
+ label: { type: String, default: undefined },
25
+ helperText: { type: String, default: undefined },
26
+ errorText: { type: String, default: undefined },
27
+ invalid: { type: Boolean, default: false },
28
+ accept: { type: String, default: undefined },
29
+ multiple: { type: Boolean, default: false },
26
30
  disabled: { type: Boolean, default: false },
31
+ items: { type: Array, default: () => [] },
32
+ triggerLabel: { type: String, default: undefined },
33
+ dropzoneLabel: { type: String, default: "Drag and drop files here" },
34
+ removeLabel: {
35
+ type: Function,
36
+ default: (filename) => `Remove ${filename}`,
37
+ },
27
38
  class: { type: String, default: undefined },
28
39
  },
29
40
  setup(props, { attrs }) {
30
- return () => h("div", {
31
- ...attrs,
32
- class: classNames("st-fileUploader-field", props.class),
33
- }, [
34
- h("div", {
35
- class: classNames("st-fileUploader__dropzone", props.disabled && "st-fileUploader__dropzone--disabled"),
41
+ return () => {
42
+ const isInvalid = props.invalid || Boolean(props.errorText);
43
+ const effectiveTriggerLabel = props.triggerLabel ?? (props.multiple ? "Choose files" : "Choose file");
44
+ return h("div", {
45
+ ...attrs,
46
+ class: classNames("st-field", "st-fileUploader-field", props.class),
36
47
  }, [
37
- h("span", { class: "st-fileUploader__affordance", "aria-hidden": "true" }, [h(Upload, { size: 18, strokeWidth: 2, "aria-hidden": "true" })]),
38
- h("span", { class: "st-fileUploader__trigger" }, props.label),
39
- h("input", {
40
- class: "st-fileUploader__input",
41
- type: "file",
42
- disabled: props.disabled,
43
- "aria-label": props.label,
44
- }),
45
- ]),
46
- h("ul", { class: "st-fileUploader__list" }, props.items.map((item, index) => {
47
- const name = fileItemName(item);
48
- const sizeLabel = formatFileSize(fileItemSize(item));
49
- return h("li", {
50
- key: item.id ?? name ?? index,
51
- class: classNames("st-fileUploader__item", item.status && `st-fileUploader__item--${item.status}`),
48
+ props.label
49
+ ? h("label", { class: "st-field__label" }, props.label)
50
+ : null,
51
+ h("div", {
52
+ class: classNames("st-fileUploader__dropzone", isInvalid && "st-fileUploader__dropzone--invalid", props.disabled && "st-fileUploader__dropzone--disabled"),
53
+ role: "presentation",
52
54
  }, [
53
- h("span", { class: "st-fileUploader__itemIcon", "aria-hidden": "true" }, [
54
- item.status === "uploading"
55
- ? h("span", { class: "st-fileUploader__spinner" }, [
56
- h(LoaderCircle, { size: 16, strokeWidth: 2, "aria-hidden": "true" }),
57
- ])
58
- : item.status === "complete"
59
- ? h(CircleCheck, { size: 16, strokeWidth: 2, "aria-hidden": "true" })
60
- : item.status === "error"
61
- ? h(CircleAlert, { size: 16, strokeWidth: 2, "aria-hidden": "true" })
62
- : h(FileIcon, { size: 16, strokeWidth: 2, "aria-hidden": "true" }),
55
+ h("input", {
56
+ class: "st-fileUploader__input",
57
+ type: "file",
58
+ accept: props.accept,
59
+ multiple: props.multiple,
60
+ disabled: props.disabled,
61
+ "aria-invalid": isInvalid ? "true" : undefined,
62
+ }),
63
+ h("div", { class: "st-fileUploader__content" }, [
64
+ h("span", { class: "st-fileUploader__affordance", "aria-hidden": "true" }, [h(Upload, { size: 18, strokeWidth: 2, "aria-hidden": "true" })]),
65
+ h("button", { type: "button", class: "st-fileUploader__trigger", disabled: props.disabled }, effectiveTriggerLabel),
66
+ h("span", { class: "st-fileUploader__hint" }, props.dropzoneLabel),
63
67
  ]),
64
- h("span", { class: "st-fileUploader__itemName st-fileUploader__name" }, name),
65
- sizeLabel
66
- ? h("span", { class: "st-fileUploader__itemSize" }, sizeLabel)
67
- : null,
68
- item.error
69
- ? h("span", { class: "st-fileUploader__itemError" }, item.error)
68
+ ]),
69
+ props.errorText
70
+ ? h("span", { class: "st-field__error" }, props.errorText)
71
+ : props.helperText
72
+ ? h("span", { class: "st-field__help" }, props.helperText)
70
73
  : null,
71
- ]);
72
- })),
73
- ]);
74
+ props.items.length > 0
75
+ ? h("ul", { class: "st-fileUploader__list" }, props.items.map((item, index) => {
76
+ const name = fileItemName(item);
77
+ const sizeLabel = formatFileSize(fileItemSize(item));
78
+ return h("li", {
79
+ key: item.id ?? name ?? index,
80
+ class: classNames("st-fileUploader__item", item.status && `st-fileUploader__item--${item.status}`),
81
+ }, [
82
+ h("span", { class: "st-fileUploader__itemIcon", "aria-hidden": "true" }, [
83
+ item.status === "uploading"
84
+ ? h("span", { class: "st-fileUploader__spinner" }, [
85
+ h(LoaderCircle, { size: 16, strokeWidth: 2, "aria-hidden": "true" }),
86
+ ])
87
+ : item.status === "complete"
88
+ ? h(CircleCheck, { size: 16, strokeWidth: 2, "aria-hidden": "true" })
89
+ : item.status === "error"
90
+ ? h(CircleAlert, { size: 16, strokeWidth: 2, "aria-hidden": "true" })
91
+ : h(FileIcon, { size: 16, strokeWidth: 2, "aria-hidden": "true" }),
92
+ ]),
93
+ h("span", { class: "st-fileUploader__itemMeta" }, [
94
+ h("span", { class: "st-fileUploader__itemName st-fileUploader__name" }, name),
95
+ sizeLabel
96
+ ? h("span", { class: "st-fileUploader__itemSize" }, sizeLabel)
97
+ : null,
98
+ item.status === "error" && item.error
99
+ ? h("span", { class: "st-fileUploader__itemError" }, item.error)
100
+ : null,
101
+ ]),
102
+ h("button", {
103
+ type: "button",
104
+ class: "st-fileUploader__remove",
105
+ "aria-label": props.removeLabel(name ?? ""),
106
+ disabled: props.disabled,
107
+ }, [h(X, { size: 16, strokeWidth: 2, "aria-hidden": "true" })]),
108
+ ]);
109
+ }))
110
+ : null,
111
+ ]);
112
+ };
74
113
  },
75
114
  });
76
115
  //# sourceMappingURL=FileUploader.js.map