@progress/kendo-react-dateinputs
Version:
React DateInput is a perfect input component for handling quick and efficient date values. KendoReact Date Inputs package
9 lines (8 loc) • 3.07 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
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@progress/kendo-date-math"),c=require("../models/NavigationAction.js"),y=require("../models/SelectionRange.js"),l=require("../../utils.js"),O=[[]],E=4,V=3,v={[c.Action.Left]:i=>r.addYears(i,-1),[c.Action.Up]:i=>r.addYears(i,-5),[c.Action.Right]:i=>r.addYears(i,1),[c.Action.Down]:i=>r.addYears(i,5),[c.Action.PrevView]:i=>r.addDecades(i,-1),[c.Action.NextView]:i=>r.addDecades(i,1),[c.Action.FirstInView]:i=>r.firstYearOfDecade(i),[c.Action.LastInView]:i=>r.lastYearOfDecade(i)};class m{addToDate(e,t){return r.addDecades(e,t)}datesList(e,t){return l.range(0,t).map(a=>r.addDecades(e,a))}data(e){const{cellUID:t,focusedDate:a,isActiveView:u,max:s,min:o,selectedDate:d,selectionRange:g=y.EMPTY_SELECTIONRANGE,viewDate:f}=e;if(!f)return O;const I=l.range(0,E),D=r.firstYearOfDecade(f),S=r.lastYearOfDecade(f),F=l.getToday();return l.range(0,V).map(w=>{const R=r.addYears(D,w*E);return I.map(T=>{const n=this.normalize(r.addYears(R,T),o,s),h=this.isEqual(n,g.start),A=this.isEqual(n,g.end),Y=!h&&!A&&l.isInSelectionRange(n,g),q=u&&(Array.isArray(d)?this.isSelectedFromArray(n,d,o,s):l.isInRange(d,o,s)&&this.isEqual(n,d));return l.intersects(n,D,S)?{formattedValue:this.value(n),id:`${t}${n.getTime()}`,isFocused:this.isEqual(n,a),isSelected:q,isWeekend:!1,isInRange:l.isInRange(n,o,s),isRangeStart:h,isRangeMid:Y,isRangeEnd:A,isRangeSplitEnd:Y&&this.isEqual(n,S),isRangeSplitStart:Y&&this.isEqual(n,D),isToday:this.isEqual(n,F),title:this.cellTitle(n),value:n}:null})})}isSelectedFromArray(e,t,a,u){let s=!1;return t.forEach(o=>{l.isInRange(e,a,u)&&this.isEqual(e,o)&&(s=!0)}),s}isEqual(e,t){return!e||!t?!1:e.getFullYear()===t.getFullYear()}isInArray(e,t){if(!t.length)return!1;const a=e.getFullYear();return t[0].getFullYear()<=a&&a<=t[t.length-1].getFullYear()+9}isInRange(e,t,a){const u=e.getFullYear(),s=!t||t.getFullYear()<=u,o=!a||u<=a.getFullYear();return s&&o}isRangeStart(e){return e.getFullYear()%100===0}isInSameView(e,t){return r.durationInDecades(e,t)===0}move(e,t){const a=v[t];return a?a(e):e}cellTitle(e){return e.getFullYear().toString()}navigationTitle(e){return e?r.firstYearOfDecade(e).getFullYear().toString():""}title(e){return e?`${r.firstYearOfDecade(e).getFullYear()} - ${r.lastYearOfDecade(e).getFullYear()}`:""}rowLength(e){return E}skip(e,t){return r.durationInDecades(t,e)}total(e,t){return r.durationInDecades(e,t)+1}value(e){return e?e.getFullYear().toString():""}viewDate(e,t,a=1){return r.durationInDecades(e,t)<a?r.addDecades(e,-1):e}normalize(e,t,a){return e<t&&this.isEqual(e,t)?r.cloneDate(t):e>a&&this.isEqual(e,a)?r.cloneDate(a):e}}exports.DecadeViewService=m;