@xleddyl/443-components-vue 0.2.3 → 0.3.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 (205) hide show
  1. package/README.md +79 -19
  2. package/dist/chart/BarChart.vue.d.ts +2 -2
  3. package/dist/chart/ChartLegend.vue.d.ts +4 -4
  4. package/dist/chart/ChartPanel.vue.d.ts +2 -2
  5. package/dist/chart/ChartSummary.vue.d.ts +2 -2
  6. package/dist/chart/DoughnutChart.vue.d.ts +2 -2
  7. package/dist/chart/LineChart.vue.d.ts +2 -2
  8. package/dist/components/core/Button.vue.d.ts +2 -2
  9. package/dist/components/core/FieldMessage.vue +28 -0
  10. package/dist/components/core/FieldMessage.vue.d.ts +409 -0
  11. package/dist/components/core/Form.vue +22 -3
  12. package/dist/components/core/Form.vue.d.ts +18 -4
  13. package/dist/components/core/FormField.vue +37 -15
  14. package/dist/components/core/FormField.vue.d.ts +5 -4
  15. package/dist/components/core/Icon.vue.d.ts +2 -2
  16. package/dist/components/core/Input.vue.d.ts +4 -4
  17. package/dist/components/core/Kbd.vue.d.ts +2 -2
  18. package/dist/components/core/Root.vue.d.ts +6 -6
  19. package/dist/components/core/Spinner.vue +13 -1
  20. package/dist/components/core/Spinner.vue.d.ts +4 -2
  21. package/dist/components/core/Textarea.vue.d.ts +4 -4
  22. package/dist/components/core/VisuallyHidden.vue.d.ts +6 -6
  23. package/dist/components/core/index.d.ts +1 -0
  24. package/dist/components/core/index.mjs +1 -0
  25. package/dist/components/data/Avatar.vue.d.ts +2 -2
  26. package/dist/components/data/AvatarGroup.vue.d.ts +2 -2
  27. package/dist/components/data/Badge.vue.d.ts +2 -2
  28. package/dist/components/data/DescriptionList.vue.d.ts +2 -2
  29. package/dist/components/data/FilterPill.vue +35 -0
  30. package/dist/components/data/FilterPill.vue.d.ts +445 -0
  31. package/dist/components/data/FilterPills.vue +49 -21
  32. package/dist/components/data/FilterPills.vue.d.ts +22 -5
  33. package/dist/components/data/Pagination.vue.d.ts +4 -4
  34. package/dist/components/data/SelectionBar.vue +78 -0
  35. package/dist/components/data/SelectionBar.vue.d.ts +427 -0
  36. package/dist/components/data/Stat.vue.d.ts +8 -8
  37. package/dist/components/data/Tag.vue.d.ts +4 -4
  38. package/dist/components/data/Timeline.vue.d.ts +2 -2
  39. package/dist/components/data/Tree.vue +237 -18
  40. package/dist/components/data/Tree.vue.d.ts +37 -10
  41. package/dist/components/data/index.d.ts +3 -0
  42. package/dist/components/data/index.mjs +3 -0
  43. package/dist/components/data/types.d.ts +19 -0
  44. package/dist/components/feedback/Alert.vue.d.ts +18 -18
  45. package/dist/components/feedback/EmptyState.vue.d.ts +2 -2
  46. package/dist/components/feedback/LoadingOverlay.vue.d.ts +2 -2
  47. package/dist/components/feedback/Meter.vue.d.ts +2 -2
  48. package/dist/components/feedback/Progress.vue.d.ts +2 -2
  49. package/dist/components/feedback/ProgressRing.vue.d.ts +2 -2
  50. package/dist/components/feedback/Skeleton.vue.d.ts +3 -3
  51. package/dist/components/forms/Calendar.vue.d.ts +4 -4
  52. package/dist/components/forms/ColorInput.vue.d.ts +6 -6
  53. package/dist/components/forms/DateInput.vue.d.ts +14 -14
  54. package/dist/components/forms/DatePicker.vue.d.ts +6 -6
  55. package/dist/components/forms/FileInput.vue +80 -26
  56. package/dist/components/forms/FileInput.vue.d.ts +21 -11
  57. package/dist/components/forms/InputAddon.vue.d.ts +2 -2
  58. package/dist/components/forms/InputGroup.vue.d.ts +2 -2
  59. package/dist/components/forms/NumberInput.vue.d.ts +6 -6
  60. package/dist/components/forms/PasswordInput.vue.d.ts +16 -16
  61. package/dist/components/forms/PinInput.vue.d.ts +6 -6
  62. package/dist/components/forms/Radio.vue.d.ts +2 -2
  63. package/dist/components/forms/SegmentedControl.vue +32 -8
  64. package/dist/components/forms/SegmentedControl.vue.d.ts +15 -7
  65. package/dist/components/forms/Slider.vue.d.ts +6 -6
  66. package/dist/components/forms/Switch.vue.d.ts +6 -6
  67. package/dist/components/forms/TimeInput.vue.d.ts +16 -16
  68. package/dist/components/forms/types.d.ts +14 -0
  69. package/dist/components/layout/Accordion.vue +25 -5
  70. package/dist/components/layout/Accordion.vue.d.ts +8 -5
  71. package/dist/components/layout/AppShell.vue.d.ts +5 -5
  72. package/dist/components/layout/Breadcrumbs.vue +28 -20
  73. package/dist/components/layout/Breadcrumbs.vue.d.ts +18 -3
  74. package/dist/components/layout/Card.vue +22 -3
  75. package/dist/components/layout/Card.vue.d.ts +10 -4
  76. package/dist/components/layout/CopyButton.vue.d.ts +4 -4
  77. package/dist/components/layout/Grid.vue.d.ts +2 -2
  78. package/dist/components/layout/NavLink.vue.d.ts +8 -8
  79. package/dist/components/layout/PageHeader.vue +10 -1
  80. package/dist/components/layout/PageHeader.vue.d.ts +17 -9
  81. package/dist/components/layout/Separator.vue.d.ts +2 -2
  82. package/dist/components/layout/Sidebar.vue.d.ts +2 -2
  83. package/dist/components/layout/SidebarSection.vue.d.ts +2 -2
  84. package/dist/components/layout/Stack.vue.d.ts +6 -6
  85. package/dist/components/layout/Tabs.vue +27 -6
  86. package/dist/components/layout/Tabs.vue.d.ts +7 -4
  87. package/dist/components/layout/ThemeSwitch.vue.d.ts +2 -2
  88. package/dist/components/layout/Toolbar.vue.d.ts +2 -2
  89. package/dist/components/layout/types.d.ts +7 -1
  90. package/dist/components/overlays/CommandPalette.vue +25 -4
  91. package/dist/components/overlays/CommandPalette.vue.d.ts +23 -9
  92. package/dist/components/overlays/ConfirmDialog.vue.d.ts +8 -6
  93. package/dist/components/overlays/ConfirmHost.vue +5 -1
  94. package/dist/components/overlays/ConfirmHost.vue.d.ts +10 -8
  95. package/dist/components/overlays/ContextMenu.vue.d.ts +4 -4
  96. package/dist/components/overlays/Drawer.vue +4 -2
  97. package/dist/components/overlays/Drawer.vue.d.ts +8 -6
  98. package/dist/components/overlays/DropdownMenu.vue.d.ts +2 -2
  99. package/dist/components/overlays/HoverCard.vue +2 -1
  100. package/dist/components/overlays/HoverCard.vue.d.ts +6 -6
  101. package/dist/components/overlays/Modal.vue +5 -3
  102. package/dist/components/overlays/Modal.vue.d.ts +8 -6
  103. package/dist/components/overlays/Popover.vue +2 -1
  104. package/dist/components/overlays/Popover.vue.d.ts +6 -6
  105. package/dist/components/overlays/Toaster.vue.d.ts +4 -4
  106. package/dist/components/overlays/Tooltip.vue.d.ts +2 -2
  107. package/dist/components/overlays/types.d.ts +4 -1
  108. package/dist/components/templates/AccountMenu.vue.d.ts +6 -6
  109. package/dist/components/templates/AppearanceSettings.vue.d.ts +2 -2
  110. package/dist/components/templates/AuthLayout.vue.d.ts +2 -2
  111. package/dist/components/templates/Brand.vue +34 -5
  112. package/dist/components/templates/Brand.vue.d.ts +20 -15
  113. package/dist/components/templates/DashboardLayout.vue +40 -4
  114. package/dist/components/templates/DashboardLayout.vue.d.ts +34 -22
  115. package/dist/components/templates/DashboardPage.vue.d.ts +2 -2
  116. package/dist/components/templates/DetailPage.vue.d.ts +4 -4
  117. package/dist/components/templates/EmptyPage.vue.d.ts +2 -2
  118. package/dist/components/templates/ErrorPage.vue.d.ts +2 -2
  119. package/dist/components/templates/ListPage.vue +16 -10
  120. package/dist/components/templates/NotFoundPage.vue.d.ts +1 -1
  121. package/dist/components/templates/SaveBar.vue.d.ts +4 -4
  122. package/dist/components/templates/SettingsGroup.vue.d.ts +2 -2
  123. package/dist/components/templates/SettingsModal.vue +5 -2
  124. package/dist/components/templates/SettingsModal.vue.d.ts +13 -8
  125. package/dist/components/templates/SettingsPage.vue.d.ts +4 -4
  126. package/dist/components/templates/SettingsSection.vue.d.ts +12 -8
  127. package/dist/components/templates/types.d.ts +24 -1
  128. package/dist/composables/core.d.ts +1 -0
  129. package/dist/composables/core.mjs +1 -0
  130. package/dist/composables/useField.d.ts +2 -0
  131. package/dist/composables/useField.mjs +5 -2
  132. package/dist/composables/useFieldBoundary.d.ts +1 -0
  133. package/dist/composables/useFieldBoundary.mjs +5 -0
  134. package/dist/composables/useFileDrop.d.ts +7 -0
  135. package/dist/composables/useFileDrop.mjs +114 -7
  136. package/dist/composables/useForm.d.ts +32 -19
  137. package/dist/composables/useForm.mjs +212 -45
  138. package/dist/editor/RichTextEditor.vue +30 -3
  139. package/dist/editor/RichTextEditor.vue.d.ts +11 -6
  140. package/dist/editor/rich-text-editor.css +1 -1
  141. package/dist/editor/types.d.ts +3 -0
  142. package/dist/grid/GridToolbar.vue.d.ts +4 -4
  143. package/dist/grid/cells/BadgeCell.vue.d.ts +2 -2
  144. package/dist/grid/cells/BooleanCell.vue.d.ts +2 -2
  145. package/dist/grid/cells/DateCell.vue.d.ts +2 -2
  146. package/dist/grid/cells/ImageCell.vue.d.ts +2 -2
  147. package/dist/grid/cells/LinkCell.vue.d.ts +2 -2
  148. package/dist/internal/data/tree.d.ts +8 -0
  149. package/dist/internal/data/tree.mjs +41 -0
  150. package/dist/internal/forms/FormAlerts.vue +25 -0
  151. package/dist/internal/forms/FormAlerts.vue.d.ts +393 -0
  152. package/dist/internal/forms/files.d.ts +2 -0
  153. package/dist/internal/forms/files.mjs +8 -1
  154. package/dist/internal/forms/standard-schema.d.ts +17 -0
  155. package/dist/internal/forms/standard-schema.mjs +40 -0
  156. package/dist/internal/overlays/DialogFrame.vue +17 -7
  157. package/dist/internal/overlays/DialogFrame.vue.d.ts +9 -5
  158. package/dist/internal/overlays/FieldBoundary.d.ts +4 -0
  159. package/dist/internal/overlays/FieldBoundary.mjs +9 -0
  160. package/dist/internal/overlays/MenuList.vue +2 -0
  161. package/dist/internal/overlays/MenuList.vue.d.ts +5 -5
  162. package/dist/internal/overlays/OverlayView.vue +2 -0
  163. package/dist/internal/overlays/OverlayView.vue.d.ts +14 -12
  164. package/dist/internal/overlays/dialog.d.ts +4 -1
  165. package/dist/internal/overlays/dialog.mjs +39 -5
  166. package/dist/internal/overlays/stack.d.ts +2 -1
  167. package/dist/locale/en.mjs +17 -2
  168. package/dist/locale/it.mjs +17 -2
  169. package/dist/locale/types.d.ts +15 -0
  170. package/dist/nuxt/module.d.ts +1 -0
  171. package/dist/nuxt/module.mjs +6 -3
  172. package/dist/nuxt/runtime/layouts/auth.vue.d.ts +8 -8
  173. package/dist/nuxt/runtime/layouts/dashboard.vue.d.ts +8 -8
  174. package/dist/styles/base.css +2 -0
  175. package/dist/styles/core/field-message.css +34 -0
  176. package/dist/styles/core/form-field.css +0 -23
  177. package/dist/styles/core/form.css +11 -0
  178. package/dist/styles/core/kbd.css +2 -2
  179. package/dist/styles/core/spinner.css +19 -0
  180. package/dist/styles/core.css +1 -0
  181. package/dist/styles/data/badge.css +1 -1
  182. package/dist/styles/data/filter-pills.css +40 -3
  183. package/dist/styles/data/selection-bar.css +85 -0
  184. package/dist/styles/data/tree.css +156 -1
  185. package/dist/styles/data.css +1 -0
  186. package/dist/styles/forms/calendar.css +1 -1
  187. package/dist/styles/forms/file-input.css +8 -0
  188. package/dist/styles/forms/segmented.css +8 -0
  189. package/dist/styles/forms/select.css +1 -1
  190. package/dist/styles/forms/slider.css +2 -2
  191. package/dist/styles/layout/accordion.css +16 -0
  192. package/dist/styles/layout/app-shell.css +4 -0
  193. package/dist/styles/layout/breadcrumbs.css +16 -1
  194. package/dist/styles/layout/card.css +19 -1
  195. package/dist/styles/layout/nav-link.css +1 -1
  196. package/dist/styles/layout/sidebar.css +1 -1
  197. package/dist/styles/layout/tabs.css +43 -1
  198. package/dist/styles/overlays/command.css +20 -2
  199. package/dist/styles/overlays/menu.css +1 -1
  200. package/dist/styles/overlays/modal.css +38 -0
  201. package/dist/styles/templates/brand.css +15 -0
  202. package/dist/styles/templates/empty-page.css +1 -1
  203. package/dist/styles/templates/list-page.css +2 -6
  204. package/dist/styles/templates/settings-modal.css +2 -2
  205. package/package.json +1 -1
