@vuetify/nightly 3.0.0-beta.3 → 3.0.0-beta.4

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 (169) hide show
  1. package/CHANGELOG.md +32 -2
  2. package/dist/_component-variables.sass +61 -0
  3. package/dist/json/attributes.json +176 -20
  4. package/dist/json/importMap.json +208 -204
  5. package/dist/json/tags.json +48 -4
  6. package/dist/json/web-types.json +492 -46
  7. package/dist/vuetify.css +950 -932
  8. package/dist/vuetify.d.ts +2521 -341
  9. package/dist/vuetify.esm.js +2318 -2130
  10. package/dist/vuetify.esm.js.map +1 -1
  11. package/dist/vuetify.js +2317 -2129
  12. package/dist/vuetify.js.map +1 -1
  13. package/dist/vuetify.min.css +2 -2
  14. package/dist/vuetify.min.js +764 -740
  15. package/dist/vuetify.min.js.map +1 -1
  16. package/lib/components/VAlert/VAlert.css +5 -5
  17. package/lib/components/VAlert/VAlert.mjs +1 -1
  18. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  19. package/lib/components/VAlert/VAlert.sass +0 -2
  20. package/lib/components/VAppBar/VAppBar.sass +0 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +46 -17
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VAutocomplete/VAutocomplete.sass +0 -2
  24. package/lib/components/VAvatar/VAvatar.css +1 -1
  25. package/lib/components/VAvatar/VAvatar.sass +1 -2
  26. package/lib/components/VAvatar/_mixins.scss +0 -1
  27. package/lib/components/VBadge/VBadge.sass +0 -1
  28. package/lib/components/VBanner/VBanner.sass +0 -1
  29. package/lib/components/VBottomNavigation/VBottomNavigation.sass +0 -1
  30. package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +0 -1
  31. package/lib/components/VBtn/VBtn.css +24 -7
  32. package/lib/components/VBtn/VBtn.mjs +20 -11
  33. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  34. package/lib/components/VBtn/VBtn.sass +17 -2
  35. package/lib/components/VBtnGroup/VBtnGroup.sass +0 -1
  36. package/lib/components/VBtnToggle/VBtnToggle.sass +0 -1
  37. package/lib/components/VCard/VCard.css +5 -5
  38. package/lib/components/VCard/VCard.mjs +1 -1
  39. package/lib/components/VCard/VCard.mjs.map +1 -1
  40. package/lib/components/VCard/VCard.sass +0 -1
  41. package/lib/components/VCarousel/VCarousel.sass +0 -1
  42. package/lib/components/VCheckbox/VCheckbox.mjs +13 -46
  43. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  44. package/lib/components/VCheckbox/VCheckbox.sass +0 -1
  45. package/lib/components/VCheckbox/VCheckboxBtn.mjs +67 -0
  46. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -0
  47. package/lib/components/VCheckbox/index.mjs +1 -0
  48. package/lib/components/VCheckbox/index.mjs.map +1 -1
  49. package/lib/components/VChip/VChip.css +5 -5
  50. package/lib/components/VChip/VChip.mjs +1 -1
  51. package/lib/components/VChip/VChip.mjs.map +1 -1
  52. package/lib/components/VChip/VChip.sass +0 -1
  53. package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
  54. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  55. package/lib/components/VCode/VCode.sass +1 -2
  56. package/lib/components/VCode/_variables.scss +1 -1
  57. package/lib/components/VColorPicker/VColorPicker.sass +0 -1
  58. package/lib/components/VColorPicker/VColorPickerCanvas.sass +0 -1
  59. package/lib/components/VColorPicker/VColorPickerEdit.sass +0 -1
  60. package/lib/components/VColorPicker/VColorPickerPreview.sass +0 -1
  61. package/lib/components/VColorPicker/VColorPickerSwatches.sass +0 -1
  62. package/lib/components/VCombobox/VCombobox.mjs +47 -29
  63. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  64. package/lib/components/VCombobox/VCombobox.sass +0 -2
  65. package/lib/components/VCounter/VCounter.sass +0 -1
  66. package/lib/components/VDialog/VDialog.sass +0 -1
  67. package/lib/components/VDivider/VDivider.sass +0 -1
  68. package/lib/components/VExpansionPanel/VExpansionPanel.sass +0 -1
  69. package/lib/components/VField/VField.css +9 -9
  70. package/lib/components/VField/VField.mjs +2 -2
  71. package/lib/components/VField/VField.mjs.map +1 -1
  72. package/lib/components/VField/VField.sass +6 -8
  73. package/lib/components/VField/_variables.scss +3 -3
  74. package/lib/components/VFileInput/VFileInput.sass +0 -1
  75. package/lib/components/VFooter/VFooter.sass +0 -1
  76. package/lib/components/VIcon/VIcon.sass +0 -1
  77. package/lib/components/VImg/VImg.sass +0 -1
  78. package/lib/components/VInput/VInput.mjs +3 -3
  79. package/lib/components/VInput/VInput.mjs.map +1 -1
  80. package/lib/components/VInput/VInput.sass +0 -1
  81. package/lib/components/VItemGroup/VItemGroup.sass +0 -1
  82. package/lib/components/VKbd/VKbd.sass +0 -1
  83. package/lib/components/VKbd/_variables.scss +1 -1
  84. package/lib/components/VLabel/VLabel.sass +0 -1
  85. package/lib/components/VList/VList.mjs +1 -1
  86. package/lib/components/VList/VList.mjs.map +1 -1
  87. package/lib/components/VList/VList.sass +0 -1
  88. package/lib/components/VList/VListChildren.mjs +1 -1
  89. package/lib/components/VList/VListChildren.mjs.map +1 -1
  90. package/lib/components/VList/VListGroup.mjs +11 -2
  91. package/lib/components/VList/VListGroup.mjs.map +1 -1
  92. package/lib/components/VList/VListItem.css +6 -6
  93. package/lib/components/VList/VListItem.mjs +7 -7
  94. package/lib/components/VList/VListItem.mjs.map +1 -1
  95. package/lib/components/VList/VListItem.sass +1 -2
  96. package/lib/components/VMain/VMain.sass +0 -1
  97. package/lib/components/VMenu/VMenu.sass +0 -1
  98. package/lib/components/VMessages/VMessages.sass +0 -1
  99. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -1
  100. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  101. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  102. package/lib/components/VOverlay/VOverlay.sass +0 -1
  103. package/lib/components/VPagination/VPagination.sass +0 -1
  104. package/lib/components/VProgressCircular/VProgressCircular.sass +0 -1
  105. package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
  106. package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -1
  107. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  108. package/lib/components/VRating/VRating.sass +0 -1
  109. package/lib/components/VSelect/VSelect.mjs +54 -19
  110. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  111. package/lib/components/VSelect/VSelect.sass +0 -2
  112. package/lib/components/VSelectionControl/VSelectionControl.css +1 -0
  113. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -5
  114. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  115. package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
  116. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +0 -1
  117. package/lib/components/VSheet/VSheet.sass +0 -1
  118. package/lib/components/VSlideGroup/VSlideGroup.sass +0 -1
  119. package/lib/components/VSlider/VSlider.sass +0 -2
  120. package/lib/components/VSlider/VSliderThumb.sass +0 -2
  121. package/lib/components/VSlider/VSliderTrack.sass +0 -2
  122. package/lib/components/VSnackbar/VSnackbar.css +5 -5
  123. package/lib/components/VSnackbar/VSnackbar.sass +0 -1
  124. package/lib/components/VSwitch/VSwitch.mjs +8 -2
  125. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  126. package/lib/components/VSwitch/VSwitch.sass +0 -1
  127. package/lib/components/VSystemBar/VSystemBar.sass +0 -1
  128. package/lib/components/VTable/VTable.sass +0 -1
  129. package/lib/components/VTabs/VTab.sass +0 -1
  130. package/lib/components/VTabs/VTabs.sass +0 -1
  131. package/lib/components/VTabs/_variables.scss +1 -1
  132. package/lib/components/VTextField/VTextField.mjs +2 -0
  133. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  134. package/lib/components/VTextField/VTextField.sass +0 -1
  135. package/lib/components/VTextarea/VTextarea.sass +0 -2
  136. package/lib/components/VTimeline/VTimeline.sass +0 -1
  137. package/lib/components/VToolbar/VToolbar.sass +0 -1
  138. package/lib/components/VToolbar/VToolbarItems.mjs +1 -1
  139. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  140. package/lib/components/VTooltip/VTooltip.sass +0 -1
  141. package/lib/components/VWindow/VWindow.sass +0 -2
  142. package/lib/components/VWindow/VWindowItem.mjs +9 -3
  143. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  144. package/lib/components/index.d.ts +2520 -342
  145. package/lib/composables/display.mjs +13 -11
  146. package/lib/composables/display.mjs.map +1 -1
  147. package/lib/composables/form.mjs +6 -6
  148. package/lib/composables/form.mjs.map +1 -1
  149. package/lib/composables/items.mjs +2 -2
  150. package/lib/composables/items.mjs.map +1 -1
  151. package/lib/composables/ssrBoot.mjs +3 -2
  152. package/lib/composables/ssrBoot.mjs.map +1 -1
  153. package/lib/composables/theme.mjs +6 -2
  154. package/lib/composables/theme.mjs.map +1 -1
  155. package/lib/composables/validation.mjs +14 -7
  156. package/lib/composables/validation.mjs.map +1 -1
  157. package/lib/composables/variant.mjs +3 -3
  158. package/lib/composables/variant.mjs.map +1 -1
  159. package/lib/directives/ripple/VRipple.sass +0 -1
  160. package/lib/entry-bundler.mjs +1 -1
  161. package/lib/framework.mjs +23 -6
  162. package/lib/framework.mjs.map +1 -1
  163. package/lib/index.d.ts +73 -67
  164. package/lib/styles/tools/_variant.sass +6 -6
  165. package/lib/util/getCurrentInstance.mjs +19 -0
  166. package/lib/util/getCurrentInstance.mjs.map +1 -1
  167. package/lib/util/helpers.mjs +0 -4
  168. package/lib/util/helpers.mjs.map +1 -1
  169. package/package.json +11 -3
@@ -1,8 +1,7 @@
1
- @forward './variables'
2
1
  @use './variables' as *
3
2
 
4
3
  .v-code
5
- background-color: rgb(var(--v-code-background-color))
4
+ background-color: rgb($code-background-color)
6
5
  border-radius: $code-border-radius
7
6
  font-size: $code-font-size
8
7
  font-weight: $code-font-weight
@@ -1,4 +1,4 @@
1
- // Defaults
1
+ $code-background-color: var(--v-code-background-color) !default;
2
2
  $code-border-radius: 3px !default;
3
3
  $code-font-size: 85% !default;
4
4
  $code-font-weight: normal !default;
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -3,6 +3,7 @@ import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, createV
3
3
  import "./VCombobox.css"; // Components
4
4
 
5
5
  import { makeSelectProps } from "../VSelect/VSelect.mjs";
6
+ import { VCheckboxBtn } from "../VCheckbox/index.mjs";
6
7
  import { VChip } from "../VChip/index.mjs";
7
8
  import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
8
9
  import { VList, VListItem } from "../VList/index.mjs";
@@ -17,7 +18,7 @@ import { useLocale } from "../../composables/locale.mjs";
17
18
  import { useProxiedModel } from "../../composables/proxiedModel.mjs";
18
19
  import { useTextColor } from "../../composables/color.mjs"; // Utility
