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.
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3300 -2956
- package/dist/json/importMap-labs.json +24 -20
- package/dist/json/importMap.json +182 -182
- package/dist/json/tags.json +91 -0
- package/dist/json/web-types.json +6720 -5503
- package/dist/vuetify-labs.cjs +294 -51
- package/dist/vuetify-labs.css +4169 -4130
- package/dist/vuetify-labs.d.ts +2235 -1152
- package/dist/vuetify-labs.esm.js +294 -51
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +294 -51
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +22 -42
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2580 -2544
- package/dist/vuetify.d.ts +532 -526
- package/dist/vuetify.esm.js +22 -42
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +22 -42
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +582 -579
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +84 -84
- package/lib/components/VAutocomplete/VAutocomplete.js +0 -5
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.sass +1 -1
- package/lib/components/VBtn/VBtn.css +25 -0
- package/lib/components/VBtn/VBtn.sass +9 -0
- package/lib/components/VBtn/_variables.scss +1 -0
- package/lib/components/VCheckbox/VCheckbox.d.ts +12 -12
- package/lib/components/VCombobox/VCombobox.d.ts +84 -84
- package/lib/components/VFileInput/VFileInput.d.ts +30 -30
- package/lib/components/VInput/VInput.d.ts +12 -12
- package/lib/components/VList/VList.d.ts +3 -3
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.css +15 -4
- package/lib/components/VNumberInput/VNumberInput.d.ts +80 -80
- package/lib/components/VNumberInput/VNumberInput.sass +18 -6
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +12 -12
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
- package/lib/components/VSelect/VSelect.d.ts +84 -84
- package/lib/components/VSelect/VSelect.js +6 -4
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlider/VSlider.d.ts +12 -12
- package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -1
- package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.d.ts +12 -12
- package/lib/components/VTextField/VTextField.d.ts +30 -30
- package/lib/components/VTextarea/VTextarea.d.ts +30 -30
- package/lib/components/VValidation/VValidation.d.ts +8 -8
- package/lib/composables/dateFormat.d.ts +24 -0
- package/lib/composables/dateFormat.js +112 -0
- package/lib/composables/dateFormat.js.map +1 -0
- package/lib/composables/validation.d.ts +6 -5
- package/lib/composables/validation.js +4 -29
- package/lib/composables/validation.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +71 -68
- package/lib/framework.js +1 -1
- package/lib/iconsets/mdi.js +2 -1
- package/lib/iconsets/mdi.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.css +4 -0
- package/lib/labs/VColorInput/VColorInput.d.ts +1767 -0
- package/lib/labs/VColorInput/VColorInput.js +129 -0
- package/lib/labs/VColorInput/VColorInput.js.map +1 -0
- package/lib/labs/VColorInput/VColorInput.sass +7 -0
- package/lib/labs/VColorInput/_variables.scss +2 -0
- package/lib/labs/VColorInput/index.d.ts +1 -0
- package/lib/labs/VColorInput/index.js +2 -0
- package/lib/labs/VColorInput/index.js.map +1 -0
- package/lib/labs/VDateInput/VDateInput.d.ts +130 -105
- package/lib/labs/VDateInput/VDateInput.js +43 -10
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/components.d.ts +1 -0
- package/lib/labs/components.js +1 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/labs/rules/rules.d.ts +9 -5
- package/lib/labs/rules/rules.js +73 -51
- package/lib/labs/rules/rules.js.map +1 -1
- package/lib/util/helpers.js +1 -1
- package/lib/util/helpers.js.map +1 -1
- 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 =
|
|
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
|
-
|
|
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
|
|
157
|
-
|
|
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":[]}
|
package/lib/labs/components.d.ts
CHANGED
package/lib/labs/components.js
CHANGED
|
@@ -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
|
-
|
|
25
|
-
export
|
|
26
|
-
export
|
|
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
|
+
|
package/lib/labs/rules/rules.js
CHANGED
|
@@ -1,61 +1,83 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import { inject } from 'vue';
|
|
3
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
pattern
|
|
50
|
-
|
|
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
|
-
|
|
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
|
|
58
|
-
if (!
|
|
59
|
-
return
|
|
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","
|
|
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":[]}
|
package/lib/util/helpers.js
CHANGED
|
@@ -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 (
|
|
457
|
+
if (location == null) {
|
|
458
458
|
if (el === document.activeElement || !el.contains(document.activeElement)) {
|
|
459
459
|
focusable[0]?.focus();
|
|
460
460
|
}
|