@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 25.4 kB
JavaScript
(function(S,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es"],e):(S=typeof globalThis<"u"?globalThis:S||self,e(S.calendar={},S.Vue,S.LodashES))})(this,function(S,e,G){"use strict";const X={},Z={};function U(t){const{properties:n,title:i,ignore:y}=t,u=y&&Array.isArray(y),l=Object.keys(n).reduce((o,s)=>((!u||!y.find(V=>V===s))&&(o[s]=n[s].type==="object"&&n[s].properties?U(n[s]):G.cloneDeep(n[s].default)),o),{});if(i&&(!u||!y.find(o=>o==="id"))){const o=i.toLowerCase().replace(/-/g,"_");l.id=`${o}_${Math.random().toString().slice(2,6)}`}return l}function oe(t){const{properties:n,title:i,required:y}=t;if(y&&Array.isArray(y)){const u=y.reduce((l,o)=>(l[o]=n[o].type==="object"&&n[o].properties?U(n[o]):G.cloneDeep(n[o].default),l),{});if(i&&y.find(l=>l==="id")){const l=i.toLowerCase().replace(/-/g,"_");u.id=`${l}_${Math.random().toString().slice(2,6)}`}return u}return{type:i}}function x(t,n={},i){const y=X[t];if(y){let u=oe(y);const l=Z[t];return u=l?l({getSchemaByType:x},u,n,i):u,u}return null}function ce(t,n){const i=U(n);return Object.keys(i).reduce((y,u)=>(Object.prototype.hasOwnProperty.call(t,u)&&(y[u]&&G.isPlainObject(y[u])&&G.isPlainObject(t[u]||!t[u])?Object.assign(y[u],t[u]||{}):y[u]=t[u]),y),i),i}function K(t,n){return Object.keys(t).filter(y=>t[y]!=null).reduce((y,u)=>{if(n.has(u)){const l=n.get(u);if(typeof l=="string")y[l]=t[u];else{const o=l(u,t[u],t);Object.assign(y,o)}}else y[u]=t[u];return y},{})}function se(t,n,i=new Map){const y=ce(t,n);return K(y,i)}function le(t={}){function n(a,p,v,D){if(typeof v=="number")return D[a].length===v;if(typeof v=="object"){const d=Object.keys(v)[0],h=v[d];if(d==="not")return Number(D[a].length)!==Number(h);if(d==="moreThan")return Number(D[a].length)>=Number(h);if(d==="lessThan")return Number(D[a].length)<=Number(h)}return!1}function i(a,p,v,D){return D[a]&&D[a].propertyValue&&String(D[a].propertyValue.value)===String(v)}const y=new Map([["length",n],["getProperty",i]]);Object.keys(t).reduce((a,p)=>(a.set(p,t[p]),a),y);function u(a,p){const v=a;return typeof p=="number"?[{target:v,operator:"length",param:null,value:Number(p)}]:typeof p=="boolean"?[{target:v,operator:"getProperty",param:a,value:!!p}]:typeof p=="object"?Object.keys(p).map(D=>{if(D==="length")return{target:v,operator:"length",param:null,value:p[D]};const d=D,h=p[D];return{target:v,operator:"getProperty",param:d,value:h}}):[]}function l(a){return Object.keys(a).reduce((v,D)=>{const d=u(D,a[D]);return v.push(...d),v},[])}function o(a,p){if(y.has(a.operator)){const v=y.get(a.operator);return v&&v(a.target,a.param,a.value,p)||!1}return!1}function s(a,p){return l(a).reduce((d,h)=>d&&o(h,p),!0)}function V(a,p){const v=Object.keys(a),D=v.includes("allOf"),d=v.includes("anyOf"),h=D||d,f=(h?a[h?D?"allOf":"anyOf":"allOf"]:[a]).map(c=>s(c,p));return D?!f.includes(!1):f.includes(!0)}return{parseValueSchema:V}}const ie={},ue={};le();function de(t,n,i=new Map,y=(o,s,V,a)=>s,u={},l=o=>o){return X[n.title]=n,Z[n.title]=y,ie[n.title]=u,ue[n.title]=l,(o={},s=!0)=>{if(!s)return K(o,i);const V=se(o,n,i),a=Object.keys(t).reduce((p,v)=>(p[v]=t[v].default,p),{});return Object.assign(a,V)}}function fe(t,n){return{customClass:n.class,customStyle:n.style}}const ye=new Map([["appearance",fe]]);function he(t,n,i){return n}const me={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/calendar.schema.json",title:"calendar",description:"A Farris Input Component",type:"object",properties:{id:{description:"The unique identifier for calendar",type:"string"},type:{description:"The type string of calendar",type:"string",default:"calendar"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}}},required:["id","type"]},pe={title:"calendar",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}}}},L={events:{Type:Array,default:[]},firstDayOfTheWeek:{type:String,default:"Sun."}},Q=de(L,me,ye,he,pe),E=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var A=(t=>(t[t.previous=1]="previous",t[t.current=2]="current",t[t.next=3]="next",t))(A||{});function Y(){function t(){return{year:0,month:0,day:0}}function n(a){return new Date(a.year||0,a.month?a.month-1:0,a.day||0,a.hour?a.hour:0,a.minute?a.minute:0,a.second?a.second:0,0)}function i(a){const p=new Date;return a.year||(a.year=p.getFullYear()),a.month||(a.month=p.getMonth()+1),a.day||(a.day=1),new Date(a.year,a.month-1,a.day,a.hour?a.hour:0,a.minute?a.minute:0,a.second?a.second:0,0)}function y(a){return new Date(a.year||1,(a.month||1)-1,a.day,a.hour?a.hour:0,a.minute?a.minute:0,a.second?a.second:0,0).getDay()}function u(a){return E.indexOf(a)}function l(a){return n(a).getTime()}function o(a){return Math.round(l(a)/1e3)}function s(a,p,v){const D=l(p),d=l(v),h=l(a);return d-h>h-D?p:v}function V(){const a=new Date;return{year:a.getFullYear(),month:a.getMonth()+1,day:a.getDate(),hour:a.getHours(),minute:a.getMinutes(),second:a.getSeconds()}}return{emptyDate:t,getDate:n,getDate2:i,getDayNumber:y,getEpocTime:o,getNearDate:s,getWeekdayIndex:u,getTimeInMilliseconds:l,getToday:V}}function ve(){function t(l,o){return new Date(o,l,0).getDate()}function n(l,o,s){return new Date(l,o-1,s,0,0,0,0)}function i(l,o){const s=n(o,l,1);return s.setMonth(s.getMonth()-1),t(s.getMonth()+1,s.getFullYear())}function y(l,o){const s={year:l===12?o+1:o},V=l===12?1:l+1;return s.month=V,s}function u(l,o){const s={year:l===1?o-1:o},V=l===1?12:l-1;return s.month=V,s}return{daysInMonth:t,daysInPreMonth:i,getNextMonth:y,getPreviousMonth:u}}function ee(){const{getToday:t,getDayNumber:n}=Y(),{daysInMonth:i,daysInPreMonth:y,getNextMonth:u,getPreviousMonth:l}=ve();function o(m){const k=E.indexOf(m);return k>0?7-k:0}function s(m){const{day:k,month:f,year:r}=m;if(k===void 0||f===void 0||r===void 0)throw new Error("invalided date.");const c=k===1,w=c?y(f,r):k-1,N=c?f-1:f,T=N<1,P=T?12:N;return{year:T?r-1:r,month:P,day:w}}function V(m){const{day:k,month:f,year:r}=m;if(k===void 0||f===void 0||r===void 0)throw new Error("invalided date.");const c=i(f,r),w=k===c,N=w?1:k+1,T=w?f+1:f,P=T>12,g=P?1:T;return{year:P?r+1:r,month:g,day:N}}function a(m){const k=l(m.month||1,m.year||1),f=i(k.month||1,k.year||1);return{day:(m.day||1)<=f?m.day:f,month:k.month,year:k.year}}function p(m){const k=u(m.month||1,m.year||1),f=i(k.month||1,k.year||1);return{day:(m.day||1)<=f?m.day:f,month:k.month,year:k.year}}function v(m){const f=(m.day||1)-7,r=f<1,c=r?i(m.month||1,m.year||1)+f:f,w=r?l(m.month||1,m.year||1):m;return{day:c,month:w.month,year:w.year}}function D(m){const f=(m.day||1)+7,r=i(m.month||1,m.year||1),c=f>r,w=c?f-r:f,N=c?u(m.month||1,m.year||1):m;return{day:w,month:N.month,year:N.year}}function d(m,k,f,r){const c={day:m,month:k,year:f},N=o(r)===0?1:0,T=n(c)+N,P=t();let g=s(c);const C=[];for(let j=T-1;j>=1;j--){const H=g.month!==c.month?A.previous:A.current,O=g.month===k&&g.day===P.day&&g.month===P.month&&g.year===P.year;C.push({date:g,monthTag:H,isCurrent:O}),j>1&&(g=s(g))}let b=V(c);const W=[];for(let j=T+1;j<=7;j++){const H=g.month!==c.month?A.next:A.current,O=b.day===P.day&&b.month===P.month&&b.year===P.year;W.push({date:b,monthTag:H,isCurrent:O}),j<7&&(b=V(b))}const M=m===P.day&&k===P.month&&f===P.year;return{days:[...C.reverse(),{date:c,monthTag:A.current,isCurrent:M},...W],weekNumber:0,year:f}}function h(m,k,f){const r=[],c=i(m,k);for(let w=1;w<=c;w+=7){const N=d(w,m,k,f);r.push(N)}return r}return{getMonthlyCalendar:h,getWeeklyCalendar:d,getPreviousDay:s,getNextDay:V,getDayInPreviousWeek:v,getDayInNextWeek:D,getDayInPreviousMonth:a,getDayInNextMonth:p}}function F(){const{getTimeInMilliseconds:t}=Y();function n(d){return d&&d.year!==0&&d.month!==0&&d.day!==0}function i(d){return d&&d.year!==0&&d.month!==0}function y(d){return d&&d.year!==0}function u(d,h){return t(d)<t(h)}function l(d,h){return t(d)<=t(h)}function o(d,h){return t(d)===t(h)}function s(d,h){const m=t(h);return t(d.from)===m||t(d.to)===m}function V(d,h){return!h||!n(h.to)||!n(h.from)?!1:l(h.from,d)&&l(d,h.to)}function a(d,h){return n(h)&&t(d)>=t(h)}function p(d,h){return n(h)&&t(d)<=t(h)}function v(d,h){return t({year:d.year,month:d.month,day:d.day})===t({year:h.year,month:h.month,day:h.day})}function D(d,h){return t({hour:d.hour,minute:d.minute,second:d.second})===t({hour:h.hour,minute:h.minute,second:h.second})}return{isDateEarlier:u,equal:o,inPeriod:V,isPoint:s,equalOrEarlier:l,isInitializedDate:n,isInitializedMonth:i,isInitializedYear:y,isMonthDisabledByDisableSince:a,isMonthDisabledByDisableUntil:p,sameTime:D,sameDay:v}}const z={1:"Jan",2:"Feb",3:"Mar",4:"Apr",5:"May",6:"Jun",7:"Jul",8:"Aug",9:"Sep",10:"Oct",11:"Nov",12:"Dec"},te={activeView:{Type:Number,default:3},title:{Type:String,default:""},dailyViewTitle:{Type:String,default:"Day"},weeklyViewTitle:{Type:String,default:"Week"},monthlyViewTitle:{Type:String,default:"Month"}},R=e.defineComponent({name:"FCalendarHeader",props:te,emits:["ViewChange","Previous","Next","ResetToToday"],setup(t,n){const i=e.ref(t.title),y=e.ref(t.dailyViewTitle),u=e.ref(t.weeklyViewTitle),l=e.ref(t.monthlyViewTitle),o=2,s=62,V=e.ref(t.activeView),a=e.ref("Today");e.watch(()=>t.title,()=>{i.value=t.title});const p=e.computed(()=>({top:`${o}px`,left:`${V.value*(o+1)+(V.value-1)*(s+1)}px`})),v=e.computed(()=>V.value===1?y.value:V.value===2?u.value:l.value);function D(){V.value=1,n.emit("ViewChange",1)}function d(){V.value=2,n.emit("ViewChange",2)}function h(){V.value=3,n.emit("ViewChange",3)}function m(){n.emit("Previous",V.value)}function k(){n.emit("Next",V.value)}function f(){n.emit("ResetToToday")}return()=>e.createVNode("div",{class:"f-calendar-header"},[e.createVNode("div",{class:"f-calendar-title"},[i.value]),e.createVNode("div",{class:"f-calendar-navigator"},[e.createVNode("div",{class:"f-calendar-navigator-today btn btn-default",onClick:()=>f()},[a.value]),e.createVNode("div",{class:"f-calendar-navigator-button-group"},[e.createVNode("div",{class:"f-calendar-navigator-previous btn btn-default",onClick:()=>m()},[e.createVNode("i",{class:"f-icon f-icon-arrow-chevron-left"},null)]),e.createVNode("div",{class:"f-calendar-navigator-next btn btn-default",onClick:()=>k()},[e.createVNode("i",{class:"f-icon f-icon-arrow-chevron-right"},null)])])]),e.createVNode("div",{class:"f-calendar-view-switch"},[e.createVNode("div",{class:"f-calendar-view-switch-panel"},[e.createVNode("span",{class:"f-calendar-view-switch-daily",onClick:r=>D()},[y.value]),e.createVNode("span",{class:"f-calendar-view-switch-weekly",onClick:r=>d()},[u.value]),e.createVNode("span",{class:"f-calendar-view-switch-monthly",onClick:r=>h()},[l.value])]),e.createVNode("div",{class:"f-calendar-view-switch-active-view",style:p.value},[v.value])])])}}),ne={dates:{Type:Array,default:[]},daysInWeek:{Type:Array,default:E},enableKeyboadNavigate:{Type:Boolean,default:!0},enableMarkCurrent:{Type:Boolean,default:!0},events:{Type:Array,default:[]},activeDay:{Type:Object,default:null}};var J=(t=>(t[t.enter=13]="enter",t[t.esc=27]="esc",t[t.space=32]="space",t[t.leftArrow=37]="leftArrow",t[t.upArrow=38]="upArrow",t[t.rightArrow=39]="rightArrow",t[t.downArrow=40]="downArrow",t[t.tab=9]="tab",t[t.shift=16]="shift",t))(J||{});function we(){function t(n){const i=n.key||n.keyCode;return i==="Enter"||i===13?13:i==="Escape"||i===27?27:i===" "||i===32?32:i==="ArrowLeft"||i===37?37:i==="ArrowUp"||i===38?38:i==="ArrowRight"||i===39?39:i==="ArrowDown"||i===40?40:i==="Tab"||i===9?9:i==="Shift"||i===16?16:-1}return{getKeyCodeFromEvent:t}}const q=e.defineComponent({name:"FCalendarMonthView",props:ne,emits:["click","keyDown"],setup(t,n){const i=e.ref(t.daysInWeek),y=e.ref(t.enableKeyboadNavigate),u=e.ref(t.enableMarkCurrent),l=e.ref(t.activeDay),o=e.ref(t.events),{equal:s,sameDay:V}=F(),{getKeyCodeFromEvent:a}=we();function p(f,r){return f.forEach(c=>{c.days.forEach(w=>{const N=r.filter(T=>V(T.starts,w.date));N&&N.length&&(w.events=[...N])})}),f}const v=e.ref(p(t.dates,o.value));e.watch(()=>t.dates,()=>{v.value=p(t.dates,o.value)}),e.watch(()=>t.activeDay,()=>{l.value=t.activeDay}),e.watch(()=>t.events,()=>{o.value=t.events});function D(f){return!!l.value&&s({year:l.value.year,month:l.value.month,day:l.value.day},f)}const d=(f,r,c)=>{const N={"f-datepicker-no-currmonth":f.monthTag===A.previous||f.monthTag===A.next},T=`d_${r}_${c}`;return N[T]=!0,N},h=f=>{const r=f.monthTag===A.current&&D(f.date),c=f.isCurrent&&u.value;return{"f-calendar-month-view-date":!0,"f-calendar-month-view-selected":r,"f-calendar-month-view-current":c}};function m(f,r){f.stopPropagation(),n.emit("click",r.date)}function k(f,r){const c=a(f);c!==J.tab&&(f.preventDefault(),c===J.enter||c===J.space?m(f,r):y.value&&n.emit("keyDown",r.date))}return()=>e.createVNode("div",{class:"f-calendar-month-view"},[e.createVNode("table",{class:"f-datepicker-table",cellpadding:"0"},[e.createVNode("thead",null,[e.createVNode("tr",null,[i.value&&i.value.map(f=>e.createVNode("th",{scope:"col",style:"padding: 4px 4px 8px"},[f]))])]),e.createVNode("tbody",null,[v.value&&v.value.map((f,r)=>e.createVNode("tr",null,[f.days&&f.days.map((c,w)=>e.createVNode("td",{id:`d_${r}_${w}`,tabindex:"0",class:d(c,r,w),onClick:N=>m(N,c),onKeydown:N=>k(N,c)},[e.createVNode("div",{class:"f-calendar-month-view-title"},[e.createVNode("div",{class:h(c)},[c.date.day]),e.createVNode("div",{class:"f-calendar-month-view-date-month"},[c.date.day===1?z[c.date.month||1]:""])]),c.events&&c.events.length&&c.events.map(N=>e.createVNode("div",{class:"f-calendar-month-view-event-item"},[N.title]))]))]))])])])}}),ae={daysInWeek:{Type:Array,default:E},enableMarkCurrent:{Type:Boolean,default:!0},events:{Type:Array,default:[]},week:{Type:Object,default:{days:[],weekNumber:0,year:0}}},I=e.defineComponent({name:"FCalendarWeekView",props:ae,emits:[],setup(t){const n=e.ref(),i=e.ref(),y=e.ref(t.daysInWeek),u=e.ref(t.week),l=e.ref(t.enableMarkCurrent),o=e.ref(t.events),s=e.ref([]),{equal:V}=F();function a(r){return u.value.days.map(w=>{const N={year:w.date.year,month:w.date.month,day:w.date.day,hour:r.hour,minute:r.minute,second:r.second},T=o.value.filter(P=>V(P.starts,N));return{day:N,events:T}})}function p(){const r=[];for(let c=0;c<24;c++){const w={hour:c,minute:0,second:0},N={hour:c,minute:30,second:0},T=a(w),P=a(N);r.push({time:w,events:T,title:c>0?`${c}:00`:"",part:"upper"}),r.push({time:N,events:P,title:`${c}:30`,part:"lower"})}s.value=r}p(),e.watch(()=>t.week,()=>{u.value=t.week,p()}),e.watch(()=>t.events,()=>{o.value=t.events,p()});const v=r=>({"f-calendar-week-view-date":!0,"f-calendar-week-view-current":r.isCurrent&&l.value});function D(){return e.createVNode("div",{class:"f-calendar-week-view-header"},[e.createVNode("div",{class:"f-calendar-week-view-header-corner"},null),e.createVNode("div",{class:"f-calendar-week-view-header-primary"},[e.createVNode("div",{class:"f-calendar-week-view-header-columns"},[y.value.map((r,c)=>e.createVNode("div",{class:"f-calendar-week-view-header-cell"},[e.createVNode("div",{class:v(u.value.days[c])},[u.value.days[c].date.day]),e.createVNode("span",null,[r])]))])])])}function d(){return e.createVNode("div",{class:"f-calendar-week-view-content-side"},[e.createVNode("div",{class:"f-calendar-side"},[s.value.map(r=>e.createVNode("div",{class:"f-calendar-side-row"},[e.createVNode("div",{class:"f-calendar-side-row-number"},[r.part==="upper"?r.title:""])]))])])}function h(r){return{"f-calendar-week-view-item":!0,"f-calendar-week-view-item-upper":r.part==="upper","f-calendar-week-view-item-lower":r.part==="lower"}}function m(r){const g=(r.starts.hour||0)+(r.starts.minute||0)/60;return{height:`${44*((r.ends.hour||0)+(r.ends.minute||0)/60-g)-2-2-1-1}px`}}function k(){return s.value.map(r=>e.createVNode("div",{class:h(r)},[r.events.map(c=>e.createVNode("div",{class:"f-calendar-week-view-item-cell"},[c.events.length>0&&c.events.map(w=>e.createVNode("div",{class:"f-calendar-event",style:m(w)},[w.title]))]))]))}function f(){return e.createVNode("div",{ref:i,class:"f-calendar-content-primary"},[e.createVNode("div",{class:"f-calendar-content-data"},[k()])])}return e.onMounted(()=>{n.value&&n.value.scrollTo(0,250)}),()=>e.createVNode("div",{class:"f-calendar-week-view"},[D(),e.createVNode("div",{class:"f-calendar-week-view-content",ref:n},[d(),f()])])}}),re={day:{Type:Object,default:{}},dayInWeek:{Type:String,default:""},enableMarkCurrent:{Type:Boolean,default:!0},events:{Type:Array,default:[]}},_=e.defineComponent({name:"FCalendarDayView",props:re,emits:[],setup(t){const n=e.ref(),i=e.ref(),y=e.ref(t.dayInWeek),u=e.ref(t.day),l=e.ref(t.enableMarkCurrent),o=e.ref(t.events),s=e.ref([]),{equal:V}=F();function a(r){const c={year:u.value.date.year,month:u.value.date.month,day:u.value.date.day,hour:r.hour,minute:r.minute,second:r.second},w=o.value.filter(N=>V(N.starts,c));return[{day:c,events:w}]}function p(){const r=[];for(let c=0;c<24;c++){const w={hour:c,minute:0,second:0},N={hour:c,minute:30,second:0},T=a(w),P=a(N);r.push({time:w,events:T,title:c>0?`${c}:00`:"",part:"upper"}),r.push({time:N,events:P,title:`${c}:30`,part:"lower"})}s.value=r}p(),e.watch(()=>t.day,()=>{u.value=t.day,p()}),e.watch(()=>t.events,()=>{o.value=t.events,p()});const v=r=>({"f-calendar-day-view-date":!0,"f-calendar-day-view-current":r.isCurrent&&l.value});function D(){return e.createVNode("div",{class:"f-calendar-day-view-header"},[e.createVNode("div",{class:"f-calendar-day-view-header-corner"},null),e.createVNode("div",{class:"f-calendar-day-view-header-primary"},[e.createVNode("div",{class:"f-calendar-day-view-header-columns"},[e.createVNode("div",{class:"f-calendar-day-view-header-cell"},[e.createVNode("div",{class:v(u.value)},[u.value.date.day]),e.createVNode("span",null,[y.value])])])])])}function d(){return e.createVNode("div",{class:"f-calendar-day-view-content-side"},[e.createVNode("div",{class:"f-calendar-side"},[s.value.map(r=>e.createVNode("div",{class:"f-calendar-side-row"},[e.createVNode("div",{class:"f-calendar-side-row-number"},[r.part==="upper"?r.title:""])]))])])}function h(r){return{"f-calendar-day-view-item":!0,"f-calendar-day-view-item-upper":r.part==="upper","f-calendar-day-view-item-lower":r.part==="lower"}}function m(r){const g=(r.starts.hour||0)+(r.starts.minute||0)/60;return{height:`${44*((r.ends.hour||0)+(r.ends.minute||0)/60-g)-2-2-1-1}px`}}function k(){return s.value.map(r=>e.createVNode("div",{class:h(r)},[r.events.map(c=>e.createVNode("div",{class:"f-calendar-day-view-item-cell"},[c.events.length>0&&c.events.map(w=>e.createVNode("div",{class:"f-calendar-event",style:m(w)},[w.title]))]))]))}function f(){return e.createVNode("div",{ref:i,class:"f-calendar-content-primary"},[e.createVNode("div",{class:"f-calendar-content-data"},[k()])])}return e.onMounted(()=>{n.value&&n.value.scrollTo(0,250)}),()=>e.createVNode("div",{class:"f-calendar-day-view"},[D(),e.createVNode("div",{class:"f-calendar-day-view-content",ref:n},[d(),f()])])}}),$=e.defineComponent({name:"FCalendar",props:L,emits:[],setup(t){const{sameDay:n}=F(),{getToday:i}=Y(),y=e.ref(t.firstDayOfTheWeek),u=e.ref(t.events),l=i(),o=e.ref({year:l.year||1,month:l.month||1,day:l.day||1}),s=e.ref(3),{getMonthlyCalendar:V,getWeeklyCalendar:a,getPreviousDay:p,getNextDay:v,getDayInPreviousWeek:D,getDayInNextWeek:d,getDayInPreviousMonth:h,getDayInNextMonth:m}=ee(),k=e.computed(()=>`${z[o.value.month||1]} ${o.value.year}`),f=e.computed(()=>V(o.value.month||1,o.value.year||1,y.value)),r=e.computed(()=>a(o.value.day||1,o.value.month||1,o.value.year||1,y.value)),c=e.computed(()=>r.value.days.find(M=>n(M.date,o.value))||r.value.days[1]),w=e.computed(()=>{const M=r.value.days.findIndex(j=>n(j.date,o.value)),B=M>-1?M:1;return E[B]}),N=e.computed(()=>s.value===3),T=e.computed(()=>s.value===2),P=e.computed(()=>s.value===1);function g(M){s.value=M}function C(M){M===1&&(o.value=p(o.value)),M===2&&(o.value=D(o.value)),M===3&&(o.value=h(o.value))}function b(M){M===1&&(o.value=v(o.value)),M===2&&(o.value=d(o.value)),M===3&&(o.value=m(o.value))}function W(){o.value={year:l.year||1,month:l.month||1,day:l.day||1}}return()=>e.createVNode("div",{class:"f-calendar"},[e.createVNode(R,{activeView:s.value,title:k.value,onViewChange:M=>g(M),onPrevious:M=>C(M),onNext:M=>b(M),onResetToToday:()=>W()},null),e.createVNode("div",null,[P.value&&e.createVNode(_,{day:c.value,dayInWeek:w.value,events:u.value},null),T.value&&e.createVNode(I,{week:r.value,events:u.value},null),N.value&&e.createVNode(q,{activeDay:o.value,dates:f.value,events:u.value},null)])])}});function ge(t,n,i){var P;const y="",u="",l=e.ref();function o(){return(n==null?void 0:n.schema.componentType)!=="frame"}function s(){return!1}function V(){return(n==null?void 0:n.schema.componentType)!=="frame"}function a(){return(n==null?void 0:n.schema.componentType)==="frame"}function p(g){if(!g||!g.value)return null;if(g.value.schema&&g.value.schema.type==="component")return g.value;const C=e.ref(g==null?void 0:g.value.parent),b=p(C);return b||null}function v(g=n){var M;const{componentInstance:C,designerItemElementRef:b}=g;if(!C||!C.value)return null;const{getCustomButtons:W}=C.value;return C.value.canMove||W&&((M=W())!=null&&M.length)?b:v(g.parent)}function D(g){return!!i}function d(){return(n==null?void 0:n.schema.label)||(n==null?void 0:n.schema.title)||(n==null?void 0:n.schema.name)}function h(){}function m(g,C){var b;!g||!C||(b=n==null?void 0:n.setupContext)==null||b.emit("dragEnd")}function k(g,C){const{componentType:b}=g;let W=x(b,g,C);const M=b.toLowerCase().replace(/-/g,"_");return W&&!W.id&&W.type===b&&(W.id=`${M}_${Math.random().toString().slice(2,6)}`),W}function f(g){}function r(...g){}function c(g){if(!g)return;const C=n==null?void 0:n.schema,{formSchemaUtils:b}=g;if(C&&b.getExpressions().length){const W=b.getExpressions().findIndex(M=>M.target===C.id);W>-1&&b.getExpressions().splice(W,1)}}function w(g){c(g),n!=null&&n.schema.contents&&n.schema.contents.map(C=>{let b=C.id;C.type==="component-ref"&&(b=C.component);const W=t.value.querySelectorAll(`#${b}-design-item`);W!=null&&W.length&&Array.from(W).map(M=>{var B;(B=M==null?void 0:M.componentInstance)!=null&&B.value.onRemoveComponent&&M.componentInstance.value.onRemoveComponent(g)})})}function N(){}function T(g){}return l.value={canMove:o(),canSelectParent:s(),canDelete:V(),canNested:!a(),contents:n==null?void 0:n.schema.contents,elementRef:t,parent:(P=n==null?void 0:n.parent)==null?void 0:P.componentInstance,schema:n==null?void 0:n.schema,styles:y,designerClass:u,canAccepts:D,getBelongedComponentInstance:p,getDraggableDesignItemElement:v,getDraggingDisplayText:d,getPropConfig:r,getDragScopeElement:h,onAcceptMovedChildElement:m,onChildElementMovedOut:f,addNewChildComponentSchema:k,triggerBelongedComponentToMoveWhenMoved:e.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:e.ref(!1),onRemoveComponent:w,getCustomButtons:N,onPropertyChanged:T},l}const Ve=e.defineComponent({name:"FCalendarDesign",props:L,emits:[],setup(t,n){const{sameDay:i}=F(),{getToday:y}=Y(),u=e.ref(t.firstDayOfTheWeek),l=e.ref(t.events),o=y(),s=e.ref({year:o.year||1,month:o.month||1,day:o.day||1}),V=e.ref(3),a=e.ref(),p=e.inject("design-item-context"),v=ge(a,p);e.onMounted(()=>{a.value.componentInstance=v}),n.expose(v.value);const{getMonthlyCalendar:D,getWeeklyCalendar:d,getPreviousDay:h,getNextDay:m,getDayInPreviousWeek:k,getDayInNextWeek:f,getDayInPreviousMonth:r,getDayInNextMonth:c}=ee(),w=e.computed(()=>`${z[s.value.month||1]} ${s.value.year}`),N=e.computed(()=>D(s.value.month||1,s.value.year||1,u.value)),T=e.computed(()=>d(s.value.day||1,s.value.month||1,s.value.year||1,u.value)),P=e.computed(()=>T.value.days.find(O=>i(O.date,s.value))||T.value.days[1]),g=e.computed(()=>{const O=T.value.days.findIndex(Ne=>i(Ne.date,s.value)),ke=O>-1?O:1;return E[ke]}),C=e.computed(()=>V.value===3),b=e.computed(()=>V.value===2),W=e.computed(()=>V.value===1);function M(O){V.value=O}function B(O){O===1&&(s.value=h(s.value)),O===2&&(s.value=k(s.value)),O===3&&(s.value=r(s.value))}function j(O){O===1&&(s.value=m(s.value)),O===2&&(s.value=f(s.value)),O===3&&(s.value=c(s.value))}function H(){s.value={year:o.year||1,month:o.month||1,day:o.day||1}}return()=>e.createVNode("div",{ref:a,class:"f-calendar"},[e.createVNode(R,{activeView:V.value,title:w.value,onViewChange:O=>M(O),onPrevious:O=>B(O),onNext:O=>j(O),onResetToToday:()=>H()},null),e.createVNode("div",null,[W.value&&e.createVNode(_,{day:P.value,dayInWeek:g.value,events:l.value},null),b.value&&e.createVNode(I,{week:T.value,events:l.value},null),C.value&&e.createVNode(q,{activeDay:s.value,dates:N.value,events:l.value},null)])])}});$.install=t=>{t.component($.name,$).component(_.name,_).component(R.name,R).component(q.name,q).component(I.name,I)},$.register=(t,n,i,y)=>{t.calendar=$,n.calendar=Q},$.registerDesigner=(t,n,i)=>{t.calendar=Ve,n.calendar=Q},S.FCalendar=$,S.FCalendarDayView=_,S.FCalendarHeader=R,S.FCalendarMonthView=q,S.FCalendarWeekView=I,S.MonthTag=A,S.calendarProps=L,S.dayViewProps=re,S.default=$,S.defaultNameOfMonths=z,S.headerProps=te,S.monthViewProps=ne,S.propsResolver=Q,S.weekDays=E,S.weekViewProps=ae,Object.defineProperties(S,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});