Skip to content

Commit 2ce8772

Browse files
committed
docs(VDatePicker): example with week selection
1 parent 1f1855d commit 2ce8772

2 files changed

Lines changed: 88 additions & 0 deletions

File tree

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<template>
2+
<v-container>
3+
<v-row justify="space-around">
4+
<div>
5+
<v-date-picker
6+
v-model="dates"
7+
color="primary"
8+
multiple="week"
9+
title="Week selection"
10+
show-adjacent-months
11+
show-week
12+
>
13+
<template v-slot:header>
14+
<v-date-picker-header>
15+
{{ headerText }}
16+
</v-date-picker-header>
17+
</template>
18+
</v-date-picker>
19+
<div class="mt-3 d-flex justify-center">
20+
<v-btn :disabled="!dates.length" @click="dates = []">Clear</v-btn>
21+
</div>
22+
</div>
23+
</v-row>
24+
</v-container>
25+
</template>
26+
27+
<script setup>
28+
import { computed, ref } from 'vue'
29+
import { useDate } from 'vuetify'
30+
31+
const adapter = useDate()
32+
33+
const dates = ref([])
34+
35+
const headerText = computed(() => {
36+
if (dates.value.length < 2) return 'Select week'
37+
38+
const firstWeekDay = adapter.startOfWeek(dates.value[0])
39+
const firstYearDay = adapter.startOfYear(dates.value[0])
40+
41+
const firstDayDiff = adapter.getDiff(firstWeekDay, firstYearDay, 'days')
42+
const weekOffset = firstYearDay.getDay() === 0 ? 1 : 0
43+
44+
return `${firstWeekDay.getFullYear()} Week ${weekOffset + Math.ceil(firstDayDiff / 7)}`
45+
})
46+
</script>
47+
48+
<script>
49+
import { useDate } from 'vuetify'
50+
51+
export default {
52+
setup () {
53+
const adapter = useDate()
54+
return { adapter }
55+
},
56+
data: () => ({
57+
dates: [],
58+
}),
59+
computed: {
60+
headerText () {
61+
if (this.dates.length < 2) return 'Select week'
62+
63+
const firstWeekDay = this.adapter.startOfWeek(this.dates[0])
64+
const firstYearDay = this.adapter.startOfYear(this.dates[0])
65+
66+
const firstDayDiff = this.adapter.getDiff(
67+
firstWeekDay,
68+
firstYearDay,
69+
'days'
70+
)
71+
const weekOffset = firstYearDay.getDay() === 0 ? 1 : 0
72+
73+
return `${firstWeekDay.getFullYear()} Week ${
74+
weekOffset + Math.ceil(firstDayDiff / 7)
75+
}`
76+
},
77+
},
78+
mounted () {
79+
this.adapter = useDate()
80+
},
81+
}
82+
</script>

packages/docs/src/pages/en/components/date-pickers.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ Specify allowed dates using objects or functions. When using objects, accepts a
9494

9595
<ExamplesExample file="v-date-picker/prop-allowed-dates" />
9696

97+
#### Week selection
98+
99+
You can let users select entire week with a single click when **multiple** is set to `week`.
100+
101+
<ExamplesExample file="v-date-picker/misc-week-selection" />
102+
97103
### Internationalization
98104

99105
Vuetify components can localize date formats by utilizing the [i18n](/features/internationalization) feature. This determines the appropriate locale for date display. When the default date adapter is in use, localization is managed automatically.

0 commit comments

Comments
 (0)