vuetify 3.0.5 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_component-variables.sass +1 -0
- package/dist/json/attributes.json +17 -13
- package/dist/json/importMap.json +88 -88
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +28 -19
- package/dist/vuetify.css +75 -60
- package/dist/vuetify.d.ts +27 -25
- package/dist/vuetify.esm.js +88 -46
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +88 -46
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +227 -222
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VApp/{variables.scss → _variables.scss} +0 -0
- package/lib/components/VAvatar/VAvatar.mjs +7 -2
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/index.d.ts +2 -0
- package/lib/components/VColorPicker/VColorPicker.mjs +0 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +4 -3
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VImg/VImg.mjs +10 -2
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VList/VList.mjs +4 -2
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +2 -1
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +1 -0
- package/lib/components/VList/VListItem.sass +1 -0
- package/lib/components/VPagination/VPagination.mjs +12 -5
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.css +4 -4
- package/lib/components/VRadioGroup/VRadioGroup.mjs +3 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.sass +4 -4
- package/lib/components/VRadioGroup/_variables.scss +2 -2
- package/lib/components/VSelectionControl/VSelectionControl.mjs +11 -2
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.ts +2 -2
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +12 -3
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.css +11 -0
- package/lib/components/VSlider/VSliderThumb.mjs +4 -6
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.sass +10 -0
- package/lib/components/VSlider/VSliderTrack.css +4 -1
- package/lib/components/VSlider/VSliderTrack.sass +3 -1
- package/lib/components/VSlider/slider.mjs +2 -2
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.mjs +6 -1
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/index.d.ts +3 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +15 -13
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +24 -24
- package/package.json +2 -2
|
@@ -20,6 +20,7 @@ import { useRefs } from "../../composables/refs.mjs";
|
|
|
20
20
|
import { useResizeObserver } from "../../composables/resizeObserver.mjs"; // Utilities
|
|
21
21
|
import { computed, nextTick, ref, toRef } from 'vue';
|
|
22
22
|
import { createRange, defineComponent, keyValues, useRender } from "../../util/index.mjs"; // Types
|
|
23
|
+
import { useDisplay } from "../../composables/index.mjs";
|
|
23
24
|
export const VPagination = defineComponent({
|
|
24
25
|
name: 'VPagination',
|
|
25
26
|
props: {
|
|
@@ -124,6 +125,9 @@ export const VPagination = defineComponent({
|
|
|
124
125
|
const {
|
|
125
126
|
themeClasses
|
|
126
127
|
} = provideTheme(props);
|
|
128
|
+
const {
|
|
129
|
+
width
|
|
130
|
+
} = useDisplay();
|
|
127
131
|
const maxButtons = ref(-1);
|
|
128
132
|
provideDefaults(undefined, {
|
|
129
133
|
scoped: true
|
|
@@ -140,17 +144,20 @@ export const VPagination = defineComponent({
|
|
|
140
144
|
if (!firstItem) return;
|
|
141
145
|
const totalWidth = contentRect.width;
|
|
142
146
|
const itemWidth = firstItem.offsetWidth + parseFloat(getComputedStyle(firstItem).marginRight) * 2;
|
|
143
|
-
|
|
144
|
-
maxButtons.value = Math.max(0, Math.floor(
|
|
145
|
-
// Round to two decimal places to avoid floating point errors
|
|
146
|
-
+((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));
|
|
147
|
+
maxButtons.value = getMax(totalWidth, itemWidth);
|
|
147
148
|
});
|
|
148
149
|
const length = computed(() => parseInt(props.length, 10));
|
|
149
150
|
const start = computed(() => parseInt(props.start, 10));
|
|
150
151
|
const totalVisible = computed(() => {
|
|
151
152
|
if (props.totalVisible) return parseInt(props.totalVisible, 10);else if (maxButtons.value >= 0) return maxButtons.value;
|
|
152
|
-
return
|
|
153
|
+
return getMax(width.value, 58);
|
|
153
154
|
});
|
|
155
|
+
function getMax(totalWidth, itemWidth) {
|
|
156
|
+
const minButtons = props.showFirstLastPage ? 5 : 3;
|
|
157
|
+
return Math.max(0, Math.floor(
|
|
158
|
+
// Round to two decimal places to avoid floating point errors
|
|
159
|
+
+((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));
|
|
160
|
+
}
|
|
154
161
|
const range = computed(() => {
|
|
155
162
|
if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
|
|
156
163
|
if (totalVisible.value <= 1) return [page.value];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPagination.mjs","names":["VBtn","IconValue","makeBorderProps","makeDensityProps","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","computed","nextTick","ref","toRef","createRange","defineComponent","keyValues","useRender","VPagination","name","props","activeColor","String","start","type","Number","default","modelValue","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","emits","value","first","prev","next","last","setup","slots","emit","page","t","n","isRtl","themeClasses","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","width","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","minButtons","Math","max","floor","toFixed","parseInt","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","isActive","key","icon","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, ref, toRef } from 'vue'\nimport { createRange, defineComponent, keyValues, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n\n props: {\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const maxButtons = ref(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n const minButtons = props.showFirstLastPage ? 5 : 3\n\n maxButtons.value = Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return length.value\n })\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n ]}\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.first} />\n ) }\n </li>\n ) }\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.prev} />\n ) }\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.key }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" {...item.props}>{ item.page }</VBtn>\n ) }\n </li>\n )) }\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.next} />\n ) }\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.last} />\n ) }\n </li>\n ) }\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VPagination.mjs","names":["VBtn","IconValue","makeBorderProps","makeDensityProps","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","computed","nextTick","ref","toRef","createRange","defineComponent","keyValues","useRender","useDisplay","VPagination","name","props","activeColor","String","start","type","Number","default","modelValue","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","emits","value","first","prev","next","last","setup","slots","emit","page","t","n","isRtl","themeClasses","width","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","getMax","parseInt","minButtons","Math","max","floor","toFixed","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","isActive","key","icon","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, ref, toRef } from 'vue'\nimport { createRange, defineComponent, keyValues, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\nimport { useDisplay } from '@/composables'\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n\n props: {\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { width } = useDisplay()\n const maxButtons = ref(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, itemWidth)\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n }\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n ]}\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.first} />\n ) }\n </li>\n ) }\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.prev} />\n ) }\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.key }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" {...item.props}>{ item.page }</VBtn>\n ) }\n </li>\n )) }\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.next} />\n ) }\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.last} />\n ) }\n </li>\n ) }\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
.v-radio-group > .v-input__control {
|
|
2
2
|
flex-direction: column;
|
|
3
3
|
}
|
|
4
|
-
.v-radio-group > .v-label {
|
|
5
|
-
margin-inline-start:
|
|
4
|
+
.v-radio-group > .v-input__control > .v-label {
|
|
5
|
+
margin-inline-start: 8px;
|
|
6
6
|
}
|
|
7
|
-
.v-radio-group > .v-label + .v-selection-control-group {
|
|
8
|
-
margin-top:
|
|
7
|
+
.v-radio-group > .v-input__control > .v-label + .v-selection-control-group {
|
|
8
|
+
margin-top: 8px;
|
|
9
9
|
}
|
|
@@ -73,7 +73,7 @@ export const VRadioGroup = defineComponent({
|
|
|
73
73
|
isReadonly
|
|
74
74
|
} = _ref2;
|
|
75
75
|
return _createVNode(_Fragment, null, [label && _createVNode(VLabel, {
|
|
76
|
-
"
|
|
76
|
+
"id": id.value
|
|
77
77
|
}, {
|
|
78
78
|
default: () => [label]
|
|
79
79
|
}), _createVNode(VSelectionControlGroup, _mergeProps(controlProps, {
|
|
@@ -83,7 +83,8 @@ export const VRadioGroup = defineComponent({
|
|
|
83
83
|
"falseIcon": props.falseIcon,
|
|
84
84
|
"type": props.type,
|
|
85
85
|
"disabled": isDisabled.value,
|
|
86
|
-
"readonly": isReadonly.value
|
|
86
|
+
"readonly": isReadonly.value,
|
|
87
|
+
"aria-labelledby": label ? id.value : undefined
|
|
87
88
|
}, controlAttrs, {
|
|
88
89
|
"modelValue": model.value,
|
|
89
90
|
"onUpdate:modelValue": $event => model.value = $event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VRadioGroup.mjs","names":["filterControlProps","filterInputProps","makeVInputProps","VInput","makeSelectionControlGroupProps","VSelectionControlGroup","VLabel","IconValue","useProxiedModel","computed","defineComponent","filterInputAttrs","getUid","omit","useRender","VRadioGroup","name","inheritAttrs","props","height","type","Number","String","default","trueIcon","falseIcon","emits","val","setup","attrs","slots","uid","id","model","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","multiple","label","for","value","isDisabled","isReadonly"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { filterControlProps } from '@/components/VSelectionControl/VSelectionControl'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, filterInputAttrs, getUid, omit, useRender } from '@/util'\n\nexport const VRadioGroup = defineComponent({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: {\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps({\n ...props,\n multiple: false as const,\n })\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class=\"v-radio-group\"\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel
|
|
1
|
+
{"version":3,"file":"VRadioGroup.mjs","names":["filterControlProps","filterInputProps","makeVInputProps","VInput","makeSelectionControlGroupProps","VSelectionControlGroup","VLabel","IconValue","useProxiedModel","computed","defineComponent","filterInputAttrs","getUid","omit","useRender","VRadioGroup","name","inheritAttrs","props","height","type","Number","String","default","trueIcon","falseIcon","emits","val","setup","attrs","slots","uid","id","model","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","multiple","label","for","value","isDisabled","isReadonly","undefined"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { filterControlProps } from '@/components/VSelectionControl/VSelectionControl'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, filterInputAttrs, getUid, omit, useRender } from '@/util'\n\nexport const VRadioGroup = defineComponent({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: {\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps({\n ...props,\n multiple: false as const,\n })\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class=\"v-radio-group\"\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel id={ id.value }>\n { label }\n </VLabel>\n ) }\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n defaultsTarget=\"VRadio\"\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n aria-labelledby={ label ? id.value : undefined }\n { ...controlAttrs }\n v-model={ model.value }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRadioGroup = InstanceType<typeof VRadioGroup>\n"],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
> .v-input__control
|
|
5
5
|
flex-direction: column
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
> .v-label
|
|
8
|
+
margin-inline-start: $radio-group-label-margin-inline-start
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
+ .v-selection-control-group
|
|
11
|
+
margin-top: $radio-group-label-selection-group-margin-top
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
$radio-group-label-margin-inline-start:
|
|
2
|
-
$radio-group-label-selection-group-margin-top:
|
|
1
|
+
$radio-group-label-margin-inline-start: 8px !default;
|
|
2
|
+
$radio-group-label-selection-group-margin-top: 8px !default;
|
|
@@ -10,7 +10,7 @@ import { Ripple } from "../../directives/ripple/index.mjs"; // Composables
|
|
|
10
10
|
import { useDensity } from "../../composables/density.mjs";
|
|
11
11
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
12
12
|
import { useTextColor } from "../../composables/color.mjs"; // Utilities
|
|
13
|
-
import { computed, inject, ref } from 'vue';
|
|
13
|
+
import { computed, inject, nextTick, ref } from 'vue';
|
|
14
14
|
import { filterInputAttrs, genericComponent, getUid, pick, propsFactory, SUPPORTS_FOCUS_VISIBLE, useRender, wrapInArray } from "../../util/index.mjs"; // Types
|
|
15
15
|
export const makeSelectionControlProps = propsFactory({
|
|
16
16
|
label: String,
|
|
@@ -81,6 +81,7 @@ export const VSelectionControl = genericComponent()({
|
|
|
81
81
|
slots
|
|
82
82
|
} = _ref;
|
|
83
83
|
const {
|
|
84
|
+
group,
|
|
84
85
|
densityClasses,
|
|
85
86
|
icon,
|
|
86
87
|
model,
|
|
@@ -93,6 +94,11 @@ export const VSelectionControl = genericComponent()({
|
|
|
93
94
|
const isFocused = ref(false);
|
|
94
95
|
const isFocusVisible = ref(false);
|
|
95
96
|
const input = ref();
|
|
97
|
+
group == null ? void 0 : group.onForceUpdate(() => {
|
|
98
|
+
if (input.value) {
|
|
99
|
+
input.value.checked = model.value;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
96
102
|
function onFocus(e) {
|
|
97
103
|
isFocused.value = true;
|
|
98
104
|
if (!SUPPORTS_FOCUS_VISIBLE || SUPPORTS_FOCUS_VISIBLE && e.target.matches(':focus-visible')) {
|
|
@@ -104,6 +110,9 @@ export const VSelectionControl = genericComponent()({
|
|
|
104
110
|
isFocusVisible.value = false;
|
|
105
111
|
}
|
|
106
112
|
function onInput(e) {
|
|
113
|
+
if (props.readonly && group) {
|
|
114
|
+
nextTick(() => group.forceUpdate());
|
|
115
|
+
}
|
|
107
116
|
model.value = e.target.checked;
|
|
108
117
|
}
|
|
109
118
|
useRender(() => {
|
|
@@ -140,7 +149,7 @@ export const VSelectionControl = genericComponent()({
|
|
|
140
149
|
"onBlur": onBlur,
|
|
141
150
|
"onFocus": onFocus,
|
|
142
151
|
"onInput": onInput,
|
|
143
|
-
"aria-
|
|
152
|
+
"aria-disabled": props.readonly,
|
|
144
153
|
"type": props.type,
|
|
145
154
|
"value": trueValue.value,
|
|
146
155
|
"name": props.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","Ripple","useDensity","useProxiedModel","useTextColor","computed","inject","ref","filterInputAttrs","genericComponent","getUid","pick","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeSelectionControlProps","label","String","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","attrs","slots","uid","id","isFocused","isFocusVisible","input","onFocus","e","target","matches","onBlur","onInput","checked","for","rootAttrs","inputAttrs","inline","default","type","ripple","filterControlProps","Object","keys"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, inject, ref } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n pick,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport const makeSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeSelectionControlGroupProps(),\n}, 'v-selection-control')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n } & SlotsToProps<{\n default: []\n input: [SelectionControlSlot]\n }>\n}>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = ref(false)\n const isFocusVisible = ref(false)\n const input = ref<HTMLInputElement>()\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n ]}\n { ...rootAttrs }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n <input\n ref={ input }\n checked={ model.value }\n disabled={ props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-readonly={ props.readonly }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot) }\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\n { label }\n </VLabel>\n ) }\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n\nexport function filterControlProps (props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>>) {\n return pick(props, Object.keys(VSelectionControl.props) as any)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","Ripple","useDensity","useProxiedModel","useTextColor","computed","inject","nextTick","ref","filterInputAttrs","genericComponent","getUid","pick","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeSelectionControlProps","label","String","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","matches","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","inline","default","type","ripple","filterControlProps","Object","keys"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, inject, nextTick, ref } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n pick,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport const makeSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeSelectionControlGroupProps(),\n}, 'v-selection-control')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>() => {\n $props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n } & SlotsToProps<{\n default: []\n input: [SelectionControlSlot]\n }>\n}>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = ref(false)\n const isFocusVisible = ref(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n ]}\n { ...rootAttrs }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n <input\n ref={ input }\n checked={ model.value }\n disabled={ props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ props.readonly }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot) }\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\n { label }\n </VLabel>\n ) }\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n\nexport function filterControlProps (props: ExtractPropTypes<ReturnType<typeof makeSelectionControlProps>>) {\n return pick(props, Object.keys(VSelectionControl.props) as any)\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
|
-
import { JSXComponent, PropType, ExtractPropTypes, Ref, WritableComputedRef, CSSProperties } from 'vue';
|
|
2
|
+
import { JSXComponent, PropType, ExtractPropTypes, Ref, nextTick, WritableComputedRef, CSSProperties } from 'vue';
|
|
3
3
|
|
|
4
4
|
declare type Density = null | 'default' | 'comfortable' | 'compact';
|
|
5
5
|
|
|
@@ -145,7 +145,7 @@ declare const VSelectionControl: {
|
|
|
145
145
|
errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void)[]) | undefined;
|
|
146
146
|
};
|
|
147
147
|
$forceUpdate: () => void;
|
|
148
|
-
$nextTick: typeof
|
|
148
|
+
$nextTick: typeof nextTick;
|
|
149
149
|
$watch(source: string | Function, cb: Function, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
|
|
150
150
|
} & Readonly<ExtractPropTypes<Omit<{
|
|
151
151
|
density: {
|
|
@@ -8,7 +8,7 @@ import { makeDensityProps } from "../../composables/density.mjs";
|
|
|
8
8
|
import { makeThemeProps } from "../../composables/theme.mjs";
|
|
9
9
|
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
10
10
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
|
11
|
-
import { computed, provide, toRef } from 'vue';
|
|
11
|
+
import { computed, onScopeDispose, provide, toRef } from 'vue';
|
|
12
12
|
import { deepEqual, defineComponent, getUid, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
13
13
|
export const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group');
|
|
14
14
|
export const makeSelectionControlGroupProps = propsFactory({
|
|
@@ -58,8 +58,18 @@ export const VSelectionControlGroup = defineComponent({
|
|
|
58
58
|
const uid = getUid();
|
|
59
59
|
const id = computed(() => props.id || `v-selection-control-group-${uid}`);
|
|
60
60
|
const name = computed(() => props.name || id.value);
|
|
61
|
+
const updateHandlers = new Set();
|
|
61
62
|
provide(VSelectionControlGroupSymbol, {
|
|
62
|
-
modelValue
|
|
63
|
+
modelValue,
|
|
64
|
+
forceUpdate: () => {
|
|
65
|
+
updateHandlers.forEach(fn => fn());
|
|
66
|
+
},
|
|
67
|
+
onForceUpdate: cb => {
|
|
68
|
+
updateHandlers.add(cb);
|
|
69
|
+
onScopeDispose(() => {
|
|
70
|
+
updateHandlers.delete(cb);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
63
73
|
});
|
|
64
74
|
provideDefaults({
|
|
65
75
|
[props.defaultsTarget]: {
|
|
@@ -85,7 +95,6 @@ export const VSelectionControlGroup = defineComponent({
|
|
|
85
95
|
"class": ['v-selection-control-group', {
|
|
86
96
|
'v-selection-control-group--inline': props.inline
|
|
87
97
|
}],
|
|
88
|
-
"aria-labelled-by": props.type === 'radio' ? id.value : undefined,
|
|
89
98
|
"role": props.type === 'radio' ? 'radiogroup' : undefined
|
|
90
99
|
}, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots)]);
|
|
91
100
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSelectionControlGroup.mjs","names":["IconValue","makeDensityProps","makeThemeProps","provideDefaults","useProxiedModel","computed","provide","toRef","deepEqual","defineComponent","getUid","propsFactory","useRender","VSelectionControlGroupSymbol","Symbol","for","makeSelectionControlGroupProps","color","String","disabled","Boolean","error","id","inline","falseIcon","trueIcon","ripple","type","default","multiple","name","readonly","modelValue","valueComparator","Function","VSelectionControlGroup","props","defaultsTarget","emits","val","setup","slots","uid","value","density","Array","isArray","undefined"],"sources":["../../../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeThemeProps } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { deepEqual, defineComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref<any>\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey<VSelectionGroupContext> = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: Boolean,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeThemeProps(),\n ...makeDensityProps(),\n}, 'v-selection-control-group')\n\nexport const VSelectionControlGroup = defineComponent({\n name: 'VSelectionControlGroup',\n\n props: {\n defaultsTarget: {\n type: String,\n default: 'VSelectionControl',\n },\n\n ...makeSelectionControlGroupProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const modelValue = useProxiedModel(props, 'modelValue')\n const uid = getUid()\n const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n const name = computed(() => props.name || id.value)\n\n provide(VSelectionControlGroupSymbol, {
|
|
1
|
+
{"version":3,"file":"VSelectionControlGroup.mjs","names":["IconValue","makeDensityProps","makeThemeProps","provideDefaults","useProxiedModel","computed","onScopeDispose","provide","toRef","deepEqual","defineComponent","getUid","propsFactory","useRender","VSelectionControlGroupSymbol","Symbol","for","makeSelectionControlGroupProps","color","String","disabled","Boolean","error","id","inline","falseIcon","trueIcon","ripple","type","default","multiple","name","readonly","modelValue","valueComparator","Function","VSelectionControlGroup","props","defaultsTarget","emits","val","setup","slots","uid","value","updateHandlers","Set","forceUpdate","forEach","fn","onForceUpdate","cb","add","delete","density","Array","isArray","undefined"],"sources":["../../../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeThemeProps } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue'\nimport { deepEqual, defineComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref<any>\n forceUpdate: () => void\n onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey<VSelectionGroupContext> = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: Boolean,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeThemeProps(),\n ...makeDensityProps(),\n}, 'v-selection-control-group')\n\nexport const VSelectionControlGroup = defineComponent({\n name: 'VSelectionControlGroup',\n\n props: {\n defaultsTarget: {\n type: String,\n default: 'VSelectionControl',\n },\n\n ...makeSelectionControlGroupProps(),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const modelValue = useProxiedModel(props, 'modelValue')\n const uid = getUid()\n const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n const name = computed(() => props.name || id.value)\n\n const updateHandlers = new Set<() => void>()\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn())\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb)\n onScopeDispose(() => {\n updateHandlers.delete(cb)\n })\n },\n })\n\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || (props.multiple == null && Array.isArray(modelValue.value))),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-selection-control-group',\n { 'v-selection-control-group--inline': props.inline },\n ]}\n role={ props.type === 'radio' ? 'radiogroup' : undefined }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VSelectionControlGroup = InstanceType<typeof VSelectionControlGroup>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,SAAS;AAAA,SACTC,gBAAgB;AAAA,SAChBC,cAAc;AAAA,SACdC,eAAe;AAAA,SACfC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,cAAc,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACrDC,SAAS,EAAEC,eAAe,EAAEC,MAAM,EAAEC,YAAY,EAAEC,SAAS,gCAEpE;AASA,OAAO,MAAMC,4BAAkE,GAAGC,MAAM,CAACC,GAAG,CAAC,iCAAiC,CAAC;AAE/H,OAAO,MAAMC,8BAA8B,GAAGL,YAAY,CAAC;EACzDM,KAAK,EAAEC,MAAM;EACbC,QAAQ,EAAEC,OAAO;EACjBC,KAAK,EAAED,OAAO;EACdE,EAAE,EAAEJ,MAAM;EACVK,MAAM,EAAEH,OAAO;EACfI,SAAS,EAAEzB,SAAS;EACpB0B,QAAQ,EAAE1B,SAAS;EACnB2B,MAAM,EAAE;IACNC,IAAI,EAAEP,OAAO;IACbQ,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRF,IAAI,EAAEP,OAAmC;IACzCQ,OAAO,EAAE;EACX,CAAC;EACDE,IAAI,EAAEZ,MAAM;EACZa,QAAQ,EAAEX,OAAO;EACjBY,UAAU,EAAE,IAAI;EAChBL,IAAI,EAAET,MAAM;EACZe,eAAe,EAAE;IACfN,IAAI,EAAEO,QAAsC;IAC5CN,OAAO,EAAEpB;EACX,CAAC;EAED,GAAGP,cAAc,EAAE;EACnB,GAAGD,gBAAgB;AACrB,CAAC,EAAE,2BAA2B,CAAC;AAE/B,OAAO,MAAMmC,sBAAsB,GAAG1B,eAAe,CAAC;EACpDqB,IAAI,EAAE,wBAAwB;EAE9BM,KAAK,EAAE;IACLC,cAAc,EAAE;MACdV,IAAI,EAAET,MAAM;MACZU,OAAO,EAAE;IACX,CAAC;IAED,GAAGZ,8BAA8B;EACnC,CAAC;EAEDsB,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAQ,IAAK;EACrC,CAAC;EAEDC,KAAK,CAAEJ,KAAK,QAAa;IAAA,IAAX;MAAEK;IAAM,CAAC;IACrB,MAAMT,UAAU,GAAG7B,eAAe,CAACiC,KAAK,EAAE,YAAY,CAAC;IACvD,MAAMM,GAAG,GAAGhC,MAAM,EAAE;IACpB,MAAMY,EAAE,GAAGlB,QAAQ,CAAC,MAAMgC,KAAK,CAACd,EAAE,IAAK,6BAA4BoB,GAAI,EAAC,CAAC;IACzE,MAAMZ,IAAI,GAAG1B,QAAQ,CAAC,MAAMgC,KAAK,CAACN,IAAI,IAAIR,EAAE,CAACqB,KAAK,CAAC;IAEnD,MAAMC,cAAc,GAAG,IAAIC,GAAG,EAAc;IAC5CvC,OAAO,CAACO,4BAA4B,EAAE;MACpCmB,UAAU;MACVc,WAAW,EAAE,MAAM;QACjBF,cAAc,CAACG,OAAO,CAACC,EAAE,IAAIA,EAAE,EAAE,CAAC;MACpC,CAAC;MACDC,aAAa,EAAEC,EAAE,IAAI;QACnBN,cAAc,CAACO,GAAG,CAACD,EAAE,CAAC;QACtB7C,cAAc,CAAC,MAAM;UACnBuC,cAAc,CAACQ,MAAM,CAACF,EAAE,CAAC;QAC3B,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEFhD,eAAe,CAAC;MACd,CAACkC,KAAK,CAACC,cAAc,GAAG;QACtBpB,KAAK,EAAEV,KAAK,CAAC6B,KAAK,EAAE,OAAO,CAAC;QAC5BjB,QAAQ,EAAEZ,KAAK,CAAC6B,KAAK,EAAE,UAAU,CAAC;QAClCiB,OAAO,EAAE9C,KAAK,CAAC6B,KAAK,EAAE,SAAS,CAAC;QAChCf,KAAK,EAAEd,KAAK,CAAC6B,KAAK,EAAE,OAAO,CAAC;QAC5Bb,MAAM,EAAEhB,KAAK,CAAC6B,KAAK,EAAE,QAAQ,CAAC;QAC9BJ,UAAU;QACVH,QAAQ,EAAEzB,QAAQ,CAAC,MAAM,CAAC,CAACgC,KAAK,CAACP,QAAQ,IAAKO,KAAK,CAACP,QAAQ,IAAI,IAAI,IAAIyB,KAAK,CAACC,OAAO,CAACvB,UAAU,CAACW,KAAK,CAAE,CAAC;QACzGb,IAAI;QACJN,SAAS,EAAEjB,KAAK,CAAC6B,KAAK,EAAE,WAAW,CAAC;QACpCX,QAAQ,EAAElB,KAAK,CAAC6B,KAAK,EAAE,UAAU,CAAC;QAClCL,QAAQ,EAAExB,KAAK,CAAC6B,KAAK,EAAE,UAAU,CAAC;QAClCV,MAAM,EAAEnB,KAAK,CAAC6B,KAAK,EAAE,QAAQ,CAAC;QAC9BT,IAAI,EAAEpB,KAAK,CAAC6B,KAAK,EAAE,MAAM,CAAC;QAC1BH,eAAe,EAAE1B,KAAK,CAAC6B,KAAK,EAAE,iBAAiB;MACjD;IACF,CAAC,CAAC;IAEFxB,SAAS,CAAC;MAAA;MAAA;QAAA,SAEC,CACL,2BAA2B,EAC3B;UAAE,mCAAmC,EAAEwB,KAAK,CAACb;QAAO,CAAC,CACtD;QAAA,QACMa,KAAK,CAACT,IAAI,KAAK,OAAO,GAAG,YAAY,GAAG6B;MAAS,sBAEtDf,KAAK,CAACb,OAAO,qBAAb,oBAAAa,KAAK,CAAY;IAAA,CAEtB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
33
33
|
content: "";
|
|
34
34
|
color: inherit;
|
|
35
|
+
top: 0;
|
|
36
|
+
left: 0;
|
|
35
37
|
width: 100%;
|
|
36
38
|
height: 100%;
|
|
37
39
|
border-radius: 50%;
|
|
@@ -88,6 +90,12 @@
|
|
|
88
90
|
top: 50%;
|
|
89
91
|
transform: translateY(-50%);
|
|
90
92
|
}
|
|
93
|
+
.v-slider.v-input--horizontal .v-slider-thumb.v-locale--is-ltr, .v-locale--is-ltr .v-slider.v-input--horizontal .v-slider-thumb {
|
|
94
|
+
left: calc(var(--v-slider-thumb-position) - var(--v-slider-thumb-size) / 2);
|
|
95
|
+
}
|
|
96
|
+
.v-slider.v-input--horizontal .v-slider-thumb.v-locale--is-rtl, .v-locale--is-rtl .v-slider.v-input--horizontal .v-slider-thumb {
|
|
97
|
+
right: calc(var(--v-slider-thumb-position) - var(--v-slider-thumb-size) / 2);
|
|
98
|
+
}
|
|
91
99
|
.v-slider.v-input--horizontal .v-slider-thumb__label-container {
|
|
92
100
|
left: calc(var(--v-slider-thumb-size) / 2);
|
|
93
101
|
top: 0;
|
|
@@ -108,6 +116,9 @@
|
|
|
108
116
|
bottom: -6px;
|
|
109
117
|
}
|
|
110
118
|
|
|
119
|
+
.v-slider.v-input--vertical .v-slider-thumb {
|
|
120
|
+
top: calc(var(--v-slider-thumb-position) - var(--v-slider-thumb-size) / 2);
|
|
121
|
+
}
|
|
111
122
|
.v-slider.v-input--vertical .v-slider-thumb__label-container {
|
|
112
123
|
top: calc(var(--v-slider-thumb-size) / 2);
|
|
113
124
|
right: 0;
|
|
@@ -83,7 +83,7 @@ export const VSliderThumb = defineComponent({
|
|
|
83
83
|
const _step = step.value || 0.1;
|
|
84
84
|
const steps = (props.max - props.min) / _step;
|
|
85
85
|
if ([left, right, down, up].includes(e.key)) {
|
|
86
|
-
const increase =
|
|
86
|
+
const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up];
|
|
87
87
|
const direction = increase.includes(e.key) ? 1 : -1;
|
|
88
88
|
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
|
89
89
|
value = value + direction * _step * multipliers.value[multiplier];
|
|
@@ -103,8 +103,7 @@ export const VSliderThumb = defineComponent({
|
|
|
103
103
|
}
|
|
104
104
|
useRender(() => {
|
|
105
105
|
var _slots$thumbLabel;
|
|
106
|
-
const positionPercentage = convertToUnit(vertical.value ? 100 - props.position : props.position, '%');
|
|
107
|
-
const inset = vertical.value ? 'block' : 'inline';
|
|
106
|
+
const positionPercentage = convertToUnit(vertical.value || isReversed.value ? 100 - props.position : props.position, '%');
|
|
108
107
|
const {
|
|
109
108
|
elevationClasses
|
|
110
109
|
} = useElevation(computed(() => !disabled.value ? elevation.value : undefined));
|
|
@@ -114,9 +113,8 @@ export const VSliderThumb = defineComponent({
|
|
|
114
113
|
'v-slider-thumb--pressed': props.focused && mousePressed.value
|
|
115
114
|
}],
|
|
116
115
|
"style": {
|
|
117
|
-
|
|
118
|
-
'--v-slider-thumb-size': convertToUnit(thumbSize.value)
|
|
119
|
-
direction: !vertical.value ? horizontalDirection.value : undefined
|
|
116
|
+
'--v-slider-thumb-position': positionPercentage,
|
|
117
|
+
'--v-slider-thumb-size': convertToUnit(thumbSize.value)
|
|
120
118
|
},
|
|
121
119
|
"role": "slider",
|
|
122
120
|
"tabindex": disabled.value ? -1 : 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSliderThumb.mjs","names":["VScaleTransition","VSliderSymbol","Ripple","useElevation","useTextColor","computed","inject","convertToUnit","defineComponent","keyValues","useRender","VSliderThumb","name","directives","props","focused","Boolean","max","type","Number","required","min","modelValue","position","emits","v","setup","slots","emit","slider","Error","thumbColor","step","vertical","disabled","thumbSize","thumbLabel","direction","readonly","elevation","isReversed","horizontalDirection","mousePressed","decimals","textColorClasses","textColorStyles","pageup","pagedown","end","home","left","right","down","up","relevantKeys","multipliers","value","parseKeydown","e","includes","key","preventDefault","_step","steps","increase","multiplier","shiftKey","ctrlKey","Math","onKeydown","newValue","positionPercentage","inset","elevationClasses","undefined","toFixed"],"sources":["../../../src/components/VSlider/VSliderThumb.tsx"],"sourcesContent":["// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VScaleTransition } from '../transitions'\nimport { VSliderSymbol } from './slider'\n\n// Directives\nimport Ripple from '@/directives/ripple'\n\n// Composables\nimport { useElevation } from '@/composables/elevation'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, defineComponent, keyValues, useRender } from '@/util'\n\nexport const VSliderThumb = defineComponent({\n name: 'VSliderThumb',\n\n directives: { Ripple },\n\n props: {\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n },\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n thumbColor,\n step,\n vertical,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n readonly,\n elevation,\n isReversed,\n horizontalDirection,\n mousePressed,\n decimals,\n } = slider\n\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (props.max - props.min) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = isReversed.value ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n value = value + (direction * _step * multipliers.value[multiplier])\n } else if (e.key === home) {\n value = props.min\n } else if (e.key === end) {\n value = props.max\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit(vertical.value ? 100 - props.position : props.position, '%')\n const inset = vertical.value ? 'block' : 'inline'\n const { elevationClasses } = useElevation(computed(() => !disabled.value ? elevation.value : undefined))\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n ]}\n style={{\n [`inset-${inset}-start`]: `calc(${positionPercentage} - var(--v-slider-thumb-size) / 2)`,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n direction: !vertical.value ? horizontalDirection.value : undefined,\n }}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-valuemin={ props.min }\n aria-valuemax={ props.max }\n aria-valuenow={ props.modelValue }\n aria-readonly={ readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[true, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VSliderThumb.mjs","names":["VScaleTransition","VSliderSymbol","Ripple","useElevation","useTextColor","computed","inject","convertToUnit","defineComponent","keyValues","useRender","VSliderThumb","name","directives","props","focused","Boolean","max","type","Number","required","min","modelValue","position","emits","v","setup","slots","emit","slider","Error","thumbColor","step","vertical","disabled","thumbSize","thumbLabel","direction","readonly","elevation","isReversed","horizontalDirection","mousePressed","decimals","textColorClasses","textColorStyles","pageup","pagedown","end","home","left","right","down","up","relevantKeys","multipliers","value","parseKeydown","e","includes","key","preventDefault","_step","steps","increase","multiplier","shiftKey","ctrlKey","Math","onKeydown","newValue","positionPercentage","elevationClasses","undefined","toFixed"],"sources":["../../../src/components/VSlider/VSliderThumb.tsx"],"sourcesContent":["// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VScaleTransition } from '../transitions'\nimport { VSliderSymbol } from './slider'\n\n// Directives\nimport Ripple from '@/directives/ripple'\n\n// Composables\nimport { useElevation } from '@/composables/elevation'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, defineComponent, keyValues, useRender } from '@/util'\n\nexport const VSliderThumb = defineComponent({\n name: 'VSliderThumb',\n\n directives: { Ripple },\n\n props: {\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n },\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n thumbColor,\n step,\n vertical,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n readonly,\n elevation,\n isReversed,\n horizontalDirection,\n mousePressed,\n decimals,\n } = slider\n\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (props.max - props.min) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = horizontalDirection.value === 'rtl' ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n value = value + (direction * _step * multipliers.value[multiplier])\n } else if (e.key === home) {\n value = props.min\n } else if (e.key === end) {\n value = props.max\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit((vertical.value || isReversed.value) ? 100 - props.position : props.position, '%')\n const { elevationClasses } = useElevation(computed(() => !disabled.value ? elevation.value : undefined))\n\n return (\n <div\n class={[\n 'v-slider-thumb',\n {\n 'v-slider-thumb--focused': props.focused,\n 'v-slider-thumb--pressed': props.focused && mousePressed.value,\n },\n ]}\n style={{\n '--v-slider-thumb-position': positionPercentage,\n '--v-slider-thumb-size': convertToUnit(thumbSize.value),\n }}\n role=\"slider\"\n tabindex={ disabled.value ? -1 : 0 }\n aria-valuemin={ props.min }\n aria-valuemax={ props.max }\n aria-valuenow={ props.modelValue }\n aria-readonly={ readonly.value }\n aria-orientation={ direction.value }\n onKeydown={ !readonly.value ? onKeydown : undefined }\n >\n <div\n class={[\n 'v-slider-thumb__surface',\n textColorClasses.value,\n elevationClasses.value,\n ]}\n style={{\n ...textColorStyles.value,\n }}\n />\n <div\n class={[\n 'v-slider-thumb__ripple',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n v-ripple={[true, null, ['circle', 'center']]}\n />\n <VScaleTransition origin=\"bottom center\">\n <div\n class=\"v-slider-thumb__label-container\"\n v-show={ (thumbLabel.value && props.focused) || thumbLabel.value === 'always' }\n >\n <div\n class={[\n 'v-slider-thumb__label',\n ]}\n >\n <div>\n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n </div>\n </div>\n </div>\n </VScaleTransition>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType<typeof VSliderThumb>\n"],"mappings":"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"}
|