@nextcloud/vue
Version:
Nextcloud vue components
2 lines (1 loc) • 2.98 kB
JavaScript
var v=require("../assets/index2.css");const p=require("../chunks/_plugin-vue2_normalizer-764a4c12.cjs"),y=require("../chunks/ScopeComponent-f6122f5a.cjs");const $=["date","datetime-local","month","time","week"],f={name:"NcDateTimePickerNative",inheritAttrs:!1,props:{value:{type:Date,required:!0},id:{type:String,required:!0},type:{type:String,default:"date",validate:t=>$.includes(t)},label:{type:String,default:"Please choose a date"},min:{type:[Date,Boolean],default:null},max:{type:[Date,Boolean],default:null},hideLabel:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["input"],computed:{formattedValue(){return this.formatValue(this.value)},formattedMin(){return this.min?this.formatValue(this.min):!1},formattedMax(){return this.max?this.formatValue(this.max):!1},listeners(){return{...this.$listeners,input:t=>{if(isNaN(t.target.valueAsNumber))return this.$emit("input","");if(this.type==="time"){const a=t.target.value;if(this.value===""){const{yyyy:l,MM:u,dd:o}=this.getReadableDate(new Date);return this.$emit("input",new Date(`${l}-${u}-${o}T${a}`))}const{yyyy:i,MM:n,dd:s}=this.getReadableDate(this.value);return this.$emit("input",new Date(`${i}-${n}-${s}T${a}`))}else if(this.type==="month"){const a=(new Date(t.target.value).getMonth()+1).toString().padStart(2,"0");if(this.value===""){const{yyyy:u,dd:o,hh:m,mm:h}=this.getReadableDate(new Date);return this.$emit("input",new Date(`${u}-${a}-${o}T${m}:${h}`))}const{yyyy:i,dd:n,hh:s,mm:l}=this.getReadableDate(this.value);return this.$emit("input",new Date(`${i}-${a}-${n}T${s}:${l}`))}const e=new Date(t.target.valueAsNumber).getTimezoneOffset()*1e3*60,r=t.target.valueAsNumber+e;return this.$emit("input",new Date(r))}}}},methods:{getReadableDate(t){if(t instanceof Date){const e=t.getFullYear().toString().padStart(4,"0"),r=(t.getMonth()+1).toString().padStart(2,"0"),a=t.getDate().toString().padStart(2,"0"),i=t.getHours().toString().padStart(2,"0"),n=t.getMinutes().toString().padStart(2,"0");return{yyyy:e,MM:r,dd:a,hh:i,mm:n}}},formatValue(t){if(t instanceof Date){const{yyyy:e,MM:r,dd:a,hh:i,mm:n}=this.getReadableDate(t);if(this.type==="datetime-local")return`${e}-${r}-${a}T${i}:${n}`;if(this.type==="date")return`${e}-${r}-${a}`;if(this.type==="month")return`${e}-${r}`;if(this.type==="time")return`${i}:${n}`;if(this.type==="week"){const s=new Date(e,0,1),l=Math.floor((t-s)/(24*60*60*1e3)),u=Math.ceil(l/7);return`${e}-W${u}`}}else return""}}};var c=function(){var t=this,e=t._self._c;return e("div",{staticClass:"native-datetime-picker"},[e("label",{class:{"hidden-visually":t.hideLabel},attrs:{for:t.id}},[t._v(t._s(t.label))]),e("input",t._g(t._b({staticClass:"native-datetime-picker--input",class:t.inputClass,attrs:{id:t.id,type:t.type,min:t.formattedMin,max:t.formattedMax},domProps:{value:t.formattedValue}},"input",t.$attrs,!1),t.listeners))])},g=[],D=p.normalizeComponent(f,c,g,!1,null,"a99b9317",null,null);const d=D.exports;y.ScopeComponent(d),module.exports=d;