vuetify 3.8.10 → 3.8.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +3366 -3366
- package/dist/json/importMap-labs.json +24 -24
- package/dist/json/importMap.json +150 -150
- package/dist/json/web-types.json +6157 -6157
- package/dist/vuetify-labs.cjs +81 -83
- package/dist/vuetify-labs.css +2588 -2594
- package/dist/vuetify-labs.d.ts +200 -200
- package/dist/vuetify-labs.esm.js +81 -83
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +81 -83
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +56 -59
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3957 -3963
- package/dist/vuetify.d.ts +57 -57
- package/dist/vuetify.esm.js +56 -59
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +56 -59
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +45 -46
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBtn/VBtn.sass +3 -1
- package/lib/components/VCarousel/VCarousel.css +0 -1
- package/lib/components/VCarousel/VCarousel.js +1 -0
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VCarousel/VCarousel.sass +0 -1
- package/lib/components/VDataTable/VDataTableColumn.js +0 -1
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +5 -5
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.js +2 -1
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
- package/lib/components/VDatePicker/VDatePickerMonth.js +7 -3
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
- package/lib/components/VField/VField.js +2 -10
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VList/VList.js +1 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +4 -10
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VNumberInput/hold.js +4 -0
- package/lib/components/VNumberInput/hold.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +17 -14
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +1 -1
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +1 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/composables/calendar.d.ts +1 -1
- package/lib/composables/calendar.js +8 -8
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.js +1 -1
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/virtual.js +1 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +57 -57
- package/lib/framework.js +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendar.js +9 -9
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendarDay.js +1 -1
- package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
- package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
- package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.js +1 -0
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use 'sass:math'
|
|
2
2
|
@use 'sass:map'
|
|
3
|
+
@use 'sass:meta'
|
|
3
4
|
@use '../../styles/settings'
|
|
4
5
|
@use '../../styles/tools'
|
|
5
6
|
@use './mixins' as *
|
|
@@ -30,7 +31,8 @@
|
|
|
30
31
|
flex-shrink: 0
|
|
31
32
|
|
|
32
33
|
.v-locale--is-rtl &
|
|
33
|
-
|
|
34
|
+
@if meta.type-of($button-text-letter-spacing) == 'number'
|
|
35
|
+
text-indent: -1 * $button-text-letter-spacing
|
|
34
36
|
|
|
35
37
|
@at-root
|
|
36
38
|
@include button-sizes()
|
|
@@ -118,6 +118,7 @@ export const VCarousel = genericComponent()({
|
|
|
118
118
|
}) : _createVNode(VBtn, _mergeProps(item, props), null);
|
|
119
119
|
})]
|
|
120
120
|
})]), props.progress && _createVNode(VProgressLinear, {
|
|
121
|
+
"absolute": true,
|
|
121
122
|
"class": "v-carousel__progress",
|
|
122
123
|
"color": typeof props.progress === 'string' ? props.progress : undefined,
|
|
123
124
|
"modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCarousel.js","names":["VBtn","VDefaultsProvider","VProgressLinear","makeVWindowProps","VWindow","IconValue","useLocale","useProxiedModel","onMounted","ref","watch","convertToUnit","genericComponent","propsFactory","useRender","makeVCarouselProps","color","String","cycle","Boolean","delimiterIcon","type","default","height","Number","hideDelimiters","hideDelimiterBackground","interval","validator","value","progress","verticalDelimiters","continuous","mandatory","showArrows","VCarousel","name","props","emits","setup","_ref","slots","model","t","windowRef","slideTimeout","restartTimeout","val","window","clearTimeout","startTimeout","setTimeout","group","next","requestAnimationFrame","windowProps","filterProps","_createVNode","_mergeProps","$event","class","style","additional","_ref2","_createElementVNode","_Fragment","left","right","items","length","icon","size","variant","map","item","index","id","isSelected","onClick","select","undefined","getItemIndex","prev"],"sources":["../../../src/components/VCarousel/VCarousel.tsx"],"sourcesContent":["// Styles\nimport './VCarousel.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VProgressLinear } from '@/components/VProgressLinear'\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, ref, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VWindowSlots } from '@/components/VWindow/VWindow'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => Number(value) > 0,\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String] as PropType<boolean | 'left' | 'right'>,\n\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force' as const,\n showArrows: true,\n }),\n}, 'VCarousel')\n\ntype VCarouselSlots = VWindowSlots & {\n item: {\n props: Record<string, any>\n item: {\n id: string\n value: unknown\n disabled: boolean | undefined\n }\n }\n}\n\nexport const VCarousel = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VCarouselSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VCarousel',\n\n props: makeVCarouselProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n const windowRef = ref<VWindow>()\n\n let slideTimeout = -1\n watch(model, restartTimeout)\n watch(() => props.interval, restartTimeout)\n watch(() => props.cycle, val => {\n if (val) restartTimeout()\n else window.clearTimeout(slideTimeout)\n })\n\n onMounted(startTimeout)\n\n function startTimeout () {\n if (!props.cycle || !windowRef.value) return\n\n slideTimeout = window.setTimeout(\n windowRef.value.group.next,\n Number(props.interval) > 0 ? Number(props.interval) : 6000\n )\n }\n\n function restartTimeout () {\n window.clearTimeout(slideTimeout)\n window.requestAnimationFrame(startTimeout)\n }\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n <VWindow\n ref={ windowRef }\n { ...windowProps }\n v-model={ model.value }\n class={[\n 'v-carousel',\n {\n 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': props.verticalDelimiters,\n },\n props.class,\n ]}\n style={[\n { height: convertToUnit(props.height) },\n props.style,\n ]}\n >\n {{\n default: slots.default,\n additional: ({ group }: { group: GroupProvide }) => (\n <>\n { !props.hideDelimiters && (\n <div\n class=\"v-carousel__controls\"\n style={{\n left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',\n right: props.verticalDelimiters === 'right' ? 0 : 'auto',\n }}\n >\n { group.items.value.length > 0 && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: props.color,\n icon: props.delimiterIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n scoped\n >\n { group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: [\n 'v-carousel__controls__item',\n group.isSelected(item.id) && 'v-btn--active',\n ],\n onClick: () => group.select(item.id, true),\n }\n\n return slots.item\n ? slots.item({ props, item })\n : (<VBtn { ...item } { ...props } />)\n })}\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { props.progress && (\n <VProgressLinear\n class=\"v-carousel__progress\"\n color={ typeof props.progress === 'string' ? props.progress : undefined }\n modelValue={ (group.getItemIndex(model.value) + 1) / group.items.value.length * 100 }\n />\n )}\n </>\n ),\n prev: slots.prev,\n next: slots.next,\n }}\n </VWindow>\n )\n })\n\n return {}\n },\n})\n\nexport type VCarousel = InstanceType<typeof VCarousel>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VCarousel.js","names":["VBtn","VDefaultsProvider","VProgressLinear","makeVWindowProps","VWindow","IconValue","useLocale","useProxiedModel","onMounted","ref","watch","convertToUnit","genericComponent","propsFactory","useRender","makeVCarouselProps","color","String","cycle","Boolean","delimiterIcon","type","default","height","Number","hideDelimiters","hideDelimiterBackground","interval","validator","value","progress","verticalDelimiters","continuous","mandatory","showArrows","VCarousel","name","props","emits","setup","_ref","slots","model","t","windowRef","slideTimeout","restartTimeout","val","window","clearTimeout","startTimeout","setTimeout","group","next","requestAnimationFrame","windowProps","filterProps","_createVNode","_mergeProps","$event","class","style","additional","_ref2","_createElementVNode","_Fragment","left","right","items","length","icon","size","variant","map","item","index","id","isSelected","onClick","select","undefined","getItemIndex","prev"],"sources":["../../../src/components/VCarousel/VCarousel.tsx"],"sourcesContent":["// Styles\nimport './VCarousel.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VProgressLinear } from '@/components/VProgressLinear'\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, ref, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VWindowSlots } from '@/components/VWindow/VWindow'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => Number(value) > 0,\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String] as PropType<boolean | 'left' | 'right'>,\n\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force' as const,\n showArrows: true,\n }),\n}, 'VCarousel')\n\ntype VCarouselSlots = VWindowSlots & {\n item: {\n props: Record<string, any>\n item: {\n id: string\n value: unknown\n disabled: boolean | undefined\n }\n }\n}\n\nexport const VCarousel = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VCarouselSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VCarousel',\n\n props: makeVCarouselProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n const windowRef = ref<VWindow>()\n\n let slideTimeout = -1\n watch(model, restartTimeout)\n watch(() => props.interval, restartTimeout)\n watch(() => props.cycle, val => {\n if (val) restartTimeout()\n else window.clearTimeout(slideTimeout)\n })\n\n onMounted(startTimeout)\n\n function startTimeout () {\n if (!props.cycle || !windowRef.value) return\n\n slideTimeout = window.setTimeout(\n windowRef.value.group.next,\n Number(props.interval) > 0 ? Number(props.interval) : 6000\n )\n }\n\n function restartTimeout () {\n window.clearTimeout(slideTimeout)\n window.requestAnimationFrame(startTimeout)\n }\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n <VWindow\n ref={ windowRef }\n { ...windowProps }\n v-model={ model.value }\n class={[\n 'v-carousel',\n {\n 'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': props.verticalDelimiters,\n },\n props.class,\n ]}\n style={[\n { height: convertToUnit(props.height) },\n props.style,\n ]}\n >\n {{\n default: slots.default,\n additional: ({ group }: { group: GroupProvide }) => (\n <>\n { !props.hideDelimiters && (\n <div\n class=\"v-carousel__controls\"\n style={{\n left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',\n right: props.verticalDelimiters === 'right' ? 0 : 'auto',\n }}\n >\n { group.items.value.length > 0 && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: props.color,\n icon: props.delimiterIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n scoped\n >\n { group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: [\n 'v-carousel__controls__item',\n group.isSelected(item.id) && 'v-btn--active',\n ],\n onClick: () => group.select(item.id, true),\n }\n\n return slots.item\n ? slots.item({ props, item })\n : (<VBtn { ...item } { ...props } />)\n })}\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { props.progress && (\n <VProgressLinear\n absolute\n class=\"v-carousel__progress\"\n color={ typeof props.progress === 'string' ? props.progress : undefined }\n modelValue={ (group.getItemIndex(model.value) + 1) / group.items.value.length * 100 }\n />\n )}\n </>\n ),\n prev: slots.prev,\n next: slots.next,\n }}\n </VWindow>\n )\n })\n\n return {}\n },\n})\n\nexport type VCarousel = InstanceType<typeof VCarousel>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,7 +21,6 @@ export const VDataTableColumn = defineFunctionalComponent({
|
|
|
21
21
|
} = _ref;
|
|
22
22
|
const Tag = props.tag ?? 'td';
|
|
23
23
|
return _createVNode(Tag, {
|
|
24
|
-
"tabindex": "0",
|
|
25
24
|
"class": _normalizeClass(['v-data-table__td', {
|
|
26
25
|
'v-data-table-column--fixed': props.fixed,
|
|
27
26
|
'v-data-table-column--last-fixed': props.lastFixed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableColumn.js","names":["convertToUnit","defineFunctionalComponent","VDataTableColumn","align","type","String","default","fixed","Boolean","fixedOffset","Number","height","lastFixed","noPadding","tag","width","maxWidth","nowrap","props","_ref","slots","Tag","_createVNode","_normalizeClass","left"],"sources":["../../../src/components/VDataTable/VDataTableColumn.tsx"],"sourcesContent":["// Utilities\nimport { convertToUnit, defineFunctionalComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean,\n}, (props, { slots }) => {\n const Tag = props.tag ?? 'td'\n return (\n <Tag\n
|
|
1
|
+
{"version":3,"file":"VDataTableColumn.js","names":["convertToUnit","defineFunctionalComponent","VDataTableColumn","align","type","String","default","fixed","Boolean","fixedOffset","Number","height","lastFixed","noPadding","tag","width","maxWidth","nowrap","props","_ref","slots","Tag","_createVNode","_normalizeClass","left"],"sources":["../../../src/components/VDataTable/VDataTableColumn.tsx"],"sourcesContent":["// Utilities\nimport { convertToUnit, defineFunctionalComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean,\n}, (props, { slots }) => {\n const Tag = props.tag ?? 'td'\n return (\n <Tag\n class={[\n 'v-data-table__td',\n {\n 'v-data-table-column--fixed': props.fixed,\n 'v-data-table-column--last-fixed': props.lastFixed,\n 'v-data-table-column--no-padding': props.noPadding,\n 'v-data-table-column--nowrap': props.nowrap,\n },\n `v-data-table-column--align-${props.align}`,\n ]}\n style={{\n height: convertToUnit(props.height),\n width: convertToUnit(props.width),\n maxWidth: convertToUnit(props.maxWidth),\n left: convertToUnit(props.fixedOffset || null),\n }}\n >\n { slots.default?.() }\n </Tag>\n )\n})\n"],"mappings":";AAAA;AAAA,SACSA,aAAa,EAAEC,yBAAyB,+BAEjD;AAGA,OAAO,MAAMC,gBAAgB,GAAGD,yBAAyB,CAAC;EACxDE,KAAK,EAAE;IACLC,IAAI,EAAEC,MAA8C;IACpDC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEC,OAAO;EACdC,WAAW,EAAE,CAACC,MAAM,EAAEL,MAAM,CAAC;EAC7BM,MAAM,EAAE,CAACD,MAAM,EAAEL,MAAM,CAAC;EACxBO,SAAS,EAAEJ,OAAO;EAClBK,SAAS,EAAEL,OAAO;EAClBM,GAAG,EAAET,MAAM;EACXU,KAAK,EAAE,CAACL,MAAM,EAAEL,MAAM,CAAC;EACvBW,QAAQ,EAAE,CAACN,MAAM,EAAEL,MAAM,CAAC;EAC1BY,MAAM,EAAET;AACV,CAAC,EAAE,CAACU,KAAK,EAAAC,IAAA,KAAgB;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EAClB,MAAME,GAAG,GAAGH,KAAK,CAACJ,GAAG,IAAI,IAAI;EAC7B,OAAAQ,YAAA,CAAAD,GAAA;IAAA,SAAAE,eAAA,CAEW,CACL,kBAAkB,EAClB;MACE,4BAA4B,EAAEL,KAAK,CAACX,KAAK;MACzC,iCAAiC,EAAEW,KAAK,CAACN,SAAS;MAClD,iCAAiC,EAAEM,KAAK,CAACL,SAAS;MAClD,6BAA6B,EAAEK,KAAK,CAACD;IACvC,CAAC,EACD,8BAA8BC,KAAK,CAACf,KAAK,EAAE,CAC5C;IAAA,SACM;MACLQ,MAAM,EAAEX,aAAa,CAACkB,KAAK,CAACP,MAAM,CAAC;MACnCI,KAAK,EAAEf,aAAa,CAACkB,KAAK,CAACH,KAAK,CAAC;MACjCC,QAAQ,EAAEhB,aAAa,CAACkB,KAAK,CAACF,QAAQ,CAAC;MACvCQ,IAAI,EAAExB,aAAa,CAACkB,KAAK,CAACT,WAAW,IAAI,IAAI;IAC/C;EAAC;IAAAH,OAAA,EAAAA,CAAA,MAECc,KAAK,CAACd,OAAO,GAAG,CAAC;EAAA;AAGzB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -128,14 +128,14 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
128
128
|
},
|
|
129
129
|
"colspan": column.colspan,
|
|
130
130
|
"rowspan": column.rowspan,
|
|
131
|
-
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
|
132
131
|
"fixed": column.fixed,
|
|
133
132
|
"nowrap": column.nowrap,
|
|
134
133
|
"lastFixed": column.lastFixed,
|
|
135
|
-
"noPadding": noPadding
|
|
136
|
-
|
|
137
|
-
"
|
|
138
|
-
|
|
134
|
+
"noPadding": noPadding,
|
|
135
|
+
"tabindex": column.sortable ? 0 : undefined,
|
|
136
|
+
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
|
137
|
+
"onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
|
|
138
|
+
}, headerProps), {
|
|
139
139
|
default: () => {
|
|
140
140
|
const columnSlotName = `header.${column.key}`;
|
|
141
141
|
const columnSlotProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableHeaders.js","names":["VDataTableColumn","VCheckboxBtn","VChip","VIcon","VSelect","useHeaders","useSelection","useSort","useBackgroundColor","makeDisplayProps","useDisplay","IconValue","LoaderSlot","makeLoaderProps","useLoader","useLocale","computed","mergeProps","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","disableSort","Boolean","fixedHeader","multiSort","sortAscIcon","type","default","sortDescIcon","headerProps","Object","sticky","VDataTableHeaders","name","props","setup","_ref","slots","t","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","position","left","fixedOffset","top","handleEnterKeyPress","event","key","getSortIcon","item","value","find","order","backgroundColorClasses","backgroundColorStyles","displayClasses","mobile","slotProps","headerCellClasses","VDataTableHeaderCell","_ref2","x","noPadding","_createVNode","_mergeProps","align","sortable","width","minWidth","maxWidth","colspan","rowspan","nowrap","lastFixed","columnSlotName","columnSlotProps","_createElementVNode","title","_normalizeClass","_normalizeStyle","findIndex","VDataTableMobileHeaderCell","displayItems","filter","appendIcon","showSelectColumn","length","onClick:clear","onClick:append","chip","raw","e","preventDefault","stopPropagation","_Fragment","map","row","loading","loader"],"sources":["../../../src/components/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n disableSort: Boolean,\n fixedHeader: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType<Record<string, any>>,\n },\n\n /** @deprecated */\n sticky: Boolean,\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: (props.sticky || props.fixedHeader) ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n function handleEnterKeyPress (event: KeyboardEvent, column: InternalDataTableHeader) {\n if (event.key === 'Enter' && !props.disableSort) {\n toggleSort(column)\n }\n }\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': (props.sticky || props.fixedHeader),\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n {\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed,\n },\n ...headerCellClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n { ...headerProps }\n onKeydown={ (event: KeyboardEvent) => column.sortable && handleEnterKeyPress(event, column) }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n ))\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && !props.disableSort && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const displayItems = computed<ItemProps['items']>(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n <VDataTableColumn\n tag=\"th\"\n class={[\n ...headerCellClasses.value,\n ]}\n colspan={ headers.value.length + 1 }\n { ...props.headerProps }\n >\n <div class=\"v-data-table-header__content\">\n <VSelect\n chips\n class=\"v-data-table__td-sort-select\"\n clearable\n density=\"default\"\n items={ displayItems.value }\n label={ t('$vuetify.dataTable.sortBy') }\n multiple={ props.multiSort }\n variant=\"underlined\"\n onClick:clear={ () => sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n ...slots,\n chip: props => (\n <VChip\n onClick={ props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n <VIcon\n class={[\n 'v-data-table__td-sort-icon',\n isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active',\n ]}\n icon={ getSortIcon(props.item.raw) }\n size=\"small\"\n />\n </VChip>\n ),\n }}\n </VSelect>\n </div>\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return mobile.value ? (\n <tr>\n <VDataTableMobileHeaderCell />\n </tr>\n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table-progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-progress\"\n absolute\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VDataTableHeaders.js","names":["VDataTableColumn","VCheckboxBtn","VChip","VIcon","VSelect","useHeaders","useSelection","useSort","useBackgroundColor","makeDisplayProps","useDisplay","IconValue","LoaderSlot","makeLoaderProps","useLoader","useLocale","computed","mergeProps","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","disableSort","Boolean","fixedHeader","multiSort","sortAscIcon","type","default","sortDescIcon","headerProps","Object","sticky","VDataTableHeaders","name","props","setup","_ref","slots","t","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","position","left","fixedOffset","top","handleEnterKeyPress","event","key","getSortIcon","item","value","find","order","backgroundColorClasses","backgroundColorStyles","displayClasses","mobile","slotProps","headerCellClasses","VDataTableHeaderCell","_ref2","x","noPadding","_createVNode","_mergeProps","align","sortable","width","minWidth","maxWidth","colspan","rowspan","nowrap","lastFixed","columnSlotName","columnSlotProps","_createElementVNode","title","_normalizeClass","_normalizeStyle","findIndex","VDataTableMobileHeaderCell","displayItems","filter","appendIcon","showSelectColumn","length","onClick:clear","onClick:append","chip","raw","e","preventDefault","stopPropagation","_Fragment","map","row","loading","loader"],"sources":["../../../src/components/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n disableSort: Boolean,\n fixedHeader: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType<Record<string, any>>,\n },\n\n /** @deprecated */\n sticky: Boolean,\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: (props.sticky || props.fixedHeader) ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n function handleEnterKeyPress (event: KeyboardEvent, column: InternalDataTableHeader) {\n if (event.key === 'Enter' && !props.disableSort) {\n toggleSort(column)\n }\n }\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': (props.sticky || props.fixedHeader),\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n {\n 'v-data-table__th--sortable': column.sortable && !props.disableSort,\n 'v-data-table__th--sorted': isSorted(column),\n 'v-data-table__th--fixed': column.fixed,\n },\n ...headerCellClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.minWidth),\n maxWidth: convertToUnit(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n tabindex={ column.sortable ? 0 : undefined }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n onKeydown={ column.sortable ? (event: KeyboardEvent) => handleEnterKeyPress(event, column) : undefined }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n ))\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && !props.disableSort && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const displayItems = computed<ItemProps['items']>(() => {\n return columns.value.filter(column => column?.sortable && !props.disableSort)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n <VDataTableColumn\n tag=\"th\"\n class={[\n ...headerCellClasses.value,\n ]}\n colspan={ headers.value.length + 1 }\n { ...props.headerProps }\n >\n <div class=\"v-data-table-header__content\">\n <VSelect\n chips\n class=\"v-data-table__td-sort-select\"\n clearable\n density=\"default\"\n items={ displayItems.value }\n label={ t('$vuetify.dataTable.sortBy') }\n multiple={ props.multiSort }\n variant=\"underlined\"\n onClick:clear={ () => sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n ...slots,\n chip: props => (\n <VChip\n onClick={ props.item.raw?.sortable ? () => toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n <VIcon\n class={[\n 'v-data-table__td-sort-icon',\n isSorted(props.item.raw) && 'v-data-table__td-sort-icon-active',\n ]}\n icon={ getSortIcon(props.item.raw) }\n size=\"small\"\n />\n </VChip>\n ),\n }}\n </VSelect>\n </div>\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return mobile.value ? (\n <tr>\n <VDataTableMobileHeaderCell />\n </tr>\n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table-progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-progress\"\n absolute\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType<typeof VDataTableHeaders>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -131,7 +131,8 @@ export function sortItems(items, sortByItems, locale, options) {
|
|
|
131
131
|
|
|
132
132
|
// Dates should be compared numerically
|
|
133
133
|
if (sortA instanceof Date && sortB instanceof Date) {
|
|
134
|
-
|
|
134
|
+
sortA = sortA.getTime();
|
|
135
|
+
sortB = sortB.getTime();
|
|
135
136
|
}
|
|
136
137
|
[sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
|
|
137
138
|
if (sortA !== sortB) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort.js","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(() => props.mustSort)\n const multiSort = toRef(() => props.multiSort)\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"sort.js","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(() => props.mustSort)\n const multiSort = toRef(() => props.multiSort)\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n sortA = sortA.getTime()\n sortB = sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,14 +6,11 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
.v-date-picker-month__weeks {
|
|
9
|
-
display:
|
|
10
|
-
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
11
|
column-gap: 4px;
|
|
12
12
|
font-size: 0.85rem;
|
|
13
13
|
}
|
|
14
|
-
.v-date-picker-month__weeks + .v-date-picker-month__days {
|
|
15
|
-
grid-row-gap: 0;
|
|
16
|
-
}
|
|
17
14
|
|
|
18
15
|
.v-date-picker-month__weekday {
|
|
19
16
|
font-size: 0.85rem;
|
|
@@ -21,10 +18,8 @@
|
|
|
21
18
|
|
|
22
19
|
.v-date-picker-month__days {
|
|
23
20
|
display: grid;
|
|
24
|
-
grid-template-columns:
|
|
21
|
+
grid-template-columns: repeat(var(--v-date-picker-days-in-week), min-content);
|
|
25
22
|
column-gap: 4px;
|
|
26
|
-
flex: 1 1;
|
|
27
|
-
justify-content: space-around;
|
|
28
23
|
}
|
|
29
24
|
|
|
30
25
|
.v-date-picker-month__day {
|
|
@@ -41,7 +41,8 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
41
41
|
const {
|
|
42
42
|
daysInMonth,
|
|
43
43
|
model,
|
|
44
|
-
weekNumbers
|
|
44
|
+
weekNumbers,
|
|
45
|
+
weekdayLabels
|
|
45
46
|
} = useCalendar(props);
|
|
46
47
|
const adapter = useDate();
|
|
47
48
|
const rangeStart = shallowRef();
|
|
@@ -113,7 +114,10 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
116
|
useRender(() => _createElementVNode("div", {
|
|
116
|
-
"class": "v-date-picker-month"
|
|
117
|
+
"class": "v-date-picker-month",
|
|
118
|
+
"style": {
|
|
119
|
+
'--v-date-picker-days-in-week': props.weekdays.length
|
|
120
|
+
}
|
|
117
121
|
}, [props.showWeek && _createElementVNode("div", {
|
|
118
122
|
"key": "weeks",
|
|
119
123
|
"class": "v-date-picker-month__weeks"
|
|
@@ -129,7 +133,7 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
129
133
|
"ref": daysRef,
|
|
130
134
|
"key": daysInMonth.value[0].date?.toString(),
|
|
131
135
|
"class": "v-date-picker-month__days"
|
|
132
|
-
}, [!props.hideWeekdays &&
|
|
136
|
+
}, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => _createElementVNode("div", {
|
|
133
137
|
"class": _normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
|
134
138
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
|
135
139
|
const slotProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerMonth.js","names":["VBtn","makeCalendarProps","useCalendar","createDateRange","useDate","MaybeTransition","computed","ref","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","transition","type","default","reverseTransition","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","isReverse","value","length","atMax","max","includes","Infinity","val","oldVal","isBefore","onRangeClick","_value","startOfDay","undefined","isSameDay","endOfDay","onMultipleClick","index","findIndex","selection","splice","onClick","_createElementVNode","_createTextVNode","map","week","_normalizeClass","_createVNode","toString","getWeekdays","firstDayOfWeek","weekDay","item","i","slotProps","class","isSelected","isToday","disabled","isDisabled","icon","ripple","text","localized","variant","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { createDateRange, useDate } from '@/composables/date/date'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition',\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition',\n },\n\n ...omit(makeCalendarProps(), ['displayValue']),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n const isReverse = shallowRef(false)\n\n const transition = toRef(() => {\n return !isReverse.value ? props.transition : props.reverseTransition\n })\n\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0]\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1]\n }\n }\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return\n\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date)\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (model.value.length === 0) {\n rangeStart.value = undefined\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0]\n rangeStop.value = undefined\n }\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value)\n rangeStart.value = _value\n } else {\n rangeStop.value = adapter.endOfDay(_value)\n }\n\n model.value = createDateRange(adapter, rangeStart.value, rangeStop.value)\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n useRender(() => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <MaybeTransition name={ transition.value }>\n <div\n ref={ daysRef }\n key={ daysInMonth.value[0].date?.toString() }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n class: 'v-date-picker-month__day-btn',\n color: item.isSelected || item.isToday ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n slots.day?.(slotProps) ?? (<VBtn { ...slotProps.props } />)\n )}\n </div>\n )\n })}\n </div>\n </MaybeTransition>\n </div>\n ))\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VDatePickerMonth.js","names":["VBtn","makeCalendarProps","useCalendar","createDateRange","useDate","MaybeTransition","computed","ref","shallowRef","toRef","watch","genericComponent","omit","propsFactory","useRender","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","transition","type","default","reverseTransition","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","weekdayLabels","adapter","rangeStart","rangeStop","isReverse","value","length","atMax","max","includes","Infinity","val","oldVal","isBefore","onRangeClick","_value","startOfDay","undefined","isSameDay","endOfDay","onMultipleClick","index","findIndex","selection","splice","onClick","_createElementVNode","weekdays","_createTextVNode","map","week","_normalizeClass","_createVNode","toString","weekDay","item","i","slotProps","class","isSelected","isToday","disabled","isDisabled","icon","ripple","text","localized","variant","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { createDateRange, useDate } from '@/composables/date/date'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition',\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition',\n },\n\n ...omit(makeCalendarProps(), ['displayValue']),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers, weekdayLabels } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n const isReverse = shallowRef(false)\n\n const transition = toRef(() => {\n return !isReverse.value ? props.transition : props.reverseTransition\n })\n\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0]\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1]\n }\n }\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return\n\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date)\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (model.value.length === 0) {\n rangeStart.value = undefined\n } else if (model.value.length === 1) {\n rangeStart.value = model.value[0]\n rangeStop.value = undefined\n }\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value)\n rangeStart.value = _value\n } else {\n rangeStop.value = adapter.endOfDay(_value)\n }\n\n model.value = createDateRange(adapter, rangeStart.value, rangeStop.value)\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n useRender(() => (\n <div\n class=\"v-date-picker-month\"\n style={{ '--v-date-picker-days-in-week': props.weekdays.length }}\n >\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <MaybeTransition name={ transition.value }>\n <div\n ref={ daysRef }\n key={ daysInMonth.value[0].date?.toString() }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && weekdayLabels.value.map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n class: 'v-date-picker-month__day-btn',\n color: item.isSelected || item.isToday ? props.color : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n slots.day?.(slotProps) ?? (<VBtn { ...slotProps.props } />)\n )}\n </div>\n )\n })}\n </div>\n </MaybeTransition>\n </div>\n ))\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,23 +10,18 @@
|
|
|
10
10
|
--v-date-picker-month-day-diff: 4px
|
|
11
11
|
|
|
12
12
|
.v-date-picker-month__weeks
|
|
13
|
-
display:
|
|
14
|
-
|
|
13
|
+
display: flex
|
|
14
|
+
flex-direction: column
|
|
15
15
|
column-gap: $date-picker-month-column-gap
|
|
16
16
|
font-size: $date-picker-month-font-size
|
|
17
17
|
|
|
18
|
-
+ .v-date-picker-month__days
|
|
19
|
-
grid-row-gap: 0
|
|
20
|
-
|
|
21
18
|
.v-date-picker-month__weekday
|
|
22
19
|
font-size: $date-picker-month-font-size
|
|
23
20
|
|
|
24
21
|
.v-date-picker-month__days
|
|
25
22
|
display: grid
|
|
26
|
-
grid-template-columns:
|
|
23
|
+
grid-template-columns: repeat(var(--v-date-picker-days-in-week), min-content)
|
|
27
24
|
column-gap: $date-picker-month-column-gap
|
|
28
|
-
flex: 1 1
|
|
29
|
-
justify-content: space-around
|
|
30
25
|
|
|
31
26
|
.v-date-picker-month__day
|
|
32
27
|
align-items: center
|
|
@@ -215,11 +215,7 @@ export const VField = genericComponent()({
|
|
|
215
215
|
default: slots.loader
|
|
216
216
|
}), hasPrepend && _createElementVNode("div", {
|
|
217
217
|
"key": "prepend",
|
|
218
|
-
"class": "v-field__prepend-inner"
|
|
219
|
-
"onMousedown": e => {
|
|
220
|
-
e.preventDefault();
|
|
221
|
-
e.stopPropagation();
|
|
222
|
-
}
|
|
218
|
+
"class": "v-field__prepend-inner"
|
|
223
219
|
}, [props.prependInnerIcon && _createVNode(InputIcon, {
|
|
224
220
|
"key": "prepend-icon",
|
|
225
221
|
"name": "prependInner",
|
|
@@ -288,11 +284,7 @@ export const VField = genericComponent()({
|
|
|
288
284
|
})]), [[_vShow, props.dirty]])]
|
|
289
285
|
}), hasAppend && _createElementVNode("div", {
|
|
290
286
|
"key": "append",
|
|
291
|
-
"class": "v-field__append-inner"
|
|
292
|
-
"onMousedown": e => {
|
|
293
|
-
e.preventDefault();
|
|
294
|
-
e.stopPropagation();
|
|
295
|
-
}
|
|
287
|
+
"class": "v-field__append-inner"
|
|
296
288
|
}, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && _createVNode(InputIcon, {
|
|
297
289
|
"key": "append-icon",
|
|
298
290
|
"name": "appendInner",
|