vuetify 3.1.14 → 3.1.16

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 (113) hide show
  1. package/dist/json/attributes.json +193 -141
  2. package/dist/json/importMap.json +8 -8
  3. package/dist/json/tags.json +13 -0
  4. package/dist/json/web-types.json +513 -282
  5. package/dist/vuetify-labs.css +465 -457
  6. package/dist/vuetify-labs.d.ts +521 -163
  7. package/dist/vuetify-labs.esm.js +272 -179
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +272 -179
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +17 -9
  12. package/dist/vuetify.d.ts +470 -145
  13. package/dist/vuetify.esm.js +178 -106
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +178 -106
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +638 -624
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.css +9 -0
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -6
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.sass +10 -0
  24. package/lib/components/VAutocomplete/index.d.ts +29 -17
  25. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +31 -16
  26. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  27. package/lib/components/VBreadcrumbs/index.d.ts +3 -3
  28. package/lib/components/VCard/VCard.mjs.map +1 -1
  29. package/lib/components/VCard/index.d.ts +21 -16
  30. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  31. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  32. package/lib/components/VCheckbox/index.d.ts +22 -1
  33. package/lib/components/VCombobox/VCombobox.css +1 -1
  34. package/lib/components/VCombobox/VCombobox.mjs +6 -4
  35. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  36. package/lib/components/VCombobox/VCombobox.sass +1 -1
  37. package/lib/components/VCombobox/index.d.ts +29 -17
  38. package/lib/components/VDialog/VDialog.mjs +2 -2
  39. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  40. package/lib/components/VField/VField.css +0 -1
  41. package/lib/components/VField/VField.sass +0 -1
  42. package/lib/components/VField/index.d.ts +6 -0
  43. package/lib/components/VFileInput/VFileInput.mjs +13 -17
  44. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  45. package/lib/components/VFileInput/index.d.ts +68 -23
  46. package/lib/components/VInput/VInput.mjs +14 -7
  47. package/lib/components/VInput/VInput.mjs.map +1 -1
  48. package/lib/components/VInput/index.d.ts +22 -1
  49. package/lib/components/VList/VList.mjs +3 -22
  50. package/lib/components/VList/VList.mjs.map +1 -1
  51. package/lib/components/VOverlay/locationStrategies.mjs +9 -4
  52. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  53. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  54. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  55. package/lib/components/VRadioGroup/index.d.ts +22 -1
  56. package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
  57. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  58. package/lib/components/VRangeSlider/index.d.ts +22 -1
  59. package/lib/components/VSelect/VSelect.mjs +6 -0
  60. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  61. package/lib/components/VSelect/index.d.ts +32 -17
  62. package/lib/components/VSlideGroup/VSlideGroup.mjs +2 -2
  63. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  64. package/lib/components/VSlider/VSlider.mjs +2 -2
  65. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  66. package/lib/components/VSlider/index.d.ts +22 -1
  67. package/lib/components/VSwitch/VSwitch.mjs +5 -3
  68. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  69. package/lib/components/VSwitch/index.d.ts +43 -1
  70. package/lib/components/VTextField/VTextField.mjs +4 -12
  71. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  72. package/lib/components/VTextField/index.d.ts +70 -22
  73. package/lib/components/VTextarea/VTextarea.mjs +4 -12
  74. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  75. package/lib/components/VTextarea/index.d.ts +61 -22
  76. package/lib/components/VTreeview/_mixins.sass +0 -0
  77. package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -0
  78. package/lib/components/VValidation/index.d.ts +10 -1
  79. package/lib/components/index.d.ts +468 -143
  80. package/lib/composables/focus.mjs +3 -2
  81. package/lib/composables/focus.mjs.map +1 -1
  82. package/lib/composables/items.mjs +7 -2
  83. package/lib/composables/items.mjs.map +1 -1
  84. package/lib/entry-bundler.mjs +1 -1
  85. package/lib/framework.mjs +1 -1
  86. package/lib/iconsets/mdi-svg.mjs +2 -2
  87. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  88. package/lib/index.d.ts +2 -2
  89. package/lib/labs/VDataTable/VDataTable.mjs +3 -3
  90. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  91. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  92. package/lib/labs/VDataTable/VDataTableHeaders.mjs +34 -20
  93. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  94. package/lib/labs/VDataTable/VDataTableRow.mjs +2 -4
  95. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  96. package/lib/labs/VDataTable/VDataTableRows.mjs +52 -44
  97. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  98. package/lib/labs/VDataTable/VDataTableServer.mjs +3 -2
  99. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  100. package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -1
  101. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  102. package/lib/labs/VDataTable/composables/options.mjs +2 -1
  103. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  104. package/lib/labs/VDataTable/index.d.ts +44 -11
  105. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +1 -0
  106. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  107. package/lib/labs/VSkeletonLoader/index.d.ts +9 -9
  108. package/lib/labs/components.d.ts +53 -20
  109. package/lib/locale/el.mjs +0 -0
  110. package/lib/locale/index.mjs +0 -0
  111. package/lib/util/helpers.mjs +26 -0
  112. package/lib/util/helpers.mjs.map +1 -1
  113. package/package.json +3 -3