19
20
 
20
- import { computed, nextTick, ref, watch } from 'vue';
21
+ import { computed, mergeProps, nextTick, ref, watch } from 'vue';
21
22
  import { genericComponent, useRender, wrapInArray } from "../../util/index.mjs"; // Types
22
23
 
23
24
  function highlightResult(text, matches, length) {
@@ -50,7 +51,8 @@ export const VCombobox = genericComponent()({
50
51
  },
51
52
  emits: {
52
53
  'update:modelValue': val => true,
53
- 'update:searchInput': val => true
54
+ 'update:searchInput': val => true,
55
+ 'update:menu': val => true
54
56
  },
55
57
 
56
58
  setup(props, _ref) {
@@ -64,7 +66,7 @@ export const VCombobox = genericComponent()({
64
66
  const vTextFieldRef = ref();
65
67
  const isFocused = ref(false);
66
68
  const isPristine = ref(true);
67
- const menu = ref(false);
69
+ const menu = useProxiedModel(props, 'menu');
68
70
  const selectionIndex = ref(-1);
69
71
  const color = computed(() => {
70
72
  var _vTextFieldRef$value;
@@ -81,8 +83,10 @@ export const VCombobox = genericComponent()({
81
83
  textColorStyles
82
84
  } = useTextColor(color);
83
85
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(wrapInArray(v || [])), v => {
86
+ var _transformed$;
87
+
84
88
  const transformed = transformOut(v);
85
- return props.multiple ? transformed : transformed[0];
89
+ return props.multiple ? transformed : (_transformed$ = transformed[0]) != null ? _transformed$ : null;
86
90
  });
87
91
 
88
92
  const _search = ref('');
@@ -90,13 +94,12 @@ export const VCombobox = genericComponent()({
90
94
  const search = computed({
91
95
  get: () => {
92
96
  if (props.multiple) return _search.value;
93
- const item = items.value.find(_ref2 => {
94
- let {
95
- props
96
- } = _ref2;
97
- return props.value === model.value[0];
97
+ const item = items.value.find(item => {
98
+ var _model$value$;
99
+
100
+ return item.value === ((_model$value$ = model.value[0]) == null ? void 0 : _model$value$.value);
98
101
  });
99
- return item == null ? void 0 : item.props.value;
102
+ return item == null ? void 0 : item.value;
100
103
  },
101
104
  set: val => {
102
105
  var _props$delimiters;
@@ -213,10 +216,6 @@ export const VCombobox = genericComponent()({
213
216
  }
214
217
  }
215
218
 
216
- function onInput(e) {
217
- search.value = e.target.value;
218
- }
219
-
220
219
  function onAfterLeave() {
221
220
  if (isFocused.value) isPristine.value = true;
222
221
  }
@@ -262,7 +261,10 @@ export const VCombobox = genericComponent()({
262
261
  return _createVNode(VTextField, {
263
262
  "ref": vTextFieldRef,
264
263
  "modelValue": search.value,
265
- "onInput": onInput,
264
+ "onUpdate:modelValue": [$event => search.value = $event, v => {
265
+ if (v == null) model.value = [];
266
+ }],
267
+ "validationValue": props.modelValue,
266
268
  "class": ['v-combobox', {
267
269
  'v-combobox--active-menu': menu.value,
268
270
  'v-combobox--chips': !!props.chips,
@@ -270,7 +272,6 @@ export const VCombobox = genericComponent()({
270
272
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
271
273
  }],
272
274
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
273
- "dirty": selected.value.length > 0,
274
275
  "onClick:clear": onClear,
275
276
  "onClick:control": onClickControl,
276
277
  "onClick:input": onClickControl,
@@ -281,31 +282,48 @@ export const VCombobox = genericComponent()({
281
282
  default: () => {
282
283
  var _slots$noData, _slots$noData2;
283
284
 
284
- return _createVNode(_Fragment, null, [_createVNode(VMenu, {
285
+ return _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({
285
286
  "modelValue": menu.value,
286
287
  "onUpdate:modelValue": $event => menu.value = $event,
287
288
  "activator": "parent",
288
289
  "contentClass": "v-combobox__content",
289
290
  "eager": props.eager,
290
291
  "openOnClick": false,
292
+ "closeOnContentClick": false,
291
293
  "transition": props.transition,
292
294
  "onAfterLeave": onAfterLeave
293
- }, {
295
+ }, props.menuProps), {
294
296
  default: () => [_createVNode(VList, {
295
297
  "selected": selected.value,
296
- "selectStrategy": props.multiple ? 'independent' : 'single-independent'
298
+ "selectStrategy": props.multiple ? 'independent' : 'single-independent',
299
+ "onMousedown": e => e.preventDefault()
297
300
  }, {
298
301
  default: () => [!filteredItems.value.length && !props.hideNoData && ((_slots$noData = (_slots$noData2 = slots['no-data']) == null ? void 0 : _slots$noData2.call(slots)) != null ? _slots$noData : _createVNode(VListItem, {
299
302
  "title": t(props.noDataText)
300
- }, null)), filteredItems.value.map(_ref3 => {
303
+ }, null)), filteredItems.value.map(_ref2 => {
304
+ var _slots$item, _slots$item2;
305
+
301
306
  let {
302
307
  item,
303
308
  matches
304
- } = _ref3;
305
- return _createVNode(VListItem, _mergeProps(item.props, {
306
- "onMousedown": e => e.preventDefault(),
309
+ } = _ref2;
310
+ return (_slots$item = (_slots$item2 = slots.item) == null ? void 0 : _slots$item2.call(slots, {
311
+ item,
312
+ props: mergeProps(item.props, {
313
+ onClick: () => select(item)
314
+ })
315
+ })) != null ? _slots$item : _createVNode(VListItem, _mergeProps(item.props, {
307
316
  "onClick": () => select(item)
308
317
  }), {
318
+ prepend: _ref3 => {
319
+ let {
320
+ isSelected
321
+ } = _ref3;
322
+ return props.multiple ? _createVNode(VCheckboxBtn, {
323
+ "modelValue": isSelected,
324
+ "ripple": false
325
+ }, null) : undefined;
326
+ },
309
327
  title: () => {
310
328
  var _search$value$length, _search$value;
311
329
 
@@ -314,11 +332,11 @@ export const VCombobox = genericComponent()({
314
332
  });
315
333
  })]
316
334
  })]
317
- }), selections.value.map((selection, index) => {
335
+ }), selections.value.map((item, index) => {
318
336
  function onChipClose(e) {
319
337
  e.stopPropagation();
320
338
  e.preventDefault();
321
- select(selection);
339
+ select(item);
322
340
  }
323
341
 
324
342
  const slotProps = {
@@ -333,21 +351,21 @@ export const VCombobox = genericComponent()({
333
351
  VChip: {
334
352
  closable: props.closableChips,
335
353
  size: 'small',
336
- text: selection.props.title
354
+ text: item.title
337
355
  }
338
356
  }
339
357
  }, {
340
358
  default: () => [slots.chip ? slots.chip({
341
359
  props: slotProps,
342
- item: selection.originalItem,
360
+ item,
343
361
  index
344
362
  }) : _createVNode(VChip, slotProps, null)]
345
363
  }) : slots.selection ? slots.selection({
346
- item: selection.originalItem,
364
+ item,
347
365
  index
348
366
  }) : _createVNode("span", {
349
367
  "class": "v-combobox__selection-text"
350
- }, [selection.props.title, props.multiple && index < selections.value.length - 1 && _createVNode("span", {
368
+ }, [item.title, props.multiple && index < selections.value.length - 1 && _createVNode("span", {
351
369
  "class": "v-combobox__selection-comma"
352
370
  }, [_createTextVNode(",")])])]);
353
371
  })]);
@@ -1 +1 @@
1
- {"version":3,"file":"VCombobox.mjs","names":["makeSelectProps","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","transformItem","useItems","useForwardRef","useLocale","useProxiedModel","useTextColor","computed","nextTick","ref","watch","genericComponent","useRender","wrapInArray","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","returnObject","transition","emits","val","setup","emit","slots","t","vTextFieldRef","isFocused","isPristine","menu","selectionIndex","color","value","items","transformIn","transformOut","textColorClasses","textColorStyles","model","v","transformed","multiple","_search","search","get","item","find","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","map","selected","selection","onClear","e","openOnClear","onClickControl","onKeydown","selectionStart","preventDefault","includes","key","prev","setSelectionRange","next","onInput","target","onAfterLeave","index","findIndex","splice","title","hasChips","chips","chip","menuIcon","default","eager","noDataText","onChipClose","stopPropagation","slotProps","modelValue","closable","closableChips","size","originalItem"],"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\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 { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { transformItem, useItems } from '@/composables/items'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { genericComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\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-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__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 ? Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VCombobox = genericComponent<new <\n T,\n ReturnObject extends boolean = true,\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?: Readonly<V>\n 'onUpdate:modelValue'?: (val: V) => void\n }\n $slots: VInputSlots & VFieldSlots & MakeSlots<{\n chip: [{ item: T, index: number, props: Record<string, unknown> }]\n selection: [{ item: T, index: number }]\n 'no-data': []\n }>\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:searchInput': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = ref(false)\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 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]\n }\n )\n const _search = ref('')\n const search = computed<string>({\n get: () => {\n if (props.multiple) return _search.value\n\n const item = items.value.find(({ props }) => props.value === model.value[0])\n\n return item?.props.value\n },\n set: val => {\n if (props.multiple) {\n _search.value = val\n } else {\n model.value = [transformItem(props, val)]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select(transformItem(props, v))\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n emit('update:searchInput', value)\n })\n\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => item.value === v.value) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !filteredItems.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\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 (!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 select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\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 if (e.key === 'Enter') {\n select(transformItem(props, search.value))\n search.value = ''\n }\n }\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => 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\n search.value = ''\n } else {\n search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value = [...model.value, transformItem(props, search.value)]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n modelValue={ search.value }\n onInput={ onInput }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n dirty={ selected.value.length > 0 }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n >\n { !filteredItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { filteredItems.value.map(({ item, matches }) => (\n <VListItem\n { ...item.props }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onClick={ () => select(item) }\n >\n {{\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n </VList>\n </VMenu>\n\n { selections.value.map((selection, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(selection)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n }\n\n return (\n <div\n class={[\n 'v-combobox__selection',\n index === selectionIndex.value && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: selection.props.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, item: selection.originalItem, index })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item: selection.originalItem, index })\n : (\n <span class=\"v-combobox__selection-text\">\n { selection.props.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VCombobox.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","transformItem","useItems","useForwardRef","useLocale","useProxiedModel","useTextColor","computed","mergeProps","nextTick","ref","watch","genericComponent","useRender","wrapInArray","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","returnObject","transition","emits","val","setup","emit","slots","t","vTextFieldRef","isFocused","isPristine","menu","selectionIndex","color","value","items","transformIn","transformOut","textColorClasses","textColorStyles","model","v","transformed","multiple","_search","search","get","item","find","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","map","selected","selection","onClear","e","openOnClear","onClickControl","onKeydown","selectionStart","preventDefault","includes","key","prev","setSelectionRange","next","onAfterLeave","index","findIndex","splice","title","hasChips","chips","chip","modelValue","menuIcon","default","eager","menuProps","noDataText","onClick","prepend","isSelected","onChipClose","stopPropagation","slotProps","closable","closableChips","size"],"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"sourcesContent":["// Styles\nimport './VCombobox.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 { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { transformItem, useItems } from '@/composables/items'\nimport { useForwardRef } from '@/composables/forwardRef'\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, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\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-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__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 ? Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VCombobox = genericComponent<new <\n T,\n ReturnObject extends boolean = true,\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?: Readonly<V>\n 'onUpdate:modelValue'?: (val: V) => void\n }\n $slots: VInputSlots & VFieldSlots & MakeSlots<{\n chip: [{ item: T, index: number, props: Record<string, unknown> }]\n selection: [{ item: T, index: number }]\n 'no-data': []\n }>\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:searchInput': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = useProxiedModel(props, 'menu')\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 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 _search = ref('')\n const search = computed<string>({\n get: () => {\n if (props.multiple) return _search.value\n\n const item = items.value.find(item => item.value === model.value[0]?.value)\n\n return item?.value\n },\n set: val => {\n if (props.multiple) {\n _search.value = val\n } else {\n model.value = [transformItem(props, val)]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select(transformItem(props, v))\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n emit('update:searchInput', value)\n })\n\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => item.value === v.value) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !filteredItems.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\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 (!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 select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\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 if (e.key === 'Enter') {\n select(transformItem(props, search.value))\n search.value = ''\n }\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => 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\n search.value = ''\n } else {\n search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value = [...model.value, transformItem(props, search.value)]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ props.modelValue }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n { !filteredItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { filteredItems.value.map(({ item, matches }) => slots.item?.({\n item,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple ? (\n <VCheckboxBtn modelValue={ isSelected } ripple={ false } />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n </VList>\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 }\n\n return (\n <div\n class={[\n 'v-combobox__selection',\n index === selectionIndex.value && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, item, index })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item, index })\n : (\n <span class=\"v-combobox__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- @forward './variables'
2
1
  @use 'sass:selector'
3
2
  @use 'sass:math'
4
3
  @use '../../styles/settings'
5
4
  @use '../../styles/tools'
6
5
  @use './variables' as *
7
- @use '../VInput/variables' as *
8
6
 
9
7
  .v-combobox
10
8
  .v-field
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/settings'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use '../../styles/tools'
3
2
  @use './variables' as *
4
3
 
@@ -1,4 +1,3 @@
1
- @forward './variables'
2
1
  @use 'sass:math'
3
2
  @use '../../styles/settings'
4
3
  @use '../../styles/tools'
@@ -31,13 +31,13 @@
31
31
  .v-field--appended {
32
32
  padding-inline-end: 12px;
33
33
  }
34
- .v-field--variant-contained {
34
+ .v-field--variant-solo {
35
35
  background: rgb(var(--v-theme-surface));
36
36
  border-color: transparent;
37
- color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
37
+ color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity));
38
38
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
39
39
  }
40
- .v-field--variant-contained, .v-field--variant-filled {
40
+ .v-field--variant-filled {
41
41
  border-bottom-left-radius: 0;
42
42
  border-bottom-right-radius: 0;
43
43
  }
@@ -54,17 +54,17 @@
54
54
  .v-field--variant-outlined, .v-field--single-line {
55
55
  --v-field-padding-top: 0;
56
56
  }
57
- .v-input--density-default .v-field--variant-contained, .v-input--density-default .v-field--variant-filled {
57
+ .v-input--density-default .v-field--variant-solo, .v-input--density-default .v-field--variant-filled {
58
58
  --v-input-control-height: 56px;
59
59
  --v-field-padding-bottom: 6px;
60
60
  }
61
61
 
62
- .v-input--density-comfortable .v-field--variant-contained, .v-input--density-comfortable .v-field--variant-filled {
62
+ .v-input--density-comfortable .v-field--variant-solo, .v-input--density-comfortable .v-field--variant-filled {
63
63
  --v-input-control-height: 48px;
64
64
  --v-field-padding-bottom: 2px;
65
65
  }
66
66
 
67
- .v-input--density-compact .v-field--variant-contained, .v-input--density-compact .v-field--variant-filled {
67
+ .v-input--density-compact .v-field--variant-solo, .v-input--density-compact .v-field--variant-filled {
68
68
  --v-input-control-height: 40px;
69
69
  --v-field-padding-bottom: -2px;
70
70
  }
@@ -212,15 +212,15 @@
212
212
  .v-field.v-field--active .v-label.v-field-label--floating {
213
213
  visibility: visible;
214
214
  }
215
- .v-input--density-default .v-field--variant-contained .v-label.v-field-label--floating, .v-input--density-default .v-field--variant-filled .v-label.v-field-label--floating {
215
+ .v-input--density-default .v-field--variant-solo .v-label.v-field-label--floating, .v-input--density-default .v-field--variant-filled .v-label.v-field-label--floating {
216
216
  top: 7px;
217
217
  }
218
218
 
219
- .v-input--density-comfortable .v-field--variant-contained .v-label.v-field-label--floating, .v-input--density-comfortable .v-field--variant-filled .v-label.v-field-label--floating {
219
+ .v-input--density-comfortable .v-field--variant-solo .v-label.v-field-label--floating, .v-input--density-comfortable .v-field--variant-filled .v-label.v-field-label--floating {
220
220
  top: 5px;
221
221
  }
222
222
 
223
- .v-input--density-compact .v-field--variant-contained .v-label.v-field-label--floating, .v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating {
223
+ .v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating, .v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating {
224
224
  top: 3px;
225
225
  }
226
226
 
@@ -15,7 +15,7 @@ import { IconValue } from "../../composables/icons.mjs"; // Utilities
15
15
  import { computed, ref, toRef, watch } from 'vue';
16
16
  import { convertToUnit, genericComponent, getUid, nullifyTransforms, pick, propsFactory, standardEasing, useRender } from "../../util/index.mjs"; // Types
17
17
 
18
- const allowedVariants = ['underlined', 'outlined', 'filled', 'contained', 'plain'];
18
+ const allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'plain'];
19
19
  export const makeVFieldProps = propsFactory({
20
20
  appendInnerIcon: IconValue,
21
21
  bgColor: String,
@@ -187,7 +187,7 @@ export const VField = genericComponent()({
187
187
  }, null), slots == null ? void 0 : (_slots$prependInner = slots.prependInner) == null ? void 0 : _slots$prependInner.call(slots, slotProps.value)]), _createVNode("div", {
188
188
  "class": "v-field__field",
189
189
  "data-no-activator": ""
190
- }, [['contained', 'filled'].includes(props.variant) && hasLabel.value && _createVNode(VFieldLabel, {
190
+ }, [['solo', 'filled'].includes(props.variant) && hasLabel.value && _createVNode(VFieldLabel, {
191
191
  "ref": floatingLabelRef,
192
192
  "class": [textColorClasses.value],
193
193
  "floating": true
@@ -1 +1 @@
1
- {"version":3,"file":"VField.mjs","names":["VExpandXTransition","VIcon","VFieldLabel","LoaderSlot","makeLoaderProps","useLoader","makeThemeProps","provideTheme","useBackgroundColor","useTextColor","makeFocusProps","useFocus","IconValue","computed","ref","toRef","watch","convertToUnit","genericComponent","getUid","nullifyTransforms","pick","propsFactory","standardEasing","useRender","allowedVariants","makeVFieldProps","appendInnerIcon","bgColor","String","clearable","Boolean","clearIcon","type","default","active","color","dirty","disabled","error","label","persistentClear","prependInnerIcon","reverse","singleLine","variant","validator","v","includes","VField","name","inheritAttrs","props","id","emits","e","focused","val","setup","attrs","emit","slots","themeClasses","loaderClasses","focusClasses","isFocused","focus","blur","isActive","hasLabel","uid","labelRef","floatingLabelRef","controlRef","backgroundColorClasses","backgroundColorStyles","textColorClasses","textColorStyles","value","undefined","el","$el","targetEl","rect","targetRect","getBoundingClientRect","x","y","height","targetWidth","width","Math","abs","maxWidth","duration","parseFloat","getComputedStyle","transitionDuration","scale","getPropertyValue","style","visibility","animate","transform","easing","direction","finished","then","removeProperty","flush","slotProps","onClick","target","document","activeElement","preventDefault","isOutlined","hasPrepend","prependInner","hasClear","clear","hasAppend","appendInner","for","loading","loader","class","filterFieldProps","Object","keys"],"sources":["../../../src/components/VField/VField.tsx"],"sourcesContent":["// Styles\nimport './VField.sass'\n\n// Components\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\nimport { VFieldLabel } from './VFieldLabel'\n\n// Composables\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getUid,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { VInputSlot } from '@/components/VInput/VInput'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'contained', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n color: String,\n dirty: Boolean,\n disabled: Boolean,\n error: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n ...makeThemeProps(),\n ...makeLoaderProps(),\n}, 'v-field')\n\nexport type VFieldSlots = MakeSlots<{\n clear: []\n prependInner: [DefaultInputSlot & VInputSlot]\n appendInner: [DefaultInputSlot & VInputSlot]\n label: [DefaultInputSlot & VInputSlot]\n loader: [LoaderSlotProps]\n default: [VFieldSlot]\n}>\n\nexport const VField = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n }\n $slots: VFieldSlots\n}>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:clear': (e: MouseEvent) => true,\n 'click:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n isActive.value &&\n isFocused.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const duration = parseFloat(getComputedStyle(el).transitionDuration) * 1000\n const scale = parseFloat(getComputedStyle(targetEl).getPropertyValue('--v-field-label-scale'))\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n el.animate([\n { transform: 'translate(0)' },\n { transform: `translate(${x}px, ${y}px) scale(${scale})`, ...width },\n ], {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n\n emit('click:control', e)\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = (slots.prependInner || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear)\n const hasAppend = !!(slots.appendInner || props.appendInnerIcon || hasClear)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--has-label': !!label,\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n textColorStyles.value,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ props.loading }\n color={ props.error ? 'error' : props.color }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div\n class=\"v-field__prepend-inner\"\n >\n { props.prependInnerIcon && (\n <VIcon\n onClick={ attrs['onClick:prependInner'] }\n icon={ props.prependInnerIcon }\n />\n ) }\n\n { slots?.prependInner?.(slotProps.value) }\n </div>\n ) }\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n { ['contained', 'filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n >\n { label }\n </VFieldLabel>\n ) }\n\n <VFieldLabel ref={ labelRef } for={ id.value }>\n { label }\n </VFieldLabel>\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n },\n focus,\n blur,\n } as VFieldSlot) }\n </div>\n\n { hasClear && (\n <VExpandXTransition>\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n >\n { slots.clear\n ? slots.clear()\n : (\n <VIcon\n onClick={ (e: MouseEvent) => emit('click:clear', e) }\n icon={ props.clearIcon }\n />\n )\n }\n </div>\n </VExpandXTransition>\n ) }\n\n { hasAppend && (\n <div\n class=\"v-field__append-inner\"\n >\n { slots?.appendInner?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <VIcon\n onClick={ attrs['onClick:appendInner'] }\n icon={ props.appendInnerIcon }\n />\n ) }\n </div>\n ) }\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating>\n { label }\n </VFieldLabel>\n </div>\n ) }\n\n <div class=\"v-field__outline__end\" />\n </>\n ) }\n\n { ['plain', 'underlined'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating>\n { label }\n </VFieldLabel>\n ) }\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n return pick(attrs, Object.keys(VField.props))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VField.mjs","names":["VExpandXTransition","VIcon","VFieldLabel","LoaderSlot","makeLoaderProps","useLoader","makeThemeProps","provideTheme","useBackgroundColor","useTextColor","makeFocusProps","useFocus","IconValue","computed","ref","toRef","watch","convertToUnit","genericComponent","getUid","nullifyTransforms","pick","propsFactory","standardEasing","useRender","allowedVariants","makeVFieldProps","appendInnerIcon","bgColor","String","clearable","Boolean","clearIcon","type","default","active","color","dirty","disabled","error","label","persistentClear","prependInnerIcon","reverse","singleLine","variant","validator","v","includes","VField","name","inheritAttrs","props","id","emits","e","focused","val","setup","attrs","emit","slots","themeClasses","loaderClasses","focusClasses","isFocused","focus","blur","isActive","hasLabel","uid","labelRef","floatingLabelRef","controlRef","backgroundColorClasses","backgroundColorStyles","textColorClasses","textColorStyles","value","undefined","el","$el","targetEl","rect","targetRect","getBoundingClientRect","x","y","height","targetWidth","width","Math","abs","maxWidth","duration","parseFloat","getComputedStyle","transitionDuration","scale","getPropertyValue","style","visibility","animate","transform","easing","direction","finished","then","removeProperty","flush","slotProps","onClick","target","document","activeElement","preventDefault","isOutlined","hasPrepend","prependInner","hasClear","clear","hasAppend","appendInner","for","loading","loader","class","filterFieldProps","Object","keys"],"sources":["../../../src/components/VField/VField.tsx"],"sourcesContent":["// Styles\nimport './VField.sass'\n\n// Components\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\nimport { VFieldLabel } from './VFieldLabel'\n\n// Composables\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getUid,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { VInputSlot } from '@/components/VInput/VInput'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n color: String,\n dirty: Boolean,\n disabled: Boolean,\n error: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n ...makeThemeProps(),\n ...makeLoaderProps(),\n}, 'v-field')\n\nexport type VFieldSlots = MakeSlots<{\n clear: []\n prependInner: [DefaultInputSlot & VInputSlot]\n appendInner: [DefaultInputSlot & VInputSlot]\n label: [DefaultInputSlot & VInputSlot]\n loader: [LoaderSlotProps]\n default: [VFieldSlot]\n}>\n\nexport const VField = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n }\n $slots: VFieldSlots\n}>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:clear': (e: MouseEvent) => true,\n 'click:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n isActive.value &&\n isFocused.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const duration = parseFloat(getComputedStyle(el).transitionDuration) * 1000\n const scale = parseFloat(getComputedStyle(targetEl).getPropertyValue('--v-field-label-scale'))\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n el.animate([\n { transform: 'translate(0)' },\n { transform: `translate(${x}px, ${y}px) scale(${scale})`, ...width },\n ], {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n\n emit('click:control', e)\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = (slots.prependInner || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear)\n const hasAppend = !!(slots.appendInner || props.appendInnerIcon || hasClear)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--has-label': !!label,\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n textColorStyles.value,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ props.loading }\n color={ props.error ? 'error' : props.color }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div\n class=\"v-field__prepend-inner\"\n >\n { props.prependInnerIcon && (\n <VIcon\n onClick={ attrs['onClick:prependInner'] }\n icon={ props.prependInnerIcon }\n />\n ) }\n\n { slots?.prependInner?.(slotProps.value) }\n </div>\n ) }\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n { ['solo', 'filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n >\n { label }\n </VFieldLabel>\n ) }\n\n <VFieldLabel ref={ labelRef } for={ id.value }>\n { label }\n </VFieldLabel>\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n },\n focus,\n blur,\n } as VFieldSlot) }\n </div>\n\n { hasClear && (\n <VExpandXTransition>\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n >\n { slots.clear\n ? slots.clear()\n : (\n <VIcon\n onClick={ (e: MouseEvent) => emit('click:clear', e) }\n icon={ props.clearIcon }\n />\n )\n }\n </div>\n </VExpandXTransition>\n ) }\n\n { hasAppend && (\n <div\n class=\"v-field__append-inner\"\n >\n { slots?.appendInner?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <VIcon\n onClick={ attrs['onClick:appendInner'] }\n icon={ props.appendInnerIcon }\n />\n ) }\n </div>\n ) }\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating>\n { label }\n </VFieldLabel>\n </div>\n ) }\n\n <div class=\"v-field__outline__end\" />\n </>\n ) }\n\n { ['plain', 'underlined'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating>\n { label }\n </VFieldLabel>\n ) }\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n return pick(attrs, Object.keys(VField.props))\n}\n"],"mappings":"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"}