vuetify 3.3.16 → 3.3.18
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 +1274 -1266
- package/dist/json/importMap.json +12 -12
- package/dist/json/tags.json +14 -7
- package/dist/json/web-types.json +2041 -2437
- package/dist/vuetify-labs.css +59 -30
- package/dist/vuetify-labs.d.ts +1717 -3099
- package/dist/vuetify-labs.esm.js +157 -100
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +156 -99
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +221 -227
- package/dist/vuetify.d.ts +53 -53
- package/dist/vuetify.esm.js +63 -41
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +63 -41
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +36 -32
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/md3.mjs +3 -0
- package/lib/blueprints/md3.mjs.map +1 -1
- package/lib/components/VApp/VApp.mjs +1 -2
- package/lib/components/VApp/VApp.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +12 -12
- package/lib/components/VCombobox/VCombobox.mjs +4 -2
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +12 -12
- package/lib/components/VList/VList.mjs +2 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListChildren.mjs +10 -3
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +10 -10
- package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +3 -1
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +12 -12
- package/lib/components/VSelectionControl/VSelectionControl.css +0 -1
- package/lib/components/VSelectionControl/VSelectionControl.sass +0 -1
- package/lib/components/VSlider/VSlider.mjs +2 -2
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VTable/VTable.css +4 -2
- package/lib/components/VTable/VTable.sass +3 -1
- package/lib/components/VTable/_variables.scss +1 -1
- package/lib/components/VTabs/VTabs.mjs +4 -4
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/index.d.mts +1 -1
- package/lib/components/VTextField/VTextField.mjs +2 -2
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.mts +6 -6
- package/lib/components/VTimeline/VTimeline.css +15 -22
- package/lib/components/VTimeline/VTimeline.sass +15 -25
- package/lib/components/index.d.mts +50 -50
- package/lib/composables/color.mjs +7 -4
- package/lib/composables/color.mjs.map +1 -1
- package/lib/composables/layout.mjs +1 -1
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/theme.mjs +0 -11
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +3 -3
- package/lib/labs/VBottomSheet/VBottomSheet.mjs +3 -2
- package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -1
- package/lib/labs/VBottomSheet/index.d.mts +3 -11
- package/lib/labs/VDataIterator/index.d.mts +66 -48
- package/lib/labs/VDataTable/VDataTableRow.mjs +8 -6
- package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +4 -2
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +1 -2
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +1 -2
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/headers.mjs +5 -7
- package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/items.mjs +1 -1
- package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +15 -9
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/sort.mjs +1 -0
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.mts +1135 -2614
- package/lib/labs/VDataTable/types.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +6 -6
- package/lib/labs/VDatePicker/VDatePicker.mjs +17 -7
- package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerControls.css +29 -2
- package/lib/labs/VDatePicker/VDatePickerControls.mjs +18 -17
- package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerControls.sass +30 -2
- package/lib/labs/VDatePicker/VDatePickerHeader.css +10 -1
- package/lib/labs/VDatePicker/VDatePickerHeader.mjs +12 -4
- package/lib/labs/VDatePicker/VDatePickerHeader.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerHeader.sass +11 -1
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs +1 -2
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerYears.mjs +1 -1
- package/lib/labs/VDatePicker/VDatePickerYears.mjs.map +1 -1
- package/lib/labs/VDatePicker/index.d.mts +184 -101
- package/lib/labs/VDateRangePicker/index.d.mts +67 -61
- package/lib/labs/VOtpInput/VOtpInput.mjs +1 -1
- package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/labs/VPicker/VPicker.css +0 -1
- package/lib/labs/VPicker/VPicker.mjs +16 -5
- package/lib/labs/VPicker/VPicker.mjs.map +1 -1
- package/lib/labs/VPicker/VPicker.sass +1 -1
- package/lib/labs/VPicker/index.d.mts +47 -35
- package/lib/labs/components.d.mts +3460 -4841
- package/lib/labs/date/adapters/vuetify.mjs +7 -2
- package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
- package/lib/locale/pl.mjs +14 -14
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +11 -0
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/helpers.mjs +2 -1
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","names":[],"sources":["../../../src/labs/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { GroupableItem } from './composables/group'\nimport type { SelectableItem } from './composables/select'\nimport type { InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number\n\nexport type DataTableHeader = {\n key
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../../../src/labs/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number\n\nexport type DataTableHeader = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey\n title: string\n\n colspan?: number\n rowspan?: number\n\n fixed?: boolean\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: string\n maxWidth?: string\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n lastFixed?: boolean\n}\n\nexport interface DataTableItem<T = any> extends InternalItem<T>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T = any> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T = any> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T = any> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n"],"mappings":""}
|
|
@@ -207,7 +207,7 @@ declare const VDateInput: {
|
|
|
207
207
|
"v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
|
|
208
208
|
"v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
|
|
209
209
|
suffix?: string | undefined;
|
|
210
|
-
counterValue?: ((value: any) => number) | undefined;
|
|
210
|
+
counterValue?: number | ((value: any) => number) | undefined;
|
|
211
211
|
modelModifiers?: Record<string, boolean> | undefined;
|
|
212
212
|
"v-slot:counter"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
|
|
213
213
|
"onUpdate:displayDate"?: ((date: any) => any) | undefined;
|
|
@@ -325,7 +325,7 @@ declare const VDateInput: {
|
|
|
325
325
|
hideDetails?: boolean | "auto" | undefined;
|
|
326
326
|
baseColor?: string | undefined;
|
|
327
327
|
suffix?: string | undefined;
|
|
328
|
-
counterValue?: ((value: any) => number) | undefined;
|
|
328
|
+
counterValue?: number | ((value: any) => number) | undefined;
|
|
329
329
|
modelModifiers?: Record<string, boolean> | undefined;
|
|
330
330
|
} & {
|
|
331
331
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -541,7 +541,7 @@ declare const VDateInput: {
|
|
|
541
541
|
hideDetails?: boolean | "auto" | undefined;
|
|
542
542
|
baseColor?: string | undefined;
|
|
543
543
|
suffix?: string | undefined;
|
|
544
|
-
counterValue?: ((value: any) => number) | undefined;
|
|
544
|
+
counterValue?: number | ((value: any) => number) | undefined;
|
|
545
545
|
modelModifiers?: Record<string, boolean> | undefined;
|
|
546
546
|
} & {
|
|
547
547
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -664,7 +664,7 @@ declare const VDateInput: {
|
|
|
664
664
|
hideDetails?: boolean | "auto" | undefined;
|
|
665
665
|
baseColor?: string | undefined;
|
|
666
666
|
suffix?: string | undefined;
|
|
667
|
-
counterValue?: ((value: any) => number) | undefined;
|
|
667
|
+
counterValue?: number | ((value: any) => number) | undefined;
|
|
668
668
|
modelModifiers?: Record<string, boolean> | undefined;
|
|
669
669
|
} & {
|
|
670
670
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -895,7 +895,7 @@ declare const VDateInput: {
|
|
|
895
895
|
'onClick:append': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
|
|
896
896
|
autofocus: BooleanConstructor;
|
|
897
897
|
counter: vue.PropType<string | number | true>;
|
|
898
|
-
counterValue: vue.PropType<(value: any) => number>;
|
|
898
|
+
counterValue: vue.PropType<number | ((value: any) => number)>;
|
|
899
899
|
prefix: StringConstructor;
|
|
900
900
|
placeholder: {
|
|
901
901
|
type: vue.PropType<string>;
|
|
@@ -1022,7 +1022,7 @@ declare const VDateInput: {
|
|
|
1022
1022
|
'onClick:append': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
|
|
1023
1023
|
autofocus: BooleanConstructor;
|
|
1024
1024
|
counter: vue.PropType<string | number | true>;
|
|
1025
|
-
counterValue: vue.PropType<(value: any) => number>;
|
|
1025
|
+
counterValue: vue.PropType<number | ((value: any) => number)>;
|
|
1026
1026
|
prefix: StringConstructor;
|
|
1027
1027
|
placeholder: {
|
|
1028
1028
|
type: vue.PropType<string>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolveDirective as _resolveDirective, Fragment as _Fragment,
|
|
1
|
+
import { resolveDirective as _resolveDirective, Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VDatePicker.css";
|
|
4
4
|
|
|
@@ -82,7 +82,9 @@ export const VDatePicker = genericComponent()({
|
|
|
82
82
|
const isReversing = shallowRef(false);
|
|
83
83
|
const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')));
|
|
84
84
|
const temporaryModel = ref(model.value);
|
|
85
|
-
const title = computed(() =>
|
|
85
|
+
const title = computed(() => {
|
|
86
|
+
return props.variant === 'modern' ? t(props.title) : adapter.format(displayDate.value, 'shortDate');
|
|
87
|
+
});
|
|
86
88
|
const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header));
|
|
87
89
|
const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon);
|
|
88
90
|
const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
|
|
@@ -154,6 +156,9 @@ export const VDatePicker = genericComponent()({
|
|
|
154
156
|
function onClickMode() {
|
|
155
157
|
viewMode.value = viewMode.value === 'month' ? 'year' : 'month';
|
|
156
158
|
}
|
|
159
|
+
function onClickHeader() {
|
|
160
|
+
viewMode.value = 'month';
|
|
161
|
+
}
|
|
157
162
|
const headerSlotProps = computed(() => ({
|
|
158
163
|
header: header.value,
|
|
159
164
|
appendIcon: headerIcon.value,
|
|
@@ -166,15 +171,20 @@ export const VDatePicker = genericComponent()({
|
|
|
166
171
|
const [datePickerMonthProps] = VDatePickerMonth.filterProps(props);
|
|
167
172
|
const [datePickerYearsProps] = VDatePickerYears.filterProps(props);
|
|
168
173
|
return _createVNode(VPicker, _mergeProps(pickerProps, {
|
|
169
|
-
"class": ['v-date-picker', props.class],
|
|
174
|
+
"class": ['v-date-picker', `v-date-picker--${viewMode.value}`, props.class],
|
|
170
175
|
"style": props.style,
|
|
171
|
-
"title": title.value,
|
|
172
176
|
"width": props.showWeek ? 408 : 360
|
|
173
177
|
}), {
|
|
178
|
+
title: () => slots.title?.() ?? _createVNode("div", {
|
|
179
|
+
"class": "v-date-picker__title",
|
|
180
|
+
"onClick": props.variant === 'classic' ? onClickMode : undefined
|
|
181
|
+
}, [title.value]),
|
|
174
182
|
header: () => slots.header?.(headerSlotProps.value) ?? _createVNode(VDatePickerHeader, _mergeProps({
|
|
175
183
|
"key": "header"
|
|
176
|
-
}, headerSlotProps.value
|
|
177
|
-
|
|
184
|
+
}, headerSlotProps.value, {
|
|
185
|
+
"onClick": viewMode.value === 'year' ? onClickHeader : undefined
|
|
186
|
+
}), null),
|
|
187
|
+
default: () => inputMode.value === 'calendar' ? _createVNode(_Fragment, null, [(props.variant !== 'classic' || viewMode.value !== 'year') && _createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {
|
|
178
188
|
"disabled": disabled.value,
|
|
179
189
|
"displayDate": adapter.format(displayDate.value, 'monthAndYear'),
|
|
180
190
|
"onClick:next": onClickNext,
|
|
@@ -208,7 +218,7 @@ export const VDatePicker = genericComponent()({
|
|
|
208
218
|
"label": t(props.inputText),
|
|
209
219
|
"placeholder": props.inputPlaceholder
|
|
210
220
|
}, null)]),
|
|
211
|
-
actions: () => !props.hideActions ? _createVNode("div", null, [_createVNode(VBtn, {
|
|
221
|
+
actions: () => !props.hideActions ? slots.actions?.() ?? _createVNode("div", null, [_createVNode(VBtn, {
|
|
212
222
|
"variant": "text",
|
|
213
223
|
"color": props.color,
|
|
214
224
|
"onClick": onClickCancel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","length","headerIcon","headerTransition","minDate","min","isValid","maxDate","max","disabled","targets","addDays","startOfMonth","isAfter","push","endOfMonth","getFullYear","val","oldVal","isBefore","updateFromInput","input","index","inputDate","newModel","slice","onClickCancel","onClickSave","onClickAppend","onClickNext","addMonths","onClickPrev","onClickMode","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","_Fragment","$event","v","actions","color","undefined"],"sources":["../../../src/labs/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerSlots = {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => t(props.title))\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => props.min && adapter.isValid(props.min) ? adapter.date(props.min) : null)\n const maxDate = computed(() => props.max && adapter.isValid(props.max) ? adapter.date(props.max) : null)\n\n const disabled = computed(() => {\n if (!minDate.value && !maxDate.value) return false\n\n const targets = []\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(displayDate.value), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(displayDate.value), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n\n if (minDate.value?.getFullYear() === maxDate.value?.getFullYear()) {\n targets.push('mode')\n }\n\n return targets\n })\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date, isAfter } = adapter\n const inputDate = date(input)\n\n if (\n isValid(input) &&\n (!minDate.value || !isAfter(minDate.value, inputDate)) &&\n (!maxDate.value || !isAfter(inputDate, maxDate.value))\n ) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n displayDate.value = adapter.addMonths(displayDate.value, 1)\n }\n\n function onClickPrev () {\n displayDate.value = adapter.addMonths(displayDate.value, -1)\n }\n\n function onClickMode () {\n viewMode.value = viewMode.value === 'month' ? 'year' : 'month'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n props.class,\n ]}\n style={ props.style }\n title={ title.value }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n displayDate={ adapter.format(displayDate.value, 'monthAndYear') }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:mode={ onClickMode }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n onClick:mode={ onClickMode }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n ) : undefined,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","variant","length","headerIcon","headerTransition","minDate","min","isValid","maxDate","max","disabled","targets","addDays","startOfMonth","isAfter","push","endOfMonth","getFullYear","val","oldVal","isBefore","updateFromInput","input","index","inputDate","newModel","slice","onClickCancel","onClickSave","onClickAppend","onClickNext","addMonths","onClickPrev","onClickMode","onClickHeader","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","undefined","_Fragment","$event","v","actions","color"],"sources":["../../../src/labs/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\n\n// Types\nexport type VDatePickerSlots = Omit<VPickerSlots, 'header'> & {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => {\n return props.variant === 'modern'\n ? t(props.title)\n : adapter.format(displayDate.value, 'shortDate')\n })\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => props.min && adapter.isValid(props.min) ? adapter.date(props.min) : null)\n const maxDate = computed(() => props.max && adapter.isValid(props.max) ? adapter.date(props.max) : null)\n\n const disabled = computed(() => {\n if (!minDate.value && !maxDate.value) return false\n\n const targets = []\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(displayDate.value), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(displayDate.value), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n\n if (minDate.value?.getFullYear() === maxDate.value?.getFullYear()) {\n targets.push('mode')\n }\n\n return targets\n })\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date, isAfter } = adapter\n const inputDate = date(input)\n\n if (\n isValid(input) &&\n (!minDate.value || !isAfter(minDate.value, inputDate)) &&\n (!maxDate.value || !isAfter(inputDate, maxDate.value))\n ) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n displayDate.value = adapter.addMonths(displayDate.value, 1)\n }\n\n function onClickPrev () {\n displayDate.value = adapter.addMonths(displayDate.value, -1)\n }\n\n function onClickMode () {\n viewMode.value = viewMode.value === 'month' ? 'year' : 'month'\n }\n\n function onClickHeader () {\n viewMode.value = 'month'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n props.class,\n ]}\n style={ props.style }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div\n class=\"v-date-picker__title\"\n onClick={ props.variant === 'classic' ? onClickMode : undefined }\n >\n { title.value }\n </div>\n ),\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n onClick={ viewMode.value === 'year' ? onClickHeader : undefined }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n { (props.variant !== 'classic' || viewMode.value !== 'year') && (\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n displayDate={ adapter.format(displayDate.value, 'monthAndYear') }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:mode={ onClickMode }\n />\n )}\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n onClick:mode={ onClickMode }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n slots.actions?.() ?? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n )\n ) : undefined,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
|
|
@@ -8,12 +8,31 @@
|
|
|
8
8
|
padding-bottom: 4px;
|
|
9
9
|
padding-inline-end: 12px;
|
|
10
10
|
}
|
|
11
|
+
.v-date-picker-controls--variant-classic {
|
|
12
|
+
padding-inline-start: 12px;
|
|
13
|
+
}
|
|
14
|
+
.v-date-picker-controls--variant-modern .v-date-picker__title:not(:hover) {
|
|
15
|
+
opacity: 0.7;
|
|
16
|
+
}
|
|
17
|
+
.v-date-picker--month .v-date-picker-controls--variant-modern .v-date-picker__title {
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
}
|
|
20
|
+
.v-date-picker--year .v-date-picker-controls--variant-modern .v-date-picker__title {
|
|
21
|
+
opacity: 1;
|
|
22
|
+
}
|
|
11
23
|
.v-date-picker-controls .v-btn:last-child {
|
|
12
|
-
margin-
|
|
24
|
+
margin-inline-start: 4px;
|
|
25
|
+
}
|
|
26
|
+
.v-date-picker--year .v-date-picker-controls > .v-btn {
|
|
27
|
+
transform: rotate(180deg);
|
|
13
28
|
}
|
|
14
29
|
|
|
15
30
|
.v-date-picker-controls__date {
|
|
16
|
-
margin-
|
|
31
|
+
margin-inline-end: 4px;
|
|
32
|
+
}
|
|
33
|
+
.v-date-picker-controls--variant-classic .v-date-picker-controls__date {
|
|
34
|
+
margin: auto;
|
|
35
|
+
text-align: center;
|
|
17
36
|
}
|
|
18
37
|
|
|
19
38
|
.v-date-picker-controls__month {
|
|
@@ -21,4 +40,12 @@
|
|
|
21
40
|
}
|
|
22
41
|
.v-locale--is-rtl.v-date-picker-controls__month, .v-locale--is-rtl .v-date-picker-controls__month {
|
|
23
42
|
flex-direction: row-reverse;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.v-date-picker-controls--variant-classic .v-date-picker-controls__month {
|
|
46
|
+
flex: 1 0 auto;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.v-date-picker__title {
|
|
50
|
+
display: inline-block;
|
|
24
51
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
1
|
+
import { Fragment as _Fragment, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VDatePickerControls.css";
|
|
4
4
|
|
|
@@ -21,13 +21,13 @@ export const makeVDatePickerControlsProps = propsFactory({
|
|
|
21
21
|
type: [String],
|
|
22
22
|
default: '$prev'
|
|
23
23
|
},
|
|
24
|
-
|
|
24
|
+
modeIcon: {
|
|
25
25
|
type: [String],
|
|
26
|
-
default: '$
|
|
26
|
+
default: '$subgroup'
|
|
27
27
|
},
|
|
28
|
-
|
|
29
|
-
type:
|
|
30
|
-
default: '
|
|
28
|
+
variant: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: 'modern'
|
|
31
31
|
},
|
|
32
32
|
viewMode: {
|
|
33
33
|
type: String,
|
|
@@ -46,9 +46,6 @@ export const VDatePickerControls = genericComponent()({
|
|
|
46
46
|
let {
|
|
47
47
|
emit
|
|
48
48
|
} = _ref;
|
|
49
|
-
const modeIcon = computed(() => {
|
|
50
|
-
return props.viewMode === 'month' ? props.expandIcon : props.collapseIcon;
|
|
51
|
-
});
|
|
52
49
|
const disableMode = computed(() => {
|
|
53
50
|
return Array.isArray(props.disabled) ? props.disabled.includes('mode') : !!props.disabled;
|
|
54
51
|
});
|
|
@@ -68,17 +65,21 @@ export const VDatePickerControls = genericComponent()({
|
|
|
68
65
|
emit('click:mode');
|
|
69
66
|
}
|
|
70
67
|
useRender(() => {
|
|
71
|
-
|
|
72
|
-
"class": "v-date-picker-controls"
|
|
73
|
-
}, [_createVNode("div", {
|
|
68
|
+
const displayDate = _createVNode("div", {
|
|
74
69
|
"class": "v-date-picker-controls__date"
|
|
75
|
-
}, [props.displayDate])
|
|
70
|
+
}, [props.displayDate]);
|
|
71
|
+
return _createVNode("div", {
|
|
72
|
+
"class": ['v-date-picker-controls', `v-date-picker-controls--variant-${props.variant}`]
|
|
73
|
+
}, [props.variant === 'modern' && _createVNode(_Fragment, null, [displayDate, _createVNode(VBtn, {
|
|
74
|
+
"key": "mode-btn",
|
|
76
75
|
"disabled": disableMode.value,
|
|
77
|
-
"
|
|
78
|
-
"icon": modeIcon
|
|
76
|
+
"density": "comfortable",
|
|
77
|
+
"icon": props.modeIcon,
|
|
79
78
|
"variant": "text",
|
|
80
79
|
"onClick": onClickMode
|
|
81
|
-
}, null), _createVNode(VSpacer,
|
|
80
|
+
}, null), _createVNode(VSpacer, {
|
|
81
|
+
"key": "mode-spacer"
|
|
82
|
+
}, null)]), _createVNode("div", {
|
|
82
83
|
"key": "month-buttons",
|
|
83
84
|
"class": "v-date-picker-controls__month"
|
|
84
85
|
}, [_createVNode(VBtn, {
|
|
@@ -86,7 +87,7 @@ export const VDatePickerControls = genericComponent()({
|
|
|
86
87
|
"icon": props.prevIcon,
|
|
87
88
|
"variant": "text",
|
|
88
89
|
"onClick": onClickPrev
|
|
89
|
-
}, null), _createVNode(VBtn, {
|
|
90
|
+
}, null), props.variant === 'classic' && displayDate, _createVNode(VBtn, {
|
|
90
91
|
"disabled": disableNext.value,
|
|
91
92
|
"icon": props.nextIcon,
|
|
92
93
|
"variant": "text",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerControls.mjs","names":["VBtn","VSpacer","computed","genericComponent","propsFactory","useRender","makeVDatePickerControlsProps","displayDate","String","disabled","type","Boolean","Array","default","nextIcon","prevIcon","
|
|
1
|
+
{"version":3,"file":"VDatePickerControls.mjs","names":["VBtn","VSpacer","computed","genericComponent","propsFactory","useRender","makeVDatePickerControlsProps","displayDate","String","disabled","type","Boolean","Array","default","nextIcon","prevIcon","modeIcon","variant","viewMode","VDatePickerControls","name","props","emits","click:mode","click:prev","click:next","setup","_ref","emit","disableMode","isArray","includes","disablePrev","disableNext","onClickPrev","onClickNext","onClickMode","_createVNode","_Fragment","value"],"sources":["../../../src/labs/VDatePicker/VDatePickerControls.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDatePickerControlsProps = propsFactory({\n displayDate: String,\n disabled: {\n type: [Boolean, String, Array] as PropType<boolean | string | string[]>,\n default: false,\n },\n nextIcon: {\n type: [String],\n default: '$next',\n },\n prevIcon: {\n type: [String],\n default: '$prev',\n },\n modeIcon: {\n type: [String],\n default: '$subgroup',\n },\n variant: {\n type: String,\n default: 'modern',\n },\n viewMode: {\n type: String as PropType<'month' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:mode': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n },\n\n setup (props, { emit }) {\n const disableMode = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('mode')\n : !!props.disabled\n })\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('prev')\n : !!props.disabled\n })\n const disableNext = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('next')\n : !!props.disabled\n })\n\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n function onClickMode () {\n emit('click:mode')\n }\n\n useRender(() => {\n const displayDate = (\n <div class=\"v-date-picker-controls__date\">{ props.displayDate }</div>\n )\n\n return (\n <div\n class={[\n 'v-date-picker-controls',\n `v-date-picker-controls--variant-${props.variant}`,\n ]}\n >\n { props.variant === 'modern' && (\n <>\n { displayDate }\n\n <VBtn\n key=\"mode-btn\"\n disabled={ disableMode.value }\n density=\"comfortable\"\n icon={ props.modeIcon }\n variant=\"text\"\n onClick={ onClickMode }\n />\n\n <VSpacer key=\"mode-spacer\" />\n </>\n )}\n\n <div\n key=\"month-buttons\"\n class=\"v-date-picker-controls__month\"\n >\n <VBtn\n disabled={ disablePrev.value }\n icon={ props.prevIcon }\n variant=\"text\"\n onClick={ onClickPrev }\n />\n\n { props.variant === 'classic' && displayDate }\n\n <VBtn\n disabled={ disableNext.value }\n icon={ props.nextIcon }\n variant=\"text\"\n onClick={ onClickNext }\n />\n </div>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerControls = InstanceType<typeof VDatePickerControls>\n"],"mappings":"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"}
|
|
@@ -10,14 +10,42 @@
|
|
|
10
10
|
padding-bottom: 4px
|
|
11
11
|
padding-inline-end: 12px
|
|
12
12
|
|
|
13
|
+
&--variant-classic
|
|
14
|
+
padding-inline-start: 12px
|
|
15
|
+
|
|
16
|
+
&--variant-modern
|
|
17
|
+
.v-date-picker__title
|
|
18
|
+
&:not(:hover)
|
|
19
|
+
opacity: .7
|
|
20
|
+
|
|
21
|
+
.v-date-picker--month &
|
|
22
|
+
cursor: pointer
|
|
23
|
+
|
|
24
|
+
.v-date-picker--year &
|
|
25
|
+
opacity: 1
|
|
26
|
+
|
|
13
27
|
.v-btn:last-child
|
|
14
|
-
margin-
|
|
28
|
+
margin-inline-start: 4px
|
|
29
|
+
|
|
30
|
+
.v-date-picker--year &
|
|
31
|
+
> .v-btn
|
|
32
|
+
transform: rotate(180deg)
|
|
15
33
|
|
|
16
34
|
.v-date-picker-controls__date
|
|
17
|
-
margin-
|
|
35
|
+
margin-inline-end: 4px
|
|
36
|
+
|
|
37
|
+
.v-date-picker-controls--variant-classic &
|
|
38
|
+
margin: auto
|
|
39
|
+
text-align: center
|
|
18
40
|
|
|
19
41
|
.v-date-picker-controls__month
|
|
20
42
|
display: flex
|
|
21
43
|
|
|
22
44
|
@include tools.rtl()
|
|
23
45
|
flex-direction: row-reverse
|
|
46
|
+
|
|
47
|
+
.v-date-picker-controls--variant-classic &
|
|
48
|
+
flex: 1 0 auto
|
|
49
|
+
|
|
50
|
+
.v-date-picker__title
|
|
51
|
+
display: inline-block
|
|
@@ -19,12 +19,21 @@
|
|
|
19
19
|
|
|
20
20
|
.v-date-picker-header__content {
|
|
21
21
|
align-items: center;
|
|
22
|
-
display: flex;
|
|
22
|
+
display: inline-flex;
|
|
23
23
|
font-size: 32px;
|
|
24
24
|
line-height: 40px;
|
|
25
25
|
grid-area: content;
|
|
26
26
|
justify-content: space-between;
|
|
27
27
|
}
|
|
28
|
+
.v-date-picker-header--clickable .v-date-picker-header__content:not(:hover) {
|
|
29
|
+
opacity: 0.7;
|
|
30
|
+
}
|
|
31
|
+
.v-date-picker--month .v-date-picker-header__content {
|
|
32
|
+
opacity: 1;
|
|
33
|
+
}
|
|
34
|
+
.v-date-picker--year .v-date-picker-header__content {
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
}
|
|
28
37
|
|
|
29
38
|
.date-picker-header-transition-enter-active,
|
|
30
39
|
.date-picker-header-reverse-transition-enter-active {
|
|
@@ -7,17 +7,19 @@ import { VBtn } from "../../components/VBtn/index.mjs";
|
|
|
7
7
|
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs"; // Composables
|
|
8
8
|
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
9
9
|
import { MaybeTransition } from "../../composables/transition.mjs"; // Utilities
|
|
10
|
-
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
10
|
+
import { EventProp, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
11
11
|
export const makeVDatePickerHeaderProps = propsFactory({
|
|
12
12
|
appendIcon: String,
|
|
13
13
|
color: String,
|
|
14
14
|
header: String,
|
|
15
|
-
transition: String
|
|
15
|
+
transition: String,
|
|
16
|
+
onClick: EventProp()
|
|
16
17
|
}, 'VDatePickerHeader');
|
|
17
18
|
export const VDatePickerHeader = genericComponent()({
|
|
18
19
|
name: 'VDatePickerHeader',
|
|
19
20
|
props: makeVDatePickerHeaderProps(),
|
|
20
21
|
emits: {
|
|
22
|
+
click: () => true,
|
|
21
23
|
'click:append': () => true
|
|
22
24
|
},
|
|
23
25
|
setup(props, _ref) {
|
|
@@ -29,6 +31,9 @@ export const VDatePickerHeader = genericComponent()({
|
|
|
29
31
|
backgroundColorClasses,
|
|
30
32
|
backgroundColorStyles
|
|
31
33
|
} = useBackgroundColor(props, 'color');
|
|
34
|
+
function onClick() {
|
|
35
|
+
emit('click');
|
|
36
|
+
}
|
|
32
37
|
function onClickAppend() {
|
|
33
38
|
emit('click:append');
|
|
34
39
|
}
|
|
@@ -36,8 +41,11 @@ export const VDatePickerHeader = genericComponent()({
|
|
|
36
41
|
const hasContent = !!(slots.default || props.header);
|
|
37
42
|
const hasAppend = !!(slots.append || props.appendIcon);
|
|
38
43
|
return _createVNode("div", {
|
|
39
|
-
"class": ['v-date-picker-header',
|
|
40
|
-
|
|
44
|
+
"class": ['v-date-picker-header', {
|
|
45
|
+
'v-date-picker-header--clickable': !!props.onClick
|
|
46
|
+
}, backgroundColorClasses.value],
|
|
47
|
+
"style": backgroundColorStyles.value,
|
|
48
|
+
"onClick": onClick
|
|
41
49
|
}, [slots.prepend && _createVNode("div", {
|
|
42
50
|
"key": "prepend",
|
|
43
51
|
"class": "v-date-picker-header__prepend"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerHeader.mjs","names":["VBtn","VDefaultsProvider","useBackgroundColor","MaybeTransition","genericComponent","propsFactory","useRender","makeVDatePickerHeaderProps","appendIcon","String","color","header","transition","VDatePickerHeader","name","props","emits","click:append","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","onClickAppend","hasContent","default","hasAppend","append","_createVNode","value","prepend","icon","variant"],"sources":["../../../src/labs/VDatePicker/VDatePickerHeader.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerHeader.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerHeaderSlots = {\n prepend: never\n default: never\n append: never\n}\n\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n}, 'VDatePickerHeader')\n\nexport const VDatePickerHeader = genericComponent<VDatePickerHeaderSlots>()({\n name: 'VDatePickerHeader',\n\n props: makeVDatePickerHeaderProps(),\n\n emits: {\n 'click:append': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n function onClickAppend () {\n emit('click:append')\n }\n\n useRender(() => {\n const hasContent = !!(slots.default || props.header)\n const hasAppend = !!(slots.append || props.appendIcon)\n\n return (\n <div\n class={[\n 'v-date-picker-header',\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { slots.prepend && (\n <div key=\"prepend\" class=\"v-date-picker-header__prepend\">\n { slots.prepend() }\n </div>\n )}\n\n { hasContent && (\n <MaybeTransition key=\"content\" name={ props.transition }>\n <div key={ props.header } class=\"v-date-picker-header__content\">\n { slots.default?.() ?? props.header }\n </div>\n </MaybeTransition>\n )}\n\n { hasAppend && (\n <div class=\"v-date-picker-header__append\">\n { !slots.append ? (\n <VBtn\n key=\"append-btn\"\n icon={ props.appendIcon }\n variant=\"text\"\n onClick={ onClickAppend }\n />\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !props.appendIcon }\n defaults={{\n VBtn: {\n icon: props.appendIcon,\n variant: 'text',\n },\n }}\n >\n { slots.append?.() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerHeader = InstanceType<typeof VDatePickerHeader>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB,wDAE1B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,eAAe,4CAExB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,
|
|
1
|
+
{"version":3,"file":"VDatePickerHeader.mjs","names":["VBtn","VDefaultsProvider","useBackgroundColor","MaybeTransition","EventProp","genericComponent","propsFactory","useRender","makeVDatePickerHeaderProps","appendIcon","String","color","header","transition","onClick","VDatePickerHeader","name","props","emits","click","click:append","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","onClickAppend","hasContent","default","hasAppend","append","_createVNode","value","prepend","icon","variant"],"sources":["../../../src/labs/VDatePicker/VDatePickerHeader.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerHeader.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerHeaderSlots = {\n prepend: never\n default: never\n append: never\n}\n\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp<[MouseEvent]>(),\n}, 'VDatePickerHeader')\n\nexport const VDatePickerHeader = genericComponent<VDatePickerHeaderSlots>()({\n name: 'VDatePickerHeader',\n\n props: makeVDatePickerHeaderProps(),\n\n emits: {\n click: () => true,\n 'click:append': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n function onClick () {\n emit('click')\n }\n\n function onClickAppend () {\n emit('click:append')\n }\n\n useRender(() => {\n const hasContent = !!(slots.default || props.header)\n const hasAppend = !!(slots.append || props.appendIcon)\n\n return (\n <div\n class={[\n 'v-date-picker-header',\n {\n 'v-date-picker-header--clickable': !!props.onClick,\n },\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n onClick={ onClick }\n >\n { slots.prepend && (\n <div key=\"prepend\" class=\"v-date-picker-header__prepend\">\n { slots.prepend() }\n </div>\n )}\n\n { hasContent && (\n <MaybeTransition key=\"content\" name={ props.transition }>\n <div key={ props.header } class=\"v-date-picker-header__content\">\n { slots.default?.() ?? props.header }\n </div>\n </MaybeTransition>\n )}\n\n { hasAppend && (\n <div class=\"v-date-picker-header__append\">\n { !slots.append ? (\n <VBtn\n key=\"append-btn\"\n icon={ props.appendIcon }\n variant=\"text\"\n onClick={ onClickAppend }\n />\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !props.appendIcon }\n defaults={{\n VBtn: {\n icon: props.appendIcon,\n variant: 'text',\n },\n }}\n >\n { slots.append?.() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerHeader = InstanceType<typeof VDatePickerHeader>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB,wDAE1B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,eAAe,4CAExB;AAAA,SACSC,SAAS,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAE7D;AAOA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrDG,UAAU,EAAEC,MAAM;EAClBC,KAAK,EAAED,MAAM;EACbE,MAAM,EAAEF,MAAM;EACdG,UAAU,EAAEH,MAAM;EAClBI,OAAO,EAAEV,SAAS;AACpB,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAMW,iBAAiB,GAAGV,gBAAgB,EAA0B,CAAC;EAC1EW,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAET,0BAA0B,EAAE;EAEnCU,KAAK,EAAE;IACLC,KAAK,EAAEA,CAAA,KAAM,IAAI;IACjB,cAAc,EAAEC,CAAA,KAAM;EACxB,CAAC;EAEDC,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,sBAAsB;MAAEC;IAAsB,CAAC,GAAGxB,kBAAkB,CAACe,KAAK,EAAE,OAAO,CAAC;IAE5F,SAASH,OAAOA,CAAA,EAAI;MAClBS,IAAI,CAAC,OAAO,CAAC;IACf;IAEA,SAASI,aAAaA,CAAA,EAAI;MACxBJ,IAAI,CAAC,cAAc,CAAC;IACtB;IAEAhB,SAAS,CAAC,MAAM;MACd,MAAMqB,UAAU,GAAG,CAAC,EAAEJ,KAAK,CAACK,OAAO,IAAIZ,KAAK,CAACL,MAAM,CAAC;MACpD,MAAMkB,SAAS,GAAG,CAAC,EAAEN,KAAK,CAACO,MAAM,IAAId,KAAK,CAACR,UAAU,CAAC;MAEtD,OAAAuB,YAAA;QAAA,SAEW,CACL,sBAAsB,EACtB;UACE,iCAAiC,EAAE,CAAC,CAACf,KAAK,CAACH;QAC7C,CAAC,EACDW,sBAAsB,CAACQ,KAAK,CAC7B;QAAA,SACOP,qBAAqB,CAACO,KAAK;QAAA,WACzBnB;MAAO,IAEfU,KAAK,CAACU,OAAO,IAAAF,YAAA;QAAA,OACJ,SAAS;QAAA,SAAO;MAA+B,IACpDR,KAAK,CAACU,OAAO,EAAE,EAEpB,EAECN,UAAU,IAAAI,YAAA,CAAA7B,eAAA;QAAA,OACW,SAAS;QAAA,QAAQc,KAAK,CAACJ;MAAU;QAAAgB,OAAA,EAAAA,CAAA,MAAAG,YAAA;UAAA,OACzCf,KAAK,CAACL,MAAM;UAAA,SAAS;QAA+B,IAC3DY,KAAK,CAACK,OAAO,IAAI,IAAIZ,KAAK,CAACL,MAAM;MAAA,EAGxC,EAECkB,SAAS,IAAAE,YAAA;QAAA,SACE;MAA8B,IACrC,CAACR,KAAK,CAACO,MAAM,GAAAC,YAAA,CAAAhC,IAAA;QAAA,OAEP,YAAY;QAAA,QACTiB,KAAK,CAACR,UAAU;QAAA,WACf,MAAM;QAAA,WACJkB;MAAa,WAAAK,YAAA,CAAA/B,iBAAA;QAAA,OAInB,iBAAiB;QAAA,YACV,CAACgB,KAAK,CAACR,UAAU;QAAA,YAClB;UACRT,IAAI,EAAE;YACJmC,IAAI,EAAElB,KAAK,CAACR,UAAU;YACtB2B,OAAO,EAAE;UACX;QACF;MAAC;QAAAP,OAAA,EAAAA,CAAA,MAECL,KAAK,CAACO,MAAM,IAAI;MAAA,EAErB,EAEJ;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -18,12 +18,22 @@
|
|
|
18
18
|
|
|
19
19
|
.v-date-picker-header__content
|
|
20
20
|
align-items: center
|
|
21
|
-
display: flex
|
|
21
|
+
display: inline-flex
|
|
22
22
|
font-size: 32px
|
|
23
23
|
line-height: 40px
|
|
24
24
|
grid-area: content
|
|
25
25
|
justify-content: space-between
|
|
26
26
|
|
|
27
|
+
.v-date-picker-header--clickable &
|
|
28
|
+
&:not(:hover)
|
|
29
|
+
opacity: .7
|
|
30
|
+
|
|
31
|
+
.v-date-picker--month &
|
|
32
|
+
opacity: 1
|
|
33
|
+
|
|
34
|
+
.v-date-picker--year &
|
|
35
|
+
cursor: pointer
|
|
36
|
+
|
|
27
37
|
.date-picker-header-transition,
|
|
28
38
|
.date-picker-header-reverse-transition
|
|
29
39
|
&-enter-active
|
|
@@ -275,8 +275,7 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
275
275
|
"key": "in-hover",
|
|
276
276
|
"class": "v-date-picker-month__day--hover"
|
|
277
277
|
}, null), (props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VBtn, {
|
|
278
|
-
"
|
|
279
|
-
"color": color,
|
|
278
|
+
"color": !item.isToday || item.isSelected ? color : undefined,
|
|
280
279
|
"disabled": item.isDisabled,
|
|
281
280
|
"icon": true,
|
|
282
281
|
"ripple": false,
|