@@ -60,6 +60,15 @@
60
60
  .v-autocomplete--chips .v-autocomplete__selection:first-child {
61
61
  margin-inline-start: 0;
62
62
  }
63
+ .v-autocomplete--selecting-index .v-autocomplete__selection {
64
+ opacity: var(--v-medium-emphasis-opacity);
65
+ }
66
+ .v-autocomplete--selecting-index .v-autocomplete__selection--selected {
67
+ opacity: 1;
68
+ }
69
+ .v-autocomplete--selecting-index .v-field__input > input {
70
+ caret-color: transparent;
71
+ }
63
72
  .v-autocomplete--single.v-text-field input {
64
73
  flex: 1 1;
65
74
  position: absolute;
@@ -16,7 +16,8 @@ import { makeTransitionProps } from "../../composables/transition.mjs";
16
16
  import { useForm } from "../../composables/form.mjs";
17
17
  import { useItems } from "../../composables/items.mjs";
18
18
  import { useLocale } from "../../composables/locale.mjs";
19
- import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utility
19
+ import { useProxiedModel } from "../../composables/proxiedModel.mjs";
20
+ import { useTextColor } from "../../composables/color.mjs"; // Utility
20
21
  import { computed, mergeProps, nextTick, ref, watch } from 'vue';
21
22
  import { genericComponent, omit, useRender, wrapInArray } from "../../util/index.mjs";
22
23
  import { makeVTextFieldProps } from "../VTextField/VTextField.mjs"; // Types
@@ -49,6 +50,7 @@ export const VAutocomplete = genericComponent()({
49
50
  })
50
51
  },
51
52
  emits: {
53
+ 'update:focused': focused => true,
52
54
  'update:search': val => true,
53
55
  'update:modelValue': val => true,
54
56
  'update:menu': val => true
@@ -72,11 +74,17 @@ export const VAutocomplete = genericComponent()({
72
74
  _menu.value = v;
73
75
  }
74
76
  });
77
+ const selectionIndex = ref(-1);
78
+ const color = computed(() => vTextFieldRef.value?.color);
75
79
  const {
76
80
  items,
77
81
  transformIn,
78
82
  transformOut
79
83
  } = useItems(props);
84
+ const {
85
+ textColorClasses,
86
+ textColorStyles
87
+ } = useTextColor(color);
80
88
  const search = useProxiedModel(props, 'search', '');
