vuetify 3.10.5 → 3.10.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/README.md +0 -6
- package/dist/json/attributes.json +3568 -3592
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +152 -152
- package/dist/json/tags.json +3 -9
- package/dist/json/web-types.json +6916 -6969
- package/dist/vuetify-labs.cjs +178 -72
- package/dist/vuetify-labs.css +4389 -4339
- package/dist/vuetify-labs.d.ts +108 -163
- package/dist/vuetify-labs.esm.js +178 -72
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +178 -72
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +159 -62
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4349 -4321
- package/dist/vuetify.d.ts +108 -128
- package/dist/vuetify.esm.js +159 -62
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +159 -62
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +113 -102
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +0 -61
- package/lib/components/VAutocomplete/VAutocomplete.js +13 -11
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.d.ts +37 -0
- package/lib/components/VChipGroup/VChipGroup.js +3 -1
- package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.d.ts +6 -67
- package/lib/components/VCombobox/VCombobox.js +26 -28
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCounter/VCounter.css +1 -0
- package/lib/components/VCounter/VCounter.sass +1 -0
- package/lib/components/VDatePicker/VDatePicker.js +1 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VList/VListItem.css +14 -12
- package/lib/components/VList/VListItem.js +4 -2
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListItem.sass +20 -18
- package/lib/components/VMenu/VMenu.js +22 -4
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.css +8 -0
- package/lib/components/VNumberInput/VNumberInput.js +5 -2
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.sass +10 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.css +17 -0
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +3 -3
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +7 -0
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +25 -0
- package/lib/components/VSlideGroup/VSlideGroup.js +5 -1
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTabs/VTabs.d.ts +25 -0
- package/lib/components/VTextField/VTextField.js +0 -3
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.css +2 -2
- package/lib/components/VTextarea/VTextarea.js +20 -1
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +4 -2
- package/lib/components/VWindow/VWindow.js +43 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/composables/date/date.js +1 -1
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/group.js +1 -1
- package/lib/composables/group.js.map +1 -1
- package/lib/composables/nested/nested.js +12 -2
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/virtual.js +2 -2
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +54 -54
- package/lib/framework.js +1 -1
- package/lib/labs/VColorInput/VColorInput.d.ts +0 -40
- package/lib/labs/VColorInput/VColorInput.js +2 -2
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +0 -30
- package/lib/labs/VDateInput/VDateInput.js +16 -7
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.css +22 -0
- package/lib/labs/VIconBtn/VIconBtn.scss +32 -0
- package/lib/labs/VMaskInput/VMaskInput.js +1 -1
- package/lib/labs/VMaskInput/VMaskInput.js.map +1 -1
- package/lib/labs/rules/rules.js +1 -1
- package/lib/labs/rules/rules.js.map +1 -1
- package/lib/util/helpers.js +4 -2
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePicker.js","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","makeVPickerProps","VPicker","useDate","useLocale","useRtl","useProxiedModel","computed","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","header","type","String","default","headerColor","weeksInMonth","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","rtlClasses","model","undefined","v","map","i","multiple","viewMode","minDate","min","isValid","maxDate","max","internal","today","value","isBefore","isAfter","color","_month","month","get","Number","getMonth","startOfMonth","set","_year","year","getYear","startOfYear","setMonth","isReversing","length","format","text","setDate","setYear","headerTransition","disabled","targets","push","_date","addDays","endOfMonth","allowedYears","isYearAllowed","allowedMonths","isMonthAllowed","isAllowedInRange","start","end","allowedDates","days","getDiff","parseISO","endOfYear","Array","isArray","monthTwoDigits","padStart","onClickNext","onUpdateYear","onUpdateMonth","onClickPrev","onClickDate","onClickMonth","onClickYear","val","oldVal","arrBefore","arrAfter","before","after","newMonth","newYear","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_createElementVNode","prepend","append","_Fragment","$event","day","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VDatePickerHeaderSlots } from './VDatePickerHeader'\nimport type { VDatePickerMonthSlots } from './VDatePickerMonth'\nimport type { VDatePickerMonthsSlots } from './VDatePickerMonths'\nimport type { VDatePickerYearsSlots } from './VDatePickerYears'\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots =\n & Omit<VPickerSlots, 'header' | 'default'>\n & Omit<VDatePickerHeaderSlots, 'default'>\n & VDatePickerYearsSlots\n & VDatePickerMonthsSlots\n & VDatePickerMonthSlots\n & {\n header: {\n header: string\n transition: string\n }\n }\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n headerColor: String,\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static' as const,\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n const { rtlClasses } = useRtl()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v).map(i => adapter.date(i)),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n\n const internal = computed(() => {\n const today = adapter.date()\n let value = today\n if (model.value?.[0]) {\n value = adapter.date(model.value[0])\n } else if (minDate.value && adapter.isBefore(today, minDate.value)) {\n value = minDate.value\n } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {\n value = maxDate.value\n }\n\n return value && adapter.isValid(value) ? value : today\n })\n const headerColor = toRef(() => props.headerColor ?? props.color)\n\n const _month = useProxiedModel(props, 'month')\n const month = computed({\n get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),\n set: v => _month.value = v,\n })\n\n const _year = useProxiedModel(props, 'year')\n const year = computed({\n get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),\n set: v => _year.value = v,\n })\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length)\n }\n\n return (model.value[0] && adapter.isValid(model.value[0]))\n ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n let date = adapter.date()\n\n date = adapter.setDate(date, 1)\n date = adapter.setMonth(date, month.value)\n date = adapter.setYear(date, year.value)\n\n return adapter.format(date, 'monthAndYear')\n })\n // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.startOfMonth(_date)\n _date = adapter.setMonth(_date, month.value)\n _date = adapter.setYear(_date, year.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n const allowedYears = computed(() => {\n return props.allowedYears || isYearAllowed\n })\n\n const allowedMonths = computed(() => {\n return props.allowedMonths || isMonthAllowed\n })\n\n function isAllowedInRange (start: unknown, end: unknown) {\n const allowedDates = props.allowedDates\n if (typeof allowedDates !== 'function') return true\n const days = adapter.getDiff(end, start, 'days')\n for (let i = 0; i < days; i++) {\n if (allowedDates(adapter.addDays(start, i))) return true\n }\n return false\n }\n\n function isYearAllowed (year: number) {\n if (typeof props.allowedDates === 'function') {\n const startOfYear = adapter.parseISO(`${year}-01-01`)\n return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (adapter.getYear(adapter.date(date)) === year) return true\n }\n return false\n }\n\n return true\n }\n\n function isMonthAllowed (month: number) {\n if (typeof props.allowedDates === 'function') {\n const monthTwoDigits = String(month + 1).padStart(2, '0')\n const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`)\n return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (\n adapter.getYear(adapter.date(date)) === year.value &&\n adapter.getMonth(adapter.date(date)) === month\n ) return true\n }\n return false\n }\n\n return true\n }\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth () {\n if (viewMode.value === 'months') onClickMonth()\n }\n\n function onUpdateYear () {\n if (viewMode.value === 'year') onClickYear()\n }\n\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal)\n const arrAfter = wrapInArray(val)\n\n if (!arrAfter.length) return\n\n const before = adapter.date(arrBefore[arrBefore.length - 1])\n const after = adapter.date(arrAfter[arrAfter.length - 1])\n const newMonth = adapter.getMonth(after)\n const newYear = adapter.getYear(after)\n\n if (newMonth !== month.value) {\n month.value = newMonth\n onUpdateMonth()\n }\n\n if (newYear !== year.value) {\n year.value = newYear\n onUpdateYear()\n }\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n color: headerColor.value,\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n color={ headerColor.value }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n onClick={ viewMode.value !== 'month' ? onClickDate : undefined }\n v-slots={{\n prepend: slots.prepend,\n append: slots.append,\n }}\n />\n ),\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n year={ year.value }\n allowedMonths={ allowedMonths.value }\n onUpdate:modelValue={ onUpdateMonth }\n >\n {{ month: slots.month }}\n </VDatePickerMonths>\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n allowedYears={ allowedYears.value }\n onUpdate:modelValue={ onUpdateYear }\n >\n {{ year: slots.year }}\n </VDatePickerYears>\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n onUpdate:month={ onUpdateMonth }\n onUpdate:year={ onUpdateYear }\n min={ minDate.value }\n max={ maxDate.value }\n >\n {{ day: slots.day }}\n </VDatePickerMonth>\n )}\n </VFadeTransition>\n </>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VDatePicker.js","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","makeVPickerProps","VPicker","useDate","useLocale","useRtl","useProxiedModel","computed","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","header","type","String","default","headerColor","weeksInMonth","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","rtlClasses","model","undefined","v","map","i","multiple","viewMode","minDate","min","isValid","maxDate","max","internal","today","value","isBefore","isAfter","color","_month","month","get","Number","getMonth","startOfMonth","set","_year","year","getYear","startOfYear","setMonth","isReversing","length","format","text","setDate","setYear","headerTransition","disabled","targets","push","_date","addDays","endOfMonth","allowedYears","isYearAllowed","allowedMonths","isMonthAllowed","isAllowedInRange","start","end","allowedDates","days","getDiff","Date","toISO","parseISO","endOfYear","Array","isArray","monthTwoDigits","padStart","onClickNext","onUpdateYear","onUpdateMonth","onClickPrev","onClickDate","onClickMonth","onClickYear","val","oldVal","arrBefore","arrAfter","before","after","newMonth","newYear","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_createElementVNode","prepend","append","_Fragment","$event","day","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VDatePickerHeaderSlots } from './VDatePickerHeader'\nimport type { VDatePickerMonthSlots } from './VDatePickerMonth'\nimport type { VDatePickerMonthsSlots } from './VDatePickerMonths'\nimport type { VDatePickerYearsSlots } from './VDatePickerYears'\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots =\n & Omit<VPickerSlots, 'header' | 'default'>\n & Omit<VDatePickerHeaderSlots, 'default'>\n & VDatePickerYearsSlots\n & VDatePickerMonthsSlots\n & VDatePickerMonthSlots\n & {\n header: {\n header: string\n transition: string\n }\n }\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n headerColor: String,\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static' as const,\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n const { rtlClasses } = useRtl()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v).map(i => adapter.date(i)),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n\n const internal = computed(() => {\n const today = adapter.date()\n let value = today\n if (model.value?.[0]) {\n value = adapter.date(model.value[0])\n } else if (minDate.value && adapter.isBefore(today, minDate.value)) {\n value = minDate.value\n } else if (maxDate.value && adapter.isAfter(today, maxDate.value)) {\n value = maxDate.value\n }\n\n return value && adapter.isValid(value) ? value : today\n })\n const headerColor = toRef(() => props.headerColor ?? props.color)\n\n const _month = useProxiedModel(props, 'month')\n const month = computed({\n get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),\n set: v => _month.value = v,\n })\n\n const _year = useProxiedModel(props, 'year')\n const year = computed({\n get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),\n set: v => _year.value = v,\n })\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length)\n }\n\n return (model.value[0] && adapter.isValid(model.value[0]))\n ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n let date = adapter.date()\n\n date = adapter.setDate(date, 1)\n date = adapter.setMonth(date, month.value)\n date = adapter.setYear(date, year.value)\n\n return adapter.format(date, 'monthAndYear')\n })\n // const headerIcon = toRef(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = toRef(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.startOfMonth(_date)\n _date = adapter.setMonth(_date, month.value)\n _date = adapter.setYear(_date, year.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n const allowedYears = computed(() => {\n return props.allowedYears || isYearAllowed\n })\n\n const allowedMonths = computed(() => {\n return props.allowedMonths || isMonthAllowed\n })\n\n function isAllowedInRange (start: unknown, end: unknown) {\n const allowedDates = props.allowedDates\n if (typeof allowedDates !== 'function') return true\n\n const days = 1 + adapter.getDiff(\n new Date(`${adapter.toISO(end)}T00:00:00Z`),\n new Date(`${adapter.toISO(start)}T00:00:00Z`),\n 'days',\n )\n\n for (let i = 0; i < days; i++) {\n if (allowedDates(adapter.addDays(start, i))) return true\n }\n return false\n }\n\n function isYearAllowed (year: number) {\n if (typeof props.allowedDates === 'function') {\n const startOfYear = adapter.parseISO(`${year}-01-01`)\n return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (adapter.getYear(adapter.date(date)) === year) return true\n }\n return false\n }\n\n return true\n }\n\n function isMonthAllowed (month: number) {\n if (typeof props.allowedDates === 'function') {\n const monthTwoDigits = String(month + 1).padStart(2, '0')\n const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`)\n return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth))\n }\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length) {\n for (const date of props.allowedDates) {\n if (\n adapter.getYear(adapter.date(date)) === year.value &&\n adapter.getMonth(adapter.date(date)) === month\n ) return true\n }\n return false\n }\n\n return true\n }\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear()\n }\n onUpdateMonth()\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth () {\n if (viewMode.value === 'months') onClickMonth()\n }\n\n function onUpdateYear () {\n if (viewMode.value === 'year') onClickYear()\n }\n\n watch(model, (val, oldVal) => {\n const arrBefore = wrapInArray(oldVal)\n const arrAfter = wrapInArray(val)\n\n if (!arrAfter.length) return\n\n const before = adapter.date(arrBefore[arrBefore.length - 1])\n const after = adapter.date(arrAfter[arrAfter.length - 1])\n const newMonth = adapter.getMonth(after)\n const newYear = adapter.getYear(after)\n\n if (newMonth !== month.value) {\n month.value = newMonth\n onUpdateMonth()\n }\n\n if (newYear !== year.value) {\n year.value = newYear\n onUpdateYear()\n }\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n color: headerColor.value,\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n color={ headerColor.value }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n rtlClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n onClick={ viewMode.value !== 'month' ? onClickDate : undefined }\n v-slots={{\n prepend: slots.prepend,\n append: slots.append,\n }}\n />\n ),\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n year={ year.value }\n allowedMonths={ allowedMonths.value }\n onUpdate:modelValue={ onUpdateMonth }\n >\n {{ month: slots.month }}\n </VDatePickerMonths>\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n allowedYears={ allowedYears.value }\n onUpdate:modelValue={ onUpdateYear }\n >\n {{ year: slots.year }}\n </VDatePickerYears>\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n onUpdate:month={ onUpdateMonth }\n onUpdate:year={ onUpdateYear }\n min={ minDate.value }\n max={ maxDate.value }\n >\n {{ day: slots.day }}\n </VDatePickerMonth>\n )}\n </VFadeTransition>\n </>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -471,23 +471,25 @@
|
|
|
471
471
|
}
|
|
472
472
|
|
|
473
473
|
@media (forced-colors: active) {
|
|
474
|
-
.v-list-item:not(.v-list-item--active) {
|
|
474
|
+
.v-list-item--link:not(.v-list-item--active) {
|
|
475
475
|
color: buttontext;
|
|
476
476
|
}
|
|
477
|
-
.v-list-item--
|
|
477
|
+
.v-list-item--link[href]:not(.v-list-item--active) {
|
|
478
|
+
color: unset;
|
|
479
|
+
}
|
|
480
|
+
.v-list-item--active:not(.v-list-item--disabled) [class*=v-list-item-],
|
|
481
|
+
.v-list-item--active:not(.v-list-item--disabled) [class*=v-list-item-] > *,
|
|
482
|
+
.v-list-item--active:not(.v-list-item--disabled) .v-icon {
|
|
478
483
|
color: highlight !important;
|
|
479
484
|
}
|
|
480
|
-
.v-list-item:not(.v-list-item--variant-plain).v-list-item--
|
|
481
|
-
background
|
|
482
|
-
color: highlighttext !important;
|
|
485
|
+
.v-list-item--active:not(.v-list-item--variant-text, .v-list-item--variant-plain):not(.v-list-item--disabled) {
|
|
486
|
+
background: highlight !important;
|
|
483
487
|
}
|
|
484
|
-
.v-list-item-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
.v-list-item--active .v-list-item__append > .v-badge .v-icon,
|
|
490
|
-
.v-list-item--active .v-list-item__append > .v-icon {
|
|
488
|
+
.v-list-item--active:not(.v-list-item--variant-text, .v-list-item--variant-plain):not(.v-list-item--disabled) [class*=v-list-item-],
|
|
489
|
+
.v-list-item--active:not(.v-list-item--variant-text, .v-list-item--variant-plain):not(.v-list-item--disabled) [class*=v-list-item-] > *,
|
|
490
|
+
.v-list-item--active:not(.v-list-item--variant-text, .v-list-item--variant-plain):not(.v-list-item--disabled) .v-icon {
|
|
491
|
+
opacity: 1;
|
|
492
|
+
color: highlighttext !important;
|
|
491
493
|
forced-color-adjust: preserve-parent-color;
|
|
492
494
|
}
|
|
493
495
|
@supports selector(:focus-visible) {
|
|
@@ -22,7 +22,7 @@ import { makeTagProps } from "../../composables/tag.js";
|
|
|
22
22
|
import { makeThemeProps, provideTheme } from "../../composables/theme.js";
|
|
23
23
|
import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Directives
|
|
24
24
|
import vRipple from "../../directives/ripple/index.js"; // Utilities
|
|
25
|
-
import { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue';
|
|
25
|
+
import { computed, nextTick, onBeforeMount, toDisplayString, toRef, watch } from 'vue';
|
|
26
26
|
import { deprecate, EventProp, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
27
27
|
export const makeVListItemProps = propsFactory({
|
|
28
28
|
active: {
|
|
@@ -127,7 +127,9 @@ export const VListItem = genericComponent()({
|
|
|
127
127
|
handleActiveLink();
|
|
128
128
|
});
|
|
129
129
|
onBeforeMount(() => {
|
|
130
|
-
if (link.isActive?.value)
|
|
130
|
+
if (link.isActive?.value) {
|
|
131
|
+
nextTick(() => handleActiveLink());
|
|
132
|
+
}
|
|
131
133
|
});
|
|
132
134
|
function handleActiveLink() {
|
|
133
135
|
if (parent.value != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VListItem.js","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","computed","onBeforeMount","toDisplayString","toRef","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","uid","list","isActive","activatable","isLink","isSelectable","selectable","isClickable","role","ariaSelected","roundedProps","rounded","color","variantProps","val","handleActiveLink","open","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","rippleOptions","filterable","keys","slotProps","includes","target","tagName","navigate","onKeyDown","key","preventDefault","stopPropagation","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_mergeProps","linkProps","class","style","_createElementVNode","_Fragment","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, onBeforeMount, toDisplayString, toRef, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n index?: number\n depth?: number\n path?: number[]\n isFirst?: boolean\n isLast?: boolean\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { vRipple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, () => props.disabled, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = toRef(() => props.link !== false && link.isLink.value)\n const isSelectable = computed(() => (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || isSelectable.value)\n )\n const role = computed(() => list ? (isLink.value ? 'link' : isSelectable.value ? 'option' : 'listitem') : undefined)\n const ariaSelected = computed(() => {\n if (!isSelectable.value) return undefined\n return root.activatable.value ? isActivated.value\n : root.selectable.value ? isSelected.value\n : isActive.value\n })\n\n const roundedProps = toRef(() => props.rounded || props.nav)\n const color = toRef(() => props.color ?? props.activeColor)\n const variantProps = toRef(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n // useNestedItem doesn't call register until beforeMount,\n // so this can't be an immediate watcher as we don't know parent yet\n watch(() => link.isActive?.value, val => {\n if (!val) return\n handleActiveLink()\n })\n onBeforeMount(() => {\n if (link.isActive?.value) handleActiveLink()\n })\n function handleActiveLink () {\n if (parent.value != null) {\n root.open(parent.value, true)\n }\n openOnSelect(true)\n }\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n const rippleOptions = toRef(() =>\n (\n props.ripple !== undefined &&\n !!props.ripple &&\n list?.filterable\n )\n ? { keys: ['Enter'] }\n : props.ripple\n )\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null && !isLink.value) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'Enter' || (e.key === ' ' && !list?.filterable)) {\n e.preventDefault()\n e.stopPropagation()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n { ...link.linkProps }\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n aria-selected={ ariaSelected.value }\n role={ role.value }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && rippleOptions.value }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? toDisplayString(props.title) }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle) }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n link,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VListItem.js","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","vRipple","computed","nextTick","onBeforeMount","toDisplayString","toRef","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","uid","list","isActive","activatable","isLink","isSelectable","selectable","isClickable","role","ariaSelected","roundedProps","rounded","color","variantProps","val","handleActiveLink","open","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","rippleOptions","filterable","keys","slotProps","includes","target","tagName","navigate","onKeyDown","key","preventDefault","stopPropagation","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_mergeProps","linkProps","class","style","_createElementVNode","_Fragment","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, toDisplayString, toRef, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n index?: number\n depth?: number\n path?: number[]\n isFirst?: boolean\n isLast?: boolean\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n title: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { vRipple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n id: uid,\n } = useNestedItem(id, () => props.disabled, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = toRef(() => props.link !== false && link.isLink.value)\n const isSelectable = computed(() => (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || isSelectable.value)\n )\n const role = computed(() => list ? (isLink.value ? 'link' : isSelectable.value ? 'option' : 'listitem') : undefined)\n const ariaSelected = computed(() => {\n if (!isSelectable.value) return undefined\n return root.activatable.value ? isActivated.value\n : root.selectable.value ? isSelected.value\n : isActive.value\n })\n\n const roundedProps = toRef(() => props.rounded || props.nav)\n const color = toRef(() => props.color ?? props.activeColor)\n const variantProps = toRef(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n // useNestedItem doesn't call register until beforeMount,\n // so this can't be an immediate watcher as we don't know parent yet\n watch(() => link.isActive?.value, val => {\n if (!val) return\n handleActiveLink()\n })\n onBeforeMount(() => {\n if (link.isActive?.value) {\n nextTick(() => handleActiveLink())\n }\n })\n function handleActiveLink () {\n if (parent.value != null) {\n root.open(parent.value, true)\n }\n openOnSelect(true)\n }\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n const rippleOptions = toRef(() =>\n (\n props.ripple !== undefined &&\n !!props.ripple &&\n list?.filterable\n )\n ? { keys: ['Enter'] }\n : props.ripple\n )\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n if (['INPUT', 'TEXTAREA'].includes((e.target as Element)?.tagName)) return\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null && !isLink.value) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'Enter' || (e.key === ' ' && !list?.filterable)) {\n e.preventDefault()\n e.stopPropagation()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n { ...link.linkProps }\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n aria-selected={ ariaSelected.value }\n role={ role.value }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && rippleOptions.value }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? toDisplayString(props.title) }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle) }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n root,\n id: uid,\n link,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -341,26 +341,28 @@
|
|
|
341
341
|
|
|
342
342
|
@media (forced-colors: active)
|
|
343
343
|
.v-list-item
|
|
344
|
-
|
|
344
|
+
&--link:not(&--active)
|
|
345
345
|
color: buttontext
|
|
346
346
|
|
|
347
|
-
&--
|
|
348
|
-
color:
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
347
|
+
&--link[href]:not(&--active)
|
|
348
|
+
color: unset
|
|
349
|
+
|
|
350
|
+
&--active:not(&--disabled)
|
|
351
|
+
[class*="v-list-item-"],
|
|
352
|
+
[class*="v-list-item-"] > *,
|
|
353
|
+
.v-icon
|
|
354
|
+
color: highlight !important
|
|
355
|
+
|
|
356
|
+
&--active:not(&--variant-text, &--variant-plain):not(&--disabled)
|
|
357
|
+
background: highlight !important
|
|
358
|
+
|
|
359
|
+
[class*="v-list-item-"],
|
|
360
|
+
[class*="v-list-item-"] > *,
|
|
361
|
+
.v-icon
|
|
362
|
+
opacity: 1
|
|
363
|
+
color: highlighttext !important
|
|
364
|
+
forced-color-adjust: preserve-parent-color
|
|
365
|
+
|
|
364
366
|
@supports selector(:focus-visible)
|
|
365
367
|
&::after
|
|
366
368
|
color: buttontext
|
|
@@ -76,25 +76,41 @@ export const VMenu = genericComponent()({
|
|
|
76
76
|
document.removeEventListener('focusin', onFocusIn);
|
|
77
77
|
});
|
|
78
78
|
onDeactivated(() => isActive.value = false);
|
|
79
|
+
let focusTrapSuppressed = false;
|
|
80
|
+
let focusTrapSuppressionTimeout = -1;
|
|
81
|
+
async function onPointerdown() {
|
|
82
|
+
focusTrapSuppressed = true;
|
|
83
|
+
focusTrapSuppressionTimeout = window.setTimeout(() => {
|
|
84
|
+
focusTrapSuppressed = false;
|
|
85
|
+
}, 100);
|
|
86
|
+
}
|
|
79
87
|
async function onFocusIn(e) {
|
|
80
88
|
const before = e.relatedTarget;
|
|
81
89
|
const after = e.target;
|
|
82
90
|
await nextTick();
|
|
83
91
|
if (isActive.value && before !== after && overlay.value?.contentEl &&
|
|
84
|
-
// We're the
|
|
85
|
-
overlay.value?.
|
|
92
|
+
// We're the menu without open submenus or overlays
|
|
93
|
+
overlay.value?.localTop &&
|
|
86
94
|
// It isn't the document or the menu body
|
|
87
95
|
![document, overlay.value.contentEl].includes(after) &&
|
|
88
96
|
// It isn't inside the menu body
|
|
89
97
|
!overlay.value.contentEl.contains(after)) {
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
if (focusTrapSuppressed) {
|
|
99
|
+
if (!props.openOnHover || !overlay.value.activatorEl?.contains(after)) {
|
|
100
|
+
isActive.value = false;
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
const focusable = focusableChildren(overlay.value.contentEl);
|
|
104
|
+
focusable[0]?.focus();
|
|
105
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
106
|
+
}
|
|
92
107
|
}
|
|
93
108
|
}
|
|
94
109
|
watch(isActive, val => {
|
|
95
110
|
if (val) {
|
|
96
111
|
parent?.register();
|
|
97
112
|
if (IN_BROWSER && !props.disableInitialFocus) {
|
|
113
|
+
document.addEventListener('pointerdown', onPointerdown);
|
|
98
114
|
document.addEventListener('focusin', onFocusIn, {
|
|
99
115
|
once: true
|
|
100
116
|
});
|
|
@@ -102,6 +118,8 @@ export const VMenu = genericComponent()({
|
|
|
102
118
|
} else {
|
|
103
119
|
parent?.unregister();
|
|
104
120
|
if (IN_BROWSER) {
|
|
121
|
+
clearTimeout(focusTrapSuppressionTimeout);
|
|
122
|
+
document.removeEventListener('pointerdown', onPointerdown);
|
|
105
123
|
document.removeEventListener('focusin', onFocusIn);
|
|
106
124
|
}
|
|
107
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VMenu.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useRtl","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","onBeforeUnmount","onDeactivated","provide","ref","shallowRef","toRef","useId","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","IN_BROWSER","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","submenu","Boolean","disableInitialFocus","closeDelay","closeOnContentClick","locationStrategy","location","undefined","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","isRtl","uid","overlay","parent","openChildren","Set","register","add","unregister","delete","closeParents","e","setTimeout","size","persistent","contentEl","document","removeEventListener","onFocusIn","before","relatedTarget","after","target","globalTop","includes","contains","focusable","focus","val","addEventListener","once","immediate","onClickOutside","onKeydown","disabled","key","HTMLTextAreaElement","HTMLInputElement","closest","preventDefault","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","stopImmediatePropagation","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef, toRef,\n useId,\n watch,\n} from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n IN_BROWSER,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n disableInitialFocus: Boolean,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n const { isRtl } = useRtl()\n\n const uid = useId()\n const id = toRef(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(new Set<string>())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\n !props.persistent &&\n (e == null || (overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n onBeforeUnmount(() => {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n })\n onDeactivated(() => isActive.value = false)\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n if (IN_BROWSER && !props.disableInitialFocus) {\n document.addEventListener('focusin', onFocusIn, { once: true })\n }\n } else {\n parent?.unregister()\n if (IN_BROWSER) {\n document.removeEventListener('focusin', onFocusIn)\n }\n }\n }, { immediate: true })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (\n e.key === 'Enter' &&\n ((e.target instanceof HTMLTextAreaElement) ||\n (e.target instanceof HTMLInputElement && !!e.target.closest('form')))\n ) return\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'prev')\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault()\n focusChild(el, 'first')\n }\n }\n } else if (\n props.submenu\n ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')\n : ['ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-controls': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n id={ id.value }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n location={ props.location ?? (props.submenu ? 'end' : 'bottom') }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VMenu.js","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useRtl","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","onBeforeUnmount","onDeactivated","provide","ref","shallowRef","toRef","useId","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","IN_BROWSER","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","submenu","Boolean","disableInitialFocus","closeDelay","closeOnContentClick","locationStrategy","location","undefined","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","isRtl","uid","overlay","parent","openChildren","Set","register","add","unregister","delete","closeParents","e","setTimeout","size","persistent","contentEl","document","removeEventListener","onFocusIn","focusTrapSuppressed","focusTrapSuppressionTimeout","onPointerdown","window","before","relatedTarget","after","target","localTop","includes","contains","openOnHover","activatorEl","focusable","focus","val","addEventListener","once","clearTimeout","immediate","onClickOutside","onKeydown","disabled","key","HTMLTextAreaElement","HTMLInputElement","closest","preventDefault","nextElement","shiftKey","el","tabIndex","onActivatorKeydown","stopImmediatePropagation","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef, toRef,\n useId,\n watch,\n} from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n IN_BROWSER,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n submenu: Boolean,\n disableInitialFocus: Boolean,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n location: undefined,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n const { isRtl } = useRtl()\n\n const uid = useId()\n const id = toRef(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(new Set<string>())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\n !props.persistent &&\n (e == null || (overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n onBeforeUnmount(() => {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n })\n onDeactivated(() => isActive.value = false)\n\n let focusTrapSuppressed = false\n let focusTrapSuppressionTimeout = -1\n\n async function onPointerdown () {\n focusTrapSuppressed = true\n focusTrapSuppressionTimeout = window.setTimeout(() => {\n focusTrapSuppressed = false\n }, 100)\n }\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the menu without open submenus or overlays\n overlay.value?.localTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n if (focusTrapSuppressed) {\n if (!props.openOnHover || !overlay.value.activatorEl?.contains(after)) {\n isActive.value = false\n }\n } else {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n\n document.removeEventListener('pointerdown', onPointerdown)\n }\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n if (IN_BROWSER && !props.disableInitialFocus) {\n document.addEventListener('pointerdown', onPointerdown)\n document.addEventListener('focusin', onFocusIn, { once: true })\n }\n } else {\n parent?.unregister()\n if (IN_BROWSER) {\n clearTimeout(focusTrapSuppressionTimeout)\n document.removeEventListener('pointerdown', onPointerdown)\n document.removeEventListener('focusin', onFocusIn)\n }\n }\n }, { immediate: true })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (\n e.key === 'Enter' &&\n ((e.target instanceof HTMLTextAreaElement) ||\n (e.target instanceof HTMLInputElement && !!e.target.closest('form')))\n ) return\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'prev')\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault()\n focusChild(el, 'first')\n }\n }\n } else if (\n props.submenu\n ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')\n : ['ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-controls': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n id={ id.value }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n location={ props.location ?? (props.submenu ? 'end' : 'bottom') }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,6 +41,14 @@
|
|
|
41
41
|
.v-number-input--stacked .v-number-input__control .v-btn {
|
|
42
42
|
flex: 1;
|
|
43
43
|
}
|
|
44
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__prepend-inner:has(.v-number-input__control),
|
|
45
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__append-inner:has(.v-number-input__control) {
|
|
46
|
+
padding-top: var(--v-field-padding-top);
|
|
47
|
+
}
|
|
48
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__prepend-inner:has(.v-number-input__control) > *:not(.v-number-input__control, .v-divider--vertical),
|
|
49
|
+
.v-number-input--stacked .v-field--variant-underlined > .v-field__append-inner:has(.v-number-input__control) > *:not(.v-number-input__control, .v-divider--vertical) {
|
|
50
|
+
margin-top: var(--v-input-padding-top, 0);
|
|
51
|
+
}
|
|
44
52
|
.v-number-input--hide-input .v-field {
|
|
45
53
|
flex: none;
|
|
46
54
|
}
|
|
@@ -96,7 +96,7 @@ export const VNumberInput = genericComponent()({
|
|
|
96
96
|
const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));
|
|
97
97
|
const _inputText = shallowRef(null);
|
|
98
98
|
watchEffect(() => {
|
|
99
|
-
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value) === model.value) {
|
|
99
|
+
if (isFocused.value && !controlsDisabled.value && Number(_inputText.value?.replace(decimalSeparator.value, '.')) === model.value) {
|
|
100
100
|
// ignore external changes while typing
|
|
101
101
|
// e.g. 5.01{backspace}2 » should result in 5.02
|
|
102
102
|
// but we emit '5' in and want to preserve '5.0'
|
|
@@ -195,6 +195,7 @@ export const VNumberInput = genericComponent()({
|
|
|
195
195
|
if (!new RegExp(`^-?\\d*${escapeForRegex(decimalSeparator.value)}?\\d*$`).test(potentialNewInputVal)) {
|
|
196
196
|
e.preventDefault();
|
|
197
197
|
inputElement.value = potentialNewNumber;
|
|
198
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
198
199
|
}
|
|
199
200
|
if (props.precision == null) return;
|
|
200
201
|
|
|
@@ -202,13 +203,15 @@ export const VNumberInput = genericComponent()({
|
|
|
202
203
|
if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {
|
|
203
204
|
e.preventDefault();
|
|
204
205
|
inputElement.value = potentialNewNumber;
|
|
206
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
205
207
|
const cursorPosition = (selectionStart ?? 0) + e.data.length;
|
|
206
208
|
inputElement.setSelectionRange(cursorPosition, cursorPosition);
|
|
207
209
|
}
|
|
208
210
|
// Ignore decimal separator when precision = 0
|
|
209
|
-
if (props.precision === 0 && potentialNewInputVal.
|
|
211
|
+
if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {
|
|
210
212
|
e.preventDefault();
|
|
211
213
|
inputElement.value = potentialNewNumber;
|
|
214
|
+
nextTick(() => inputText.value = potentialNewNumber);
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
217
|
async function onKeydown(e) {
|