123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- {{define "component/persianDatepickerTemplate"}}
- <template>
- <div>
- <a-input :value="value" type="text" v-model="date" data-jdp class="persian-datepicker"
- @input="$emit('input', convertToGregorian($event.target.value)); jalaliDatepicker.hide();"
- :placeholder="placeholder">
- <template #addonAfter>
- <a-icon type="calendar" style="font-size: 14px; opacity: 0.5;"/>
- </template>
- </a-input>
- </div>
- </template>
- {{end}}
- {{define "component/persianDatepicker"}}
- <link rel="stylesheet" href="{{ .base_path }}assets/persian-datepicker/persian-datepicker.min.css?{{ .cur_ver }}"/>
- <script src="{{ .base_path }}assets/moment/moment-jalali.min.js?{{ .cur_ver }}"></script>
- <script src="{{ .base_path }}assets/persian-datepicker/persian-datepicker.min.js?{{ .cur_ver }}"></script>
- <script>
- const persianDatepicker = {};
- Vue.component('persian-datepicker', {
- props: ['placeholder', 'format', 'value'],
- template: `{{template "component/persianDatepickerTemplate"}}`,
- data() {
- return {
- date: '',
- persianDatepicker,
- };
- },
- watch: {
- value: function (date) {
- this.date = this.convertToJalalian(date)
- }
- },
- mounted() {
- this.date = this.convertToJalalian(this.value)
- this.listenToDatepicker()
- },
- methods: {
- convertToGregorian(date) {
- return date ? moment(moment(date, 'jYYYY/jMM/jDD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')) : null
- },
- convertToJalalian(date) {
- return date && moment.isMoment(date) ? date.format('jYYYY/jMM/jDD HH:mm:ss') : null
- },
- listenToDatepicker() {
- jalaliDatepicker.startWatch({
- time: true,
- zIndex: '9999',
- hideAfterChange: true,
- useDropDownYears: false,
- changeMonthRotateYear: true,
- });
- },
- }
- });
- </script>
- {{end}}
|