@@ -8,7 +8,8 @@
8
8
  'is-over': over,
9
9
  'is-disabled': control.disabled.value,
10
10
  'is-invalid': control.invalid.value,
11
- 'has-files': files.length > 0
11
+ 'is-loading': loading,
12
+ 'has-files': list && files.length > 0
12
13
  },
13
14
  props.class
14
15
  ]"
@@ -22,7 +23,8 @@
22
23
  :disabled="control.disabled.value || void 0"
23
24
  :aria-required="control.required.value ? 'true' : void 0"
24
25
  :aria-invalid="control.invalid.value ? 'true' : void 0"
25
- :aria-disabled="readonly ? 'true' : void 0"
26
+ :aria-disabled="readonly || loading ? 'true' : void 0"
27
+ :aria-busy="loading ? 'true' : void 0"
26
28
  :aria-describedby="
27
29
  joinIds(
28
30
  $attrs['aria-describedby'],
@@ -35,11 +37,12 @@
35
37
  @click="browse"
36
38
  >
37
39
  <span class="k-file-input-dropzone-icon" aria-hidden="true">
38
- <Icon :name="over ? 'arrow-up-tray' : icon" />
40
+ <Spinner v-if="loading" size="sm" decorative />
41
+ <Icon v-else :name="over ? 'arrow-up-tray' : icon" />
39
42
  </span>
40
43
  <span class="k-file-input-dropzone-text">
41
44
  <span class="k-file-input-dropzone-title">
42
- <slot name="title" :over="over">{{ over ? dropLabel : titleLabel }}</slot>
45
+ <slot name="title" :over="over" :loading="loading">{{ currentTitle }}</slot>
43
46
  </span>
44
47
  <span v-if="hint" :id="hintId" class="k-file-input-dropzone-hint">{{ hint }}</span>
45
48
  </span>
@@ -52,19 +55,21 @@
52
55
  aria-hidden="true"
53
56
  :name="formName"
54
57
  :accept="acceptAttr"
55
- :multiple="multiple || void 0"
58
+ :multiple="isMultiple || void 0"
56
59
  :capture="capture"
57
60
  :disabled="control.disabled.value || void 0"
58
61
  @change="onNativeChange"
59
62
  />
60
- <ul v-if="files.length" role="list" class="k-file-input-list" :aria-label="listText">
63
+ <ul v-if="list && files.length" role="list" class="k-file-input-list" :aria-label="listText">
61
64
  <li v-for="file in files" :key="fileKey(file)" class="k-file-input-item">
62
65
  <span class="k-file-input-thumb" aria-hidden="true">
63
66
  <img v-if="previews[fileKey(file)]" :src="previews[fileKey(file)]" alt="" />
64
67
  <Icon v-else name="document" />
65
68
  </span>
66
69
  <span class="k-file-input-meta">
67
- <span class="k-file-input-name" :title="file.name">{{ file.name }}</span>
70
+ <span class="k-file-input-name" :title="filePath(file)">{{
71
+ directory ? filePath(file) : file.name
72
+ }}</span>
68
73
  <span class="k-file-input-size">{{ formatBytes(file.size, resolvedLocale) }}</span>
69
74
  </span>
70
75
  <Button
@@ -73,7 +78,7 @@
73
78
  variant="ghost"
74
79
  tone="neutral"
75
80
  icon="x-mark"
76
- :aria-label="`${removeText} ${file.name}`"
81
+ :aria-label="`${removeText} ${directory ? filePath(file) : file.name}`"
77
82
  :title="removeText"
78
83
  @click="removeFile(file)"
79
84
  />
@@ -96,17 +101,20 @@ import {
96
101
  } from "vue";
97
102
  import { useFieldControl } from "../../composables/useField";
98
103
  import { useLocale } from "../../composables/useLocale";
99
- import { useFileDrop } from "../../composables/useFileDrop";
100
104
  import { joinIds } from "../../internal/forms/control";
105
+ import { readDroppedFiles, useFileDrop } from "../../composables/useFileDrop";
101
106
  import {
102
107
  fileKey,
108
+ filePath,
103
109
  formatBytes,
104
110
  isImageFile,
105
111
  matchesAccept,
106
- parseAccept
112
+ parseAccept,
113
+ setFilePath
107
114
  } from "../../internal/forms/files";
108
115
  import Button from "../core/Button.vue";
109
116
  import Icon from "../core/Icon.vue";
117
+ import Spinner from "../core/Spinner.vue";
110
118
  defineOptions({ inheritAttrs: false });
111
119
  const props = defineProps({
112
120
  name: { type: String, required: false },
@@ -114,6 +122,10 @@ const props = defineProps({
114
122
  maxSize: { type: Number, required: false },
115
123
  maxFiles: { type: Number, required: false },
116
124
  multiple: { type: Boolean, required: false },
125
+ directory: { type: Boolean, required: false },
126
+ list: { type: Boolean, required: false, default: true },
127
+ loading: { type: Boolean, required: false },
128
+ loadingText: { type: String, required: false },
117
129
  capture: { type: String, required: false },
118
130
  previews: { type: Boolean, required: false, default: true },
119
131
  size: { type: String, required: false, default: "md" },
@@ -134,13 +146,19 @@ const props = defineProps({
134
146
  });
135
147
  const { locale: appLocale, t } = useLocale();
136
148
  const resolvedLocale = computed(() => props.locale ?? appLocale.value.code);
137
- const titleLabel = computed(() => props.title ?? t("fileInput.title"));
149
+ const titleLabel = computed(
150
+ () => props.title ?? t(props.directory ? "fileInput.directoryTitle" : "fileInput.title")
151
+ );
152
+ const loadingLabel = computed(() => props.loadingText ?? t("fileInput.loading"));
138
153
  const dropLabel = computed(() => props.dropText ?? t("fileInput.drop"));
139
154
  const removeText = computed(() => props.removeLabel ?? t("common.remove"));
140
155
  const listText = computed(() => props.listLabel ?? t("fileInput.list"));
141
156
  function announceCount(count) {
142
157
  return props.announce ? props.announce(count) : t("fileInput.selected", { count });
143
158
  }
159
+ function announceAdded(count) {
160
+ return props.announce ? props.announce(count) : t("fileInput.added", { count });
161
+ }
144
162
  const model = defineModel({ type: null });
145
163
  const emit = defineEmits(["invalid", "add", "remove"]);
146
164
  const hintId = `${useId()}-hint`;
@@ -163,10 +181,27 @@ const files = computed(() => {
163
181
  const acceptList = computed(() => parseAccept(props.accept));
164
182
  const acceptAttr = computed(() => acceptList.value.join(",") || void 0);
165
183
  const formName = computed(() => props.name ?? control.field?.name.value);
166
- const interactive = computed(() => !control.disabled.value && !props.readonly);
184
+ const interactive = computed(() => !control.disabled.value && !props.readonly && !props.loading);
185
+ const isMultiple = computed(() => props.multiple || props.directory);
186
+ const currentTitle = computed(() => {
187
+ if (props.loading) return loadingLabel.value;
188
+ return over.value ? dropLabel.value : titleLabel.value;
189
+ });
190
+ function toEntries(list) {
191
+ return list.map((file) => ({ file, path: filePath(file) }));
192
+ }
167
193
  const { over } = useFileDrop(rootRef, {
168
194
  disabled: () => !interactive.value,
169
- onDrop: (dropped) => addFiles(dropped)
195
+ onDrop: (dropped, event) => {
196
+ const transfer = event.dataTransfer;
197
+ if (!props.directory) {
198
+ addEntries(toEntries(dropped), { source: "drop", event, dataTransfer: transfer });
199
+ return;
200
+ }
201
+ void readDroppedFiles(transfer).then(
202
+ (entries) => addEntries(entries, { source: "drop", event, dataTransfer: transfer })
203
+ );
204
+ }
170
205
  });
171
206
  function browse() {
172
207
  if (!interactive.value) return;
@@ -180,12 +215,23 @@ function validate(file) {
180
215
  return void 0;
181
216
  }
182
217
  function addFiles(incoming) {
183
- if (!interactive.value || !incoming.length) return;
218
+ addEntries(toEntries(incoming), {
219
+ source: "browse",
220
+ event: new Event("add"),
221
+ dataTransfer: null
222
+ });
223
+ }
224
+ function addEntries(incomingEntries, origin) {
225
+ if (!interactive.value || !incomingEntries.length) return;
226
+ for (const entry of incomingEntries) setFilePath(entry.file, entry.path);
227
+ const incoming = incomingEntries.map((entry) => entry.file);
228
+ const multiple = isMultiple.value;
184
229
  const accepted = [];
185
- const existing = new Set(files.value.map(fileKey));
186
- const limit = props.multiple ? props.maxFiles ?? Infinity : 1;
187
- const room = props.multiple ? limit - files.value.length : 1;
188
- for (const file of props.multiple ? incoming : incoming.slice(0, 1)) {
230
+ const kept = props.list ? files.value : [];
231
+ const existing = new Set(kept.map(fileKey));
232
+ const limit = multiple ? props.maxFiles ?? Infinity : 1;
233
+ const room = multiple ? limit - kept.length : 1;
234
+ for (const file of multiple ? incoming : incoming.slice(0, 1)) {
189
235
  const problem = validate(file);
190
236
  if (problem) {
191
237
  emit("invalid", problem);
@@ -199,23 +245,29 @@ function addFiles(incoming) {
199
245
  accepted.push(file);
200
246
  existing.add(fileKey(file));
201
247
  }
202
- if (!props.multiple && incoming.length > 1)
248
+ if (!multiple && incoming.length > 1)
203
249
  for (const file of incoming.slice(1)) emit("invalid", { reason: "count", file, limit: 1 });
204
250
  if (!accepted.length) return;
205
- model.value = props.multiple ? [...files.value, ...accepted] : accepted[0];
206
- emit("add", accepted);
207
- announcement.value = announceCount(props.multiple ? files.value.length : 1);
251
+ if (props.list) model.value = multiple ? [...files.value, ...accepted] : accepted[0];
252
+ emit("add", accepted, { ...origin, entries: toEntries(accepted) });
253
+ announcement.value = props.list ? announceCount(multiple ? files.value.length : 1) : announceAdded(accepted.length);
208
254
  }
209
255
  function onNativeChange(event) {
210
256
  const target = event.target;
211
- addFiles(Array.from(target.files ?? []));
257
+ const picked = Array.from(target.files ?? []);
258
+ addEntries(toEntries(picked), { source: "browse", event, dataTransfer: null });
212
259
  target.value = "";
213
260
  }
261
+ function syncDirectory() {
262
+ const input = inputRef.value;
263
+ if (!input) return;
264
+ input.webkitdirectory = props.directory;
265
+ }
214
266
  function removeFile(file) {
215
267
  const key = fileKey(file);
216
- model.value = props.multiple ? files.value.filter((entry) => fileKey(entry) !== key) : null;
268
+ model.value = isMultiple.value ? files.value.filter((entry) => fileKey(entry) !== key) : null;
217
269
  emit("remove", file);
218
- announcement.value = announceCount(props.multiple ? files.value.length : 0);
270
+ announcement.value = announceCount(isMultiple.value ? files.value.length : 0);
219
271
  buttonRef.value?.focus();
220
272
  }
221
273
  function syncPreviews(current) {
@@ -234,7 +286,7 @@ function syncPreviews(current) {
234
286
  }
235
287
  function syncNativeInput(current) {
236
288
  const input = inputRef.value;
237
- if (!input || typeof DataTransfer === "undefined") return;
289
+ if (!input || !props.list || typeof DataTransfer === "undefined") return;
238
290
  try {
239
291
  const transfer = new DataTransfer();
240
292
  for (const file of current) transfer.items.add(file);
@@ -247,8 +299,10 @@ watch(files, (current) => {
247
299
  syncPreviews(current);
248
300
  syncNativeInput(current);
249
301
  });
302
+ watch(() => props.directory, syncDirectory);
250
303
  onMounted(() => {
251
304
  mounted.value = true;
305
+ syncDirectory();
252
306
  syncPreviews(files.value);
253
307
  });
254
308
  onBeforeUnmount(() => {
@@ -1,13 +1,14 @@
1
1
  import type { IconName } from '../../composables/useIcons';
2
2
  import type { FieldSize } from '../core/types';
3
- import type { FileInvalidEvent } from './types';
3
+ import type { FileAddDetail, FileInvalidEvent } from './types';
4
4
  declare function browse(): void;
5
5
  declare function addFiles(incoming: File[]): void;
6
- declare var __VLS_6: {
6
+ declare var __VLS_11: {
7
7
  over: boolean;
8
+ loading: boolean;
8
9
  };
9
10
  type __VLS_Slots = {} & {
10
- title?: (props: typeof __VLS_6) => any;
11
+ title?: (props: typeof __VLS_11) => any;
11
12
  };
12
13
  declare const __VLS_base: import("vue").DefineComponent<{
13
14
  name?: string | undefined;
@@ -15,6 +16,10 @@ declare const __VLS_base: import("vue").DefineComponent<{
15
16
  maxSize?: number;
16
17
  maxFiles?: number;
17
18
  multiple?: boolean;
19
+ directory?: boolean;
20
+ list?: boolean;
21
+ loading?: boolean;
22
+ loadingText?: string;
18
23
  capture?: "user" | "environment";
19
24
  previews?: boolean;
20
25
  size?: FieldSize;
@@ -39,8 +44,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
39
44
  form?: string | undefined | undefined;
40
45
  results?: (string | number) | undefined;
41
46
  placeholder?: string | undefined | undefined;
42
- type?: "submit" | "reset" | "button" | undefined | undefined;
43
- ref?: import("vue").VNodeRef | undefined;
44
47
  role?: string | undefined | undefined;
45
48
  'aria-label'?: string | undefined | undefined;
46
49
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -141,6 +144,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
141
144
  color?: string | undefined | undefined;
142
145
  id?: string | undefined | undefined;
143
146
  lang?: string | undefined | undefined;
147
+ type?: "submit" | "reset" | "button" | undefined | undefined;
144
148
  tabindex?: (string | number) | undefined;
145
149
  'aria-activedescendant'?: string | undefined | undefined;
146
150
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -151,7 +155,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
151
155
  'aria-colindex'?: (string | number) | undefined;
152
156
  'aria-colspan'?: (string | number) | undefined;
153
157
  'aria-controls'?: string | undefined | undefined;
154
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
158
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
155
159
  'aria-describedby'?: string | undefined | undefined;
156
160
  'aria-details'?: string | undefined | undefined;
157
161
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -188,6 +192,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
188
192
  'aria-valuemin'?: (string | number) | undefined;
189
193
  'aria-valuenow'?: (string | number) | undefined;
190
194
  'aria-valuetext'?: string | undefined | undefined;
195
+ ref?: import("vue").VNodeRef | undefined;
191
196
  ref_for?: boolean | undefined | undefined;
192
197
  ref_key?: string | undefined | undefined;
193
198
  accesskey?: string | undefined | undefined;
@@ -239,7 +244,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
239
244
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
240
245
  remove: (file: File) => any;
241
246
  invalid: (event: FileInvalidEvent) => any;
242
- add: (files: File[]) => any;
247
+ add: (files: File[], detail: FileAddDetail) => any;
243
248
  "update:modelValue": (value: File | File[] | null | undefined) => any;
244
249
  }, string, import("vue").PublicProps, Readonly<{
245
250
  name?: string | undefined;
@@ -247,6 +252,10 @@ declare const __VLS_base: import("vue").DefineComponent<{
247
252
  maxSize?: number;
248
253
  maxFiles?: number;
249
254
  multiple?: boolean;
255
+ directory?: boolean;
256
+ list?: boolean;
257
+ loading?: boolean;
258
+ loadingText?: string;
250
259
  capture?: "user" | "environment";
251
260
  previews?: boolean;
252
261
  size?: FieldSize;
@@ -271,8 +280,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
271
280
  form?: string | undefined | undefined;
272
281
  results?: (string | number) | undefined;
273
282
  placeholder?: string | undefined | undefined;
274
- type?: "submit" | "reset" | "button" | undefined | undefined;
275
- ref?: import("vue").VNodeRef | undefined;
276
283
  role?: string | undefined | undefined;
277
284
  'aria-label'?: string | undefined | undefined;
278
285
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -373,6 +380,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
373
380
  color?: string | undefined | undefined;
374
381
  id?: string | undefined | undefined;
375
382
  lang?: string | undefined | undefined;
383
+ type?: "submit" | "reset" | "button" | undefined | undefined;
376
384
  tabindex?: (string | number) | undefined;
377
385
  'aria-activedescendant'?: string | undefined | undefined;
378
386
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -383,7 +391,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
383
391
  'aria-colindex'?: (string | number) | undefined;
384
392
  'aria-colspan'?: (string | number) | undefined;
385
393
  'aria-controls'?: string | undefined | undefined;
386
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
394
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
387
395
  'aria-describedby'?: string | undefined | undefined;
388
396
  'aria-details'?: string | undefined | undefined;
389
397
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -420,6 +428,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
420
428
  'aria-valuemin'?: (string | number) | undefined;
421
429
  'aria-valuenow'?: (string | number) | undefined;
422
430
  'aria-valuetext'?: string | undefined | undefined;
431
+ ref?: import("vue").VNodeRef | undefined;
423
432
  ref_for?: boolean | undefined | undefined;
424
433
  ref_key?: string | undefined | undefined;
425
434
  accesskey?: string | undefined | undefined;
@@ -467,11 +476,12 @@ declare const __VLS_base: import("vue").DefineComponent<{
467
476
  }> & Readonly<{
468
477
  onRemove?: ((file: File) => any) | undefined;
469
478
  onInvalid?: ((event: FileInvalidEvent) => any) | undefined;
470
- onAdd?: ((files: File[]) => any) | undefined;
479
+ onAdd?: ((files: File[], detail: FileAddDetail) => any) | undefined;
471
480
  "onUpdate:modelValue"?: ((value: File | File[] | null | undefined) => any) | undefined;
472
481
  }>, {
473
482
  icon: IconName;
474
483
  invalid: boolean;
484
+ list: boolean;
475
485
  size: FieldSize;
476
486
  previews: boolean;
477
487
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -63,7 +63,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
63
63
  'aria-colindex'?: (string | number) | undefined;
64
64
  'aria-colspan'?: (string | number) | undefined;
65
65
  'aria-controls'?: string | undefined | undefined;
66
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
66
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
67
67
  'aria-describedby'?: string | undefined | undefined;
68
68
  'aria-details'?: string | undefined | undefined;
69
69
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -259,7 +259,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
259
259
  'aria-colindex'?: (string | number) | undefined;
260
260
  'aria-colspan'?: (string | number) | undefined;
261
261
  'aria-controls'?: string | undefined | undefined;
262
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
262
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
263
263
  'aria-describedby'?: string | undefined | undefined;
264
264
  'aria-details'?: string | undefined | undefined;
265
265
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -61,7 +61,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
61
61
  'aria-colindex'?: (string | number) | undefined;
62
62
  'aria-colspan'?: (string | number) | undefined;
63
63
  'aria-controls'?: string | undefined | undefined;
64
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
64
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
65
65
  'aria-describedby'?: string | undefined | undefined;
66
66
  'aria-details'?: string | undefined | undefined;
67
67
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -256,7 +256,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
256
256
  'aria-colindex'?: (string | number) | undefined;
257
257
  'aria-colspan'?: (string | number) | undefined;
258
258
  'aria-controls'?: string | undefined | undefined;
259
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
259
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
260
260
  'aria-describedby'?: string | undefined | undefined;
261
261
  'aria-details'?: string | undefined | undefined;
262
262
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -31,8 +31,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
31
31
  list?: string | undefined | undefined;
32
32
  results?: (string | number) | undefined;
33
33
  name?: string | undefined | undefined;
34
- type?: import("vue").InputTypeHTMLAttribute | undefined;
35
- ref?: import("vue").VNodeRef | undefined;
36
34
  role?: string | undefined | undefined;
37
35
  'aria-label'?: string | undefined | undefined;
38
36
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -135,6 +133,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
135
133
  height?: (string | number) | undefined;
136
134
  id?: string | undefined | undefined;
137
135
  lang?: string | undefined | undefined;
136
+ type?: import("vue").InputTypeHTMLAttribute | undefined;
138
137
  width?: (string | number) | undefined;
139
138
  tabindex?: (string | number) | undefined;
140
139
  'aria-activedescendant'?: string | undefined | undefined;
@@ -146,7 +145,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
146
145
  'aria-colindex'?: (string | number) | undefined;
147
146
  'aria-colspan'?: (string | number) | undefined;
148
147
  'aria-controls'?: string | undefined | undefined;
149
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
148
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
150
149
  'aria-describedby'?: string | undefined | undefined;
151
150
  'aria-details'?: string | undefined | undefined;
152
151
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -183,6 +182,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
183
182
  'aria-valuemin'?: (string | number) | undefined;
184
183
  'aria-valuenow'?: (string | number) | undefined;
185
184
  'aria-valuetext'?: string | undefined | undefined;
185
+ ref?: import("vue").VNodeRef | undefined;
186
186
  ref_for?: boolean | undefined | undefined;
187
187
  ref_key?: string | undefined | undefined;
188
188
  accesskey?: string | undefined | undefined;
@@ -275,8 +275,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
275
275
  list?: string | undefined | undefined;
276
276
  results?: (string | number) | undefined;
277
277
  name?: string | undefined | undefined;
278
- type?: import("vue").InputTypeHTMLAttribute | undefined;
279
- ref?: import("vue").VNodeRef | undefined;
280
278
  role?: string | undefined | undefined;
281
279
  'aria-label'?: string | undefined | undefined;
282
280
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -379,6 +377,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
379
377
  height?: (string | number) | undefined;
380
378
  id?: string | undefined | undefined;
381
379
  lang?: string | undefined | undefined;
380
+ type?: import("vue").InputTypeHTMLAttribute | undefined;
382
381
  width?: (string | number) | undefined;
383
382
  tabindex?: (string | number) | undefined;
384
383
  'aria-activedescendant'?: string | undefined | undefined;
@@ -390,7 +389,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
390
389
  'aria-colindex'?: (string | number) | undefined;
391
390
  'aria-colspan'?: (string | number) | undefined;
392
391
  'aria-controls'?: string | undefined | undefined;
393
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
392
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
394
393
  'aria-describedby'?: string | undefined | undefined;
395
394
  'aria-details'?: string | undefined | undefined;
396
395
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -427,6 +426,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
427
426
  'aria-valuemin'?: (string | number) | undefined;
428
427
  'aria-valuenow'?: (string | number) | undefined;
429
428
  'aria-valuetext'?: string | undefined | undefined;
429
+ ref?: import("vue").VNodeRef | undefined;
430
430
  ref_for?: boolean | undefined | undefined;
431
431
  ref_key?: string | undefined | undefined;
432
432
  accesskey?: string | undefined | undefined;
@@ -34,8 +34,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
34
34
  results?: (string | number) | undefined;
35
35
  placeholder?: string | undefined;
36
36
  name?: string | undefined;
37
- type?: string | undefined;
38
- ref?: import("vue").VNodeRef | undefined;
39
37
  role?: string | undefined;
40
38
  'aria-label'?: string | undefined;
41
39
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -138,6 +136,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
138
136
  height?: (string | number) | undefined;
139
137
  id?: string | undefined;
140
138
  lang?: string | undefined;
139
+ type?: string | undefined;
141
140
  width?: (string | number) | undefined;
142
141
  tabindex?: (string | number) | undefined;
143
142
  'aria-activedescendant'?: string | undefined;
@@ -186,6 +185,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
186
185
  'aria-valuemin'?: (string | number) | undefined;
187
186
  'aria-valuenow'?: (string | number) | undefined;
188
187
  'aria-valuetext'?: string | undefined;
188
+ ref?: import("vue").VNodeRef | undefined;
189
189
  ref_for?: boolean | undefined | undefined;
190
190
  ref_key?: string | undefined | undefined;
191
191
  step?: (string | number) | undefined;
@@ -232,6 +232,12 @@ declare const __VLS_export: import("vue").DefineComponent<{
232
232
  formtarget?: string | undefined;
233
233
  popovertarget?: string;
234
234
  popovertargetaction?: import("../../index.ts").PopoverTargetAction;
235
+ onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
236
+ onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
237
+ onVnodeBeforeUpdate?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
238
+ onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
239
+ onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
240
+ onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
235
241
  clearable?: boolean;
236
242
  clearLabel?: string;
237
243
  noAutofill?: boolean;
@@ -248,12 +254,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
248
254
  src?: string | undefined;
249
255
  onCancel?: ((payload: Event) => void) | undefined;
250
256
  modelModifiers?: Partial<Record<"number" | "trim", true>>;
251
- onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
252
- onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
253
- onVnodeBeforeUpdate?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
254
- onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
255
- onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
256
- onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
257
257
  }, {
258
258
  focus: () => void | undefined;
259
259
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -293,8 +293,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
293
293
  results?: (string | number) | undefined;
294
294
  placeholder?: string | undefined;
295
295
  name?: string | undefined;
296
- type?: string | undefined;
297
- ref?: import("vue").VNodeRef | undefined;
298
296
  role?: string | undefined;
299
297
  'aria-label'?: string | undefined;
300
298
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -397,6 +395,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
397
395
  height?: (string | number) | undefined;
398
396
  id?: string | undefined;
399
397
  lang?: string | undefined;
398
+ type?: string | undefined;
400
399
  width?: (string | number) | undefined;
401
400
  tabindex?: (string | number) | undefined;
402
401
  'aria-activedescendant'?: string | undefined;
@@ -445,6 +444,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
445
444
  'aria-valuemin'?: (string | number) | undefined;
446
445
  'aria-valuenow'?: (string | number) | undefined;
447
446
  'aria-valuetext'?: string | undefined;
447
+ ref?: import("vue").VNodeRef | undefined;
448
448
  ref_for?: boolean | undefined | undefined;
449
449
  ref_key?: string | undefined | undefined;
450
450
  step?: (string | number) | undefined;
@@ -491,6 +491,12 @@ declare const __VLS_export: import("vue").DefineComponent<{
491
491
  formtarget?: string | undefined;
492
492
  popovertarget?: string;
493
493
  popovertargetaction?: import("../../index.ts").PopoverTargetAction;
494
+ onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
495
+ onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
496
+ onVnodeBeforeUpdate?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
497
+ onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
498
+ onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
499
+ onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
494
500
  clearable?: boolean;
495
501
  clearLabel?: string;
496
502
  noAutofill?: boolean;
@@ -507,12 +513,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
507
513
  src?: string | undefined;
508
514
  onCancel?: ((payload: Event) => void) | undefined;
509
515
  modelModifiers?: Partial<Record<"number" | "trim", true>>;
510
- onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
511
- onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
512
- onVnodeBeforeUpdate?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
513
- onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
514
- onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
515
- onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
516
516
  }> & Readonly<{
517
517
  onGenerate?: ((password: string) => any) | undefined;
518
518
  "onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
@@ -29,8 +29,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
29
29
  list?: string | undefined | undefined;
30
30
  results?: (string | number) | undefined;
31
31
  name?: string | undefined | undefined;
32
- type?: import("vue").InputTypeHTMLAttribute | undefined;
33
- ref?: import("vue").VNodeRef | undefined;
34
32
  role?: string | undefined | undefined;
35
33
  'aria-label'?: string | undefined | undefined;
36
34
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -133,6 +131,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
133
131
  height?: (string | number) | undefined;
134
132
  id?: string | undefined | undefined;
135
133
  lang?: string | undefined | undefined;
134
+ type?: import("vue").InputTypeHTMLAttribute | undefined;
136
135
  width?: (string | number) | undefined;
137
136
  tabindex?: (string | number) | undefined;
138
137
  'aria-activedescendant'?: string | undefined | undefined;
@@ -144,7 +143,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
144
143
  'aria-colindex'?: (string | number) | undefined;
145
144
  'aria-colspan'?: (string | number) | undefined;
146
145
  'aria-controls'?: string | undefined | undefined;
147
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
146
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
148
147
  'aria-describedby'?: string | undefined | undefined;
149
148
  'aria-details'?: string | undefined | undefined;
150
149
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -181,6 +180,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
181
180
  'aria-valuemin'?: (string | number) | undefined;
182
181
  'aria-valuenow'?: (string | number) | undefined;
183
182
  'aria-valuetext'?: string | undefined | undefined;
183
+ ref?: import("vue").VNodeRef | undefined;
184
184
  ref_for?: boolean | undefined | undefined;
185
185
  ref_key?: string | undefined | undefined;
186
186
  step?: (string | number) | undefined;
@@ -273,8 +273,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
273
273
  list?: string | undefined | undefined;
274
274
  results?: (string | number) | undefined;
275
275
  name?: string | undefined | undefined;
276
- type?: import("vue").InputTypeHTMLAttribute | undefined;
277
- ref?: import("vue").VNodeRef | undefined;
278
276
  role?: string | undefined | undefined;
279
277
  'aria-label'?: string | undefined | undefined;
280
278
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -377,6 +375,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
377
375
  height?: (string | number) | undefined;
378
376
  id?: string | undefined | undefined;
379
377
  lang?: string | undefined | undefined;
378
+ type?: import("vue").InputTypeHTMLAttribute | undefined;
380
379
  width?: (string | number) | undefined;
381
380
  tabindex?: (string | number) | undefined;
382
381
  'aria-activedescendant'?: string | undefined | undefined;
@@ -388,7 +387,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
388
387
  'aria-colindex'?: (string | number) | undefined;
389
388
  'aria-colspan'?: (string | number) | undefined;
390
389
  'aria-controls'?: string | undefined | undefined;
391
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
390
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
392
391
  'aria-describedby'?: string | undefined | undefined;
393
392
  'aria-details'?: string | undefined | undefined;
394
393
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -425,6 +424,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
425
424
  'aria-valuemin'?: (string | number) | undefined;
426
425
  'aria-valuenow'?: (string | number) | undefined;
427
426
  'aria-valuetext'?: string | undefined | undefined;
427
+ ref?: import("vue").VNodeRef | undefined;
428
428
  ref_for?: boolean | undefined | undefined;
429
429
  ref_key?: string | undefined | undefined;
430
430
  step?: (string | number) | undefined;