vuetify 3.8.4 → 3.8.6

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 (85) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +3300 -2956
  3. package/dist/json/importMap-labs.json +24 -20
  4. package/dist/json/importMap.json +182 -182
  5. package/dist/json/tags.json +91 -0
  6. package/dist/json/web-types.json +6720 -5503
  7. package/dist/vuetify-labs.cjs +294 -51
  8. package/dist/vuetify-labs.css +4169 -4130
  9. package/dist/vuetify-labs.d.ts +2235 -1152
  10. package/dist/vuetify-labs.esm.js +294 -51
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +294 -51
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +22 -42
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +2580 -2544
  17. package/dist/vuetify.d.ts +532 -526
  18. package/dist/vuetify.esm.js +22 -42
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +22 -42
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +582 -579
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.d.ts +84 -84
  26. package/lib/components/VAutocomplete/VAutocomplete.js +0 -5
  27. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  28. package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
  29. package/lib/components/VBottomSheet/VBottomSheet.sass +1 -1
  30. package/lib/components/VBtn/VBtn.css +25 -0
  31. package/lib/components/VBtn/VBtn.sass +9 -0
  32. package/lib/components/VBtn/_variables.scss +1 -0
  33. package/lib/components/VCheckbox/VCheckbox.d.ts +12 -12
  34. package/lib/components/VCombobox/VCombobox.d.ts +84 -84
  35. package/lib/components/VFileInput/VFileInput.d.ts +30 -30
  36. package/lib/components/VInput/VInput.d.ts +12 -12
  37. package/lib/components/VList/VList.d.ts +3 -3
  38. package/lib/components/VList/VList.js.map +1 -1
  39. package/lib/components/VNumberInput/VNumberInput.css +15 -4
  40. package/lib/components/VNumberInput/VNumberInput.d.ts +80 -80
  41. package/lib/components/VNumberInput/VNumberInput.sass +18 -6
  42. package/lib/components/VRadioGroup/VRadioGroup.d.ts +12 -12
  43. package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
  44. package/lib/components/VSelect/VSelect.d.ts +84 -84
  45. package/lib/components/VSelect/VSelect.js +6 -4
  46. package/lib/components/VSelect/VSelect.js.map +1 -1
  47. package/lib/components/VSlider/VSlider.d.ts +12 -12
  48. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -1
  49. package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
  50. package/lib/components/VSwitch/VSwitch.d.ts +12 -12
  51. package/lib/components/VTextField/VTextField.d.ts +30 -30
  52. package/lib/components/VTextarea/VTextarea.d.ts +30 -30
  53. package/lib/components/VValidation/VValidation.d.ts +8 -8
  54. package/lib/composables/dateFormat.d.ts +24 -0
  55. package/lib/composables/dateFormat.js +112 -0
  56. package/lib/composables/dateFormat.js.map +1 -0
  57. package/lib/composables/validation.d.ts +6 -5
  58. package/lib/composables/validation.js +4 -29
  59. package/lib/composables/validation.js.map +1 -1
  60. package/lib/entry-bundler.js +1 -1
  61. package/lib/framework.d.ts +71 -68
  62. package/lib/framework.js +1 -1
  63. package/lib/iconsets/mdi.js +2 -1
  64. package/lib/iconsets/mdi.js.map +1 -1
  65. package/lib/labs/VColorInput/VColorInput.css +4 -0
  66. package/lib/labs/VColorInput/VColorInput.d.ts +1767 -0
  67. package/lib/labs/VColorInput/VColorInput.js +129 -0
  68. package/lib/labs/VColorInput/VColorInput.js.map +1 -0
  69. package/lib/labs/VColorInput/VColorInput.sass +7 -0
  70. package/lib/labs/VColorInput/_variables.scss +2 -0
  71. package/lib/labs/VColorInput/index.d.ts +1 -0
  72. package/lib/labs/VColorInput/index.js +2 -0
  73. package/lib/labs/VColorInput/index.js.map +1 -0
  74. package/lib/labs/VDateInput/VDateInput.d.ts +130 -105
  75. package/lib/labs/VDateInput/VDateInput.js +43 -10
  76. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  77. package/lib/labs/components.d.ts +1 -0
  78. package/lib/labs/components.js +1 -0
  79. package/lib/labs/components.js.map +1 -1
  80. package/lib/labs/rules/rules.d.ts +9 -5
  81. package/lib/labs/rules/rules.js +73 -51
  82. package/lib/labs/rules/rules.js.map +1 -1
  83. package/lib/util/helpers.js +1 -1
  84. package/lib/util/helpers.js.map +1 -1
  85. package/package.json +2 -3
