vuetify 3.2.0 → 3.2.2
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/json/attributes.json +775 -639
- package/dist/json/importMap.json +8 -8
- package/dist/json/tags.json +35 -1
- package/dist/json/web-types.json +1657 -1327
- package/dist/vuetify-labs.css +389 -383
- package/dist/vuetify-labs.d.ts +419 -89
- package/dist/vuetify-labs.esm.js +113 -98
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +112 -97
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +60 -54
- package/dist/vuetify.d.ts +522 -192
- package/dist/vuetify.esm.js +108 -98
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +107 -97
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +49 -49
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAppBar/VAppBar.mjs +7 -11
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +10 -16
- package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.ts +394 -28
- package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +10 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
- package/lib/components/VBtn/VBtn.mjs +7 -6
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +0 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +9 -2
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +2 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.mjs +28 -29
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -8
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +9 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSheet/VSheet.css +6 -0
- package/lib/components/VSheet/_variables.scss +1 -1
- package/lib/components/VTextField/VTextField.mjs +1 -1
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.mjs +1 -1
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTreeview/_mixins.sass +0 -0
- package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -0
- package/lib/components/index.d.ts +386 -53
- package/lib/composables/defaults.mjs +11 -1
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/icons.mjs +2 -2
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/scroll.mjs +16 -17
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +4 -7
- package/lib/labs/VDataTable/composables/paginate.mjs +6 -1
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/locale/el.mjs +0 -0
- package/lib/locale/index.mjs +0 -0
- package/lib/util/defineComponent.mjs +2 -2
- package/lib/util/defineComponent.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -93,6 +93,7 @@ export const VFileInput = genericComponent()({
|
|
|
93
93
|
const vInputRef = ref();
|
|
94
94
|
const vFieldRef = ref();
|
|
95
95
|
const inputRef = ref();
|
|
96
|
+
const isActive = computed(() => isFocused.value || props.active);
|
|
96
97
|
function onFocus() {
|
|
97
98
|
if (inputRef.value !== document.activeElement) {
|
|
98
99
|
inputRef.value?.focus();
|
|
@@ -161,7 +162,7 @@ export const VFileInput = genericComponent()({
|
|
|
161
162
|
"onClick:appendInner": props['onClick:appendInner']
|
|
162
163
|
}, fieldProps, {
|
|
163
164
|
"id": id.value,
|
|
164
|
-
"active":
|
|
165
|
+
"active": isActive.value || isDirty.value,
|
|
165
166
|
"dirty": isDirty.value,
|
|
166
167
|
"disabled": isDisabled.value,
|
|
167
168
|
"focused": isFocused.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VFileInput.mjs","names":["filterFieldProps","makeVFieldProps","makeVInputProps","VInput","VChip","VCounter","VField","forwardRefs","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","useRender","wrapInArray","VFileInput","name","inheritAttrs","props","chips","Boolean","counter","counterSizeString","type","String","default","counterString","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","val","every","clearable","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","onFocus","document","activeElement","onClickPrepend","onControlClick","onControlMousedown","click","onClear","stopPropagation","newValue","hasModelReset","isArray","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","fieldClass","slotProps","_Fragment","target","selection","text","color","join"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: []\n}\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: {\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isDirty.value || isFocused.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VFileInput.mjs","names":["filterFieldProps","makeVFieldProps","makeVInputProps","VInput","VChip","VCounter","VField","forwardRefs","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","useRender","wrapInArray","VFileInput","name","inheritAttrs","props","chips","Boolean","counter","counterSizeString","type","String","default","counterString","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","val","every","clearable","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onClickPrepend","onControlClick","onControlMousedown","click","onClear","stopPropagation","newValue","hasModelReset","isArray","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","fieldClass","slotProps","_Fragment","target","selection","text","color","join"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: []\n}\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: {\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ import { makeSizeProps, useSize } from "../../composables/size.mjs";
|
|
|
9
9
|
import { makeTagProps } from "../../composables/tag.mjs";
|
|
10
10
|
import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
|
|
11
11
|
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
12
|
-
import { computed, Text, toRef } from 'vue';
|
|
13
|
-
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs";
|
|
12
|
+
import { computed, ref, Text, toRef } from 'vue';
|
|
13
|
+
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs";
|
|
14
14
|
export const makeVIconProps = propsFactory({
|
|
15
15
|
color: String,
|
|
16
16
|
start: Boolean,
|
|
@@ -31,20 +31,13 @@ export const VIcon = genericComponent()({
|
|
|
31
31
|
attrs,
|
|
32
32
|
slots
|
|
33
33
|
} = _ref;
|
|
34
|
-
|
|
35
|
-
if (slots.default) {
|
|
36
|
-
slotIcon = computed(() => {
|
|
37
|
-
const slot = slots.default?.();
|
|
38
|
-
if (!slot) return;
|
|
39
|
-
return slot.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
34
|
+
const slotIcon = ref();
|
|
42
35
|
const {
|
|
43
36
|
themeClasses
|
|
44
37
|
} = provideTheme(props);
|
|
45
38
|
const {
|
|
46
39
|
iconData
|
|
47
|
-
} = useIcon(slotIcon || props);
|
|
40
|
+
} = useIcon(computed(() => slotIcon.value || props.icon));
|
|
48
41
|
const {
|
|
49
42
|
sizeClasses
|
|
50
43
|
} = useSize(props);
|
|
@@ -52,24 +45,30 @@ export const VIcon = genericComponent()({
|
|
|
52
45
|
textColorClasses,
|
|
53
46
|
textColorStyles
|
|
54
47
|
} = useTextColor(toRef(props, 'color'));
|
|
55
|
-
useRender(() =>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
useRender(() => {
|
|
49
|
+
const slotValue = slots.default?.();
|
|
50
|
+
if (slotValue) {
|
|
51
|
+
slotIcon.value = slotValue.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
|
|
52
|
+
}
|
|
53
|
+
return _createVNode(iconData.value.component, {
|
|
54
|
+
"tag": props.tag,
|
|
55
|
+
"icon": iconData.value.icon,
|
|
56
|
+
"class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
|
|
57
|
+
'v-icon--clickable': !!attrs.onClick,
|
|
58
|
+
'v-icon--start': props.start,
|
|
59
|
+
'v-icon--end': props.end
|
|
60
|
+
}, props.class],
|
|
61
|
+
"style": [!sizeClasses.value ? {
|
|
62
|
+
fontSize: convertToUnit(props.size),
|
|
63
|
+
height: convertToUnit(props.size),
|
|
64
|
+
width: convertToUnit(props.size)
|
|
65
|
+
} : undefined, textColorStyles.value, props.style],
|
|
66
|
+
"role": attrs.onClick ? 'button' : undefined,
|
|
67
|
+
"aria-hidden": !attrs.onClick
|
|
68
|
+
}, {
|
|
69
|
+
default: () => [slotValue]
|
|
70
|
+
});
|
|
71
|
+
});
|
|
73
72
|
return {};
|
|
74
73
|
}
|
|
75
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VIcon.mjs","names":["IconValue","useIcon","makeComponentProps","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","useTextColor","computed","Text","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","_ref","attrs","slots","slotIcon","
|
|
1
|
+
{"version":3,"file":"VIcon.mjs","names":["IconValue","useIcon","makeComponentProps","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","useTextColor","computed","ref","Text","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","_ref","attrs","slots","slotIcon","themeClasses","iconData","value","sizeClasses","textColorClasses","textColorStyles","slotValue","default","filter","node","type","children","_createVNode","component","onClick","class","fontSize","size","height","width","undefined","style"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, Text, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'v-icon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = ref<string>()\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(computed(() => slotIcon.value || props.icon))\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = slotValue.filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': !!attrs.onClick,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ attrs.onClick ? 'button' : undefined }\n aria-hidden={ !attrs.onClick }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ import { useSsrBoot } from "../../composables/ssrBoot.mjs";
|
|
|
20
20
|
import { useSticky } from "./sticky.mjs";
|
|
21
21
|
import { useTouch } from "./touch.mjs"; // Utilities
|
|
22
22
|
import { computed, nextTick, onBeforeMount, ref, toRef, Transition, watch } from 'vue';
|
|
23
|
-
import {
|
|
23
|
+
import { genericComponent, toPhysical, useRender } from "../../util/index.mjs"; // Types
|
|
24
24
|
const locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];
|
|
25
25
|
export const VNavigationDrawer = genericComponent()({
|
|
26
26
|
name: 'VNavigationDrawer',
|
|
@@ -150,7 +150,6 @@ export const VNavigationDrawer = genericComponent()({
|
|
|
150
150
|
});
|
|
151
151
|
const {
|
|
152
152
|
layoutItemStyles,
|
|
153
|
-
layoutRect,
|
|
154
153
|
layoutItemScrimStyles
|
|
155
154
|
} = useLayoutItem({
|
|
156
155
|
id: props.name,
|
|
@@ -180,12 +179,6 @@ export const VNavigationDrawer = genericComponent()({
|
|
|
180
179
|
opacity: dragProgress.value * 0.2,
|
|
181
180
|
transition: 'none'
|
|
182
181
|
} : undefined),
|
|
183
|
-
...(layoutRect.value ? {
|
|
184
|
-
left: convertToUnit(layoutRect.value.left),
|
|
185
|
-
right: convertToUnit(layoutRect.value.right),
|
|
186
|
-
top: convertToUnit(layoutRect.value.top),
|
|
187
|
-
bottom: convertToUnit(layoutRect.value.bottom)
|
|
188
|
-
} : undefined),
|
|
189
182
|
...layoutItemScrimStyles.value
|
|
190
183
|
}));
|
|
191
184
|
provideDefaults({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VNavigationDrawer.mjs","names":["makeBorderProps","useBorder","makeComponentProps","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","useDisplay","useProxiedModel","useRouter","useRtl","useSsrBoot","useSticky","useTouch","computed","nextTick","onBeforeMount","ref","toRef","Transition","watch","convertToUnit","genericComponent","toPhysical","useRender","locations","VNavigationDrawer","name","props","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","scrim","image","temporary","touchless","width","location","validator","value","includes","sticky","tag","emits","val","setup","_ref","attrs","emit","slots","isRtl","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","mobile","roundedClasses","router","isActive","v","ssrBootStyles","rootEl","isHovering","isTemporary","isSticky","currentRoute","isDragging","dragProgress","dragStyles","position","layoutSize","size","layoutItemStyles","layoutRect","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","isStuck","stickyStyles","scrimColor","scrimStyles","opacity","transition","undefined","left","right","top","bottom","VList","bgColor","onMouseenter","onMouseleave","hasImage","_createVNode","_Fragment","_mergeProps","class","style","prepend","append","onClick"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useDisplay } from '@/composables/display'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRouter } from '@/composables/router'\nimport { useRtl } from '@/composables'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, toRef, Transition, watch } from 'vue'\nimport { convertToUnit, genericComponent, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VNavigationDrawerImageSlot = {\n image: string\n}\n\nexport type VNavigationDrawerSlots = {\n default: []\n prepend: []\n append: []\n image: [VNavigationDrawerImageSlot]\n}\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const VNavigationDrawer = genericComponent<VNavigationDrawerSlots>()({\n name: 'VNavigationDrawer',\n\n props: {\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = ref(false)\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n if (props.expandOnHover && props.rail != null) {\n watch(isHovering, val => emit('update:rail', !val))\n }\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n\n const { layoutItemStyles, layoutRect, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutRect.value ? {\n left: convertToUnit(layoutRect.value.left),\n right: convertToUnit(layoutRect.value.right),\n top: convertToUnit(layoutRect.value.top),\n bottom: convertToUnit(layoutRect.value.bottom),\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n function onMouseenter () {\n isHovering.value = true\n }\n function onMouseleave () {\n isHovering.value = false\n }\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n props.style,\n ]}\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => isActive.value = false }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VNavigationDrawer.mjs","names":["makeBorderProps","useBorder","makeComponentProps","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","useDisplay","useProxiedModel","useRouter","useRtl","useSsrBoot","useSticky","useTouch","computed","nextTick","onBeforeMount","ref","toRef","Transition","watch","genericComponent","toPhysical","useRender","locations","VNavigationDrawer","name","props","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","scrim","image","temporary","touchless","width","location","validator","value","includes","sticky","tag","emits","val","setup","_ref","attrs","emit","slots","isRtl","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","mobile","roundedClasses","router","isActive","v","ssrBootStyles","rootEl","isHovering","isTemporary","isSticky","currentRoute","isDragging","dragProgress","dragStyles","position","layoutSize","size","layoutItemStyles","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","isStuck","stickyStyles","scrimColor","scrimStyles","opacity","transition","undefined","VList","bgColor","onMouseenter","onMouseleave","hasImage","_createVNode","_Fragment","_mergeProps","class","style","prepend","append","onClick"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useDisplay } from '@/composables/display'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRouter } from '@/composables/router'\nimport { useRtl } from '@/composables'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, ref, toRef, Transition, watch } from 'vue'\nimport { genericComponent, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VNavigationDrawerImageSlot = {\n image: string\n}\n\nexport type VNavigationDrawerSlots = {\n default: []\n prepend: []\n append: []\n image: [VNavigationDrawerImageSlot]\n}\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const VNavigationDrawer = genericComponent<VNavigationDrawerSlots>()({\n name: 'VNavigationDrawer',\n\n props: {\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n image: String,\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { mobile } = useDisplay()\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = ref(false)\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n if (props.expandOnHover && props.rail != null) {\n watch(isHovering, val => emit('update:rail', !val))\n }\n\n if (!props.disableResizeWatcher) {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n }\n\n if (!props.disableRouteWatcher && router) {\n watch(router.currentRoute, () => isTemporary.value && (isActive.value = false))\n }\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n onBeforeMount(() => {\n if (props.modelValue != null || isTemporary.value) return\n\n isActive.value = props.permanent || !mobile.value\n })\n\n const { isDragging, dragProgress, dragStyles } = useTouch({\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n\n const { layoutItemStyles, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n function onMouseenter () {\n isHovering.value = true\n }\n function onMouseleave () {\n isHovering.value = false\n }\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n dragStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n props.style,\n ]}\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { slots.image\n ? slots.image?.({ image: props.image })\n : (<img src={ props.image } alt=\"\" />)\n }\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => isActive.value = false }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
|
|
|
10
10
|
import { VDialogTransition } from "../transitions/index.mjs";
|
|
11
11
|
import { VList, VListItem } from "../VList/index.mjs";
|
|
12
12
|
import { VMenu } from "../VMenu/index.mjs";
|
|
13
|
+
import { VIcon } from "../VIcon/index.mjs";
|
|
13
14
|
import { VTextField } from "../VTextField/index.mjs"; // Composables
|
|
14
15
|
import { forwardRefs } from "../../composables/forwardRefs.mjs";
|
|
15
16
|
import { IconValue } from "../../composables/icons.mjs";
|
|
@@ -261,11 +262,13 @@ export const VSelect = genericComponent()({
|
|
|
261
262
|
let {
|
|
262
263
|
isSelected
|
|
263
264
|
} = _ref2;
|
|
264
|
-
return props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {
|
|
265
|
+
return _createVNode(_Fragment, null, [props.multiple && !props.hideSelected ? _createVNode(VCheckboxBtn, {
|
|
265
266
|
"modelValue": isSelected,
|
|
266
267
|
"ripple": false,
|
|
267
268
|
"tabindex": "-1"
|
|
268
|
-
}, null) : undefined
|
|
269
|
+
}, null) : undefined, item.props.prependIcon && _createVNode(VIcon, {
|
|
270
|
+
"icon": item.props.prependIcon
|
|
271
|
+
}, null)]);
|
|
269
272
|
}
|
|
270
273
|
});
|
|
271
274
|
}), slots['append-item']?.()]
|
|
@@ -278,6 +281,10 @@ export const VSelect = genericComponent()({
|
|
|
278
281
|
}
|
|
279
282
|
const slotProps = {
|
|
280
283
|
'onClick:close': onChipClose,
|
|
284
|
+
onMousedown(e) {
|
|
285
|
+
e.preventDefault();
|
|
286
|
+
e.stopPropagation();
|
|
287
|
+
},
|
|
281
288
|
modelValue: true,
|
|
282
289
|
'onUpdate:modelValue': undefined
|
|
283
290
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSelect.mjs","names":["makeVTextFieldProps","VCheckboxBtn","VChip","VDefaultsProvider","VDialogTransition","VList","VListItem","VMenu","VTextField","forwardRefs","IconValue","makeItemsProps","useItems","makeTransitionProps","useForm","useLocale","useProxiedModel","computed","mergeProps","ref","deepEqual","genericComponent","omit","propsFactory","useRender","wrapInArray","makeSelectProps","chips","Boolean","closableChips","eager","hideNoData","hideSelected","menu","menuIcon","type","default","menuProps","Object","multiple","noDataText","String","openOnClear","valueComparator","Function","itemChildren","VSelect","name","props","modelValue","transition","component","emits","focused","val","setup","_ref","slots","t","vTextFieldRef","vMenuRef","_menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","form","selections","map","find","item","selected","selection","isFocused","keyboardLookupPrefix","keyboardLookupLastTime","displayItems","filter","some","s","listRef","onClear","e","onMousedownControl","length","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","KEYBOARD_LOOKUP_THRESHOLD","checkPrintable","isPrintableChar","noModifier","ctrlKey","metaKey","altKey","now","performance","toLowerCase","title","startsWith","undefined","select","index","findIndex","splice","onBlur","$el","contains","relatedTarget","onFocusin","onFocusout","hasChips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","placeholder","label","persistentPlaceholder","_createVNode","_mergeProps","join","$event","externalValue","class","style","_Fragment","onClick","_ref2","isSelected","onChipClose","stopPropagation","slotProps","closable","size","text","_createTextVNode"],"sources":["../../../src/components/VSelect/VSelect.tsx"],"sourcesContent":["// Styles\nimport './VSelect.sass'\n\n// Components\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDialogTransition } from '@/components/transitions'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps, useItems } from '@/composables/items'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, ref } from 'vue'\nimport { deepEqual, genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { InternalItem } from '@/composables/items'\nimport type { GenericProps } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType<VMenu['$props']>,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'v-select')\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VSelect = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>(props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n}) => GenericProps<typeof props, Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n}>>()({\n name: 'VSelect',\n\n props: {\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition } }),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const isFocused = ref(false)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !selections.value.some(s => s === item))\n }\n return items.value\n })\n\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n } else if (e.key === 'Home') {\n listRef.value?.focus('first')\n } else if (e.key === 'End') {\n listRef.value?.focus('last')\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n\n function checkPrintable (e: KeyboardEvent) {\n const isPrintableChar = e.key.length === 1\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey\n return isPrintableChar && noModifier\n }\n\n if (props.multiple || !checkPrintable(e)) return\n\n const now = performance.now()\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = ''\n }\n keyboardLookupPrefix += e.key.toLowerCase()\n keyboardLookupLastTime = now\n\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix))\n if (item !== undefined) {\n model.value = [item]\n }\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n menu.value = false\n }\n }\n function onBlur (e: FocusEvent) {\n if (!listRef.value?.$el.contains(e.relatedTarget as HTMLElement)) {\n menu.value = false\n }\n }\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n const placeholder = isDirty || (\n !isFocused.value &&\n props.label &&\n !props.persistentPlaceholder\n ) ? undefined : props.placeholder\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n },\n props.class,\n ]}\n style={ props.style }\n appendInnerIcon={ props.menuIcon }\n readonly\n placeholder={ placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map((item, index) => {\n if (slots.item) {\n return slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n })\n }\n\n return (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined,\n }}\n </VListItem>\n )\n })}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-select__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-select__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VSelect.mjs","names":["makeVTextFieldProps","VCheckboxBtn","VChip","VDefaultsProvider","VDialogTransition","VList","VListItem","VMenu","VIcon","VTextField","forwardRefs","IconValue","makeItemsProps","useItems","makeTransitionProps","useForm","useLocale","useProxiedModel","computed","mergeProps","ref","deepEqual","genericComponent","omit","propsFactory","useRender","wrapInArray","makeSelectProps","chips","Boolean","closableChips","eager","hideNoData","hideSelected","menu","menuIcon","type","default","menuProps","Object","multiple","noDataText","String","openOnClear","valueComparator","Function","itemChildren","VSelect","name","props","modelValue","transition","component","emits","focused","val","setup","_ref","slots","t","vTextFieldRef","vMenuRef","_menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","form","selections","map","find","item","selected","selection","isFocused","keyboardLookupPrefix","keyboardLookupLastTime","displayItems","filter","some","s","listRef","onClear","e","onMousedownControl","length","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","KEYBOARD_LOOKUP_THRESHOLD","checkPrintable","isPrintableChar","noModifier","ctrlKey","metaKey","altKey","now","performance","toLowerCase","title","startsWith","undefined","select","index","findIndex","splice","onBlur","$el","contains","relatedTarget","onFocusin","onFocusout","hasChips","chip","hasList","prepend","append","isDirty","textFieldProps","filterProps","placeholder","label","persistentPlaceholder","_createVNode","_mergeProps","join","$event","externalValue","class","style","_Fragment","onClick","_ref2","isSelected","prependIcon","onChipClose","stopPropagation","slotProps","onMousedown","closable","size","text","_createTextVNode"],"sources":["../../../src/components/VSelect/VSelect.tsx"],"sourcesContent":["// Styles\nimport './VSelect.sass'\n\n// Components\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDialogTransition } from '@/components/transitions'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VIcon } from '@/components/VIcon'\n\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps, useItems } from '@/composables/items'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, ref } from 'vue'\nimport { deepEqual, genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { InternalItem } from '@/composables/items'\nimport type { GenericProps } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType<VMenu['$props']>,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'v-select')\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VSelect = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>(props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n}) => GenericProps<typeof props, Omit<VInputSlots & VFieldSlots, 'default'> & {\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n}>>()({\n name: 'VSelect',\n\n props: {\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition } }),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const isFocused = ref(false)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !selections.value.some(s => s === item))\n }\n return items.value\n })\n\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n\n if (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n } else if (e.key === 'Home') {\n listRef.value?.focus('first')\n } else if (e.key === 'End') {\n listRef.value?.focus('last')\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n\n function checkPrintable (e: KeyboardEvent) {\n const isPrintableChar = e.key.length === 1\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey\n return isPrintableChar && noModifier\n }\n\n if (props.multiple || !checkPrintable(e)) return\n\n const now = performance.now()\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = ''\n }\n keyboardLookupPrefix += e.key.toLowerCase()\n keyboardLookupLastTime = now\n\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix))\n if (item !== undefined) {\n model.value = [item]\n }\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n menu.value = false\n }\n }\n function onBlur (e: FocusEvent) {\n if (!listRef.value?.$el.contains(e.relatedTarget as HTMLElement)) {\n menu.value = false\n }\n }\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const isDirty = model.value.length > 0\n const [textFieldProps] = VTextField.filterProps(props)\n\n const placeholder = isDirty || (\n !isFocused.value &&\n props.label &&\n !props.persistentPlaceholder\n ) ? undefined : props.placeholder\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ model.value.map(v => v.props.value).join(', ') }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n dirty={ isDirty }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n },\n props.class,\n ]}\n style={ props.style }\n appendInnerIcon={ props.menuIcon }\n readonly\n placeholder={ placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-select__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map((item, index) => {\n if (slots.item) {\n return slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n })\n }\n\n return (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n <VCheckboxBtn\n modelValue={ isSelected }\n ripple={ false }\n tabindex=\"-1\"\n />\n ) : undefined }\n\n { item.props.prependIcon && (\n <VIcon icon={ item.props.prependIcon } />\n )}\n </>\n ),\n }}\n </VListItem>\n )\n })}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-select__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-select__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-select__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType<typeof VSelect>\n"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ $sheet-border-thin-width: thin !default;
|
|
|
9
9
|
$sheet-border-width: 0 !default;
|
|
10
10
|
$sheet-color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity)) !default;
|
|
11
11
|
$sheet-elevation: 0 !default;
|
|
12
|
-
$sheet-positions: absolute fixed !default;
|
|
12
|
+
$sheet-positions: absolute fixed relative sticky !default;
|
|
13
13
|
$sheet-rounded-border-radius: settings.$border-radius-root !default;
|
|
14
14
|
|
|
15
15
|
// Lists
|
|
@@ -70,7 +70,7 @@ export const VTextField = genericComponent()({
|
|
|
70
70
|
const vInputRef = ref();
|
|
71
71
|
const vFieldRef = ref();
|
|
72
72
|
const inputRef = ref();
|
|
73
|
-
const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value);
|
|
73
|
+
const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
|
|
74
74
|
function onFocus() {
|
|
75
75
|
if (inputRef.value !== document.activeElement) {
|
|
76
76
|
inputRef.value?.focus();
|