vue-flatpickr-component
Version:
Vue.js component for Flatpickr date-time picker
1 lines • 3.13 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("flatpickr"),require("vue")):"function"==typeof define&&define.amd?define("VueFlatpickr",["flatpickr","vue"],t):"object"==typeof exports?exports.VueFlatpickr=t(require("flatpickr"),require("vue")):e.VueFlatpickr=t(e.flatpickr,e.Vue)}(this,((e,t)=>(()=>{"use strict";var n={144:t=>{t.exports=e},594:e=>{e.exports=t}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={exports:{}};return n[e](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};r.r(i),r.d(i,{default:()=>m});var a=r(144),l=r.n(a),s=r(594);const u=["onChange","onClose","onDestroy","onMonthChange","onOpen","onYearChange"];function p(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function d(e){return e instanceof Array?e:[e]}function f(e){return e&&e.length?e:null}const h=[...u,"onValueUpdate","onDayCreate","onParseConfig","onReady","onPreCalendarPosition","onKeyDown"],c=["locale","showMonths"],m=(0,s.defineComponent)({name:"FlatPickr",compatConfig:{MODE:3},render(){return(0,s.h)("input",{type:"text","data-input":!0,disabled:this.disabled,onInput:this.onInput})},emits:["blur","update:modelValue",...h.map(p)],props:{modelValue:{type:[String,Number,Date,Array,null],required:!0},config:{type:Object,default:()=>({defaultDate:null,wrap:!1})},events:{type:Array,default:()=>u},disabled:{type:Boolean,default:!1}},data:()=>({fp:null}),mounted(){this.fp||(this.fp=l()(this.getElem(),this.prepareConfig()),this.fpInput().addEventListener("blur",this.onBlur),this.$watch("disabled",this.watchDisabled,{immediate:!0}))},methods:{prepareConfig(){let e=Object.assign({},this.config);this.events.forEach((t=>{let n=l().defaultConfig[t]||[];e[t]=d(e[t]||[]).concat(n,((...e)=>{this.$emit(p(t),...e)}))}));const t=this.onClose.bind(this);return e.onClose=d(e.onClose||[]).concat(t),e.defaultDate=this.modelValue||e.defaultDate,e},getElem(){return this.config.wrap?this.$el.parentNode:this.$el},onInput(e){const t=e.target;(0,s.nextTick)().then((()=>{this.$emit("update:modelValue",f(t.value))}))},fpInput(){return this.fp.altInput||this.fp.input},onBlur(e){this.$emit("blur",f(e.target.value))},onClose(e,t){this.$emit("update:modelValue",t)},watchDisabled(e){e?this.fpInput().setAttribute("disabled",""):this.fpInput().removeAttribute("disabled")}},watch:{config:{deep:!0,handler(e){if(!this.fp)return;let t=Object.assign({},e);h.forEach((e=>{delete t[e]})),this.fp.set(t),c.forEach((e=>{void 0!==t[e]&&this.fp.set(e,t[e])}))}},modelValue(e){var t;this.$el&&e!==f(this.$el.value)&&(null===(t=this.fp)||void 0===t||t.setDate(e,!0))}},beforeUnmount(){this.fp&&(this.fpInput().removeEventListener("blur",this.onBlur),this.fp.destroy(),this.fp=null)}});return i})()));