@@ -5,13 +5,14 @@ import { makeVDatePickerProps, VDatePicker } from "../../components/VDatePicker/
5
5
  import { VMenu } from "../../components/VMenu/VMenu.js";
6
6
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
7
7
  import { useDate } from "../../composables/date/index.js";
8
+ import { makeDateFormatProps, useDateFormat } from "../../composables/dateFormat.js";
8
9
  import { makeDisplayProps, useDisplay } from "../../composables/display.js";
9
10
  import { makeFocusProps, useFocus } from "../../composables/focus.js";
10
11
  import { forwardRefs } from "../../composables/forwardRefs.js";
11
12
  import { useLocale } from "../../composables/locale.js";
12
13
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
13
14
  import { computed, ref, shallowRef, watch } from 'vue';
14
- import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
15
+ import { createRange, genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
15
16
  // Types
16
17
  export const makeVDateInputProps = propsFactory({
17
18
  displayFormat: [Function, String],
@@ -19,10 +20,12 @@ export const makeVDateInputProps = propsFactory({
19
20
  type: String,
20
21
  default: 'bottom start'
21
22
  },
23
+ menu: Boolean,
22
24
  updateOn: {
23
25
  type: Array,
24
26
  default: () => ['blur', 'enter']
25
27
  },
28
+ ...makeDateFormatProps(),
26
29
  ...makeDisplayProps({
27
30
  mobile: null
28
31
  }),
@@ -31,7 +34,6 @@ export const makeVDateInputProps = propsFactory({
31
34
  hideActions: true
32
35
  }),
33
36
  ...makeVTextFieldProps({
34
- placeholder: 'mm/dd/yyyy',
35
37
  prependIcon: '$calendar'
36
38
  }),
37
39
  ...omit(makeVDatePickerProps({
@@ -45,7 +47,8 @@ export const VDateInput = genericComponent()({
45
47
  emits: {
46
48
  save: value => true,
47
49
  cancel: () => true,
48
- 'update:modelValue': val => true
50
+ 'update:modelValue': val => true,
51
+ 'update:menu': val => true
49
52
  },
50
53
  setup(props, _ref) {
51
54
  let {
@@ -53,9 +56,16 @@ export const VDateInput = genericComponent()({
53
56
  slots
54
57
  } = _ref;
55
58
  const {
56
- t
59
+ t,
60
+ current: currentLocale
57
61
  } = useLocale();
58
62
  const adapter = useDate();
63
+ const {
64
+ isValid,
65
+ parseDate,
66
+ formatDate,
67
+ parserFormat
68
+ } = useDateFormat(props, currentLocale);
59
69
  const {
60
70
  mobile
61
71
  } = useDisplay(props);
@@ -66,7 +76,7 @@ export const VDateInput = genericComponent()({
66
76
  } = useFocus(props);
67
77
  const emptyModelValue = () => props.multiple ? [] : null;
68
78
  const model = useProxiedModel(props, 'modelValue', emptyModelValue(), val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
69
- const menu = shallowRef(false);
79
+ const menu = useProxiedModel(props, 'menu');
70
80
  const isEditingInput = shallowRef(false);
71
81
  const vTextFieldRef = ref();
72
82
  const disabledActions = ref(['save']);
@@ -74,7 +84,10 @@ export const VDateInput = genericComponent()({
74
84
  if (typeof props.displayFormat === 'function') {
75
85
  return props.displayFormat(date);
76
86
  }
77
- return adapter.format(date, props.displayFormat ?? 'keyboardDate');
87
+ if (props.displayFormat) {
88
+ return adapter.format(date, props.displayFormat ?? 'keyboardDate');
89
+ }
90
+ return formatDate(date);
78
91
  }
79
92
  const display = computed(() => {
80
93
  const value = wrapInArray(model.value);
@@ -109,7 +122,6 @@ export const VDateInput = genericComponent()({
109
122
  if (e.key !== 'Enter') return;
110
123
  if (!menu.value || !isFocused.value) {
111
124
  menu.value = true;
112
- return;
113
125
  }
114
126
  if (props.updateOn.includes('enter')) {
115
127
  onUserInput(e.target);
@@ -153,13 +165,32 @@ export const VDateInput = genericComponent()({
153
165
  let {
154
166
  value
155
167
  } = _ref2;
156
- if (value && !adapter.isValid(value)) return;
157
- model.value = !value ? emptyModelValue() : value;
168
+ if (!value.trim()) {
169
+ model.value = emptyModelValue();
170
+ } else if (!props.multiple) {
171
+ if (isValid(value)) {
172
+ model.value = parseDate(value);
173
+ }
174
+ } else {
175
+ const parts = value.trim().split(/\D+-\D+|[^\d\-/.]+/);
176
+ if (parts.every(isValid)) {
177
+ if (props.multiple === 'range') {
178
+ model.value = getRange(parts);
179
+ } else {
180
+ model.value = parts.map(parseDate);
181
+ }
182
+ }
183
+ }
184
+ }
185
+ function getRange(inputDates) {
186
+ const [start, stop] = inputDates.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
187
+ const diff = adapter.getDiff(stop ?? start, start, 'days');
188
+ return [start, ...createRange(diff, 1).map(i => adapter.addDays(start, i))];
158
189
  }
159
190
  useRender(() => {
160
191
  const confirmEditProps = VConfirmEdit.filterProps(props);
161
192
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
162
- const textFieldProps = VTextField.filterProps(props);
193
+ const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']));
163
194
  return _createVNode(VTextField, _mergeProps({
164
195
  "ref": vTextFieldRef
165
196
  }, textFieldProps, {
@@ -167,11 +198,13 @@ export const VDateInput = genericComponent()({
167
198
  "style": props.style,
168
199
  "modelValue": display.value,
169
200
  "inputmode": inputmode.value,
201
+ "placeholder": props.placeholder ?? parserFormat.value,
170
202
  "readonly": isReadonly.value,
171
203
  "onKeydown": isInteractive.value ? onKeydown : undefined,
172
204
  "focused": menu.value || isFocused.value,
173
205
  "onFocus": focus,
174
206
  "onBlur": onBlur,
207
+ "validationValue": model.value,
175
208
  "onClick:control": isInteractive.value ? onClick : undefined,
176
209
  "onClick:prepend": isInteractive.value ? onClick : undefined,
177
210
  "onUpdate:modelValue": onUpdateDisplayModel
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeDisplayProps","useDisplay","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","updateOn","Array","mobile","hideActions","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","adapter","isFocused","focus","blur","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","menu","isEditingInput","vTextFieldRef","disabledActions","format","display","length","start","end","isValid","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","_Fragment","$event","_ref3","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { mobile } = useDisplay(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const isEditingInput = shallowRef(false)\n const vTextFieldRef = ref<VTextField>()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n return\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\n blur()\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n function onUserInput ({ value }: HTMLInputElement) {\n if (value && !adapter.isValid(value)) return\n\n model.value = !value ? emptyModelValue() : value\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ onBlur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeDateFormatProps","useDateFormat","makeDisplayProps","useDisplay","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","createRange","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","menu","Boolean","updateOn","Array","mobile","hideActions","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","current","currentLocale","adapter","isValid","parseDate","formatDate","parserFormat","isFocused","focus","blur","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","isEditingInput","vTextFieldRef","disabledActions","format","display","length","start","end","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","trim","parts","split","every","getRange","inputDates","stop","toSorted","a","b","isAfter","diff","getDiff","i","addDays","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","placeholder","_Fragment","$event","_ref3","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeDateFormatProps, useDateFormat } from '@/composables/dateFormat'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { createRange, genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n menu: Boolean,\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDateFormatProps(),\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:modelValue': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t, current: currentLocale } = useLocale()\n const adapter = useDate()\n const { isValid, parseDate, formatDate, parserFormat } = useDateFormat(props, currentLocale)\n const { mobile } = useDisplay(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = useProxiedModel(props, 'menu')\n const isEditingInput = shallowRef(false)\n const vTextFieldRef = ref<VTextField>()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n if (props.displayFormat) {\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n return formatDate(date)\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\n blur()\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n function onUserInput ({ value }: HTMLInputElement) {\n if (!value.trim()) {\n model.value = emptyModelValue()\n } else if (!props.multiple) {\n if (isValid(value)) {\n model.value = parseDate(value)\n }\n } else {\n const parts = value.trim().split(/\\D+-\\D+|[^\\d\\-/.]+/)\n if (parts.every(isValid)) {\n if (props.multiple === 'range') {\n model.value = getRange(parts)\n } else {\n model.value = parts.map(parseDate)\n }\n }\n }\n }\n\n function getRange (inputDates: string[]) {\n const [start, stop] = inputDates.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1)\n const diff = adapter.getDiff(stop ?? start, start, 'days')\n return [start, ...createRange(diff, 1)\n .map(i => adapter.addDays(start, i))]\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']))\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n placeholder={ props.placeholder ?? parserFormat.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ onBlur }\n validationValue={ model.value }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  export * from './VCalendar/index.js';
2
+ export * from './VColorInput/index.js';
2
3
  export * from './VDateInput/index.js';
3
4
  export * from './VFileUpload/index.js';
4
5
  export * from './VIconBtn/index.js';
@@ -1,4 +1,5 @@
1
1
  export * from "./VCalendar/index.js";
2
+ export * from "./VColorInput/index.js";
2
3
  export * from "./VDateInput/index.js";
3
4
  export * from "./VFileUpload/index.js";
4
5
  export * from "./VIconBtn/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VTimePicker'\nexport * from './VTreeview'\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VColorInput'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VTimePicker'\nexport * from './VTreeview'\n"],"mappings":"","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import type { InjectionKey } from 'vue';
1
+ import type { InjectionKey, Ref } from 'vue';
2
2
  import type { LocaleInstance } from "../../composables/locale.js";
3
- import type { ValidationRule } from "../../composables/validation.js";
3
+ import type { ValidationProps, ValidationRule } from "../../composables/validation.js";
4
4
  export type ValidationRuleBuilderWithoutOptions = (err?: string) => ValidationRule;
5
5
  export type ValidationRuleBuilderWithOptions<T> = (options: T, err?: string) => ValidationRule;
6
6
  export type ValidationRuleBuilder = ValidationRuleBuilderWithoutOptions | ValidationRuleBuilderWithOptions<any>;
@@ -21,6 +21,10 @@ export interface RuleAliases {
21
21
  export type RulesOptions = {
22
22
  aliases?: Partial<RuleAliases>;
23
23
  };
24
- export declare function createRules(options: RulesOptions | undefined, locale: LocaleInstance): Record<string, any>;
25
- export declare const RulesSymbol: InjectionKey<RulesOptions>;
26
- export declare function useRules(): Partial<RuleAliases> | undefined;
24
+ type ValidationRuleParams = [any, string?];
25
+ export type ValidationAlias = string | [string, ...ValidationRuleParams];
26
+ export type RulesInstance = (fn: () => ValidationProps['rules']) => Readonly<Ref<any[]>>;
27
+ export declare function createRules(options: RulesOptions | undefined, locale: LocaleInstance): (fn: () => ValidationProps["rules"]) => import("vue").ComputedRef<(ValidationRule | [string, any, (string | undefined)?])[]>;
28
+ export declare const RulesSymbol: InjectionKey<RulesInstance>;
29
+ export declare function useRules(fn: () => ValidationProps['rules']): Readonly<Ref<any[], any[]>> | Readonly<Ref<readonly (string | boolean | PromiseLike<import("../../composables/validation.js").ValidationResult> | ((value: any) => import("../../composables/validation.js").ValidationResult) | ((value: any) => PromiseLike<import("../../composables/validation.js").ValidationResult>) | [string, any, (string | undefined)?])[], readonly (string | boolean | PromiseLike<import("../../composables/validation.js").ValidationResult> | ((value: any) => import("../../composables/validation.js").ValidationResult) | ((value: any) => PromiseLike<import("../../composables/validation.js").ValidationResult>) | [string, any, (string | undefined)?])[]>>;
30
+
@@ -1,61 +1,83 @@
1
1
  // Utilities
2
- import { inject } from 'vue';
3
- import { mergeDeep } from "../../util/index.js"; // Types
2
+ import { computed, inject, toRef } from 'vue';
3
+
4
+ // Types
5
+
4
6
  export function createRules(options, locale) {
5
7
  const {
6
8
  t
7
9
  } = locale;
8
- return mergeDeep({
9
- aliases: {
10
- required: err => {
11
- return v => {
12
- // If the modifier .number is used, the 0 will be a number and it's a falsy value so we need to check for it
13
- return v === 0 || !!v || t(err || '$vuetify.rules.required');
14
- };
15
- },
16
- email: err => {
17
- return v => !v || typeof v === 'string' && /^.+@\S+\.\S+$/.test(v) || t(err || '$vuetify.rules.email');
18
- },
19
- number: err => {
20
- return v => !!Number(v) || t(err || '$vuetify.rules.number');
21
- },
22
- integer: err => {
23
- return v => /^[\d]*$/.test(v) || t(err || '$vuetify.rules.integer');
24
- },
25
- capital: err => {
26
- return v => /^[A-Z]*$/.test(v) || t(err || '$vuetify.rules.capital');
27
- },
28
- maxLength: (len, err) => {
29
- return v => !v || v.length <= len || t(err || '$vuetify.rules.maxLength', [len]);
30
- },
31
- minLength: (len, err) => {
32
- return v => !v || v.length >= len || t(err || '$vuetify.rules.minLength', [len]);
33
- },
34
- strictLength: (len, err) => {
35
- return v => !v || v.length === len || t(err || '$vuetify.rules.strictLength', [len]);
36
- },
37
- exclude: (forbiddenCharacters, err) => {
38
- return v => {
39
- let error = true;
40
- for (const character of forbiddenCharacters) {
41
- if (v.includes(character)) error = err || t('$vuetify.rules.exclude', character);
42
- }
43
- return error;
44
- };
45
- },
46
- notEmpty: err => {
47
- return v => v && v.length > 0 || t(err || '$vuetify.rules.notEmpty');
48
- },
49
- pattern: (pattern, err) => {
50
- return v => !v || pattern.test(v) || t(err || '$vuetify.rules.pattern');
10
+ const aliases = {
11
+ required: err => {
12
+ return v => {
13
+ // If the modifier .number is used, the 0 will be a number and it's a falsy value so we need to check for it
14
+ return v === 0 || !!v || t(err || '$vuetify.rules.required');
15
+ };
16
+ },
17
+ email: err => {
18
+ return v => !v || typeof v === 'string' && /^.+@\S+\.\S+$/.test(v) || t(err || '$vuetify.rules.email');
19
+ },
20
+ number: err => {
21
+ return v => !!Number(v) || t(err || '$vuetify.rules.number');
22
+ },
23
+ integer: err => {
24
+ return v => /^[\d]*$/.test(v) || t(err || '$vuetify.rules.integer');
25
+ },
26
+ capital: err => {
27
+ return v => /^[A-Z]*$/.test(v) || t(err || '$vuetify.rules.capital');
28
+ },
29
+ maxLength: (len, err) => {
30
+ return v => !v || v.length <= len || t(err || '$vuetify.rules.maxLength', [len]);
31
+ },
32
+ minLength: (len, err) => {
33
+ return v => !v || v.length >= len || t(err || '$vuetify.rules.minLength', [len]);
34
+ },
35
+ strictLength: (len, err) => {
36
+ return v => !v || v.length === len || t(err || '$vuetify.rules.strictLength', [len]);
37
+ },
38
+ exclude: (forbiddenCharacters, err) => {
39
+ return v => {
40
+ let error = true;
41
+ for (const character of forbiddenCharacters) {
42
+ if (v.includes(character)) error = err || t('$vuetify.rules.exclude', character);
43
+ }
44
+ return error;
45
+ };
46
+ },
47
+ notEmpty: err => {
48
+ return v => v && v.length > 0 || t(err || '$vuetify.rules.notEmpty');
49
+ },
50
+ pattern: (pattern, err) => {
51
+ return v => !v || pattern.test(v) || t(err || '$vuetify.rules.pattern');
52
+ },
53
+ ...options?.aliases
54
+ };
55
+ function resolveRules(fn) {
56
+ return computed(() => fn().map(rule => {
57
+ let ruleName = null;
58
+ let ruleParams = [undefined];
59
+ if (Array.isArray(rule)) {
60
+ ruleName = rule[0];
61
+ ruleParams = rule.slice(1);
62
+ } else if (typeof rule === 'string') {
63
+ ruleName = rule;
51
64
  }
52
- }
53
- }, options);
65
+ if (ruleName !== null) {
66
+ if (ruleName.startsWith('$')) {
67
+ ruleName = ruleName.slice(1);
68
+ }
69
+ return aliases[ruleName]?.(...ruleParams);
70
+ } else {
71
+ return rule;
72
+ }
73
+ }));
74
+ }
75
+ return resolveRules;
54
76
  }
55
77
  export const RulesSymbol = Symbol.for('vuetify:rules');
56
- export function useRules() {
57
- const ruleOptions = inject(RulesSymbol);
58
- if (!ruleOptions) throw new Error('Could not find Vuetify rules injection');
59
- return ruleOptions.aliases;
78
+ export function useRules(fn) {
79
+ const resolveRules = inject(RulesSymbol, null);
80
+ if (!resolveRules) return toRef(fn);
81
+ return resolveRules(fn);
60
82
  }
61
83
  //# sourceMappingURL=rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","names":["inject","mergeDeep","createRules","options","locale","t","aliases","required","err","v","email","test","number","Number","integer","capital","maxLength","len","length","minLength","strictLength","exclude","forbiddenCharacters","error","character","includes","notEmpty","pattern","RulesSymbol","Symbol","for","useRules","ruleOptions","Error"],"sources":["../../../src/labs/rules/rules.ts"],"sourcesContent":["// Utilities\nimport { inject } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Types\nimport type { InjectionKey } from 'vue'\nimport type { LocaleInstance } from '@/composables/locale'\nimport type { ValidationRule } from '@/composables/validation'\n\nexport type ValidationRuleBuilderWithoutOptions = (err?: string) => ValidationRule\nexport type ValidationRuleBuilderWithOptions<T> = (options: T, err?: string) => ValidationRule\nexport type ValidationRuleBuilder =\n | ValidationRuleBuilderWithoutOptions\n | ValidationRuleBuilderWithOptions<any>\n\nexport interface RuleAliases {\n [name: string]: ValidationRuleBuilder\n required: ValidationRuleBuilderWithoutOptions\n email: ValidationRuleBuilderWithoutOptions\n number: ValidationRuleBuilderWithoutOptions\n integer: ValidationRuleBuilderWithoutOptions\n capital: ValidationRuleBuilderWithoutOptions\n maxLength: ValidationRuleBuilderWithOptions<number>\n minLength: ValidationRuleBuilderWithOptions<number>\n strictLength: ValidationRuleBuilderWithOptions<number>\n exclude: ValidationRuleBuilderWithOptions<string[]>\n notEmpty: ValidationRuleBuilderWithoutOptions\n pattern: ValidationRuleBuilderWithOptions<RegExp>\n}\n\nexport type RulesOptions = {\n aliases?: Partial<RuleAliases>\n}\n\nexport function createRules (options: RulesOptions | undefined, locale: LocaleInstance) {\n const { t } = locale\n\n return mergeDeep({\n aliases: {\n required: (err?: string) => {\n return (v: any) => {\n // If the modifier .number is used, the 0 will be a number and it's a falsy value so we need to check for it\n return v === 0 || !!v || t(err || '$vuetify.rules.required')\n }\n },\n email: (err?: string) => {\n return (v: any) => (!v || (typeof v === 'string' && /^.+@\\S+\\.\\S+$/.test(v))) || t(err || '$vuetify.rules.email')\n },\n number: (err?: string) => {\n return (v: string) => !!Number(v) || t(err || '$vuetify.rules.number')\n },\n integer: (err?: string) => {\n return (v: string) => (/^[\\d]*$/.test(v)) || t(err || '$vuetify.rules.integer')\n },\n capital: (err?: string) => {\n return (v: string) => (/^[A-Z]*$/.test(v)) || t(err || '$vuetify.rules.capital')\n },\n maxLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length <= len) || t(err || '$vuetify.rules.maxLength', [len])\n },\n minLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length >= len) || t(err || '$vuetify.rules.minLength', [len])\n },\n strictLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length === len) || t(err || '$vuetify.rules.strictLength', [len])\n },\n exclude: (forbiddenCharacters: string[], err?: string) => {\n return (v: string) => {\n let error: string | true = true\n for (const character of forbiddenCharacters) {\n if (v.includes(character)) error = err || t('$vuetify.rules.exclude', character)\n }\n return error\n }\n },\n notEmpty: (err?: string) => {\n return (v: any) => (v && v.length > 0) || t(err || '$vuetify.rules.notEmpty')\n },\n pattern: (pattern: RegExp, err?: string) => {\n return (v: any) => (!v || pattern.test(v) || t(err || '$vuetify.rules.pattern'))\n },\n },\n }, options)\n}\n\nexport const RulesSymbol: InjectionKey<RulesOptions> = Symbol.for('vuetify:rules')\n\nexport function useRules () {\n const ruleOptions = inject(RulesSymbol)\n\n if (!ruleOptions) throw new Error('Could not find Vuetify rules injection')\n\n return ruleOptions.aliases\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"rules.js","names":["computed","inject","toRef","createRules","options","locale","t","aliases","required","err","v","email","test","number","Number","integer","capital","maxLength","len","length","minLength","strictLength","exclude","forbiddenCharacters","error","character","includes","notEmpty","pattern","resolveRules","fn","map","rule","ruleName","ruleParams","undefined","Array","isArray","slice","startsWith","RulesSymbol","Symbol","for","useRules"],"sources":["../../../src/labs/rules/rules.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, toRef } from 'vue'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance } from '@/composables/locale'\nimport type { ValidationProps, ValidationRule } from '@/composables/validation'\n\nexport type ValidationRuleBuilderWithoutOptions = (err?: string) => ValidationRule\nexport type ValidationRuleBuilderWithOptions<T> = (options: T, err?: string) => ValidationRule\nexport type ValidationRuleBuilder =\n | ValidationRuleBuilderWithoutOptions\n | ValidationRuleBuilderWithOptions<any>\n\nexport interface RuleAliases {\n [name: string]: ValidationRuleBuilder\n required: ValidationRuleBuilderWithoutOptions\n email: ValidationRuleBuilderWithoutOptions\n number: ValidationRuleBuilderWithoutOptions\n integer: ValidationRuleBuilderWithoutOptions\n capital: ValidationRuleBuilderWithoutOptions\n maxLength: ValidationRuleBuilderWithOptions<number>\n minLength: ValidationRuleBuilderWithOptions<number>\n strictLength: ValidationRuleBuilderWithOptions<number>\n exclude: ValidationRuleBuilderWithOptions<string[]>\n notEmpty: ValidationRuleBuilderWithoutOptions\n pattern: ValidationRuleBuilderWithOptions<RegExp>\n}\n\nexport type RulesOptions = {\n aliases?: Partial<RuleAliases>\n}\n\ntype ValidationRuleParams = [any, string?]\nexport type ValidationAlias = string | [string, ...ValidationRuleParams]\n\nexport type RulesInstance = (fn: () => ValidationProps['rules']) => Readonly<Ref<any[]>>\n\nexport function createRules (options: RulesOptions | undefined, locale: LocaleInstance) {\n const { t } = locale\n\n const aliases: RuleAliases = {\n required: (err?: string) => {\n return (v: any) => {\n // If the modifier .number is used, the 0 will be a number and it's a falsy value so we need to check for it\n return v === 0 || !!v || t(err || '$vuetify.rules.required')\n }\n },\n email: (err?: string) => {\n return (v: any) => (!v || (typeof v === 'string' && /^.+@\\S+\\.\\S+$/.test(v))) || t(err || '$vuetify.rules.email')\n },\n number: (err?: string) => {\n return (v: string) => !!Number(v) || t(err || '$vuetify.rules.number')\n },\n integer: (err?: string) => {\n return (v: string) => (/^[\\d]*$/.test(v)) || t(err || '$vuetify.rules.integer')\n },\n capital: (err?: string) => {\n return (v: string) => (/^[A-Z]*$/.test(v)) || t(err || '$vuetify.rules.capital')\n },\n maxLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length <= len) || t(err || '$vuetify.rules.maxLength', [len])\n },\n minLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length >= len) || t(err || '$vuetify.rules.minLength', [len])\n },\n strictLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length === len) || t(err || '$vuetify.rules.strictLength', [len])\n },\n exclude: (forbiddenCharacters: string[], err?: string) => {\n return (v: string) => {\n let error: string | true = true\n for (const character of forbiddenCharacters) {\n if (v.includes(character)) error = err || t('$vuetify.rules.exclude', character)\n }\n return error\n }\n },\n notEmpty: (err?: string) => {\n return (v: any) => (v && v.length > 0) || t(err || '$vuetify.rules.notEmpty')\n },\n pattern: (pattern: RegExp, err?: string) => {\n return (v: any) => (!v || pattern.test(v) || t(err || '$vuetify.rules.pattern'))\n },\n\n ...options?.aliases,\n }\n\n function resolveRules (fn: () => ValidationProps['rules']) {\n return computed(() => fn().map(rule => {\n let ruleName: string | null = null\n let ruleParams: ValidationRuleParams = [undefined]\n if (Array.isArray(rule)) {\n ruleName = rule[0]\n ruleParams = rule.slice(1) as ValidationRuleParams\n } else if (typeof rule === 'string') {\n ruleName = rule\n }\n\n if (ruleName !== null) {\n if (ruleName.startsWith('$')) {\n ruleName = ruleName.slice(1)\n }\n\n return aliases[ruleName]?.(...ruleParams)\n } else {\n return rule\n }\n }))\n }\n\n return resolveRules\n}\n\nexport const RulesSymbol: InjectionKey<RulesInstance> = Symbol.for('vuetify:rules')\n\nexport function useRules (fn: () => ValidationProps['rules']) {\n const resolveRules = inject(RulesSymbol, null)\n\n if (!resolveRules) return toRef(fn)\n\n return resolveRules(fn)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -454,7 +454,7 @@ export function getNextElement(elements, location, condition) {
454
454
  }
455
455
  export function focusChild(el, location) {
456
456
  const focusable = focusableChildren(el);
457
- if (!location) {
457
+ if (location == null) {
458
458
  if (el === document.activeElement || !el.contains(document.activeElement)) {
459
459
  focusable[0]?.focus();
460
460
  }