Skip to content

Commit 4cfe0c0

Browse files
committed
support v-model
1 parent 1885dc2 commit 4cfe0c0

File tree

5 files changed

+35
-13
lines changed

5 files changed

+35
-13
lines changed

demo/index.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ <h2>calendar</h2>
8888
:days-disabled-end="daysDisabledEnd"
8989
:disabled-func="disabledFunc"
9090
:first-day-of-week="1"
91-
:sync-date.sync="date"
91+
v-model="date"
9292
:lang="lang" @change="onChange"></calendar>
9393
<button @click.stop.prevent="setDate(-1)">Yesterday</button>
9494
<button @click.stop.prevent="setDate(0)">Today</button>
@@ -179,7 +179,7 @@ <h2>date-range</h2>
179179
class="calendar"
180180
:days-disabled-start="daysDisabledStart"
181181
:days-disabled-end="daysDisabledEnd"
182-
:sync-range="range"
182+
v-model="range"
183183
:lang="lang" @change="onChange"></daterange>
184184
<button @click.stop.prevent="setRange(-7)">Last 7 days</button>
185185
<button @click.stop.prevent="setRange(-30)">Last 1 month</button>
@@ -213,7 +213,6 @@ <h2>date-range</h2>
213213
},
214214
setRange (p) {
215215
if (typeof p === 'number') {
216-
console.log(p)
217216
this.range = {
218217
startDate: moment().add(p, 'days'),
219218
endDate: moment()
@@ -264,7 +263,6 @@ <h2>custom style</h2>
264263
daysDisabledEnd: moment('2017-06-16'),
265264
disabledFunc: function (dayMoment) {
266265
var date = dayMoment.date()
267-
console.log(date)
268266
if (date % 2 === 1) {
269267
return true
270268
}
@@ -340,7 +338,6 @@ <h2>custom style</h2>
340338
},
341339
setRange (p) {
342340
if (typeof p === 'number') {
343-
console.log(p)
344341
this.range = {
345342
startDate: moment().add(p, 'days'),
346343
endDate: moment()

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "vue-date-range",
3-
"version": "2.2.1",
4-
"description": "A vue component for choosing dates and date ranges. Uses Moment.js for date operations.",
3+
"version": "2.2.2",
4+
"description": "A vue component for choosing dates and date ranges. Uses Moment.js for date operations. Support Chinese lunar.",
55
"main": "dist/vue-date-range.min.js",
66
"scripts": {
77
"test": "karma start --single-run",

readme.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ A vue component for choosing dates and date ranges. Uses Moment.js for date oper
1818
:show-lunar="true"
1919
:first-day-of-week="1"
2020
:disable-days-before-today="disableDaysBeforeToday"
21-
:default-date="date"
21+
:sync-date.sync="date"
2222
:lang="lang" @change="onChange"></calendar>
2323
...
2424
import {Calendar} from 'vue-date-range';
@@ -43,7 +43,7 @@ export default {
4343

4444
### DateRange
4545
```
46-
<daterange class="calendar" :default-range="range" :lang="lang" @change="onChange"></daterange>
46+
<daterange class="calendar" :sync-range.sync="range" :lang="lang" @change="onChange"></daterange>
4747
...
4848
import {DateRange} from 'vue-date-range';
4949
export default {
@@ -158,8 +158,15 @@ Download vue-date-range.min.js from dist/ and import in your web page. Example:
158158
# .sync
159159
For Vue2.3.0+, we can use [`.sync` modifier](https://vuejs.org/v2/guide/components.html#sync-Modifier):
160160
```javascript
161-
<calendar sync-date.sync="date"></calendar>
162-
<date-range sync-range.sync="range"></date-range>
161+
<calendar :sync-date.sync="date"></calendar>
162+
<date-range :sync-range.sync="range"></date-range>
163+
```
164+
165+
# v-model
166+
We can also use [`v-model` modifier](https://vuejs.org/v2/guide/components.html#Form-Input-Components-using-Custom-Events) (these can be configured in 2.2.0+):
167+
```javascript
168+
<calendar v-model="date"></calendar>
169+
<date-range v-model="range"></date-range>
163170
```
164171

165172
# Props
@@ -213,7 +220,7 @@ For Vue2.3.0+, we can use [`.sync` modifier](https://vuejs.org/v2/guide/componen
213220

214221
* sync-date: The default selected date. Can be used as the “two-way binding” for date (Vue 2.3.0+). e.g.:
215222
```html
216-
<calendar sync-date.sync="date"></calendar>
223+
<calendar :sync-date.sync="date"></calendar>
217224
```
218225
* ~~default-date: Init the selected date. Only for Calendar.~~(use syncDate instead)
219226
* range: The selected date range. e.g.:
@@ -228,6 +235,6 @@ Also it has its specific props:
228235

229236
* sync-range: The default date range. Can be used as the “two-way binding” for range (Vue 2.3.0+). e.g.:
230237
```html
231-
<date-range sync-range.sync="range"></date-range>
238+
<date-range :sync-range.sync="range"></date-range>
232239
```
233240
* ~~defaultRange: Used to init the date range~~

src/Calendar.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@
7979
// },
8080
syncDate: {
8181
type: Object
82+
},
83+
value: {
84+
type: Object
8285
}
8386
},
8487
data () {
@@ -99,6 +102,10 @@
99102
syncDate (val) {
100103
this.date = val
101104
this.resetDayOfMonth()
105+
},
106+
value (val) {
107+
this.date = val
108+
this.resetDayOfMonth()
102109
}
103110
},
104111
created () {
@@ -216,7 +223,9 @@
216223
},
217224
handleDayClick (day) {
218225
this.date = day.dayMoment
226+
// to support three ways to get value
219227
this.$emit('update:syncDate', day.dayMoment)
228+
this.$emit('input', day.dayMoment)
220229
this.$emit('change', day.dayMoment)
221230
},
222231
changeMonth (delta) {

src/DateRange.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
// }
5858
syncRange: {
5959
type: Object
60+
},
61+
value: {
62+
type: Object
6063
}
6164
},
6265
data () {
@@ -73,6 +76,10 @@
7376
syncRange (val) {
7477
this.rangeData = val
7578
this.step = 0
79+
},
80+
value (val) {
81+
this.rangeData = val
82+
this.step = 0
7683
}
7784
},
7885
methods: {
@@ -97,7 +104,9 @@
97104
const eTs = this.rangeData.endDate.unix()
98105
const startDate = sTs <= eTs ? this.rangeData.startDate : this.rangeData.endDate
99106
const endDate = sTs > eTs ? this.rangeData.startDate : this.rangeData.endDate
107+
// to support three ways to get value
100108
this.$emit('update:syncRange', {startDate, endDate})
109+
this.$emit('input', {startDate, endDate})
101110
this.$emit('change', {startDate, endDate})
102111
}
103112
}

0 commit comments

Comments
 (0)