@progress/kendo-vue-dateinputs
Version:
9 lines (8 loc) • 3.39 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("@progress/kendo-vue-intl");const n=require("@progress/kendo-date-math"),l=require("../models/NavigationAction.js"),N=require("../models/SelectionRange.js"),u=require("../../utils.js"),b=[[]],f=7,v=6,p=6,O=0,V={[l.Action.Left]:r=>n.addDays(r,-1),[l.Action.Up]:r=>n.addWeeks(r,-1),[l.Action.Right]:r=>n.addDays(r,1),[l.Action.Down]:r=>n.addWeeks(r,1),[l.Action.PrevView]:r=>n.addMonths(r,-1),[l.Action.NextView]:r=>n.addMonths(r,1),[l.Action.FirstInView]:r=>n.firstDayOfMonth(r),[l.Action.LastInView]:r=>n.lastDayOfMonth(r)};class k{constructor(t){this.intl=t}addToDate(t,e){return n.addMonths(t,e)}datesList(t,e){return u.range(0,e).map(i=>n.addMonths(t,i))}data(t){const{cellUID:e,focusedDate:i,isActiveView:h,max:a,min:o,selectedDate:c,selectionRange:d=N.EMPTY_SELECTIONRANGE,viewDate:g}=t;if(!g)return b;const M=n.firstDayOfMonth(g),y=n.lastDayOfMonth(g),A=n.dayOfWeek(M,this.intl.firstDay(),-1),w=u.range(0,f),E=u.getToday();return u.range(0,v).map(T=>{const I=n.addDays(A,T*f);return w.map(R=>{const s=this.normalize(n.addDays(I,R),o,a);if(s<M||s>y)return null;const m=this.isEqual(s,d.start),S=this.isEqual(s,d.end),D=!m&&!S&&u.isInSelectionRange(s,d),q=h&&(Array.isArray(c)?this.isSelectedFromArray(s,c,o,a):u.isInRange(c,o,a)&&this.isEqual(s,c));return{formattedValue:this.value(s),id:`${e}${s.getTime()}`,isFocused:this.isEqual(s,i),isSelected:q,isInRange:u.isInRange(s,o,a),isWeekend:this.isWeekend(s),isRangeStart:m,isRangeMid:D,isRangeEnd:S,isRangeSplitStart:D&&this.isEqual(s,M),isRangeSplitEnd:D&&this.isEqual(s,y),isToday:this.isEqual(s,E),title:this.cellTitle(s),value:s}})})}isEqual(t,e){return!t||!e?!1:n.getDate(t).getTime()===n.getDate(e).getTime()}isSelectedFromArray(t,e,i,h){let a=!1;return e.forEach(o=>{u.isInRange(t,i,h)&&this.isEqual(t,o)&&(a=!0)}),a}isInArray(t,e){return!!e.length&&n.firstDayOfMonth(e[0])<=t&&t<=n.lastDayOfMonth(e[e.length-1])}isInRange(t,e,i){const h=n.getDate(t),a=!e||n.getDate(e)<=h,o=!i||h<=n.getDate(i);return a&&o}isInSameView(t,e){return n.durationInMonths(t,e)===0}isRangeStart(t){return!t.getMonth()}move(t,e){const i=V[e];return i?i(t):t}cellTitle(t){return this.intl.formatDate(t,"D")}navigationTitle(t){return t?this.isRangeStart(t)?t.getFullYear().toString():this.abbrMonthNames()[t.getMonth()]:""}title(t){return`${this.wideMonthNames()[t.getMonth()]} ${t.getFullYear()}`}rowLength(t){return f+(t?1:0)}skip(t,e){return n.durationInMonths(e,t)}total(t,e){return n.durationInMonths(t,e)+1}value(t){return t?t.getDate().toString():""}viewDate(t,e,i=1){return n.durationInMonths(t,e)<i?n.addMonths(t,-1):t}isWeekend(t){const e=t.getDay();return e===p||e===O}abbrMonthNames(){return this.intl.dateFormatNames({nameType:"abbreviated",type:"months"})}normalize(t,e,i){return t<e&&this.isEqual(t,e)?n.getDate(e):t>i&&this.isEqual(t,i)?n.getDate(i):t}wideMonthNames(){return this.intl.dateFormatNames({nameType:"wide",type:"months",standAlone:!0})}}exports.MonthViewService=k;