81
89
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v)), v => {
82
90
  const transformed = transformOut(v);
@@ -99,6 +107,7 @@ export const VAutocomplete = genericComponent()({
99
107
  return filteredItems.value;
100
108
  });
101
109
  const selected = computed(() => selections.value.map(selection => selection.props.value));
110
+ const selection = computed(() => selections.value[selectionIndex.value]);
102
111
  const listRef = ref();
103
112
  function onClear(e) {
104
113
  if (props.openOnClear) {
@@ -112,7 +121,9 @@ export const VAutocomplete = genericComponent()({
112
121
  }
113
122
  function onKeydown(e) {
114
123
  if (props.readonly || form?.isReadonly.value) return;
115
- if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
124
+ const selectionStart = vTextFieldRef.value.selectionStart;
125
+ const length = selected.value.length;
126
+ if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
116
127
  e.preventDefault();
117
128
  }
118
129
  if (['Enter', 'ArrowDown'].includes(e.key)) {
@@ -129,6 +140,38 @@ export const VAutocomplete = genericComponent()({
129
140
  } else if (e.key === 'ArrowUp') {
130
141
  listRef.value?.focus('prev');
131
142
  }
143
+ if (!props.multiple) return;
144
+ if (['Backspace', 'Delete'].includes(e.key)) {
145
+ if (selectionIndex.value < 0) {
146
+ if (e.key === 'Backspace' && !search.value) {
147
+ selectionIndex.value = length - 1;
148
+ }
149
+ return;
150
+ }
151
+ const originalSelectionIndex = selectionIndex.value;
152
+ if (selection.value) select(selection.value);
153
+ selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
154
+ }
155
+ if (e.key === 'ArrowLeft') {
156
+ if (selectionIndex.value < 0 && selectionStart > 0) return;
157
+ const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
158
+ if (selections.value[prev]) {
159
+ selectionIndex.value = prev;
160
+ } else {
161
+ selectionIndex.value = -1;
162
+ vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length);
163
+ }
164
+ }
165
+ if (e.key === 'ArrowRight') {
166
+ if (selectionIndex.value < 0) return;
167
+ const next = selectionIndex.value + 1;
168
+ if (selections.value[next]) {
169
+ selectionIndex.value = next;
170
+ } else {
171
+ selectionIndex.value = -1;
172
+ vTextFieldRef.value.setSelectionRange(0, 0);
173
+ }
174
+ }
132
175
  }
133
176
  function onInput(e) {
134
177
  search.value = e.target.value;
@@ -150,7 +193,6 @@ export const VAutocomplete = genericComponent()({
150
193
  const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value));
151
194
  if (index === -1) {
152
195
  model.value = [...model.value, item];
153
- search.value = '';
154
196
  } else {
155
197
  const value = [...model.value];
156
198
  value.splice(index, 1);
@@ -195,12 +237,15 @@ export const VAutocomplete = genericComponent()({
195
237
  "onUpdate:modelValue": v => {
196
238
  if (v == null) model.value = [];
197
239
  },
240
+ "focused": isFocused.value,
241
+ "onUpdate:focused": $event => isFocused.value = $event,
198
242
  "validationValue": model.externalValue,
199
243
  "dirty": isDirty,
200
244
  "onInput": onInput,
201
245
  "class": ['v-autocomplete', {
202
246
  'v-autocomplete--active-menu': menu.value,
203
247
  'v-autocomplete--chips': !!props.chips,
248
+ 'v-autocomplete--selecting-index': selectionIndex.value > -1,
204
249
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
205
250
  'v-autocomplete--selection-slot': !!slots.selection
206
251
  }],
@@ -209,8 +254,6 @@ export const VAutocomplete = genericComponent()({
209
254
  "placeholder": isDirty ? undefined : props.placeholder,
210
255
  "onClick:clear": onClear,
211
256
  "onMousedown:control": onMousedownControl,
212
- "onFocus": () => isFocused.value = true,
213
- "onBlur": () => isFocused.value = false,
214
257
  "onKeydown": onKeydown
215
258
  }), {
216
259
  ...slots,
@@ -275,7 +318,8 @@ export const VAutocomplete = genericComponent()({
275
318
  };
276
319
  return _createVNode("div", {
277
320
  "key": item.value,
278
- "class": "v-autocomplete__selection"
321
+ "class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
322
+ "style": index === selectionIndex.value ? textColorStyles.value : {}
279
323
  }, [hasChips ? !slots.chip ? _createVNode(VChip, _mergeProps({
280
324
  "key": "chip",
281
325
  "closable": props.closableChips,
@@ -1 +1 @@
1
- {"version":3,"file":"VAutocomplete.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","forwardRefs","makeFilterProps","useFilter","makeTransitionProps","useForm","useItems","useLocale","useProxiedModel","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","useRender","wrapInArray","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","_createVNode","_Fragment","substr","VAutocomplete","name","props","search","String","filterKeys","modelValue","transition","emits","val","setup","_ref","slots","t","vTextFieldRef","isFocused","isPristine","vMenuRef","_menu","menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","multiple","form","filteredItems","getMatches","undefined","selections","map","find","item","valueComparator","displayItems","hideSelected","filter","filteredItem","some","s","selected","selection","listRef","onClear","e","openOnClear","onMousedownControl","hideNoData","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","onInput","target","onAfterLeave","onFocusin","onFocusout","relatedTarget","isSelecting","select","index","findIndex","splice","title","at","hasChips","chips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","_mergeProps","externalValue","menuIcon","placeholder","onFocus","onBlur","default","$event","eager","menuProps","noDataText","onClick","_ref2","isSelected","onChipClose","stopPropagation","slotProps","closableChips","closable","size","_createTextVNode"],"sources":["../../../src/components/VAutocomplete/VAutocomplete.tsx"],"sourcesContent":["// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useItems } from '@/composables/items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, useRender, wrapInArray } from '@/util'\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VAutocomplete = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VAutocomplete',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n const isSelecting = ref(false)\n\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n search.value = ''\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n if (!slots.selection) {\n search.value = item.title\n }\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, val => {\n if (val) {\n isSelecting.value = true\n search.value = props.multiple || !!slots.selection ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n menu.value = false\n search.value = ''\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n onInput={ onInput }\n class={[\n 'v-autocomplete',\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-autocomplete--selection-slot': !!slots.selection,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map(item => slots.item?.({\n item,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ item.value }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n ))}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-autocomplete__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VAutocomplete.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","forwardRefs","makeFilterProps","useFilter","makeTransitionProps","useForm","useItems","useLocale","useProxiedModel","useTextColor","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","useRender","wrapInArray","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","_createVNode","_Fragment","substr","VAutocomplete","name","props","search","String","filterKeys","modelValue","transition","emits","focused","val","setup","_ref","slots","t","vTextFieldRef","isFocused","isPristine","vMenuRef","_menu","menu","get","value","set","v","ΨopenChildren","selectionIndex","color","items","transformIn","transformOut","textColorClasses","textColorStyles","model","transformed","multiple","form","filteredItems","getMatches","undefined","selections","map","find","item","valueComparator","displayItems","hideSelected","filter","filteredItem","some","s","selected","selection","listRef","onClear","e","openOnClear","onMousedownControl","hideNoData","readonly","isReadonly","onKeydown","selectionStart","includes","key","preventDefault","focus","originalSelectionIndex","select","prev","setSelectionRange","next","onInput","target","onAfterLeave","onFocusin","onFocusout","relatedTarget","isSelecting","index","findIndex","splice","title","at","hasChips","chips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","_mergeProps","$event","externalValue","menuIcon","placeholder","default","eager","menuProps","noDataText","onClick","_ref2","isSelected","onChipClose","stopPropagation","slotProps","closableChips","closable","size","_createTextVNode"],"sources":["../../../src/components/VAutocomplete/VAutocomplete.tsx"],"sourcesContent":["// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useItems } from '@/composables/items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, useRender, wrapInArray } from '@/util'\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VAutocomplete = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VAutocomplete',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n const originalSelectionIndex = selectionIndex.value\n\n if (selection.value) select(selection.value)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n const isSelecting = ref(false)\n\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n if (!slots.selection) {\n search.value = item.title\n }\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, val => {\n if (val) {\n isSelecting.value = true\n search.value = props.multiple || !!slots.selection ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n menu.value = false\n search.value = ''\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n onInput={ onInput }\n class={[\n 'v-autocomplete',\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n 'v-autocomplete--selecting-index': selectionIndex.value > -1,\n [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-autocomplete--selection-slot': !!slots.selection,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map(item => slots.item?.({\n item,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ item.value }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n ))}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-autocomplete__selection',\n index === selectionIndex.value && [\n 'v-autocomplete__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n"],"mappings":"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"}
@@ -71,6 +71,16 @@
71
71
  &:first-child
72
72
  margin-inline-start: 0
73
73
 
74
+ &--selecting-index
75
+ .v-autocomplete__selection
76
+ opacity: var(--v-medium-emphasis-opacity)
77
+
78
+ &--selected
79
+ opacity: 1
80
+
81
+ .v-field__input > input
82
+ caret-color: transparent
83
+
74
84
  &--single
75
85
  &.v-text-field input
76
86
  flex: 1 1
@@ -178,10 +178,10 @@ declare const VAutocomplete: {
178
178
  errorMessages: string | string[];
179
179
  maxErrors: string | number;
180
180
  rules: ValidationRule[];
181
+ persistentHint: boolean;
181
182
  clearable: boolean;
182
183
  persistentClear: boolean;
183
184
  singleLine: boolean;
184
- persistentHint: boolean;
185
185
  persistentPlaceholder: boolean;
186
186
  persistentCounter: boolean;
187
187
  valueComparator: typeof deepEqual;
@@ -269,6 +269,7 @@ declare const VAutocomplete: {
269
269
  'onClick:appendInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
270
270
  'onClick:prependInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
271
271
  focused: BooleanConstructor;
272
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
272
273
  validateOn: vue.PropType<"input" | "blur" | "submit" | undefined>;
273
274
  errorMessages: {
274
275
  type: vue.PropType<string | string[]>;
@@ -282,12 +283,12 @@ declare const VAutocomplete: {
282
283
  type: vue.PropType<ValidationRule[]>;
283
284
  default: () => never[];
284
285
  };
286
+ hint: StringConstructor;
287
+ persistentHint: BooleanConstructor;
285
288
  hideDetails: vue.PropType<boolean | "auto">;
286
289
  clearable: BooleanConstructor;
287
290
  persistentClear: BooleanConstructor;
288
291
  singleLine: BooleanConstructor;
289
- hint: StringConstructor;
290
- persistentHint: BooleanConstructor;
291
292
  persistentPlaceholder: BooleanConstructor;
292
293
  persistentCounter: BooleanConstructor;
293
294
  suffix: StringConstructor;
@@ -665,9 +666,10 @@ declare const VAutocomplete: {
665
666
  noFilter: BooleanConstructor;
666
667
  search: StringConstructor;
667
668
  }, "multiple" | "$children" | "$slots" | "v-slots" | "items" | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "v-slot:loader" | "v-slot:details" | "v-slot:clear" | "v-slot:label" | "v-slot:prepend-inner" | "v-slot:append-inner" | "v-slot:item" | "returnObject" | "v-slot:chip" | "v-slot:selection" | "v-slot:prepend-item" | "v-slot:append-item" | "v-slot:no-data">>> & {
669
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
668
670
  "onUpdate:menu"?: ((val: boolean) => any) | undefined;
669
671
  "onUpdate:search"?: ((val: any) => any) | undefined;
670
- } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "reverse" | "type" | "error" | "active" | "direction" | "transition" | "menu" | "autofocus" | "eager" | "disabled" | "readonly" | "noDataText" | "messages" | "density" | "variant" | "clearIcon" | "focused" | "errorMessages" | "maxErrors" | "rules" | "clearable" | "persistentClear" | "singleLine" | "persistentHint" | "persistentPlaceholder" | "persistentCounter" | "valueComparator" | "itemTitle" | "itemValue" | "itemChildren" | "itemProps" | "chips" | "closableChips" | "hideNoData" | "hideSelected" | "menuIcon" | "openOnClear" | "filterMode" | "noFilter" | "filterKeys">;
672
+ } & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, "reverse" | "type" | "error" | "active" | "direction" | "transition" | "menu" | "autofocus" | "eager" | "disabled" | "readonly" | "noDataText" | "messages" | "density" | "variant" | "clearIcon" | "focused" | "errorMessages" | "maxErrors" | "rules" | "persistentHint" | "clearable" | "persistentClear" | "singleLine" | "persistentPlaceholder" | "persistentCounter" | "valueComparator" | "itemTitle" | "itemValue" | "itemChildren" | "itemProps" | "chips" | "closableChips" | "hideNoData" | "hideSelected" | "menuIcon" | "openOnClear" | "filterMode" | "noFilter" | "filterKeys">;
671
673
  $attrs: {
672
674
  [x: string]: unknown;
673
675
  };
@@ -679,7 +681,7 @@ declare const VAutocomplete: {
679
681
  }>;
680
682
  $root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
681
683
  $parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
682
- $emit: ((event: "update:menu", val: boolean) => void) & ((event: "update:search", val: any) => void);
684
+ $emit: ((event: "update:focused", focused: boolean) => void) & ((event: "update:menu", val: boolean) => void) & ((event: "update:search", val: any) => void);
683
685
  $el: any;
684
686
  $options: vue.ComponentOptionsBase<Readonly<vue.ExtractPropTypes<Omit<{
685
687
  transition: Omit<{
@@ -752,6 +754,7 @@ declare const VAutocomplete: {
752
754
  'onClick:appendInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
753
755
  'onClick:prependInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
754
756
  focused: BooleanConstructor;
757
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
755
758
  validateOn: vue.PropType<"input" | "blur" | "submit" | undefined>;
756
759
  errorMessages: {
757
760
  type: vue.PropType<string | string[]>;
@@ -765,12 +768,12 @@ declare const VAutocomplete: {
765
768
  type: vue.PropType<ValidationRule[]>;
766
769
  default: () => never[];
767
770
  };
771
+ hint: StringConstructor;
772
+ persistentHint: BooleanConstructor;
768
773
  hideDetails: vue.PropType<boolean | "auto">;
769
774
  clearable: BooleanConstructor;
770
775
  persistentClear: BooleanConstructor;
771
776
  singleLine: BooleanConstructor;
772
- hint: StringConstructor;
773
- persistentHint: BooleanConstructor;
774
777
  persistentPlaceholder: BooleanConstructor;
775
778
  persistentCounter: BooleanConstructor;
776
779
  suffix: StringConstructor;
@@ -1148,6 +1151,7 @@ declare const VAutocomplete: {
1148
1151
  noFilter: BooleanConstructor;
1149
1152
  search: StringConstructor;
1150
1153
  }, "multiple" | "$children" | "$slots" | "v-slots" | "items" | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "v-slot:loader" | "v-slot:details" | "v-slot:clear" | "v-slot:label" | "v-slot:prepend-inner" | "v-slot:append-inner" | "v-slot:item" | "returnObject" | "v-slot:chip" | "v-slot:selection" | "v-slot:prepend-item" | "v-slot:append-item" | "v-slot:no-data">>> & {
1154
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
1151
1155
  "onUpdate:menu"?: ((val: boolean) => any) | undefined;
1152
1156
  "onUpdate:search"?: ((val: any) => any) | undefined;
1153
1157
  }, {
@@ -1160,6 +1164,7 @@ declare const VAutocomplete: {
1160
1164
  filteredItems: vue.Ref<InternalItem<any>[]>;
1161
1165
  select: (item: InternalItem) => void;
1162
1166
  } & Omit<any, string | number | symbol>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
1167
+ 'update:focused': (focused: boolean) => boolean;
1163
1168
  'update:search': (val: any) => true;
1164
1169
  'update:modelValue': (val: any) => boolean;
1165
1170
  'update:menu': (val: boolean) => true;
@@ -1186,10 +1191,10 @@ declare const VAutocomplete: {
1186
1191
  errorMessages: string | string[];
1187
1192
  maxErrors: string | number;
1188
1193
  rules: ValidationRule[];
1194
+ persistentHint: boolean;
1189
1195
  clearable: boolean;
1190
1196
  persistentClear: boolean;
1191
1197
  singleLine: boolean;
1192
- persistentHint: boolean;
1193
1198
  persistentPlaceholder: boolean;
1194
1199
  persistentCounter: boolean;
1195
1200
  valueComparator: typeof deepEqual;
@@ -1297,6 +1302,7 @@ declare const VAutocomplete: {
1297
1302
  'onClick:appendInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1298
1303
  'onClick:prependInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1299
1304
  focused: BooleanConstructor;
1305
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
1300
1306
  validateOn: vue.PropType<"input" | "blur" | "submit" | undefined>;
1301
1307
  errorMessages: {
1302
1308
  type: vue.PropType<string | string[]>;
@@ -1310,12 +1316,12 @@ declare const VAutocomplete: {
1310
1316
  type: vue.PropType<ValidationRule[]>;
1311
1317
  default: () => never[];
1312
1318
  };
1319
+ hint: StringConstructor;
1320
+ persistentHint: BooleanConstructor;
1313
1321
  hideDetails: vue.PropType<boolean | "auto">;
1314
1322
  clearable: BooleanConstructor;
1315
1323
  persistentClear: BooleanConstructor;
1316
1324
  singleLine: BooleanConstructor;
1317
- hint: StringConstructor;
1318
- persistentHint: BooleanConstructor;
1319
1325
  persistentPlaceholder: BooleanConstructor;
1320
1326
  persistentCounter: BooleanConstructor;
1321
1327
  suffix: StringConstructor;
@@ -1693,6 +1699,7 @@ declare const VAutocomplete: {
1693
1699
  noFilter: BooleanConstructor;
1694
1700
  search: StringConstructor;
1695
1701
  }, "multiple" | "$children" | "$slots" | "v-slots" | "items" | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "v-slot:loader" | "v-slot:details" | "v-slot:clear" | "v-slot:label" | "v-slot:prepend-inner" | "v-slot:append-inner" | "v-slot:item" | "returnObject" | "v-slot:chip" | "v-slot:selection" | "v-slot:prepend-item" | "v-slot:append-item" | "v-slot:no-data">>> & {
1702
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
1696
1703
  "onUpdate:menu"?: ((val: boolean) => any) | undefined;
1697
1704
  "onUpdate:search"?: ((val: any) => any) | undefined;
1698
1705
  } & vue.ShallowUnwrapRef<{
@@ -1779,6 +1786,7 @@ declare const VAutocomplete: {
1779
1786
  'onClick:appendInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1780
1787
  'onClick:prependInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1781
1788
  focused: BooleanConstructor;
1789
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
1782
1790
  validateOn: vue.PropType<"input" | "blur" | "submit" | undefined>;
1783
1791
  errorMessages: {
1784
1792
  type: vue.PropType<string | string[]>;
@@ -1792,12 +1800,12 @@ declare const VAutocomplete: {
1792
1800
  type: vue.PropType<ValidationRule[]>;
1793
1801
  default: () => never[];
1794
1802
  };
1803
+ hint: StringConstructor;
1804
+ persistentHint: BooleanConstructor;
1795
1805
  hideDetails: vue.PropType<boolean | "auto">;
1796
1806
  clearable: BooleanConstructor;
1797
1807
  persistentClear: BooleanConstructor;
1798
1808
  singleLine: BooleanConstructor;
1799
- hint: StringConstructor;
1800
- persistentHint: BooleanConstructor;
1801
1809
  persistentPlaceholder: BooleanConstructor;
1802
1810
  persistentCounter: BooleanConstructor;
1803
1811
  suffix: StringConstructor;
@@ -2175,6 +2183,7 @@ declare const VAutocomplete: {
2175
2183
  noFilter: BooleanConstructor;
2176
2184
  search: StringConstructor;
2177
2185
  }, "multiple" | "$children" | "$slots" | "v-slots" | "items" | "v-slot:append" | "v-slot:prepend" | "modelValue" | "onUpdate:modelValue" | "v-slot:loader" | "v-slot:details" | "v-slot:clear" | "v-slot:label" | "v-slot:prepend-inner" | "v-slot:append-inner" | "v-slot:item" | "returnObject" | "v-slot:chip" | "v-slot:selection" | "v-slot:prepend-item" | "v-slot:append-item" | "v-slot:no-data">>> & {
2186
+ "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
2178
2187
  "onUpdate:menu"?: ((val: boolean) => any) | undefined;
2179
2188
  "onUpdate:search"?: ((val: any) => any) | undefined;
2180
2189
  }, {
@@ -2187,6 +2196,7 @@ declare const VAutocomplete: {
2187
2196
  filteredItems: vue.Ref<InternalItem<any>[]>;
2188
2197
  select: (item: InternalItem) => void;
2189
2198
  } & Omit<any, string | number | symbol>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
2199
+ 'update:focused': (focused: boolean) => boolean;
2190
2200
  'update:search': (val: any) => true;
2191
2201
  'update:modelValue': (val: any) => boolean;
2192
2202
  'update:menu': (val: boolean) => true;
@@ -2213,10 +2223,10 @@ declare const VAutocomplete: {
2213
2223
  errorMessages: string | string[];
2214
2224
  maxErrors: string | number;
2215
2225
  rules: ValidationRule[];
2226
+ persistentHint: boolean;
2216
2227
  clearable: boolean;
2217
2228
  persistentClear: boolean;
2218
2229
  singleLine: boolean;
2219
- persistentHint: boolean;
2220
2230
  persistentPlaceholder: boolean;
2221
2231
  persistentCounter: boolean;
2222
2232
  valueComparator: typeof deepEqual;
@@ -2420,6 +2430,7 @@ declare const VAutocomplete: {
2420
2430
  'onClick:appendInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
2421
2431
  'onClick:prependInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
2422
2432
  focused: BooleanConstructor;
2433
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
2423
2434
  validateOn: vue.PropType<"input" | "blur" | "submit" | undefined>;
2424
2435
  errorMessages: {
2425
2436
  type: vue.PropType<string | string[]>;
@@ -2433,12 +2444,12 @@ declare const VAutocomplete: {
2433
2444
  type: vue.PropType<ValidationRule[]>;
2434
2445
  default: () => never[];
2435
2446
  };
2447
+ hint: StringConstructor;
2448
+ persistentHint: BooleanConstructor;
2436
2449
  hideDetails: vue.PropType<boolean | "auto">;
2437
2450
  clearable: BooleanConstructor;
2438
2451
  persistentClear: BooleanConstructor;
2439
2452
  singleLine: BooleanConstructor;
2440
- hint: StringConstructor;
2441
- persistentHint: BooleanConstructor;
2442
2453
  persistentPlaceholder: BooleanConstructor;
2443
2454
  persistentCounter: BooleanConstructor;
2444
2455
  suffix: StringConstructor;
@@ -2886,6 +2897,7 @@ declare const VAutocomplete: {
2886
2897
  'onClick:appendInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
2887
2898
  'onClick:prependInner': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
2888
2899
  focused: BooleanConstructor;
2900
+ 'onUpdate:focused': vue.PropType<EventProp<[FocusEvent], (args_0: FocusEvent) => any>>;
2889
2901
  validateOn: vue.PropType<"input" | "blur" | "submit" | undefined>;
2890
2902
  errorMessages: {
2891
2903
  type: vue.PropType<string | string[]>;
@@ -2899,12 +2911,12 @@ declare const VAutocomplete: {
2899
2911
  type: vue.PropType<ValidationRule[]>;
2900
2912
  default: () => never[];
2901
2913
  };
2914
+ hint: StringConstructor;
2915
+ persistentHint: BooleanConstructor;
2902
2916
  hideDetails: vue.PropType<boolean | "auto">;
2903
2917
  clearable: BooleanConstructor;
2904
2918
  persistentClear: BooleanConstructor;
2905
2919
  singleLine: BooleanConstructor;
2906
- hint: StringConstructor;
2907
- persistentHint: BooleanConstructor;
2908
2920
  persistentPlaceholder: BooleanConstructor;
2909
2921
  persistentCounter: BooleanConstructor;
2910
2922
  suffix: StringConstructor;
@@ -14,7 +14,7 @@ import { makeTagProps } from "../../composables/tag.mjs";
14
14
  import { provideDefaults } from "../../composables/defaults.mjs";
15
15
  import { useBackgroundColor } from "../../composables/color.mjs"; // Utilities
16
16
  import { genericComponent, useRender } from "../../util/index.mjs";
17
- import { toRef } from 'vue';
17
+ import { computed, toRef } from 'vue';
18
18
 
19
19
  // Types
20
20
 
@@ -66,6 +66,17 @@ export const VBreadcrumbs = genericComponent()({
66
66
  disabled: toRef(props, 'disabled')
67
67
  }
68
68
  });
69
+ const items = computed(() => props.items.map(item => {
70
+ return typeof item === 'string' ? {
71
+ item: {
72
+ title: item
73
+ },
74
+ raw: item
75
+ } : {
76
+ item,
77
+ raw: item
78
+ };
79
+ }));
69
80
  useRender(() => {
70
81
  const hasPrepend = !!(slots.prepend || props.icon);
71
82
  return _createVNode(props.tag, {
@@ -88,22 +99,26 @@ export const VBreadcrumbs = genericComponent()({
88
99
  start: true
89
100
  }
90
101
  }
91
- }, slots.prepend)]), props.items.map((item, index, array) => _createVNode(_Fragment, null, [_createVNode(VBreadcrumbsItem, _mergeProps({
92
- "key": index,
93
- "disabled": index >= array.length - 1
94
- }, typeof item === 'string' ? {
95
- title: item
96
- } : item), {
97
- default: slots.title ? () => slots.title?.({
98
- item,
99
- index
100
- }) : undefined
101
- }), index < array.length - 1 && _createVNode(VBreadcrumbsDivider, null, {
102
- default: slots.divider ? () => slots.divider?.({
102
+ }, slots.prepend)]), items.value.map((_ref2, index, array) => {
103
+ let {
103
104
  item,
104
- index
105
- }) : undefined
106
- })])), slots.default?.()]
105
+ raw
106
+ } = _ref2;
107
+ return _createVNode(_Fragment, null, [_createVNode(VBreadcrumbsItem, _mergeProps({
108
+ "key": item.title,
109
+ "disabled": index >= array.length - 1
110
+ }, item), {
111
+ default: slots.title ? () => slots.title?.({
112
+ item: raw,
113
+ index
114
+ }) : undefined
115
+ }), index < array.length - 1 && _createVNode(VBreadcrumbsDivider, null, {
116
+ default: slots.divider ? () => slots.divider?.({
117
+ item: raw,
118
+ index
119
+ }) : undefined
120
+ })]);
121
+ }), slots.default?.()]
107
122
  });
108
123
  });
109
124
  return {};