2
0
mirror of https://github.com/tenrok/vue2-datepicker.git synced 2026-06-20 07:10:36 +03:00

refactor: 3.0

This commit is contained in:
mengxiong10
2019-11-10 17:47:30 +08:00
parent 72024440d7
commit 4875dc6b3d
165 changed files with 23248 additions and 21723 deletions
+49
View File
@@ -0,0 +1,49 @@
<template>
<div class="box">
<section>
<p>date (default)</p>
<date-picker
v-model="value1"
format="YYYY-MM-DD"
type="date"
placeholder="Select date"
></date-picker>
</section>
<section>
<p>month</p>
<date-picker v-model="value2" type="month" placeholder="Select month"></date-picker>
</section>
<section>
<p>year</p>
<date-picker v-model="value3" type="year" placeholder="Select year"></date-picker>
</section>
<section>
<p>datetime</p>
<date-picker v-model="value4" type="datetime" placeholder="Select datetime"></date-picker>
</section>
<section>
<p>time</p>
<date-picker v-model="value5" type="time" placeholder="Select time"></date-picker>
</section>
<section>
<p>week</p>
<date-picker v-model="value6" type="week" placeholder="Select week"></date-picker>
</section>
</div>
</template>
<script>
export default {
name: 'Basic',
data() {
return {
value1: null,
value2: null,
value3: null,
value4: null,
value5: null,
value6: null,
};
},
};
</script>
+31
View File
@@ -0,0 +1,31 @@
<template>
<div>
<date-picker
v-model="value"
value-type="format"
type="time"
:open.sync="open"
placeholder="Select time"
@change="handleChange"
></date-picker>
</div>
</template>
<script>
export default {
name: 'ControlOpen',
data() {
return {
value: null,
open: false,
};
},
methods: {
handleChange(value, type) {
if (type === 'second') {
this.open = false;
}
},
},
};
</script>
+62
View File
@@ -0,0 +1,62 @@
<template>
<div class="box">
<section>
<date-picker
v-model="value1"
type="datetime"
placeholder="Select datetime"
:show-time-panel="showTimePanel"
@close="handleOpenChange"
>
<template v-slot:footer>
<button class="mx-btn mx-btn-text" @click="toggleTimePanel">
{{ showTimePanel ? 'select date' : 'select time' }}
</button>
</template>
</date-picker>
</section>
<section>
<date-picker
v-model="value2"
type="datetime"
placeholder="Select datetime range"
range
:show-time-panel="showTimeRangePanel"
@close="handleRangeClose"
>
<template v-slot:footer>
<button class="mx-btn mx-btn-text" @click="toggleTimeRangePanel">
{{ showTimeRangePanel ? 'select date' : 'select time' }}
</button>
</template>
</date-picker>
</section>
</div>
</template>
<script>
export default {
data() {
return {
value1: null,
value2: [],
showTimePanel: false,
showTimeRangePanel: false,
};
},
methods: {
toggleTimePanel() {
this.showTimePanel = !this.showTimePanel;
},
toggleTimeRangePanel() {
this.showTimeRangePanel = !this.showTimeRangePanel;
},
handleOpenChange() {
this.showTimePanel = false;
},
handleRangeClose() {
this.showTimeRangePanel = false;
},
},
};
</script>
+28
View File
@@ -0,0 +1,28 @@
<template>
<div class="box">
<section>
<p>disabled = "true"</p>
<date-picker v-model="value1" disabled></date-picker>
</section>
<section>
<p>editable = "false"</p>
<date-picker v-model="value2" :editable="false"></date-picker>
</section>
<section>
<p>clearable = "false"</p>
<date-picker v-model="value3" :clearable="false"></date-picker>
</section>
</div>
</template>
<script>
export default {
data() {
return {
value1: new Date(),
value2: new Date(),
value3: new Date(),
};
},
};
</script>
+67
View File
@@ -0,0 +1,67 @@
<template>
<div class="box">
<section>
<p>date not before today</p>
<date-picker v-model="value1" :disabled-date="notBeforeToday"></date-picker>
</section>
<section>
<p>date not after today</p>
<date-picker v-model="value2" :disabled-date="notAfterToday"></date-picker>
</section>
<section>
<p>time not before 09:00</p>
<date-picker
v-model="value3"
value-type="format"
type="time"
placeholder="HH:mm:ss"
:default-value="new Date().setHours(9, 0, 0)"
:disabled-time="notBeforeNine"
></date-picker>
</section>
<section>
<p>datetime not before 2019-10-09 12:00</p>
<date-picker
v-model="value4"
type="datetime"
:disabled-date="notBeforeDate"
:disabled-time="notBeforeTime"
value-type="format"
></date-picker>
</section>
</div>
</template>
<script>
const today = new Date();
today.setHours(0, 0, 0, 0);
export default {
data() {
return {
value1: new Date(),
value2: new Date(),
value3: '',
value4: '',
value5: '',
};
},
methods: {
notBeforeToday(date) {
return date < today;
},
notAfterToday(date) {
return date > today;
},
notBeforeNine(date) {
return date.getHours() < 9;
},
notBeforeDate(date) {
return date < new Date(2019, 9, 9);
},
notBeforeTime(date) {
return date < new Date(2019, 9, 9, 12);
},
},
};
</script>
+26
View File
@@ -0,0 +1,26 @@
<template>
<div>
<date-picker
v-model="value"
:time-picker-options="{
start: '08:30',
step: '00:30',
end: '18:30',
}"
format="hh:mm a"
type="time"
placeholder="hh:mm a"
></date-picker>
</div>
</template>
<script>
export default {
name: 'FixedTimeList',
data() {
return {
value: null,
};
},
};
</script>
+22
View File
@@ -0,0 +1,22 @@
<template>
<div>
<date-picker
v-model="value"
format="hh:mm a"
value-type="format"
type="time"
placeholder="hh:mm a"
></date-picker>
</div>
</template>
<script>
export default {
name: 'ControlOpen',
data() {
return {
value: '',
};
},
};
</script>
+25
View File
@@ -0,0 +1,25 @@
<template>
<div>
<date-picker
v-model="value"
:minute-step="30"
:hour-options="hours"
format="HH:mm"
value-type="format"
type="time"
placeholder="HH:mm"
></date-picker>
</div>
</template>
<script>
export default {
name: 'ControlOpen',
data() {
return {
value: '',
hours: Array.from({ length: 10 }).map((_, i) => i + 8),
};
},
};
</script>
+29
View File
@@ -0,0 +1,29 @@
<template>
<div class="box">
<section>
<p>date range</p>
<date-picker v-model="value1" type="date" range placeholder="Select date range"></date-picker>
</section>
<section>
<p>datetime range</p>
<date-picker
v-model="value2"
type="datetime"
range
placeholder="Select datetime range"
></date-picker>
</section>
</div>
</template>
<script>
export default {
name: 'Range',
data() {
return {
value1: [new Date(2019, 9, 8), new Date(2019, 9, 19)],
value2: [],
};
},
};
</script>
+68
View File
@@ -0,0 +1,68 @@
<template>
<div class="box">
<section>
<p>shortcuts</p>
<date-picker v-model="value1" :shortcuts="shortcuts" placeholder="Select date"></date-picker>
</section>
<section>
<p>header slot</p>
<date-picker v-model="value2" placeholder="Select date">
<template v-slot:header="{ emit }">
<button class="mx-btn mx-btn-text" @click="emit(new Date())">Today</button>
</template>
</date-picker>
</section>
<section>
<p>footer slot</p>
<date-picker v-model="value3" range placeholder="Select date range">
<template v-slot:footer="{ emit }">
<div style="text-align: left">
<button class="mx-btn mx-btn-text" @click="selectNextThreeDay(emit)">
NextThreeDay
</button>
</div>
</template>
</date-picker>
</section>
</div>
</template>
<script>
export default {
name: 'Basic',
data() {
return {
value1: null,
value2: null,
value3: null,
shortcuts: [
{
text: 'Today',
onClick() {
const date = new Date();
// return a Date
return date;
},
},
{
text: 'Yesterday',
onClick() {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
return date;
},
},
],
};
},
methods: {
selectNextThreeDay(emit) {
const start = new Date();
const end = new Date();
end.setTime(end.getTime() + 3 * 24 * 3600 * 1000);
const date = [start, end];
emit(date);
},
},
};
</script>
+46
View File
@@ -0,0 +1,46 @@
<template>
<div class="box">
<section>
<p>format</p>
<date-picker v-model="value2" value-type="format" format="YYYY-MM-DD"></date-picker>
<p>
<code>v-model = {{ value2 }}</code>
</p>
</section>
<section>
<p>date (Date Object)</p>
<date-picker v-model="value1" value-type="date"></date-picker>
<p>
<code>v-model = {{ value1 }}</code>
</p>
</section>
<section>
<p>timestamp</p>
<date-picker v-model="value3" value-type="timestamp"></date-picker>
<p>
<code>v-model = {{ value3 }}</code>
</p>
</section>
<section>
<p>DD/MM/YYYY</p>
<date-picker v-model="value4" value-type="DD/MM/YYYY" format="YYYY-MM-DD"></date-picker>
<p>
<code>v-model = {{ value4 }}</code>
</p>
</section>
</div>
</template>
<script>
export default {
name: 'ValueType',
data() {
return {
value1: new Date(2019, 9, 9),
value2: '2019-10-09',
value3: new Date(2019, 9, 9).getTime(),
value4: '09/10/2019',
};
},
};
</script>