Skip to content

Instantly share code, notes, and snippets.

@LiewJunTung
Created December 22, 2016 06:43
Show Gist options
  • Save LiewJunTung/5e57e6ee5e4df4b98ee7742c956082fe to your computer and use it in GitHub Desktop.
Save LiewJunTung/5e57e6ee5e4df4b98ee7742c956082fe to your computer and use it in GitHub Desktop.
<!-- Start: Template -->
<template id="vue-datepicker">
<div>
<div class="form-group">
<label for="date-from">From:</label>
<input id="date-from" class="form-control" type="text" v-model="frm" v-on:change="changeFrom">
</div>
<div class="form-group">
<label for="date-to">To:</label>
<input id="date-to" class="form-control" type="text" v-model="to" v-on:change="changeTo">
</div>
</div>
</template>
<script>
Vue.component('vue-datepicker', {
template: '#vue-datepicker',
props:['dateFrom', 'dateTo'],
data: function(){
return {
frm: this.dateFrom,
to: this.dateTo
}
},
mounted: function(){
var self = this;
this.$nextTick(function(){
$(this.$el).find('#date-from').datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(selectedDate){
if (selectedDate){
self.frm = selectedDate;
self.selectDate(selectedDate, true);
}
}
});
$(this.$el).find('#date-to').datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(selectedDate){
if (selectedDate) {
self.to = selectedDate;
self.selectDate(selectedDate, false);
}
}
});
});
},
methods: {
selectDate: function(selectedDate, isFrom){
if (isFrom){
$(this.$el).find("#date-to").datepicker("option", "minDate", selectedDate);
} else {
$(this.$el).find("#date-from").datepicker("option", "maxDate", selectedDate);
}
this.$emit('selected-date', selectedDate, isFrom)
},
changeFrom: function(){
$(this.$el).find("#date-from").datepicker("setDate", this.frm);
this.frm = $(this.$el).find("#date-from").val();
this.selectDate(this.frm, true);
},
changeTo: function(){
$(this.$el).find("#date-to").datepicker("setDate", this.to);
this.to = $(this.$el).find("#date-to").val();
this.selectDate(this.to, false);
}
}
});
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
dateFrom: '',
dateTo: ''
},
methods: {
updated: function(selectedDate, isFrom) {
if (isFrom){
this.dateFrom = selectedDate;
} else {
this.dateTo = selectedDate;
}
console.log(selectedDate);
}
}
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment