1this.BX=this.BX||{};this.BX.UI=this.BX.UI||{};(function(e,t,s,i,n,r,a){"use strict";class o extends i.EventEmitter{#e=null;#t=new s.MemoryCache;#s=false;constructor(e){super();this.setEventNamespace("BX.UI.DatePicker.BasePicker");this.#e=e}getContainer(){throw new Error("You must implement getContainer method")}getHeaderContainer(...e){return this.#t.remember("header",(()=>t.Tag.render`<div class="ui-date-picker-header" role="none">${e}</div>`))}getContentContainer(...e){return this.#t.remember("content",(()=>t.Tag.render`<div class="ui-date-picker-content" role="none">${e}</div>`))}getPrevBtn(){return this.#t.remember("prev-button",(()=>t.Tag.render` 2 <button 3 type="button" 4 class="ui-date-picker-button --left-arrow" 5 aria-label="${this.getPrevBtnLabel()}" 6 title="${this.getPrevBtnLabel()}" 7 onclick="${this.handlePrevBtnClick.bind(this)}" 8 > 9 <span class="ui-icon-set --chevron-left" aria-hidden="true" style="--ui-icon-set__icon-size: 20px"></span> 10 </button> 11 `))}getNextBtn(){return this.#t.remember("next-button",(()=>t.Tag.render` 12 <button 13 type="button" 14 class="ui-date-picker-button --right-arrow" 15 aria-label="${this.getNextBtnLabel()}" 16 title="${this.getNextBtnLabel()}" 17 onclick="${this.handleNextBtnClick.bind(this)}" 18 > 19 <span class="ui-icon-set --chevron-right" aria-hidden="true" style="--ui-icon-set__icon-size: 20px"></span> 20 </button> 21 `))}getPrevBtnLabel(){return""}getNextBtnLabel(){return""}handlePrevBtnClick(){this.emit("onPrevBtnClick")}handleNextBtnClick(){this.emit("onNextBtnClick")}render(){throw new Error("You must implement render method")}onShow(){}onHide(){}getDatePicker(){return this.#e}isRendered(){return this.#s}renderTo(e){t.Dom.append(this.getContainer(),e);this.#s=true}}function l(e){const t=new Date(e.getTime());if(e.__utc){t.__utc=true}return t}function u(e){const t=e.getUTCMonth();const s=e.getUTCFullYear();const i=[31,29,31,30,31,30,31,31,30,31,30,31];if(t!==1||s%4===0&&s%100!==0||s%400===0){return i[t]}return 28}function d(e,t,s){let i=l(e);if(!t||s===0){return i}switch(t.toLowerCase()){case"milli":i=new Date(e.getTime()+s);break;case"second":i=new Date(e.getTime()+s*1e3);break;case"minute":i=new Date(e.getTime()+s*6e4);break;case"hour":i=new Date(e.getTime()+s*36e5);break;case"day":i.setUTCDate(e.getUTCDate()+s);break;case"week":i.setUTCDate(e.getUTCDate()+s*7);break;case"month":{let t=e.getUTCDate();if(t>28){const i=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),1));t=Math.min(t,u(d(i,"month",s)))}i.setUTCDate(t);i.setUTCMonth(i.getUTCMonth()+s);break}case"quarter":i=d(e,"month",s*3);break;case"year":i.setUTCFullYear(e.getUTCFullYear()+s);break}if(e.__utc){i.__utc=true}return i}function c(e,t,s){let i=l(e);switch(t){case"day":i.setUTCHours(0,0,0,0);break;case"week":{const e=i.getUTCDay();i.setUTCHours(0,0,0,0);if(e!==s){const t=(e-s+7)%7;i=d(i,"day",-t)}break}case"month":i.setUTCHours(0,0,0,0);i.setUTCDate(1);break;case"hour":i.setUTCMinutes(0,0,0);break;case"minute":i.setUTCSeconds(0);i.setUTCMilliseconds(0);break;case"second":i.setUTCMilliseconds(0);break;case"year":i=new Date(Date.UTC(e.getUTCFullYear(),0,1));break;case"quarter":{i.setUTCHours(0,0,0,0);i.setUTCDate(1);i=d(i,"month",-(i.getUTCMonth()%3));break}}if(e.__utc){i.__utc=true}return i}function h(e,t,s=1,i=0){let n=l(e);switch(t){case"day":n.setUTCMinutes(0,0,0);n=d(n,"day",s);break;case"week":{const e=n.getUTCDay();n=d(n,"day",7*(s-1)+(e<i?i-e:7-e+i));break}case"month":n=d(n,"month",s);n.setUTCDate(1);break;case"quarter":n=d(n,"month",(s-1)*3+(3-n.getUTCMonth()%3));break;case"year":n=new Date(Date.UTC(n.getUTCFullYear()+s,0,1));break;default:n=d(e,t,s)}if(e.__utc){n.__utc=true}return n}function g(e,t,s,i){const n=l(e);if(t==="week"){n.setUTCHours(0,0,0,0);return d(c(n,t,i),t,1)}switch(t){case"hour":n.setUTCMinutes(0,0,0);break;case"minute":n.setUTCSeconds(0,0);break;case"second":n.setUTCMilliseconds(0);break;default:n.setUTCHours(0,0,0,0)}return h(n,t,s)}function m(e,t=0,s=1,i=0,n=0,r=0,a=0){const o=new Date(Date.UTC(e,t,s,i,n,r,a));if(e<100&&e>=0){o.setUTCFullYear(e)}o.__utc=true;return o}function f(e){const t=e.getUTCHours();const s=t%12===0?12:t%12;const i=t>11?"pm":"am";return{day:e.getUTCDate(),month:e.getUTCMonth(),year:e.getUTCFullYear(),weekDay:e.getUTCDay(),hours:t,hours12:s,minutes:e.getUTCMinutes(),seconds:e.getUTCSeconds(),dayPeriod:i,fullDay:String(e.getUTCDate()).padStart(2,"0"),fullHours:String(t).padStart(2,"0"),fullHours12:String(s).padStart(2,"0"),fullMinutes:String(e.getUTCMinutes()).padStart(2,"0")}}function p(e,s,i="day"){if(!t.Type.isDate(e)||!t.Type.isDate(s)){return false}const{day:n,month:r,year:a,hours:o,minutes:l,seconds:u}=f(e);const{day:d,month:c,year:h,hours:g,minutes:m,seconds:p}=f(s);if(i==="day"){return n===d&&r===c&&a===h}if(i==="datetime"){return n===d&&r===c&&a===h&&o===g&&l===m&&u===p}if(i==="month"){return r===c&&a===h}if(i==="year"){return a===h}return false}class D extends o{#t=new s.MemoryCache;#i=null;#n=null;getContainer(){return this.#t.remember("container",(()=>t.Tag.render` 22 <div class="ui-day-picker${this.getDatePicker().isFullYear()?" --full-year":""}" role="none"> 23 ${this.getHeader()} 24 ${this.getContentContainer(this.getMonthContainer())} 25 ${this.getDatePicker().isTimeEnabled()?this.getDatePicker().isRangeMode()?this.getTimeRangeContainer():this.getTimeContainer():null}
26 </div> 27 `))}getHeader(){const e=this.getDatePicker().getNumberOfMonths();if(this.getDatePicker().isFullYear()){return this.getHeaderContainer(this.getPrevBtn(),t.Tag.render` 28 <div class="ui-date-picker-header-title" aria-live="polite"> 29 ${this.getFullYearHeader()} 30 </div> 31 `,this.getNextBtn())}return this.getHeaderContainer(this.getPrevBtn(),...Array.from({length:e}).map(((e,s)=>t.Tag.render` 32 <div class="ui-date-picker-header-title" aria-live="polite"> 33 ${this.getHeaderMonth(s)} 34 ${this.getHeaderYear(s)} 35 </div> 36 `)),this.getNextBtn())}getFullYearHeader(){return this.#t.remember("header-full-year",(()=>t.Tag.render` 37 <span class="ui-date-picker-header-full-year"></span> 38 `))}getHeaderMonth(e){return this.#t.remember(`header-month-${e}`,(()=>t.Tag.render` 39 <button 40 type="button" 41 class="ui-date-picker-header-month" 42 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_MONTH_VIEW_LABEL")}" 43 onclick="${this.#r.bind(this)}" 44 ></button> 45 `))}getMonthContainer(){return this.#t.remember("month-container",(()=>t.Tag.render` 46 <div 47 class="ui-day-picker-content" 48 role="none" 49 onclick="${this.#a.bind(this)}" 50 onmouseover="${this.#o.bind(this)}" 51 onmouseout="${this.#l.bind(this)}" 52 ></div> 53 `))}getHeaderYear(e){return this.#t.remember(`header-year-${e}`,(()=>t.Tag.render` 54 <button 55 type="button" 56 class="ui-date-picker-header-year" 57 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_YEAR_VIEW_LABEL")}" 58 onclick="${this.#u.bind(this)}" 59 ></button> 60 `))}getTimeContainer(){return this.#t.remember("date-time-container",(()=>t.Tag.render` 61 <div class="ui-date-picker-time-container"> 62 <button 63 type="button" 64 class="ui-date-picker-time-box" 65 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_TIME_LABEL")}" 66 aria-describedby="${this.getDatePicker().getId()}-date-time-value" 67 title="${t.Loc.getMessage("UI_DATE_PICKER_TIME_LABEL")}" 68 onclick="${this.#d.bind(this)}" 69 > 70 <span class="ui-date-picker-time-clock" aria-hidden="true"></span> 71 ${this.getTimeValueContainer()} 72 </button> 73 </div> 74 `))}getTimeRangeContainer(){return this.#t.remember("range-time-container",(()=>t.Tag.render` 75 <div 76 class="ui-date-picker-time-container --range" 77 role="group" 78 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_RANGE_TIME")}" 79 > 80 <div class="ui-date-picker-time-range-slot"> 81 <button 82 type="button" 83 class="ui-date-picker-time-box --range-start" 84 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_RANGE_TIME_START")}" 85 aria-describedby="${this.getDatePicker().getId()}-time-start-value" 86 title="${t.Loc.getMessage("UI_DATE_PICKER_RANGE_TIME_START")}" 87 onclick="${this.#c.bind(this)}" 88 > 89 <span class="ui-date-picker-time-clock" aria-hidden="true"></span> 90 ${this.getTimeRangeStartContainer()} 91 </button> 92 </div> 93 <div class="ui-date-picker-time-range-slot"> 94 <button 95 type="button" 96 class="ui-date-picker-time-box --range-end" 97 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_RANGE_TIME_END")}" 98 aria-describedby="${this.getDatePicker().getId()}-time-end-value" 99 title="${t.Loc.getMessage("UI_DATE_PICKER_RANGE_TIME_END")}" 100 onclick="${this.#h.bind(this)}" 101 > 102 <span class="ui-date-picker-time-clock" aria-hidden="true"></span> 103 ${this.getTimeRangeEndContainer()} 104 </button> 105 </div> 106 </div> 107 `))}getTimeValueContainer(){return this.#t.remember("time-value",(()=>t.Tag.render`<div class="ui-date-picker-time-value" id="${this.getDatePicker().getId()}-date-time-value"></div>`))}getTimeRangeStartContainer(){return this.#t.remember("time-range-start",(()=>t.Tag.render`<div class="ui-date-picker-time-value" id="${this.getDatePicker().getId()}-time-start-value"></div>`))}getTimeRangeEndContainer(){return this.#t.remember("time-range-end",(()=>t.Tag.render`<div class="ui-date-picker-time-value" id="${this.getDatePicker().getId()}-time-end-value"></div>`))}getWeekDays(){if(this.#i!==null){return this.#i}const e=this.getDatePicker().getFirstWeekDay();const s=[[t.Loc.getMessage("DOW_0"),t.Loc.getMessage("DAY_OF_WEEK_0")],[t.Loc.getMessage("DOW_1"),t.Loc.getMessage("DAY_OF_WEEK_1")],[t.Loc.getMessage("DOW_2"),t.Loc.getMessage("DAY_OF_WEEK_2")],[t.Loc.getMessage("DOW_3"),t.Loc.getMessage("DAY_OF_WEEK_3")],[t.Loc.getMessage("DOW_4"),t.Loc.getMessage("DAY_OF_WEEK_4")],[t.Loc.getMessage("DOW_5"),t.Loc.getMessage("DAY_OF_WEEK_5")],[t.Loc.getMessage("DOW_6"),t.Loc.getMessage("DAY_OF_WEEK_6")]];this.#i=[...[...s].slice(e),...[...s].splice(0,e)];return this.#i}#g(e){const s=`month-${e}`;if(!this.#t.has(s)){const e=t.Tag.render` 108 <div 109 class="ui-day-picker-month" 110 role="grid" 111 aria-multiselectable="${this.getDatePicker().isSingleMode()?"false":"true"}" 112 ></div> 113 `;this.#t.set(s,e);t.Dom.append(e,this.getMonthContainer())}return this.#t.get(s)}#m(e,s){return this.#t.remember(`month-header-${e}`,(()=>{const i=n.DateTimeFormat.format("f",m(2e3,e),null,true);const r=t.Tag.render`<div class="ui-day-picker-month-header">${t.Text.encode(i)}</div>`;t.Dom.append(r,s);return r}))}#f(e,s){return this.#t.remember(`week-day-${e}`,(()=>{const e=t.Tag.render`<div class="ui-day-picker-week --week-days" role="row" aria-hidden="true"></div>`;
113t.Dom.append(e,s);if(this.getDatePicker().shouldShowWeekNumbers()){const s=t.Tag.render`<div class="ui-day-picker-week-day"></div>`;t.Dom.append(s,e)}this.getWeekDays().forEach((s=>{const[i,n]=s;const r=t.Tag.render` 114 <div 115 class="ui-day-picker-week-day" 116 aria-label="${n}" 117 role="columnheader" 118 >${t.Text.encode(i)}</div> 119 `;t.Dom.append(r,e)}));return e}))}#p(e,s,i){return this.#t.remember(`week-${e}-${s}`,(()=>{const e=t.Tag.render`<div class="ui-day-picker-week" role="row"></div>`;t.Dom.append(e,i);return e}))}#D(e,s,i,r){const a=this.#t.remember(`week-number-${e}-${s}`,(()=>{const e=t.Tag.render`<div class="ui-day-picker-week-number">${n.DateTimeFormat.format("W",i[0].date,null,true)}</div>`;t.Dom.append(e,r);return e}));a.textContent=n.DateTimeFormat.format("W",i[0].date,null,true)}#T(e,s,i){const r=this.#t.remember(e,(()=>{const e=t.Tag.render` 120 <button 121 type="button" 122 class="ui-day-picker-day" 123 data-day="${s.day}" 124 data-month="${s.month}" 125 data-year="${s.year}" 126 data-tab-priority="true" 127 role="gridcell" 128 > 129 <span class="ui-day-picker-day-inner">${s.day}</span> 130 <span class="ui-day-picker-day-marks" aria-hidden="true"></span> 131 </button> 132 `;t.Dom.append(e,i);return e}));const a=n.DateTimeFormat.format(n.DateTimeFormat.getFormat("FULL_DATE_FORMAT"),s.date,null,true);if(r.getAttribute("aria-label")!==a){r.setAttribute("aria-label",a)}const o=s.selected||s.rangeIn?"true":"false";if(r.getAttribute("aria-selected")!==o){r.setAttribute("aria-selected",o)}if(s.current){if(r.getAttribute("aria-current")!=="date"){r.setAttribute("aria-current","date")}}else if(r.hasAttribute("aria-current")){r.removeAttribute("aria-current")}const l=Number(r.dataset.day);const u=Number(r.dataset.month);const d=Number(r.dataset.year);if(l!==s.day||u!==s.month||d!==s.year){r.dataset.day=s.day;r.dataset.month=s.month;r.dataset.year=s.year;r.firstElementChild.textContent=s.day}const c={"--outside":s.outside,"--current":!s.outside&&s.current,"--day-off":!s.outside&&s.dayOff,"--disabled":s.disabled,"--selected":s.selected,"--hidden":s.hidden,"--range-from":s.rangeFrom,"--range-to":s.rangeTo,"--range-in":s.rangeIn,"--range-in-start":s.rangeInStart,"--range-in-end":s.rangeInEnd,"--range-in-selected":s.rangeInSelected,"--range-selected":s.rangeSelected,"--focused":s.focused};let h="ui-day-picker-day";for(const[e,t]of Object.entries(c)){if(t){h=`${h} ${e}`}}if(r.className!==h){r.className=h}r.disabled=Boolean(s.disabled);const g=r.dataset.bgColor||null;const m=r.dataset.textColor||null;if(g!==s.bgColor){t.Dom.style(r.firstElementChild,"--ui-day-picker-day-bg-color",s.bgColor);t.Dom.attr(r,"data-bg-color",s.bgColor)}if(m!==s.textColor){t.Dom.style(r.firstElementChild,"--ui-day-picker-day-text-color",s.textColor);t.Dom.attr(r,"data-text-color",s.textColor)}const f=r.dataset.marks||"";if(f!==s.marks.toString()){t.Dom.clean(r.lastElementChild);if(s.marks.length>0){for(const e of s.marks){t.Dom.append(t.Tag.render` 133 <span class="ui-day-picker-day-mark" style="background-color: ${e}"></span> 134 `,r.lastElementChild)}}t.Dom.attr(r,"data-marks",s.marks.toString())}r.tabIndex=s.tabIndex;return r}#y(){if(this.getDatePicker().isRangeMode()){const e=this.getDatePicker().getRangeStart();const s=this.getTimeRangeStartContainer().parentNode;if(e===null){t.Dom.removeClass(this.getTimeRangeContainer(),"--range-start-set");s.disabled=true}else{t.Dom.addClass(this.getTimeRangeContainer(),"--range-start-set");s.disabled=false;this.getTimeRangeStartContainer().textContent=this.getDatePicker().formatTime(e)}const i=this.getDatePicker().getRangeEnd();const n=this.getTimeRangeEndContainer().parentNode;if(i===null){t.Dom.removeClass(this.getTimeRangeContainer(),"--range-end-set");n.disabled=true}else{t.Dom.addClass(this.getTimeRangeContainer(),"--range-end-set");n.disabled=false;this.getTimeRangeEndContainer().textContent=this.getDatePicker().formatTime(i)}}else{const e=this.getDatePicker().getSelectedDate();const s=this.getTimeContainer().firstElementChild;if(e===null){t.Dom.removeClass(this.getTimeContainer(),"--time-set");s.disabled=true}else{t.Dom.addClass(this.getTimeContainer(),"--time-set");s.disabled=false;this.getTimeValueContainer().textContent=this.getDatePicker().formatTime(e)}}}render(){let e=null;const t=this.getDatePicker().isFocused();
134this.getMonths().forEach(((t,s)=>{if(this.getDatePicker().isFullYear()){this.getFullYearHeader().textContent=n.DateTimeFormat.format("Y",t.date,null,true)}else{this.getHeaderMonth(s).textContent=n.DateTimeFormat.format("f",t.date,null,true);this.getHeaderYear(s).textContent=n.DateTimeFormat.format("Y",t.date,null,true)}const i=this.#g(s);i.ariaLabel=n.DateTimeFormat.format("f Y",t.date,null,true);if(this.getDatePicker().isFullYear()){this.#m(s,i)}if(this.getDatePicker().shouldShowWeekDays()){this.#f(s,i)}t.weeks.forEach(((t,n)=>{const r=this.#p(s,n,i);if(this.getDatePicker().shouldShowWeekNumbers()){this.#D(s,n,t,r)}t.forEach(((t,i)=>{const a=`day-${s}-${n}-${i}`;const o=this.#T(a,t,r);if(t.focused){e=o}}))}))}));if(e!==null&&t&&this.getDatePicker().getFocusInputModality()==="keyboard"){e.focus({preventScroll:true})}if(this.getDatePicker().isTimeEnabled()){this.#y()}this.getPrevBtn().disabled=!this.getDatePicker().canNavigate("day","prev");this.getNextBtn().disabled=!this.getDatePicker().canNavigate("day","next")}getMonths(){const e=[];const t=this.getDatePicker();let s=t.getViewDate();const i=t.getNumberOfMonths();const n=t.getToday();const r=t.getFocusDate();const a=this.getDatePicker().getInitialFocusDate();const o=t.shouldShowOutsideDays();const{year:u,month:h}=t.getViewDateParts();const f=m(u,h);const D=g(m(u,h+i-1),"month");const[T,y]=this.#b();const b=t.isRangeMode()&&t.getRangeStart()!==null&&t.getRangeEnd()!==null;for(let u=0;u<i;u++){const u=[];const h=c(s,"month");const g=s.getUTCMonth();s=this.#C(s);for(let e=0;e<6;e++){const e=[];let c=null;for(let u=0;u<7;u++){let h=true;const m=s.getUTCMonth()!==g;if(m){if(o&&i>1){h=s.getTime()<f||s.getTime()>=D}else if(!o){h=false}}const C=h&&!t.isDateAllowed(s,"day");const k=h&&t.isDateSelected(s,"day");const M=h&&T&&y&&p(s,T);const E=h&&T&&y&&p(s,y);const v=h&&T&&y&&(M||E||s.getTime()>=T.getTime()&&s.getTime()<=y.getTime());const S=v&&(u===0||!c.rangeIn);const F=v&&u===6;if(!v&&c&&c.rangeIn){c.rangeInEnd=true}const P=k&&v&&!M&&!E;const I=h&&p(s,r,"day");const w=h&&(p(s,r,"day")||p(s,a,"day"))?0:-1;const A=this.getDatePicker().getDayColor(s);const _=this.getDatePicker().getDayMarks(s).map((e=>e.bgColor));const R={date:l(s),day:s.getUTCDate(),month:s.getUTCMonth(),year:s.getUTCFullYear(),outside:m,current:p(s,n,"day"),selected:k,disabled:C,hidden:m&&!o,dayOff:t.isDayOff(s),rangeSelected:k&&b,focused:I,tabIndex:w,rangeFrom:M,rangeTo:E,rangeIn:v,rangeInStart:S,rangeInEnd:F,rangeInSelected:P,bgColor:A===null?null:A.bgColor,textColor:A===null?null:A.textColor,marks:_};e.push(R);c=R;s=d(s,"day",1)}u.push(e)}e.push({weeks:u,date:h})}return e}#C(e){const t=this.getDatePicker();const s=t.getFirstWeekDay();const i=c(e,"month");let n=i.getUTCDay()-s;n=n<0?n+7:n;return d(i,"day",-n)}getFirstDay(){const e=this.getDatePicker().getViewDate();const t=e.getUTCMonth();const s=this.getDatePicker().shouldShowOutsideDays();const i=this.#C(this.getDatePicker().getViewDate());const n=i.getUTCMonth()!==t;if(n&&!s){return c(e,"month")}return i}getLastDay(){const e=this.getDatePicker().getNumberOfMonths();const t=this.getDatePicker().shouldShowOutsideDays();const{year:s,month:i}=this.getDatePicker().getViewDateParts();let n=g(m(s,i+e-1),"month");if(t){const t=m(s,i+e-1);const r=this.#C(t);n=d(r,"day",6*7)}return n}#b(){let e=null;let t=null;const s=this.getDatePicker().getFocusDate();if(this.getDatePicker().isRangeMode()){const i=this.getDatePicker().getSelectedDates();e=i[0]||null;t=i[1]||null;if(s!==null){if(i.length===1){if(s>e.getTime()){t=s}else{t=e;e=s}}}}return[e,t]}#a(e){const s=e.target.closest(".ui-day-picker-day");if(s===null||s.disabled){return}const i=s.dataset;const n=t.Text.toInteger(i.year);const r=t.Text.toInteger(i.month);const a=t.Text.toInteger(i.day);this.emit("onSelect",{year:n,month:r,day:a})}#o(e){const s=e.target.closest(".ui-day-picker-day");if(s===null){const t=e.target.closest(".ui-day-picker-week");if(t!==null&&this.#n!==null&&this.getDatePicker().getSelectedDates().length===1){clearTimeout(this.#n)}return}if(this.#n!==null){clearTimeout(this.#n)}const i=s.dataset;const n=t.Text.toInteger(i.year);const r=t.Text.toInteger(i.month);const a=t.Text.toInteger(i.day);
134this.emit("onFocus",{year:n,month:r,day:a})}clearMouseOutTimeout(){if(this.#n!==null){clearTimeout(this.#n)}}#l(e){if(this.#n!==null){clearTimeout(this.#n)}this.#n=setTimeout((()=>{this.emit("onBlur");this.#n=null}),100)}#r(){this.emit("onMonthClick")}#u(){this.emit("onYearClick")}#d(){const e=this.getDatePicker().getSelectedDate();if(e!==null){this.emit("onTimeClick")}}#c(){const e=this.getDatePicker().getRangeStart();if(e!==null){this.emit("onRangeStartClick")}}#h(){const e=this.getDatePicker().getRangeEnd();if(e!==null){this.emit("onRangeEndClick")}}getPrevBtnLabel(){return t.Loc.getMessage(this.getDatePicker().isFullYear()?"UI_DATE_PICKER_PREV_YEAR":"UI_DATE_PICKER_PREV_MONTH")}getNextBtnLabel(){return t.Loc.getMessage(this.getDatePicker().isFullYear()?"UI_DATE_PICKER_NEXT_YEAR":"UI_DATE_PICKER_NEXT_MONTH")}}const T={SELECT_CHANGE:"onSelectChange",BEFORE_SELECT:"onBeforeSelect",SELECT:"onSelect",BEFORE_DESELECT:"onBeforeDeselect",BEFORE_DAY_SELECT:"onBeforeDaySelect",DESELECT:"onDeselect",PRESET_SELECT:"onPresetSelect",DESTROY:"onDestroy"};function y(e,t){return e.getTime()>t.getTime()}function b(e,t){return e.getTime()<t.getTime()}function C(e,t){t.setUTCHours(e.getUTCHours());t.setUTCMinutes(e.getUTCMinutes());t.setUTCSeconds(e.getUTCSeconds())}function k(e,s=[]){const[i=null,n=null]=t.Type.isArray(s)?s:[];if(i!==null&&n!==null){if(p(n,e)&&p(i,e)){return[]}if(p(n,e)){return[n]}if(p(i,e)){return[]}if(y(i,e)){C(i,e);return[e,n]}C(n,e);return[i,e]}if(n!==null){if(y(e,n)){return[n,e]}return[e,n]}if(i!==null){if(b(e,i)){return[e,i]}return[i,e]}return[e]}const M={Y:"YYYY",M:"MMM",f:"MMMM",m:"MM",d:"DD",A:"TT",a:"T",i:"MI",s:"SS",H:"HH",h:"H",G:"GG",g:"G",j:"DD",n:"MM"};function E(e){let t=e;for(const[e,s]of Object.entries(M)){t=t.replace(e,s)}return t}const v=/[^\p{L}\p{N}\u0600-\u06FF_]/u;const S=/^[1-9]\d{3}$/;const F=/^(0?[1-9]|[12]\d|3[01])$/;const P=/^(0?[1-9]|1[0-2])$/;const I=/^(\d|0\d|1\d|2[0-3])$/;const w=/^(\d|[0-5]\d)$/;const A=/^(\d|[0-5]\d)$/;function _(e,s){const i=s.split(v);const n=e.split(v);const r={};const a=new Map;for(const[e,t]of i.entries()){const s=R(t,n[e]);if(s!==null){const[e,t,i]=s;if(t==="error"){a.set(e,i);continue}r[e]=t}}const o=t.Type.isNumber(r.day);const l=t.Type.isNumber(r.month);const u=t.Type.isNumber(r.year);if(a.size>0){const e=u&&l&&o;const s=a.has("hours")&&a.has("minutes")&&t.Type.isUndefined(a.get("hours"))&&t.Type.isUndefined(a.get("minutes"))&&(a.has("seconds")&&t.Type.isUndefined(a.get("seconds"))||!a.has("seconds"));if(!e||!s){return null}}const d=new Date;const c=new Date(Date.UTC(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes(),d.getSeconds(),0));c.__utc=true;const{day:h,month:g,year:p}=f(c);const D=p;const T=u?0:g;const y=u||l?1:h;const{meridiem:b}=r;const C=i.includes("H")||i.includes("G");const k=t.Type.isStringFilled(b)&&b.toLowerCase()==="pm";let{hours:M}=r;if(C){if(k){M+=M===12?0:12}else{M=M<12?M:0}}const{year:E=D,month:S=T,day:F=y,minutes:P=0,seconds:I=0}=r;return m(E,S,F,M,P,I)}function R(e,s){switch(e){case"YYYY":{if(!S.test(s)){return["year","error",s]}const e=t.Text.toInteger(s);return["year",e,s]}case"MMMM":case"MMM":{const e=n.DateTimeFormat.getMonthIndex(s);if(t.Type.isNumber(e)){return["month",e-1,s]}return["month","error",s]}case"MM":case"M":{if(!P.test(s)){return["month","error",s]}const e=t.Text.toInteger(s);return["month",e===0?e:Math.min(Math.max(e,1),12)-1,s]}case"DD":case"D":{if(!F.test(s)){return["day","error",s]}const e=t.Text.toInteger(s);return["day",Math.min(Math.max(e,1),31),s]}case"HH":case"GG":{if(!I.test(s)){return["hours","error",s]}const e=t.Text.toInteger(s);return["hours",Math.min(Math.max(e,0),23),s]}case"H":case"G":{if(!I.test(s)){return["hours","error",s]}const e=t.Text.toInteger(s);return["hours",e>12?e-12:e,s]}case"MI":{if(!w.test(s)){return["minutes","error",s]}const e=t.Text.toInteger(s);return["minutes",Math.min(Math.max(e,0),59),s]}case"SS":{if(t.Type.isStringFilled(s)&&["am","pm"].includes(s.toLowerCase())){return["meridiem",s,s]}if(t.Type.isStringFilled(s)&&!A.test(s)){return["seconds","error",s]}const e=t.Text.toInteger(s);return["seconds",Math.min(Math.max(e,0),59),s]}case"T":case"TT":if(t.Type.isStringFilled(s)){return["meridiem",s,s]}return null;default:return null}}function $(e,s=null){let i=null;if(t.Type.isStringFilled(e)&&t.Type.isStringFilled(s)){i=_(e,E(s))}else if(t.Type.isNumber(e)){i=new Date(e);i=U(i)}else if(t.Type.isDate(e)){i=e.__utc?e:U(e)}if(i===null){console.warn(`DatePicker: invalid date or format (${e}).`)}else{i.__utc=true}return i}function U(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0))}const x=['button:not([disabled]):not([tabindex="-1"])','[tabindex]:not
134([tabindex="-1"]):not([disabled])'].join(", ");function O(e){return e.ownerDocument.activeElement===e}function H(e,s=null){const i=t.Type.isFunction(s)?s:()=>true;const n=[...e.querySelectorAll(x)].filter((e=>a.InteractivityChecker.isTabbable(e)&&i(e)));if(n.length===0){return[]}if(n.length===1){return[n[0],n[0]]}let r=n.at(0);let o=n.at(-1);for(const[e,s]of n.entries()){if(O(s)){o=e>0?n[e-1]:n.at(-1);r=t.Type.isUndefined(n[e+1])?n.at(0):n[e+1];break}}return[o,r]}function N(e,s,i){if(s===null){return null}if(e.subtitle===""){return null}if(t.Type.isFunction(e.subtitle)){let i=null;try{i=e.subtitle(s)}catch(e){console.warn("DatePicker: failed to compute preset subtitle.",e);return null}return t.Type.isStringFilled(i)?i:null}if(t.Type.isString(e.subtitle)){return e.subtitle}return i(s)}function L(e){return t.Type.isStringFilled(e)||t.Type.isNumber(e)||t.Type.isDate(e)}function B(e,s,i=null){let n=null;try{n=t.Type.isFunction(e.value)?e.value():e.value}catch(e){console.warn("DatePicker: failed to resolve preset value.",e);return null}if(s==="range"){const e=t.Type.isArray(n)?n.slice(0,2):[n,n];if(e.length<2){return null}let s=$(e[0],i);let r=$(e[1],i);if(s===null||r===null){return null}if(s>r){[s,r]=[r,s]}return[s,r]}if(s==="multiple"){const e=t.Type.isArray(n)?n:[n];const s=e.map((e=>$(e,i))).filter((e=>e!==null));return s.length===0?null:s}const r=t.Type.isArray(n)?n[0]:n;const a=$(r,i);return a===null?null:[a]}function Y(e,t=0,s=0,i=0){const n=l(e);if(t!==null){n.setUTCHours(t)}if(s!==null){n.setUTCMinutes(s)}if(i!==null){n.setUTCSeconds(i)}return n}function V(e,s){return s.some((s=>{if(t.Type.isFunction(s)){return s(e)}if(t.Type.isDate(s)){return p(e,s)}if(t.Type.isArray(s)){return s.some((t=>p(e,t)))}if(t.Type.isBoolean(s)){return s}if(t.Type.isPlainObject(s)){return W(e,s)}return false}))}function W(e,s){if(t.Type.isArray(s.dayOfWeek)){return s.dayOfWeek.includes(e.getUTCDay())}if(t.Type.isArray(s.dayOfMonth)){return s.dayOfMonth.includes(e.getUTCDate())}const i=e.getTime();if(t.Type.isDate(s.from)||t.Type.isDate(s.to)){const e=!t.Type.isDate(s.from)||i>=s.from.getTime();const n=!t.Type.isDate(s.to)||i<=s.to.getTime();return e&&n}if(t.Type.isDate(s.before)&&t.Type.isDate(s.after)){return i>s.after.getTime()&&i<s.before.getTime()}if(t.Type.isDate(s.before)){return i<s.before.getTime()}if(t.Type.isDate(s.after)){return i>s.after.getTime()}return false}const K={ArrowRight:{day:1,month:1,year:1,hours:1,minutes:1},ArrowLeft:{day:-1,month:-1,year:-1,hours:-1,minutes:-1},ArrowUp:{day:-7,month:-3,year:-3,hours:-4,minutes:-2},ArrowDown:{day:7,month:3,year:3,hours:4,minutes:2}};class j{#e=null;#k=null;constructor(e){this.#e=e}init(){t.Event.bind(this.#e.getRootContainer(),"keydown",this.#M.bind(this));t.Event.bind(this.#e.getRootContainer(),"focusin",this.#E.bind(this));t.Event.bind(this.#e.getRootContainer(),"focusout",this.#v.bind(this))}#M(e){if(e.defaultPrevented){return}const s=this.#e;if(e.key==="Backspace"&&s.getType()==="date"&&["year","month","time"].includes(s.getCurrentView())){e.preventDefault();this.resetLastFocusElement();s.setCurrentView("day");return}if(e.key==="Tab"&&!s.isInline()){this.#S(e);return}const i=s.getCurrentView();if(i==="time"&&s.getTimePickerStyle()==="wheel"){return}if(e.key==="Space"||e.key==="Enter"||e.key===" "){e.preventDefault();this.resetLastFocusElement();e.target.click();this.#F()}else if(!t.Type.isUndefined(K[e.key])){e.preventDefault();this.resetLastFocusElement();const t=s.getFocusDate()===null&&this.#P();if(i==="time"){const i=this.#e.getPicker("time");let n=l(s.getInitialFocusDate(i.getMode()));let{hours:r,minutes:a}=f(n);if(t){s.setFocusDate(n,{inputModality:"keyboard"});this.#F()}else if(i.getFocusColumn()==="hours"){const t=K[e.key].hours;r+=t;if(r<0){r+=24}else if(r>23){r-=24}n=Y(n,r,null,null);s.setFocusDate(n,{inputModality:"keyboard"});this.#F()}else if(i.getFocusColumn()==="minutes"){const t=K[e.key].minutes;a+=i.getCurrentMinuteStep()*t;if(a<0){a+=60}else if(a>59){a-=60}n=Y(n,null,a,null);s.setFocusDate(n,{inputModality:"keyboard"});i.adjustMinuteFocusPosition();this.#F()}}else{const n=l(s.getInitialFocusDate());if(t){s.setFocusDate(n,{inputModality:"keyboard"})}else{const t=K[e.key][i];const r=d(n,i,t);s.setFocusDate(r,{inputModality:"keyboard"})}this.#F()}}}#P(){const e=this.#e.getRootContainer();return e.ownerDocument.activeElement===e}#S(e){let t=null;let s=null;const i=this.#e.getRootContainer();if(this.#P()){[t=null,s=null]=H(i,(e=>e.dataset.tabPriority==="true"))}if(t===null&&s===null){[t,s]=H(i)}if(e.shiftKey){t?.focus({preventScroll:true,focusVisible:true});this.setLastFocusElement(t)}
134else{s?.focus({preventScroll:true,focusVisible:true});this.setLastFocusElement(s)}e.preventDefault()}setLastFocusElement(e){this.resetLastFocusElement();this.#k=e;t.Dom.addClass(this.#k,"--focus-visible")}resetLastFocusElement(){t.Dom.removeClass(this.#k,"--focus-visible");this.#k=null}#F(){const e=this.#e.getRootContainer();const t=e.ownerDocument.activeElement;if(e.contains(t)){this.setLastFocusElement(t)}}#E(e){this.resetLastFocusElement()}#v(e){this.resetLastFocusElement()}}class X extends o{#t=new s.MemoryCache;getContainer(){return this.#t.remember("container",(()=>t.Tag.render` 135 <div class="ui-month-picker" role="none"> 136 ${this.getHeaderContainer(this.getPrevBtn(),this.getHeaderTitle(),this.getNextBtn())} 137 ${this.getContentContainer(this.getYearContainer())} 138 </div> 139 `))}getHeaderTitle(){return this.#t.remember("header-title",(()=>t.Tag.render` 140 <button 141 type="button" 142 class="ui-month-picker-header-title" 143 onclick="${this.#I.bind(this)}" 144 aria-live="polite" 145 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_YEAR_VIEW_LABEL")}" 146 ></button> 147 `))}getYearContainer(){return this.#t.remember("year-container",(()=>t.Tag.render` 148 <div 149 class="ui-month-picker-content" 150 role="grid" 151 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_MONTH_VIEW_LABEL")}" 152 aria-multiselectable="${this.getDatePicker().isSingleMode()?"false":"true"}" 153 ></div> 154 `))}getMonths(){const{year:e}=f(this.getDatePicker().getViewDate());const t=this.getDatePicker().getToday();const s=this.getDatePicker().getFocusDate();const i=this.getDatePicker().getInitialFocusDate();const r=[];let a=0;for(let o=0;o<4;o++){const o=[];for(let r=0;r<3;r++){const r=m(e,a);const l=p(r,s,"month");const u={name:n.DateTimeFormat.format("f",r,null,true),date:r,year:e,month:a,current:p(r,t,"month"),selected:this.getDatePicker().isDateSelected(r,"month"),disabled:!this.getDatePicker().isDateAllowed(r,"month"),focused:l,tabIndex:l||p(r,i,"month")?0:-1};o.push(u);a++}r.push(o)}return r}renderTo(e){super.renderTo(e);t.Event.bind(this.getContentContainer(),"click",this.#r.bind(this))}render(){const e=this.getDatePicker().isFocused();let t=null;this.getMonths().forEach(((e,s)=>{const i=this.#w(s);e.forEach((e=>{const s=this.#A(e,i);if(e.focused){t=s}}))}));if(t!==null&&e&&this.getDatePicker().getFocusInputModality()==="keyboard"){t.focus({preventScroll:true})}const{year:s}=f(this.getDatePicker().getViewDate());this.getHeaderTitle().textContent=s;this.getPrevBtn().disabled=!this.getDatePicker().canNavigate("month","prev");this.getNextBtn().disabled=!this.getDatePicker().canNavigate("month","next")}#w(e){return this.#t.remember(`quarter-${e}`,(()=>{const e=t.Tag.render`<div class="ui-month-picker-quarter" role="row"></div>`;t.Dom.append(e,this.getYearContainer());return e}))}#A(e,s){const i=this.#t.remember(`month-${e.month}`,(()=>{const i=t.Tag.render` 155 <button 156 type="button" 157 class="ui-month-picker-month" 158 role="gridcell" 159 data-year="${e.year}" 160 data-month="${e.month}" 161 data-tab-priority="true" 162 onmouseenter="${this.#_.bind(this)}" 163 onmouseleave="${this.#R.bind(this)}" 164 >${t.Text.encode(e.name)}</button> 165 `;t.Dom.append(i,s);return i}));const r=Number(i.dataset.year);if(r!==e.year){i.dataset.year=e.year}const a=n.DateTimeFormat.format("f Y",e.date,null,true);if(i.getAttribute("aria-label")!==a){i.setAttribute("aria-label",a)}const o=e.selected?"true":"false";if(i.getAttribute("aria-selected")!==o){i.setAttribute("aria-selected",o)}if(e.current){t.Dom.addClass(i,"--current");if(i.getAttribute("aria-current")!=="date"){i.setAttribute("aria-current","date")}}else{t.Dom.removeClass(i,"--current");if(i.hasAttribute("aria-current")){i.removeAttribute("aria-current")}}if(e.selected){t.Dom.addClass(i,"--selected")}else{t.Dom.removeClass(i,"--selected")}if(e.focused){t.Dom.addClass(i,"--focused")}else{t.Dom.removeClass(i,"--focused")}if(e.disabled){t.Dom.addClass(i,"--disabled")}else{t.Dom.removeClass(i,"--disabled")}i.disabled=Boolean(e.disabled);i.tabIndex=e.tabIndex;return i}#_(e){const s=e.target.dataset;const i=t.Text.toInteger(s.year);const n=t.Text.toInteger(s.month);
165this.emit("onFocus",{year:i,month:n})}#R(e){this.emit("onBlur")}#r(e){if(!t.Dom.hasClass(e.target,"ui-month-picker-month")||e.target.disabled){return}const s=t.Text.toInteger(e.target.dataset.year);const i=t.Text.toInteger(e.target.dataset.month);this.emit("onSelect",{year:s,month:i})}#I(e){this.emit("onTitleClick")}getPrevBtnLabel(){return t.Loc.getMessage("UI_DATE_PICKER_PREV_YEAR")}getNextBtnLabel(){return t.Loc.getMessage("UI_DATE_PICKER_NEXT_YEAR")}}function Z(e){if(!t.Type.isDate(e)){return false}return!Number.isNaN(e.getTime())}class G extends o{#$="datetime";#U=Infinity;#x="hours";getTimeDate(){if(this.#$==="range-start"){return this.getDatePicker().getRangeStart()}if(this.#$==="range-end"){return this.getDatePicker().getRangeEnd()}return this.getDatePicker().getSelectedDate()}setMode(e){this.#$=e}getMode(){return this.#$}getFocusColumn(){return this.#x}setFocusColumn(e){if(t.Type.isStringFilled(e)&&["hours","minutes"].includes(e)){this.#x=e}}getHours(){const e=this.getTimeDate();const t=e===null?-1:e.getUTCHours();const s=this.getDatePicker().isAmPmMode();const i=this.getDatePicker().getFocusDate();const n=i===null?t:i.getUTCHours();const r=this.getDatePicker().getInitialFocusDate(this.getMode()).getUTCHours();const a=[];for(let e=0,i=0;e<24;e++,i++){let o=e;if(s){o%=12;o=o===0?12:o}a.push({index:i,name:s?o:String(o).padStart(2,"0"),value:e,selected:t===e,focused:n===e&&this.getFocusColumn()==="hours",tabIndex:n===e||r===e?0:-1})}return a}getMinutes(){const e=this.getTimeDate();const t=e===null?-1:e.getUTCMinutes();const s=Math.min(this.getDatePicker().getMinuteStepByDate(e),this.#U);const i=this.getDatePicker().getFocusDate();const n=i===null?t:i.getUTCMinutes();const r=this.getDatePicker().getInitialFocusDate(this.getMode()).getUTCMinutes();this.#U=s;const a=[];for(let e=0,i=0;e<60;e++){const o=e%s!==0;a.push({index:i,name:String(e).padStart(2,"0"),value:e,selected:t===e,hidden:o,focused:!o&&n===e&&this.getFocusColumn()==="minutes",tabIndex:!o&&(n===e||r===e)?0:-1});if(!o){i++}}return a}getMeridiems(){const e=this.getTimeDate();const t=e===null?-1:e.getUTCHours();const s=t>=12;return[{index:0,name:"AM",value:"am",selected:!s},{index:1,name:"PM",value:"pm",selected:s}]}getCurrentMinuteStep(){return this.#U}onHide(){this.setFocusColumn("hours")}render(){const e=this.getDatePicker();const t=this.getTimeDate();if(t===null){this.getHeaderTitle().textContent=""}else{this.getHeaderTitle().textContent=e.getType()==="time"?e.formatTime(t):e.formatDate(t)}}}class q extends G{#t=new s.MemoryCache;#O=null;#H=t.Runtime.debounce(this.#N,200,this);getContainer(){return this.#t.remember("container",(()=>t.Tag.render` 166 <div class="ui-time-picker" role="none"> 167 ${this.getDatePicker().getType()==="time"?null:this.getHeaderContainer(this.getPrevBtn(),this.getHeaderTitle())} 168 <div class="ui-time-picker-content" role="none"> 169 ${this.getTimeHighlighter()} 170 <div 171 class="ui-time-picker-selector" 172 role="none" 173 data-selector-id="hour" 174 onmouseenter="${this.#L.bind(this)}" 175 > 176 <div 177 class="ui-time-picker-selector-title" 178 id="${this.getSelectorId("hours")}" 179 >${t.Loc.getMessage("UI_DATE_PICKER_HOURS")}</div> 180 <div class="ui-time-picker-viewport" role="none"> 181 <div class="ui-time-picker-scroll-container" 182 tabindex="0" 183 role="listbox" 184 aria-labelledby="${this.getSelectorId("hours")}" 185 onscroll="${this.#H}" 186 onfocus="${this.#B.bind(this)}" 187 > 188 ${this.getHoursContainer()} 189 </div> 190 </div> 191 </div> 192 <div class="ui-time-picker-time-separator" aria-hidden="true"></div> 193 <div 194 class="ui-time-picker-selector" 195 role="none" 196 data-selector-id="minute" 197 onmouseenter="${this.#L.bind(this)}" 198 > 199 <div 200 class="ui-time-picker-selector-title" 201 id="${this.getSelectorId("minutes")}" 202 >${t.Loc.getMessage("UI_DATE_PICKER_MINUTES")}</div> 203 <div class="ui-time-picker-viewport" role="none"> 204 <div class="ui-time-picker-scroll-container" 205 tabindex="0" 206 role="listbox"
207 aria-labelledby="${this.getSelectorId("minutes")}" 208 onscroll="${this.#H}" 209 onfocus="${this.#B.bind(this)}" 210 > 211 ${this.getMinutesContainer()} 212 </div> 213 </div> 214 </div> 215 ${this.getDatePicker().isAmPmMode()?t.Tag.render` 216 <div 217 class="ui-time-picker-selector" 218 role="none" 219 onmouseenter="${this.#L.bind(this)}" 220 data-selector-id="meridiem" 221 > 222 <div 223 class="ui-time-picker-selector-title" 224 id="${this.getSelectorId("meridiem")}" 225 >AM/PM</div> 226 <div class="ui-time-picker-viewport" role="none"> 227 <div class="ui-time-picker-scroll-container" 228 tabindex="0" 229 role="listbox" 230 aria-labelledby="${this.getSelectorId("meridiem")}" 231 onscroll="${this.#H}" 232 onfocus="${this.#B.bind(this)}" 233 > 234 ${this.getMeridiemsContainer()} 235 </div> 236 </div> 237 </div> 238 `:null} 239 </div> 240 </div> 241 `))}getHeaderTitle(){return this.#t.remember("header-title",(()=>t.Tag.render` 242 <div class="ui-time-picker-header-title" onclick="${this.#I.bind(this)}"></div> 243 `))}getHoursContainer(){return this.#t.remember("hours",(()=>t.Tag.render` 244 <div 245 class="ui-time-picker-list-container" 246 role="none" 247 onclick="${this.#Y.bind(this)}" 248 ></div> 249 `))}getMinutesContainer(){return this.#t.remember("minutes",(()=>t.Tag.render` 250 <div 251 class="ui-time-picker-list-container" 252 onclick="${this.#Y.bind(this)}" 253 ></div> 254 `))}getMeridiemsContainer(){return this.#t.remember("meridiems",(()=>t.Tag.render` 255 <div 256 class="ui-time-picker-list-container" 257 onclick="${this.#Y.bind(this)}" 258 ></div> 259 `))}getSelectorId(e){return`${this.getDatePicker().getId()}-time-selector${e}`}getTimeHighlighter(){return this.#t.remember("time-highlighter",(()=>t.Tag.render`<div class="ui-time-picker-time-highlighter" aria-hidden="true"></div>`))}onShow(){super.onShow();this.focusSelector("hour",!this.getDatePicker().isInline())}renderTo(e){super.renderTo(e);this.#V(this.getHoursContainer());this.#V(this.getMinutesContainer());if(this.getDatePicker().isAmPmMode()){this.#V(this.getMeridiemsContainer())}}render(){super.render();let e=0;this.getHours().forEach((t=>{if(t.selected){e=t.index}this.#W(t)}));this.#K(this.getHoursContainer(),e,false);let t=0;this.getMinutes().forEach((e=>{if(e.selected){t=e.index}this.#j(e)}));this.#K(this.getMinutesContainer(),t,false);const s=this.getDatePicker();if(s.isAmPmMode()){let e=0;this.getMeridiems().forEach((t=>{if(t.selected){e=t.index}this.#X(t)}));this.#K(this.getMeridiemsContainer(),e,false)}}getItemHeight(){return 30}focusSelector(e,s=true){if(this.#O===e){return}if(this.#O!==null){const e=this.getContainer().querySelector(`[data-selector-id="${this.#O}"]`);t.Dom.removeClass(e,"--focused")}this.#O=e;const i=this.getContainer().querySelector(`[data-selector-id="${e}"]`);const n=i.querySelector('[tabindex]:not([tabindex="-1"])');t.Dom.addClass(i,"--focused");if(s){n.focus({preventScroll:true})}}#W(e){const s=this.#t.remember(`hour-${e.value}`,(()=>{const s=n.DateTimeFormat.format(n.DateTimeFormat.getFormat("SHORT_TIME_FORMAT"),m(1970,0,1,e.value),null,true);const i=t.Tag.render` 260 <div 261 class="ui-time-picker-list-item" 262 role="option" 263 aria-label="${s}" 264 data-index="${e.index}" 265 data-value="${e.value}" 266 >${e.name}</div> 267 `;t.Dom.append(i,this.getHoursContainer());return i}));if(e.selected){t.Dom.addClass(s,"--selected")}else{t.Dom.removeClass(s,"--selected")}s.setAttribute("aria-selected",e.selected?"true":"false")}#j(e){const s=this.#t.remember(`minute-${e.value}`,(()=>{const s=n.DateTimeFormat.format("idiff",m(1970,0,1,0,0),m(1970,0,1,0,e.value),true);const i=t.Tag.render` 268 <div 269 class="ui-time-picker-list-item" 270 role="option" 271 aria-label="${s}" 272 data-index="${e.index}" 273 data-value="${e.value}" 274 >${e.name}</div> 275 `;t.Dom.append(i,this.getMinutesContainer());return i}));if(e.selected){t.Dom.addClass(s,"--selected")}else{t.Dom.removeClass(s,"--selected")}s.setAttribute("aria-selected",e.selected?"true":"false");if(e.hidden){s.dataset.index="";t.Dom.addClass(s,"--hidden");s.setAttribute("aria-hidden","true")}else{s.dataset.index=e.index;t.Dom.removeClass(s,"--hidden");s.removeAttribute("aria-hidden")}}#X(e){const s=this.#t.remember(`meridiem-${e.value}`,(()=>{const s=t.Tag.render` 276 <div 277 class="ui-time-picker-list-item" 278 role="option" 279 data-index="${e.index}" 280 data-value="${e.value}" 281 >${e.name}</div> 282 `;t.Dom.append(s,this.getMeridiemsContainer());return s}));if(e.selected){t.Dom.addClass(s,"--selected")}else{t.Dom.removeClass(s,"--selected")}s.setAttribute("aria-selected",e.selected?"true":"false")}#V(e){const s=e.parentNode.parentNode;const i=s.offsetHeight/2-this.getItemHeight()/2;t.Dom.style(e,{marginTop:`${i}px`,marginBottom:`${i}px`})}#K(e,t,s=true){const i=e.parentNode;const n=this.getItemHeight()*t;if(i.scrollTop!==n){i.scrollTo({top:n,behavior:s?"smooth":"instant"});return true}return false}#Y(e){const t=e.target;if(!t.closest(".ui-time-picker-list-item")){return}const s=t.parentNode;const i=Number(t.dataset.index);const n=this.#K(s,i);if(!n){this.#Z(s.parentNode)}}
282#I(e){this.emit("onTitleClick")}getPrevBtnLabel(){return t.Loc.getMessage("UI_DATE_PICKER_BACK_TO_DAYS")}getNextBtnLabel(){return""}#L(e){this.focusSelector(e.target.dataset.selectorId)}#B(e){this.focusSelector(e.target.parentNode.parentNode.dataset.selectorId)}#N(e){const t=e.target;const s=t.scrollTop;const i=s%this.getItemHeight()===0;if(i){this.#Z(t)}}#Z(e){const t=e.scrollTop;const s=t/this.getItemHeight();const i=e.parentNode.parentNode;const n=i.dataset.selectorId;const r=i.querySelector(`[data-index="${s}"]`);const a=this.getTimeDate();const o=a===null?-1:a.getUTCHours();const l=a===null?-1:a.getUTCMinutes();switch(n){case"hour":{const e=Number(r.dataset.value);if(o!==e){this.emit("onSelect",{hour:e})}break}case"minute":{const e=Number(r.dataset.value);if(l!==e){this.emit("onSelect",{minute:e})}break}case"meridiem":{const e=r.dataset.value;if(e==="am"&&o>=12){const e=o-12;this.emit("onSelect",{hour:e})}else if(e==="pm"&&o>=0&&o<12){const e=o+12;this.emit("onSelect",{hour:e})}break}}}}class Q extends G{#t=new s.MemoryCache;#G=true;getContainer(){return this.#t.remember("container",(()=>t.Tag.render` 283 <div class="ui-time-picker-grid${this.getDatePicker().isAmPmMode()?" --am-pm":""}"> 284 ${this.getDatePicker().getType()==="time"?null:this.getHeaderContainer(this.getPrevBtn(),this.getHeaderTitle())} 285 <div class="ui-time-picker-grid-content"> 286 <div class="ui-time-picker-grid-column"> 287 <div 288 class="ui-time-picker-grid-column-title" 289 id="${this.getHoursColumnId()}" 290 >${t.Loc.getMessage("UI_DATE_PICKER_HOURS")}</div> 291 <div class="ui-time-picker-grid-column-content"> 292 ${this.getHoursContainer()} 293 </div> 294 </div> 295 <div class="ui-time-picker-grid-column-separator"></div> 296 <div class="ui-time-picker-grid-column"> 297 <div 298 class="ui-time-picker-grid-column-title" 299 id="${this.getMinutesColumnId()}" 300 >${t.Loc.getMessage("UI_DATE_PICKER_MINUTES")}</div> 301 <div class="ui-time-picker-grid-column-content"> 302 ${this.getMinutesContainer()} 303 </div> 304 </div> 305 </div> 306 </div> 307 `))}getHeaderTitle(){return this.#t.remember("header-title",(()=>t.Tag.render` 308 <div class="ui-time-picker-grid-header-title" onclick="${this.#I.bind(this)}"></div> 309 `))}getHoursContainer(){return this.#t.remember("hours",(()=>t.Tag.render` 310 <div 311 role="listbox" 312 aria-labelledby="${this.getHoursColumnId()}" 313 class="ui-time-picker-grid-column-items --hours" 314 onclick="${this.#Y.bind(this)}" 315 ></div> 316 `))}getHoursColumnId(){return`${this.getDatePicker().getId()}-hours-column`}getMinutesContainer(){return this.#t.remember("minutes",(()=>t.Tag.render` 317 <div 318 role="listbox" 319 aria-labelledby="${this.getMinutesColumnId()}" 320 class="ui-time-picker-grid-column-items --minutes" 321 onclick="${this.#Y.bind(this)}" 322 onscroll="${t.Runtime.debounce(this.#q,100,this)}" 323 ></div> 324 `))}getMinutesColumnId(){return`${this.getDatePicker().getId()}-minutes-column`}onHide(){super.onHide();this.#G=true}render(){super.render();let e=null;this.getHours().forEach((t=>{const s=this.#W(t,this.getHoursContainer());if(t.focused){e=s}}));let s=null;let i=null;this.getMinutes().forEach((e=>{const t=this.#j(e,this.getMinutesContainer());if(e.selected){s=t}if(e.focused){i=t}}));if(this.#G){t.Dom.style(this.getMinutesContainer(),"height",`${this.getHoursContainer().offsetHeight}px`);
324if(s!==null){this.#K(s,false)}this.#q();this.#G=false}if(this.getDatePicker().isFocused()){if(this.getFocusColumn()==="hours"&&e!==null&&this.getDatePicker().getFocusInputModality()==="keyboard"){e.focus({preventScroll:true})}else if(this.getFocusColumn()==="minutes"&&i!==null&&this.getDatePicker().getFocusInputModality()==="keyboard"){i.focus({preventScroll:true})}}}#W(e,s){const i=this.#t.remember(`hour-${e.value}`,(()=>{const i=n.DateTimeFormat.format(n.DateTimeFormat.getFormat("SHORT_TIME_FORMAT"),m(1970,0,1,e.value),null,true);const r=t.Tag.render` 325 <button 326 type="button" 327 role="option" 328 class="ui-time-picker-grid-item" 329 aria-label="${i}" 330 data-index="${e.index}" 331 data-hour="${e.value}" 332 data-tab-priority="true" 333 onmouseenter="${this.#_.bind(this)}" 334 onmouseleave="${this.#R.bind(this)}" 335 onfocus="${this.#B.bind(this)}" 336 ><span class="ui-time-picker-grid-item-inner">${e.name}</span></button> 337 `;if(this.getDatePicker().isAmPmMode()){if(e.value===0){r.dataset.meridiem="AM";t.Dom.addClass(r,"--has-meridiem")}else if(e.value===12){r.dataset.meridiem="PM";t.Dom.addClass(r,"--has-meridiem")}}t.Dom.append(r,s);return r}));if(e.selected){t.Dom.addClass(i,"--selected")}else{t.Dom.removeClass(i,"--selected")}const r=e.selected?"true":"false";if(i.getAttribute("aria-selected")!==r){i.setAttribute("aria-selected",r)}if(e.focused){t.Dom.addClass(i,"--focused")}else{t.Dom.removeClass(i,"--focused")}i.tabIndex=e.tabIndex;return i}#j(e,s){const i=this.#t.remember(`minute-${e.value}`,(()=>{const i=n.DateTimeFormat.format("idiff",m(1970,0,1,0,0),m(1970,0,1,0,e.value),true);const r=t.Tag.render` 338 <button 339 type="button" 340 class="ui-time-picker-grid-item" 341 role="option" 342 aria-label="${i}" 343 data-index="${e.index}" 344 data-minute="${e.value}" 345 onmouseenter="${this.#_.bind(this)}" 346 onmouseleave="${this.#R.bind(this)}" 347 onfocus="${this.#B.bind(this)}" 348 ><span class="ui-time-picker-grid-item-inner">${e.name}</span></button> 349 `;t.Dom.append(r,s);return r}));if(e.selected){t.Dom.addClass(i,"--selected")}else{t.Dom.removeClass(i,"--selected")}const r=e.selected?"true":"false";if(i.getAttribute("aria-selected")!==r){i.setAttribute("aria-selected",r)}if(e.hidden){i.dataset.index="";t.Dom.addClass(i,"--hidden")}else{i.dataset.index=e.index;t.Dom.removeClass(i,"--hidden")}if(e.focused){t.Dom.addClass(i,"--focused")}else{t.Dom.removeClass(i,"--focused")}i.tabIndex=e.tabIndex;return i}#K(e,t=true){const s=20;const i=this.getMinutesContainer().scrollTop;const n=i+s;const r=e.offsetTop;const a=r+e.offsetHeight;const o=this.getMinutesContainer().offsetHeight;const l=i+o-s;const u=r>=n&&r<=l&&a<=l&&a>=n;if(!u){this.getMinutesContainer().scrollTo({top:e.offsetTop-o/2,behavior:t?"smooth":"instant"})}}adjustMinuteFocusPosition(){const e=this.getContainer().ownerDocument.activeElement;if(!e.closest(".ui-time-picker-grid-item")){return}this.#K(e)}#q(){const e=this.getMinutesContainer().scrollTop;const s=this.getMinutesContainer().scrollHeight;const i=this.getMinutesContainer().offsetHeight;const n=this.getMinutesContainer().parentNode.parentNode;if(e>0){t.Dom.addClass(n,"--top-shadow")}else{t.Dom.removeClass(n,"--top-shadow")}if(e===s-i){t.Dom.removeClass(n,"--bottom-shadow")}else{t.Dom.addClass(n,"--bottom-shadow")}}#Y(e){const s=e.target;if(!s.closest(".ui-time-picker-grid-item")){return}if(t.Type.isStringFilled(s.dataset.hour)){this.setFocusColumn("hours");const e=Number(s.dataset.hour);this.emit("onSelect",{hour:e})}else if(t.Type.isStringFilled(s.dataset.minute)){this.setFocusColumn("minutes");this.#K(s);const e=Number(s.dataset.minute);this.emit("onSelect",{minute:e})}}#_(e){const{hour:s,minute:i}=e.target.dataset;if(t.Type.isStringFilled(s)){this.setFocusColumn("hours");this.emit("onFocus",{hour:t.Text.toInteger(s)})}else if(t.Type.isStringFilled(i)){this.setFocusColumn("minutes");this.emit("onFocus",{minute:t.Text.toInteger(i)})}}#R(e){this.emit("onBlur")}#B(e){const{hour:s,minute:i}=e.target.dataset;const n=this.getFocusColumn();if(t.Type.isStringFilled(s)){this.setFocusColumn("hours")}else if(t.Type.isStringFilled(i)){this.setFocusColumn("minutes")}if(n!==this.getFocusColumn()){this.render()}}
349#I(e){this.emit("onTitleClick")}getPrevBtnLabel(){return t.Loc.getMessage("UI_DATE_PICKER_BACK_TO_DAYS")}getNextBtnLabel(){return""}}class z extends o{#t=new s.MemoryCache;getContainer(){return this.#t.remember("container",(()=>t.Tag.render` 350 <div 351 class="ui-year-picker" 352 role="none" 353 > 354 ${this.getHeaderContainer(this.getPrevBtn(),this.getHeaderTitle(),this.getNextBtn())} 355 ${this.getContentContainer(this.getTrioContainer())} 356 </div> 357 `))}getTrioContainer(){return this.#t.remember("trio-container",(()=>t.Tag.render` 358 <div 359 class="ui-year-picker-content" 360 role="grid" 361 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_YEAR_VIEW_LABEL")}" 362 aria-multiselectable="${this.getDatePicker().isSingleMode()?"false":"true"}" 363 ></div> 364 `))}getHeaderTitle(){return this.#t.remember("header-title",(()=>t.Tag.render` 365 <div class="ui-year-picker-header-title" aria-live="polite"></div> 366 `))}getYears(){const{year:e}=f(this.getDatePicker().getToday());const t=this.getDatePicker().getFocusDate();const s=this.getDatePicker().getInitialFocusDate().getUTCFullYear();const i=[];let n=0;let r=this.#Q();for(let a=0;a<4;a++){const a=[];for(let i=0;i<3;i++){const i=t!==null&&t.getUTCFullYear()===r;a.push({index:n,year:r,name:r,current:e===r,selected:this.getDatePicker().isDateSelected(m(r),"year"),disabled:!this.getDatePicker().isDateAllowed(m(r),"year"),focused:i,tabIndex:i||r===s?0:-1});r++;n++}i.push(a)}return i}#Q(){const{year:e}=this.getDatePicker().getViewDateParts();const{year:t}=f(this.getDatePicker().getToday());let s=t-4;s-=12*Math.ceil((s-e)/12);return s}getFirstYear(){return this.#Q()}getLastYear(){return this.#Q()+11}renderTo(e){super.renderTo(e);t.Event.bind(this.getContentContainer(),"click",this.#u.bind(this))}render(){let e=null;const t=this.getDatePicker().isFocused();const s=this.getYears();s.forEach(((t,s)=>{const i=this.#w(s);t.forEach((t=>{const s=this.#z(t,i);if(t.focused){e=s}}))}));if(e!==null&&t&&this.getDatePicker().getFocusInputModality()==="keyboard"){e.focus({preventScroll:true})}const i=s[0][0].name;const n=s.at(-1).at(-1).name;this.getHeaderTitle().textContent=`${i} \u2014 ${n}`;this.getPrevBtn().disabled=!this.getDatePicker().canNavigate("year","prev");this.getNextBtn().disabled=!this.getDatePicker().canNavigate("year","next")}#w(e){return this.#t.remember(`quarter-${e}`,(()=>{const e=t.Tag.render`<div class="ui-year-picker-trio" role="row"></div>`;t.Dom.append(e,this.getTrioContainer());return e}))}#z(e,s){const i=this.#t.remember(`year-${e.index}`,(()=>{const i=t.Tag.render` 367 <button 368 type="button" 369 class="ui-year-picker-year" 370 role="gridcell" 371 data-year="${e}" 372 data-tab-priority="true" 373 onmouseenter="${this.#_.bind(this)}" 374 onmouseleave="${this.#R.bind(this)}" 375 >${t.Text.encode(e.name)}</button> 376 `;t.Dom.append(i,s);return i}));const n=Number(i.dataset.year);if(n!==e.year){i.dataset.year=e.year;i.textContent=e.name}const r=e.selected?"true":"false";if(i.getAttribute("aria-selected")!==r){i.setAttribute("aria-selected",r)}if(e.current){t.Dom.addClass(i,"--current");if(i.getAttribute("aria-current")!=="date"){i.setAttribute("aria-current","date")}}else{t.Dom.removeClass(i,"--current");if(i.hasAttribute("aria-current")){i.removeAttribute("aria-current")}}if(e.selected){t.Dom.addClass(i,"--selected")}else{t.Dom.removeClass(i,"--selected")}if(e.focused){t.Dom.addClass(i,"--focused")}else{t.Dom.removeClass(i,"--focused")}if(e.disabled){t.Dom.addClass(i,"--disabled")}else{t.Dom.removeClass(i,"--disabled")}i.disabled=Boolean(e.disabled);i.tabIndex=e.tabIndex;return i}#_(e){const s=e.target.dataset;const i=t.Text.toInteger(s.year);this.emit("onFocus",{year:i})}#R(e){this.emit("onBlur")}#u(e){if(!t.Dom.hasClass(e.target,"ui-year-picker-year")||e.target.disabled){return}const s=t.Text.toInteger(e.target.dataset.year);this.emit("onSelect",{year:s})}getPrevBtnLabel(){return t.Loc.getMessage("UI_DATE_PICKER_PREV_DECADE")}getNextBtnLabel(){return t.Loc.getMessage("UI_DATE_PICKER_NEXT_DECADE")}}let J=null;class ee extends i.EventEmitter{#J=null;#ee=null;#te=null;#se=[];#ie=null;#ne=null;#re="date";#ae=null;#oe="single";#le=new Map;#ue=1;#de=true;#ce=false;#he=true;#ge=1;#me=Infinity;#fe=0;#pe=null;#De=null;#Te=true;#ye=false;#be=[0,6];#Ce=[];#ke=[];#Me=false;#Ee=false;#ve=false;#Se=5;#Fe="00:00:00";#Pe=60;#Ie="grid";#we=true;#Ae=null;#_e=null;#Re=null;#$e=null;#Ue=true;#xe=", ";#Oe=null;#He={};#Ne=true;#Le=true;#Be=true;#Ye=true;#t=new s.MemoryCache;#s=false;#Ve=false;#We=true;#Ke=null;#je=null;#Xe=null;#Ze=true;#Ge=null;#qe=false;#Qe=[];#ze=[];#Je=[];#et=[];#tt=null;#st=null;#it=null;#nt=false;constructor(e){super();this.setEventNamespace("BX.UI.DatePicker");const s=t.Extension.getSettings("ui.date-picker");const i=t.Type.isPlainObject(e)?e:{};this.#J=t.Text.getRandom();this.#rt(i.type);this.#at(i.selectionMode);this.#Ge=t.Type.isStringFilled(i.locale)?i.locale:s.get("locale","en");this.#Me=t.Type.isBoolean(i.enableTime)?i.enableTime:this.#Me;if(this.isMultipleMode()){this.#Me=false}this.#Ee=t.Type.isBoolean(i.allowSeconds)?i.allowSeconds:this.#Ee;this.#ve=t.Type.isBoolean(i.amPmMode)?i.amPmMode:n.DateTimeFormat.isAmPmMode();this.#we=t.Type.isBoolean(i.cutZeroTime)?i.cutZeroTime:this.#we;this.#Ke=t.Type.isStringFilled(i.dateFormat)?i.dateFormat:this.#ot();this.setDefaultTime(i.defaultTime);this.setDefaultTimeSpan(i.defaultTimeSpan);this.#je=t.Type.isStringFilled(i.timeFormat)?i.timeFormat:n.DateTimeFormat.getFormat(this.#Ee?"LONG_TIME_FORMAT":"SHORT_TIME_FORMAT");this.#Se=t.Type.isNumber(i.minuteStep)&&[1,5,10,15,30].includes(i.minuteStep)?i.minuteStep:this.#Se;this.#Ie=i.timePickerStyle==="wheel"?"wheel":this.#Ie;this.#ee=this.getToday();this.#Ue=t.Type.isBoolean(i.useInputEvents)?i.useInputEvents:this.#Ue;this.setAutoFocus(i.autoFocus);this.setInputField(i.inputField);this.setRangeStartInput(i.rangeStartInput);this.setRangeEndInput(i.rangeEndInput);this.setDateSeparator(i.dateSeparator);this.selectDates(i.selectedDates,{emitEvents:false});this.#te=L(i.startDate)?this.createDate(i.startDate):null;const r=this.getDefaultViewDate();this.setViewDate(r);this.#Ve=i.inline===true;let a=s.get("firstWeekDay",this.#ue);a=t.Type.isNumber(i.firstWeekDay)?i.firstWeekDay:a;this.#ue=Math.min(Math.max(0,a),6);this.#ge=t.Type.isNumber(i.numberOfMonths)?i.numberOfMonths:this.#ge;this.#ye=i.fullYear===true;if(this.#ye){this.#Me=false;this.#ge=12;this.setViewDate(m(r.getUTCFullYear(),0,1))}this.#de=t.Type.isBoolean(i.showWeekDays)?i.showWeekDays:this.#de;this.#ce=t.Type.isBoolean(i.showWeekNumbers)?i.showWeekNumbers:this.#ce;const o=s.get("weekends",[]);this.#be=t.Type.isArray(i.weekends)?i.weekends:t.Type.isArrayFilled(o)?o:this.#be;const l=s.get("holidays",[]);this.#Ce=t.Type.isArray(i.holidays)?i.holidays:l;const u=s.get("workdays",[]);this.#ke=t.Type.isArray(i.workdays)?i.workdays:u;this.#he=this.#ge>1?false:this.#he;this.#he=t.Type.isBoolean(i.showOutsideDays)?i.showOutsideDays:this.#he;this.#He=t.Type.isPlainObject(i.popupOptions)?i.popupOptions:this.#He;this.setMinDays(i.minDays);this.setMaxDays(i.maxDays);this.setMinDate(i.minDate);this.setMaxDate(i.maxDate);this.setRestrictNavigation(i.restrictNavigation);this.setHideOnSelect(i.hideOnSelect);this.setTargetNode(i.targetNode);this.setToggleSelected(i.toggleSelected);this.setAutoHide(i.autoHide);this.setHideByEsc(i.hideByEsc);this.setCacheable(i.cacheable);this.setSingleOpening(i.singleOpening);this.setDayColors(i.dayColors);this.setDayMarks(i.dayMarks);this.setDisabledDates(i.disabledDates);this.setHideHeader(i.hideHeader);this.setPresets(i.presets);this.subscribeFromOptions(i.events);this.#it=new j(this)}getId(){return this.#J}setViewDate(e){let t=this.createDate(e);if(t===null){return}t=Y(t,0,0,0);this.#ee=t;if(this.isDateOutOfView(this.getFocusDate())){this.setFocusDate(null,{adjustViewDate:false,render:false})}if(this.isRendered()){this.getPicker().render()}}getViewDate(){return this.#ee}
376getDefaultViewDate(){return this.getSelectedDate()||this.#te||this.getToday()}adjustViewDate(e){if(this.isSingleMode()){if(this.getNumberOfMonths()===1){if(!p(e,this.getViewDate(),"month")){this.setViewDate(m(e.getUTCFullYear(),e.getUTCMonth()))}}else{const{year:t,month:s}=this.getViewDateParts();const i=m(t,s);const n=g(m(t,s+this.getNumberOfMonths()-1),"month");if(e<i||e>=n){this.setViewDate(m(e.getUTCFullYear(),e.getUTCMonth()))}}}else{const t=this.getPicker("day");const s=t.getMonths();const i=s[0].weeks[0][0].date;const n=s.at(-1).weeks.at(-1).at(-1).date;if(e<i||e>n){this.setViewDate(m(e.getUTCFullYear(),e.getUTCMonth()))}}}getViewDateParts(){return f(this.#ee)}selectDate(e,t={}){if(this.isRangeMode()){throw new Error("DatePicker: to select a range use selectRange method.")}if(!L(e)){return false}const s=this.createDate(e);if(this.isDateSelected(s,"datetime")){return false}if(!this.isDateAllowed(s)){return false}const i=this.isDateSelected(s,"day");if(!i&&this.isMultipleMode()&&this.#se.length>=this.getMaxDays()){return false}const{emitEvents:n,render:r,updateInputs:a}={emitEvents:true,render:true,updateInputs:true,...t};if(n&&!this.#lt(s)){return false}if(this.isMultipleMode()){if(i){const e=this.#se.findIndex((e=>p(e,s,"day")));if(e!==-1){this.#se.splice(e,1,s)}}else{const e=this.#se.findIndex((e=>e>s));if(e===-1){this.#se.push(s)}else if(e===0){this.#se.unshift(s)}else{this.#se.splice(e,0,s)}}}else{const e=this.#se[0]||null;if(n&&e!==null){if(!this.#ut(e)){return false}this.deselectDate(e,{emitEvents:false,render:false});this.emit(T.DESELECT,{date:e})}this.#se=[s]}this.adjustViewDate(s);if(this.isRendered()&&r){this.getPicker().render()}this.#dt();if(a){this.updateInputFields()}if(n){this.emit(T.SELECT,{date:s});this.emit(T.SELECT_CHANGE)}return true}selectDates(e,s={}){if(!t.Type.isArrayFilled(e)){return}if(this.isRangeMode()){const[t,i]=e;this.selectRange(t,i,s)}else{e.forEach((e=>{this.selectDate(e,s)}))}}selectRange(e,t=null,s={}){if(!this.isRangeMode()){throw new Error("DatePicker: to select a date use selectDate method.")}if(!L(e)||t!==null&&!L(t)){return false}let i=this.createDate(e);let n=t===null?null:this.createDate(t);if(i===null&&n===null){return false}if(i!==null&&n!==null&&i>n){[i,n]=[n,i]}if(i!==null&&!this.isDateAllowed(i)){return false}if(n!==null&&!this.isDateAllowed(n)){return false}const r=this.#se[0]||null;const a=this.#se[1]||null;if(p(i,r,"datetime")&&(n===null&&a===null||p(n,a,"datetime"))){return false}const{emitEvents:o,updateInputs:l}={emitEvents:true,updateInputs:true,...s};const u=r!==null&&o&&!p(i,r,"datetime")&&!p(n,r,"datetime");const d=a!==null&&o&&!p(i,a,"datetime")&&!p(n,a,"datetime");const c=!this.isDateSelected(i,"datetime");const h=n!==null&&(!this.isDateSelected(n,"datetime")||a===null&&p(n,i,"datetime"));if(u&&!this.#ut(r)){return false}if(d&&!this.#ut(a)){return false}if(c&&!this.#lt(i)){return false}if(h&&!this.#lt(n)){return false}if(u){this.deselectDate(r,{emitEvents:false,render:false});this.emit(T.DESELECT,{date:r})}if(d){this.deselectDate(a,{emitEvents:false,render:false});this.emit(T.DESELECT,{date:a})}this.#se=n===null?[i]:[i,n];this.adjustViewDate(i);if(this.isRendered()){this.getPicker().render()}this.#dt();if(l){this.updateInputFields()}if(o){if(c){this.emit(T.SELECT,{date:i})}if(h){this.emit(T.SELECT,{date:n})}this.emit(T.SELECT_CHANGE)}return true}deselectDate(e,t={}){if(!L(e)){return false}const s=this.createDate(e);const{emitEvents:i,render:n,updateInputs:r}={emitEvents:true,render:true,updateInputs:true,...t};if(i&&!this.#ut(s)){return false}if(this.isMultipleMode()&&this.#se.length<=this.getMinDays()){return false}const a=this.#se.findIndex((e=>p(s,e)));if(a===-1){return false}this.#se.splice(a,1);if(i){this.emit(T.DESELECT,{date:s});this.emit(T.SELECT_CHANGE)}if(this.isRendered()&&n){this.getPicker().render()}this.#dt();if(r){this.updateInputFields()}return true}deselectAll(e={}){const t=[...this.#se];t.forEach((t=>{this.deselectDate(t,e)}));return this.#se.length===0}#lt(e){const t=new i.BaseEvent({data:{date:e}});this.emit(T.BEFORE_SELECT,t);return!t.isDefaultPrevented()}#ut(e){const t=new i.BaseEvent({data:{date:e}});
376this.emit(T.BEFORE_DESELECT,t);return!t.isDefaultPrevented()}getSelectedDates(){return this.#se}getSelectedDate(){return this.#se[0]||null}getRangeStart(){return this.#se[0]||null}getRangeEnd(){return this.#se[1]||null}isDateSelected(e,t="day"){return this.#se.some((s=>p(e,s,t)))}setFocusDate(e,t={}){if(!L(e)&&e!==null){return}this.#ie=e===null?null:this.createDate(e);const{render:s,adjustViewDate:i,inputModality:n}={render:true,adjustViewDate:true,inputModality:"pointer",...t};this.setFocusInputModality(this.#ie===null?null:n);if(i&&this.isDateOutOfView(this.#ie)){this.setViewDate(m(this.#ie.getUTCFullYear(),this.#ie.getUTCMonth()))}if(this.isRendered()&&s){this.getPicker().render()}}getFocusDate(){return this.#ie}getInitialFocusDate(e="datetime"){const s=this.getFocusDate();if(s!==null){return s}if(e==="range-start"){const{year:e,month:t,day:s}=this.getViewDateParts();return this.getRangeStart()||m(e,t,s)}if(e==="range-end"){const{year:e,month:t,day:s}=this.getViewDateParts();return this.getRangeEnd()||m(e,t,s)}const i=this.getSelectedDates();if(t.Type.isArrayFilled(i)){const e=i.find((e=>!this.isDateOutOfView(e)));if(t.Type.isDate(e)){return e}}return this.getViewDate()}getFocusInputModality(){return this.#ne}setFocusInputModality(e){this.#ne=e}isDateOutOfView(e){if(e===null){return false}let t=false;const{year:s}=this.getViewDateParts();const{year:i}=f(e);if(this.getCurrentView()==="day"){const s=this.getPicker("day");const i=s.getFirstDay();const n=s.getLastDay();const r=m(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());t=r<i||r>=n}else if(this.getCurrentView()==="month"){t=s!==i}else if(this.getCurrentView()==="year"){const e=this.getPicker("year");const s=e.getFirstYear();const n=e.getLastYear();t=i<s||i>n}return t}setCurrentView(e){if(this.#ae===e){return}const s=this.getPicker(e);if(s===null){return}t.Dom.style(this.getPicker()?.getContainer(),"display","none");t.Dom.attr(this.getPicker()?.getContainer(),"inert",true);this.getPicker()?.onHide();this.#ae=e;this.setFocusDate(null,{render:false});if(!s.isRendered()){s.renderTo(this.getViewsContainer())}t.Dom.style(s.getContainer(),"display",null);t.Dom.attr(s.getContainer(),"inert",null);s.onShow();s.render();this.focus()}getCurrentView(){return this.#ae}getPicker(e){const s=t.Type.isStringFilled(e)?e:this.#ae;let i=this.#le.get(s)||null;if(i===null){i=this.#ct(s);if(i!==null){this.#le.set(s,i)}}return i}#rt(e){if(["date","year","month","time"].includes(e)){this.#re=e}}getType(){return this.#re}getFirstWeekDay(){return this.#ue}getNumberOfMonths(){return this.#ge}shouldShowWeekDays(){return this.#de}shouldShowWeekNumbers(){return this.#ce}shouldShowOutsideDays(){return this.#he}getWeekends(){return this.#be}isWeekend(e){return this.#be.includes(e.getUTCDay())}isHoliday(e){return this.#Ce.some((([t,s])=>e.getUTCDate()===t&&e.getUTCMonth()===s))}isWorkday(e){return this.#ke.some((([t,s])=>e.getUTCDate()===t&&e.getUTCMonth()===s))}isDayOff(e){return!this.isWorkday(e)&&(this.isWeekend(e)||this.isHoliday(e))}isTimeEnabled(){return this.#Me}setDefaultTime(e){if(t.Type.isStringFilled(e)&&/([01]{1,2}\d|2[0-3]):[0-5]\d(:[0-5]\d)?/.test(e)){this.#Fe=e}}getDefaultTime(){return this.#Fe}setDefaultTimeSpan(e){if(t.Type.isNumber(e)&&e>=0){this.#Pe=e}}getDefaultTimeSpan(){return this.#Pe}getDefaultTimeParts(){const e=this.getDefaultTime().split(":");return{hours:Number(e[0]||0),minutes:Number(e[1]||0),seconds:Number(e[2]||0)}}getTimePickerStyle(){return this.#Ie}shouldCutZeroTime(){return this.#we}shouldAllowSeconds(){return this.#Ee}setToggleSelected(e){if(t.Type.isBoolean(e)||t.Type.isNull(e)){this.#Xe=e}}shouldToggleSelected(){if(this.#Xe!==null){return this.#Xe}return this.isMultipleMode()}setMaxDays(e){if(t.Type.isNumber(e)&&e>0){this.#me=e}}getMaxDays(){return this.#me}setMinDays(e){if(t.Type.isNumber(e)&&e>0){this.#fe=e}}getMinDays(){return this.#fe}setMinDate(e){if(e===null||t.Type.isUndefined(e)){this.#pe=null}else if(L(e)){this.#pe=this.createDate(e)}if(this.isRendered()){this.getPicker()?.render()}}getMinDate(){return this.#pe}setMaxDate(e){if(e===null||t.Type.isUndefined(e)){this.#De=null}else if(L(e)){this.#De=this.createDate(e)}if(this.isRendered()){this.getPicker()?.render()}}getMaxDate(){return this.#De}setRestrictNavigation(e){if(t.Type.isBoolean(e)){this.#Te=e;if(this.isRendered()){this.getPicker()?.render()}}}isNavigationRestricted(){return this.#Te}isDateAllowed(e,t="datetime"){if(this.#pe===null&&this.#De===null&&this.#Je.length===0){return true}const s=e=>{switch(t){case"year":return e.getUTCFullYear();case"month":return e.getUTCFullYear()*12+e.getUTCMonth();case"day":return Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());default:return e.getTime()}};const i=s(e);if(this.#pe!==null&&i<s(this.#pe)){return false}if(this.#De!==null&&i>s(this.#De)){return false}if((t==="day"||t==="datetime")&&this.isDateDisabled(e)){return false}return true}canNavigate(e,t){if(!this.#Te){return true}const s=t==="prev"?this.#pe:this.#De;if(s===null){return true}if(e==="day"){const{year:e,month:s}=this.getViewDateParts();const i=this.getNumberOfMonths();const n=m(e,s,1);const r=d(m(e,s+i,1),"day",-1);const a=t==="prev"?d(n,"day",-1):d(r,"day",1);return this.isDateAllowed(a,"day")}if(e==="month"){const e=this.getViewDate().getUTCFullYear();return t==="prev"?s.getUTCFullYear()<e:s.getUTCFullYear()>e}if(e==="year"){const e=this.getPicker("year");
376if(e===null){return true}return t==="prev"?s.getUTCFullYear()<e.getFirstYear():s.getUTCFullYear()>e.getLastYear()}return true}isFullYear(){return this.#ye}isAmPmMode(){return this.#ve}getMinuteStep(){return this.#Se}getMinuteStepByDate(e){let s=this.getMinuteStep();if(!t.Type.isDate(e)){return s}const i=e.getUTCMinutes();if(i>0&&i%s!==0){const e=[30,15,10,5,1];const t=e.indexOf(i);const n=t===-1?[1]:e.slice(t);for(const e of n){if(i%e===0){s=e;break}}}return s}getToday(){return this.createDate(new Date)}show(){this.updateFromInputFields();if(this.isInline()){if(!this.isRendered()){this.#ht()}}else{this.getPopup().show()}}hide(){if(!this.isRendered()||this.isInline()){return}this.getPopup().close()}isOpen(){return this.#Oe!==null&&this.#Oe.isShown()}adjustPosition(){if(this.isRendered()&&this.isOpen()){this.getPopup().adjustPosition()}}toggle(){if(this.isOpen()){this.hide()}else{this.show()}}focus(){if(this.isRendered()){const e=this.getRootContainer();const[,t=null]=H(e,(e=>e.dataset.tabPriority==="true"));if(t===null){this.getRootContainer().focus({preventScroll:true})}else{t.focus({preventScroll:true,focusVisible:true});this.#it.setLastFocusElement(t)}}}setSingleOpening(e){if(t.Type.isBoolean(e)){this.#Ye=e}}isSingleOpening(){return this.#Ye}setDayColors(e){if(!t.Type.isArray(e)){return}const s=[];for(const i of e){if(!t.Type.isStringFilled(i.bgColor)&&!t.Type.isStringFilled(i.textColor)){continue}const e=this.#gt(i.matcher);if(t.Type.isArrayFilled(e)){s.push({bgColor:t.Type.isStringFilled(i.bgColor)?i.bgColor:null,textColor:t.Type.isStringFilled(i.textColor)?i.textColor:null,matchers:e})}}this.#Qe=s;if(this.isRendered()){this.getPicker().render()}}getDayColor(e){return this.#Qe.find((t=>V(e,t.matchers)))||null}setDayMarks(e){if(!t.Type.isArray(e)){return}const s=[];for(const i of e){if(!t.Type.isStringFilled(i.bgColor)){continue}const e=this.#gt(i.matcher);if(t.Type.isArrayFilled(e)){s.push({bgColor:i.bgColor,matchers:e})}}this.#ze=s;if(this.isRendered()){this.getPicker().render()}}getDayMarks(e){return this.#ze.filter((t=>V(e,t.matchers)))}setDisabledDates(e){if(t.Type.isUndefined(e)||e===null){this.#Je=[]}else{this.#Je=this.#gt(e)}if(this.isRendered()){this.getPicker()?.render();this.#dt()}}getDisabledDates(){return this.#Je}isDateDisabled(e){if(this.#Je.length===0){return false}return V(e,this.#Je)}setPresets(e){if(!t.Type.isArray(e)){return}this.#et=e.filter((e=>t.Type.isPlainObject(e)&&t.Type.isStringFilled(e.label)&&!t.Type.isUndefined(e.value)));if(!this.isRendered()){return}const s=this.#t.get("body");if(this.#mt()){const e=this.#ft();if(this.#tt!==null){t.Dom.replace(this.#tt,e)}else if(s){t.Dom.append(e,s)}this.#tt=e;this.#st?.activate()}else if(this.#tt!==null){this.#pt();t.Dom.remove(this.#tt);this.#tt=null}}getPresets(){return this.#et}#mt(){return this.#et.length>0&&this.#oe!=="none"&&this.getType()==="date"}#ft(){const e=t.Tag.render` 377 <div 378 class="ui-date-picker-presets" 379 role="listbox" 380 aria-label="${t.Loc.getMessage("UI_DATE_PICKER_PRESETS_LABEL")}" 381 ></div> 382 `;this.#et.forEach(((s,i)=>{const n=this.#Dt(s,i);if(n!==null){t.Dom.append(n,e)}}));this.#pt();this.#st=new a.FocusZone(e,{focusOutBehavior:"wrap"});return e}#pt(){if(this.#st!==null){this.#st.deactivate();this.#st=null}}#Dt(e,s){const i=this.#Tt(e);const n=!this.#yt(e,i);const r=!n&&this.#bt(e,i);const a=this.#Ct(e,i);const o=["ui-date-picker-preset"];if(r){o.push("--active")}if(n){o.push("--disabled")}const l=a===null?"":t.Tag.render`<span class="ui-date-picker-preset-subtitle">${a}</span>`;const u=t.Tag.render` 383 <button 384 type="button" 385 class="${o.join(" ")}" 386 data-index="${s}" 387 aria-pressed="${r?"true":"false"}" 388 onclick="${this.#kt.bind(this,e)}" 389 onmouseenter="${this.#Mt.bind(this,e)}" 390 onmouseleave="${this.#Et.bind(this)}" 391 > 392 <span class="ui-date-picker-preset-label">${e.label}</span> 393 ${l} 394 </button> 395 `;u.disabled=n;return u}#yt(e,t=null){if(this.#pe===null&&this.#De===null){return true}const s=t===null?this.#Tt(e):t;if(s===null){return true}return s.every((e=>this.isDateAllowed(e)))}#Tt(e){return B(e,this.#oe,this.getDateFormat())}#bt(e,t=null){const s=t===null?this.#Tt(e):t;if(s===null){return false}const i=this.isTimeEnabled()||this.getType()==="time"?"datetime":"day";
395if(this.isSingleMode()){const e=this.getSelectedDate();return e!==null&&p(s[0],e,i)}if(this.isRangeMode()){const e=this.getRangeStart();const t=this.getRangeEnd();return e!==null&&t!==null&&p(s[0],e,i)&&p(s[1],t,i)}if(this.isMultipleMode()){const e=this.getSelectedDates();if(e.length!==s.length){return false}return s.every((t=>e.some((e=>p(t,e,i)))))}return false}#Ct(e,t){return N(e,t,(e=>this.#vt(e)))}#vt(e){const t=this.isTimeEnabled();const s=this.getTimeFormat();const i=(e,t)=>n.DateTimeFormat.format(t,e,null,true);const r=e=>i(e,s);const a=(e,s)=>{const a=i(e,n.DateTimeFormat.getFormat(s));return t?`${a} ${r(e)}`:a};if(this.isRangeMode()){const[s,i]=e;const n=s.getUTCFullYear()===i.getUTCFullYear();if(t&&p(s,i,"day")){return`${a(s,"SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT")} \u2013 ${r(i)}`}let o=null;if(t){o=n?"SHORT_DAY_OF_WEEK_SHORT_MONTH_FORMAT":"MEDIUM_DATE_FORMAT"}else{o=n?"DAY_MONTH_FORMAT":"MEDIUM_DATE_FORMAT"}return`${a(s,o)} \u2013 ${a(i,o)}`}if(this.isMultipleMode()){if(e.length===1){return a(e[0],"DAY_OF_WEEK_MONTH_FORMAT")}if(e.length===2){return`${a(e[0],"DAY_MONTH_FORMAT")}, ${a(e[1],"DAY_MONTH_FORMAT")}`}return null}return a(e[0],"DAY_OF_WEEK_MONTH_FORMAT")}#kt(e){const t=this.#Tt(e);if(t===null||!this.#yt(e,t)){return}if(this.isSingleMode()){this.selectDate(t[0])}else if(this.isRangeMode()){this.selectRange(t[0],t[1])}else if(this.isMultipleMode()){this.deselectAll({emitEvents:false});this.selectDates(t)}this.emit(T.PRESET_SELECT,{preset:e,dates:t});if(this.shouldHideOnSelect()){this.hide()}}#Mt(e){if(!this.isSingleMode()){return}const t=this.#Tt(e);if(t===null||!this.#yt(e,t)){return}const s=this.getPicker("day");s?.clearMouseOutTimeout();this.setFocusDate(t[0])}#Et(){this.setFocusDate(null)}#dt(){if(this.#tt===null){return}const e=this.#tt.querySelectorAll(".ui-date-picker-preset");this.#et.forEach(((s,i)=>{const n=e[i];if(!n){return}const r=this.#Tt(s);const a=!this.#yt(s,r);const o=!a&&this.#bt(s,r);n.disabled=a;if(a){t.Dom.addClass(n,"--disabled")}else{t.Dom.removeClass(n,"--disabled")}if(o){t.Dom.addClass(n,"--active")}else{t.Dom.removeClass(n,"--active")}n.setAttribute("aria-pressed",o?"true":"false")}))}#gt(e){if(t.Type.isUndefined(e)){return[]}const s=[];const i=t.Type.isArray(e)?[...e]:[e];i.forEach((e=>{if(t.Type.isArray(e)){const t=[];e.forEach((e=>{if(!L(e)){return}const s=this.createDate(e);if(s!==null){t.push(s)}}));s.push(t)}else if(L(e)){const t=this.createDate(e);if(t!==null){s.push(t)}}else if(t.Type.isBoolean(e)||t.Type.isFunction(e)){s.push(e)}else if(t.Type.isPlainObject(e)){const t=this.#St(e);if(t!==null){s.push(t)}}}));return s}#St(e){if(t.Type.isArray(e.dayOfWeek)){return{dayOfWeek:e.dayOfWeek}}if(t.Type.isArray(e.dayOfMonth)){return{dayOfMonth:e.dayOfMonth}}const s={};for(const i of["from","to","before","after"]){if(!(i in e)||t.Type.isUndefined(e[i])||t.Type.isNull(e[i])){continue}const n=this.createDate(e[i]);if(n===null){return null}s[i]=n}return Object.keys(s).length>0?s:null}getPopup(){if(this.#Oe!==null){return this.#Oe}const e={...this.#He};const s=e.events;delete e.events;const i=this.getTitle();const n=t.Type.isStringFilled(e.ariaLabel)||t.Type.isStringFilled(e.title)?e.ariaLabel:i;delete e.ariaLabel;this.#Oe=new r.Popup({contentPadding:0,padding:0,offsetTop:5,bindElement:this.getTargetNode(),bindOptions:{forceBindPosition:true},autoHide:this.isAutoHide(),closeByEsc:this.shouldHideByEsc(),cacheable:this.isCacheable(),content:this.getContainer(),ariaLabel:n,focusTrap:{initialFocus:false},autoHideHandler:this.#Ft.bind(this),events:{onFirstShow:this.#Pt.bind(this),onShow:this.#It.bind(this),onClose:this.#wt.bind(this),onDestroy:this.#At.bind(this)},...e});this.#Oe.subscribeFromOptions(s);return this.#Oe}#at(e){if(this.getType()!=="date"){this.#oe="single"}else if(["single","multiple","range","none"].includes(e)){this.#oe=e}}setHideOnSelect(e){if(t.Type.isBoolean(e)){this.#Ze=e}}shouldHideOnSelect(){if(this.isInline()){return false}return this.#Ze}setDateSeparator(e){if(t.Type.isStringFilled(e)){this.#xe=e}}getDateSeparator(){return this.#xe}setInputField(e){const t=this.#_t(e);if(t!==null){this.#_e=t;this.#Rt(t);this.#$t(t)}}setRangeStartInput(e){const t=this.#_t(e);if(t!==null){this.#Re=t;this.#Rt(t);this.#$t(t)}}setRangeEndInput(e){const t=this.#_t(e);if(t!==null){this.#$e=t;this.#Rt(t);this.#$t(t)}}#$t(e){if(this.isInline()){return}e.setAttribute("aria-haspopup","dialog");e.setAttribute("aria-expanded",this.isOpen()?"true":"false")}#Ut(e){const t=e?"true":"false";[this.#_e,this.#Re,this.#$e].forEach((e=>{if(e!==null&&e.hasAttribute("aria-haspopup")){e.setAttribute("aria-expanded",t)}}))}#_t(e){if(t.Type.isStringFilled(e)){const s=document.querySelector(e);
395if(t.Type.isElementNode(s)||s.nodeName==="INPUT"||s.nodeName==="TEXTAREA"){return s}console.error(`Date Picker: a form element was not found (${e}).`)}else if(t.Type.isElementNode(e)&&(e.nodeName==="INPUT"||e.nodeName==="TEXTAREA")){return e}return null}#Rt(e){if(!this.shouldUseInputEvents()){return}t.Event.bind(e,"click",this.#t.remember("click-handler",(()=>this.#xt.bind(this))));t.Event.bind(e,"focusout",this.#t.remember("focusout-handler",(()=>this.#Ot.bind(this))));t.Event.bind(e,"keydown",this.#t.remember("keydown-handler",(()=>this.#Ht.bind(this))));t.Event.bind(e,"input",this.#t.remember("change-handler",(()=>this.#Nt.bind(this))))}#Lt(e){t.Event.unbind(e,"click",this.#t.get("click-handler"));t.Event.unbind(e,"focusout",this.#t.get("focusout-handler"));t.Event.unbind(e,"keydown",this.#t.get("keydown-handler"));t.Event.unbind(e,"input",this.#t.get("change-handler"))}#xt(e){if(this.isRangeMode()){this.setTargetNode(e.target);if(!this.isOpen()){this.show()}}else{this.show()}}#Ot(e){if(!this.getRootContainer().contains(e.relatedTarget)){this.hide()}}#Ht(e){if(e.key==="Tab"&&!e.shiftKey&&this.isOpen()){e.preventDefault();this.focus()}}#Nt(e){if(this.isOpen()){this.updateFromInputFields()}}#Ft(e){const t=e.target;const s=this.getPopup().getPopupContainer();if(t===s||s.contains(t)){return false}if(this.isRangeMode()){const e=(this.getRangeStartInput()===t||this.getRangeEndInput()===t)&&this.getTargetNode()!==t;return!e}return true}shouldUseInputEvents(){return this.#Ue}getInputField(){return this.#_e}getRangeStartInput(){return this.#Re}getRangeEndInput(){return this.#$e}updateInputFields(){if(this.isSingleMode()){if(this.getType()==="time"){this.#Bt(this.getInputField(),this.get
395SelectedDate(),this.getTimeFormat())}else{this.#Bt(this.getInputField(),this.getSelectedDate())}}else if(this.isMultipleMode()){this.#Bt(this.getInputField(),this.getSelectedDates().map((e=>this.formatDate(e))).join(this.getDateSeparator()))}else if(this.isRangeMode()){this.#Bt(this.getRangeStartInput(),this.getRangeStart());this.#Bt(this.getRangeEndInput(),this.getRangeEnd())}}#Yt(){if(this.getInputField()!==null){this.getInputField().focus({preventScroll:true})}else if(this.getRangeStartInput()!==null){this.getRangeStartInput().focus({preventScroll:true})}}updateFromInputFields(){if(this.isSingleMode()&&this.getInputField()!==null){const e=this.#Vt(this.getInputField());if(e===null){this.deselectAll({updateInputs:false,emitEvents:false})}else{this.selectDate(e,{updateInputs:false,emitEvents:false})}}else if(this.isMultipleMode()&&this.getInputField()!==null){const e=this.getInputField().value.trim();const t=e.split(this.getDateSeparator().trim()).map((e=>this.createDate(e.trim()))).filter((e=>e!==null));this.deselectAll({updateInputs:false,emitEvents:false});this.selectDates(t,{updateInputs:false,emitEvents:false})}else if(this.isRangeMode()&&this.getRangeStartInput()!==null){const e=this.#Vt(this.getRangeStartInput());const t=this.#Vt(this.getRangeEndInput());if(e===null){this.deselectAll({updateInputs:false,emitEvents:false})}else{this.selectRange(e,t,{updateInputs:false,emitEvents:false})}}}#Vt(e){if(e===null){return null}const s=e.value.trim();if(!t.Type.isStringFilled(s)){return null}if(this.getType()==="time"){return $(s,this.getTimeFormat())}return this.createDate(s)}#Bt(e,s,i=null){if(e!==null){let n="";if(s===null){n=""}else if(t.Type.isString(s)){n=s}else{n=this.formatDate(s,i)}e.value=n}}getLocale(){return this.#Ge}isRendered(){return this.#s}getContainer(){return this.#t.remember("container",(()=>{const e=["ui-date-picker"];if(this.isInline()){e.push("--inline")}if(this.shouldHideHeader()){e.push("--hide-header")}e.push(`--${this.getType()}-picker`);const s=t.Tag.render` 396 <div 397 id="${this.getContainerId()}" 398 tabindex="-1" 399 onkeyup="${this.#Wt.bind(this)}" 400 class="${e.join(" ")}" 401 > 402 ${this.getBodyContainer()} 403 </div> 404 `;if(this.isInline()){s.setAttribute("role","group");s.setAttribute("aria-label",this.getTitle())}return s}))}getRootContainer(){return this.isInline()?this.getContainer():this.getPopup().getPopupContainer()}getTitle(){if(this.getType()==="time"){return t.Loc.getMessage("UI_DATE_PICKER_TIME_VIEW_LABEL")}if(this.getType()==="month"){return t.Loc.getMessage("UI_DATE_PICKER_MONTH_VIEW_LABEL")}if(this.getType()==="year"){return t.Loc.getMessage("UI_DATE_PICKER_YEAR_VIEW_LABEL")}return t.Loc.getMessage("UI_DATE_PICKER_DIALOG_LABEL")}getContainerId(){return`ui-date-picker-${this.#J}`}getBodyContainer(){return this.#t.remember("body",(()=>{const e=t.Tag.render`<div class="ui-date-picker-body" role="none">${this.getViewsContainer()}</div>`;if(this.#mt()){this.#tt=this.#ft();t.Dom.append(this.#tt,e)}return e}))}getViewsContainer(){return this.#t.remember("views",(()=>t.Tag.render`<div role="none" class="ui-date-picker-views" id="${this.getContainerId()}-views"></div>`))}getViewsContainerId(){return this.getViewsContainer().id}isMultipleMode(){return this.#oe==="multiple"}isSingleMode(){return this.#oe==="single"}isRangeMode(){return this.#oe==="range"}isInline(){return this.#Ve}isFocused(){const e=this.getRootContainer();const t=e.ownerDocument.activeElement;return e.contains(t)||e===t}setAutoFocus(e){if(t.Type.isBoolean(e)){this.#We=e}}isAutoFocus(){return this.#We}setTargetNode(e){if(!t.Type.isDomNode(e)&&!t.Type.isNull(e)&&!t.Type.isObject(e)){return}this.#Ae=e;if(this.isRendered()){this.getPopup().setBindElement(this.#Ae);this.getPopup().adjustPosition()}}getTargetNode(){return this.#Ae}setAutoHide(e){if(t.Type.isBoolean(e)){this.#Le=e;if(this.isRendered()){this.getPopup().setAutoHide(e)}}}isAutoHide(){return this.#Le}setHideByEsc(e){if(t.Type.isBoolean(e)){this.#Ne=e;if(this.isRendered()){this.getPopup().setClosingByEsc(e)}}}shouldHideByEsc(){return this.#Ne}isCacheable(){return this.#Be}setCacheable(e){if(t.Type.isBoolean(e)){this.#Be=e;if(this.isRendered()){this.getPopup().setCacheable(e)}}}setHideHeader(e){if(t.Type.isBoolean(e)){this.#qe=e;
404if(this.isRendered()){if(e){t.Dom.addClass(this.getContainer(),"--hide-header")}else{t.Dom.removeClass(this.getContainer(),"--hide-header")}}}}shouldHideHeader(){return this.#qe}createDate(e){return $(e,this.getDateFormat())}formatDate(e,t=null){const s=e.getUTCHours()===0&&e.getUTCMinutes()===0&&e.getUTCSeconds()===0;const i=t===null?this.getDateFormat():t;let r=n.DateTimeFormat.format(i,e,null,true);if(this.isTimeEnabled()&&s&&this.shouldCutZeroTime()){r=r.replaceAll(/\s*12:00:00 am\s*/gi,"").replaceAll(/\s*12:00 am\s*/gi,"").replaceAll(/\s*00:00:00\s*/g,"").replaceAll(/\s*00:00\s*/g,"")}return r}formatTime(e,t=null){return n.DateTimeFormat.format(t===null?this.getTimeFormat():t,e,null,true)}getDateFormat(){return this.#Ke}#ot(){if(this.getType()==="year"){return"Y"}if(this.getType()==="month"){return"f - Y"}if(this.isTimeEnabled()){if(this.shouldAllowSeconds()){return n.DateTimeFormat.getFormat("FORMAT_DATETIME")}return n.DateTimeFormat.getFormat("FORMAT_DATETIME").replace(/:s/i,"")}return n.DateTimeFormat.getFormat("FORMAT_DATE")}getTimeFormat(){return this.#je}#ht(){if(this.isRendered()){return}if(this.isInline()&&this.getTargetNode()!==null){t.Dom.append(this.getContainer(),this.getTargetNode())}const e=["day","month","year","time"];const s=e.indexOf(this.getType());const i=s===-1?"day":e[s];this.setCurrentView(i);this.#s=true;if(this.#it!==null){this.#it.init()}this.#st?.activate()}#ct(e){if(e==="day"){const e=new D(this);e.subscribe("onSelect",this.#Kt.bind(this));e.subscribe("onFocus",this.#jt.bind(this));e.subscribe("onBlur",this.#Xt.bind(this));e.subscribe("onPrevBtnClick",(()=>{const e=this.isFullYear()?"year":"month";const t=d(c(this.getViewDate(),e),e,-1);this.setViewDate(t)}));e.subscribe("onNextBtnClick",(()=>{const e=this.isFullYear()?"year":"month";const t=g(this.getViewDate(),e);this.setViewDate(t)}));e.subscribe("onMonthClick",(()=>this.setCurrentView("month")));e.subscribe("onYearClick",(()=>this.setCurrentView("year")));e.subscribe("onTimeClick",this.#d.bind(this,"datetime"));e.subscribe("onRangeStartClick",this.#d.bind(this,"range-start"));e.subscribe("onRangeEndClick",this.#d.bind(this,"range-end"));return e}if(e==="month"){const e=new X(this);e.subscribe("onSelect",this.#Zt.bind(this));e.subscribe("onFocus",this.#Gt.bind(this));e.subscribe("onBlur",this.#qt.bind(this));e.subscribe("onPrevBtnClick",(()=>{const{year:e,month:t}=f(this.getViewDate());const s=m(e-1,t,1);this.setViewDate(s)}));e.subscribe("onNextBtnClick",(()=>{const{year:e,month:t}=f(this.getViewDate());const s=m(e+1,t,1);this.setViewDate(s)}));e.subscribe("onTitleClick",(()=>this.setCurrentView("year")));return e}if(e==="year"){const e=new z(this);e.subscribe("onSelect",this.#Qt.bind(this));e.subscribe("onFocus",this.#zt.bind(this));e.subscribe("onBlur",this.#Jt.bind(this));e.subscribe("onPrevBtnClick",(()=>{const{year:e}=f(this.getViewDate());const t=m(e-12,0,1);this.setViewDate(t)}));e.subscribe("onNextBtnClick",(()=>{const{year:e}=f(this.getViewDate());const t=m(e+12,0,1);this.setViewDate(t)}));return e}if(e==="time"){const e=this.getTimePickerStyle()==="wheel"?new q(this):new Q(this);if(this.isRangeMode()){e.subscribe("onSelect",this.#es.bind(this))}else{e.subscribe("onSelect",this.#ts.bind(this))}e.subscribe("onFocus",this.#ss.bind(this));e.subscribe("onBlur",this.#is.bind(this));e.subscribe("onPrevBtnClick",(()=>this.setCurrentView("day")));e.subscribe("onTitleClick",(()=>this.setCurrentView("day")));return e}return null}#Wt(e){if(this.isInline()){return}if(e.key==="Escape"&&this.shouldHideByEsc()){this.hide()}}#d(e){const t=this.getPicker("time");const s=e==="range-start"&&this.getRangeStart()!==null||e==="range-end"&&this.getRangeEnd()!==null||this.getSelectedDate()!==null;if(s){t.setMode(e);this.setCurrentView("time")}}#Kt(e){const{year:t,month:s,day:n}=e.getData();let r=m(t,s,n);const a=new i.BaseEvent({data:{date:r}});this.emit(T.BEFORE_DAY_SELECT,a);if(a.isDefaultPrevented()){return}if(this.isRangeMode()){const e=this.#se;if(e.length===0){const{hours:e,minutes:t,seconds:s}=this.getDefaultTimeParts();r=Y(r,e,t,s)}else if(e.length===1){let{hours:e,minutes:t,seconds:s}=this.getDefaultTimeParts();if(this.isDateSelected(r,"day")){({hours:e,minutes:t,seconds:s}=f(this.getRangeStart()));t+=this.getDefaultTimeSpan()}r=Y(r,e,t,s)}const t=k(r,e);const[s,i]=t;if(t.length===0){this.deselectAll()}else{this.selectRange(s,i)}}else if(this.isDateSelected(r)){if(this.shouldToggleSelected()){this.deselectDate(r)}else if(this.shouldHideOnSelect()&&this.isSingleMode()){this.hide()}}else{let{hours:e,minutes:i,seconds:r}=this.getDefaultTimeParts();
404if(this.isSingleMode()&&this.getSelectedDate()!==null){({hours:e,minutes:i,seconds:r}=f(this.getSelectedDate()))}this.selectDate(m(t,s,n,e,i,r));if(this.shouldHideOnSelect()&&this.isSingleMode()&&!this.isTimeEnabled()){this.hide()}}}#jt(e){const{year:t,month:s,day:i}=e.getData();const n=m(t,s,i);if(!p(n,this.getFocusDate())){this.setFocusDate(n)}}#Xt(e){this.setFocusDate(null)}#Gt(e){const{year:t,month:s}=e.getData();const i=m(t,s);if(!p(i,this.getFocusDate(),"month")){this.setFocusDate(i)}}#qt(e){this.setFocusDate(null)}#zt(e){const{year:t}=e.getData();const s=m(t);if(!p(s,this.getFocusDate(),"year")){this.setFocusDate(s)}}#Jt(e){this.setFocusDate(null)}#ss(e){const{hour:s,minute:i}=e.getData();let n=l(this.getInitialFocusDate());if(t.Type.isNumber(s)){n=Y(n,s,null,null);this.setFocusDate(n)}else if(t.Type.isNumber(i)){n=Y(n,null,i,null);this.setFocusDate(n)}}#is(e){this.setFocusDate(null)}#Zt(e){const{year:t}=f(this.getViewDate());const s=e.getData().month;const i=m(t,s);if(this.getType()==="month"){this.selectDate(i);if(this.shouldHideOnSelect()){this.hide()}}else{this.setViewDate(i);this.setCurrentView("day")}}#Qt(e){const{month:t}=f(this.getViewDate());const s=e.getData().year;const i=m(s,t);if(this.getType()==="year"){this.selectDate(m(s));if(this.shouldHideOnSelect()){this.hide()}}else{this.setViewDate(i);this.setCurrentView("day")}}#ts(e){let s=null;if(this.getType()==="time"){s=this.getSelectedDate()===null?g(this.getToday(),"day"):l(this.getSelectedDate())}else if(this.getSelectedDate()===null){return}else{s=l(this.getSelectedDate())}const i=()=>{if(this.shouldHideOnSelect()){this.hide()}else if(this.getType()==="date"){this.setCurrentView("day")}};const{hour:n,minute:r}=e.getData();if(t.Type.isNumber(n)){const e=this.getSelectedDate()===null?-1:s.getUTCHours();if(e===n){i()}else{s.setUTCHours(n);this.selectDate(s)}}else if(t.Type.isNumber(r)){const e=this.getSelectedDate()===null?-1:s.getUTCMinutes();if(e!==r){s.setUTCMinutes(r);this.selectDate(s)}if(this.getTimePickerStyle()==="grid"){i()}}}#es(e){const s=e.getTarget();const i=s.getMode()==="range-end";let n=this.getRangeStart()===null?null:l(this.getRangeStart());let r=this.getRangeEnd()===null?null:l(this.getRangeEnd());if(n===null||r===null&&i){return}const a=()=>{if(this.getType()==="date"&&this.getTimePickerStyle()==="grid"){this.setCurrentView("day")}};const{hour:o,minute:u}=e.getData();if(t.Type.isNumber(o)){if(i){const e=r.getUTCHours();if(e===o){a();return}r.setUTCHours(o)}else{const e=n.getUTCHours();if(e===o){a();return}n.setUTCHours(o)}}else if(t.Type.isNumber(u)){if(i){const e=r.getUTCMinutes();if(e===u){a();return}r.setUTCMinutes(u)}else{const e=n.getUTCMinutes();if(e===u){a();return}n.setUTCMinutes(u)}}if(r!==null&&n>r){if(i){n=d(r,"minute",-this.getDefaultTimeSpan())}else{r=d(n,"minute",this.getDefaultTimeSpan())}}this.selectRange(n,r);if(t.Type.isNumber(u)){a()}}#It(){if(!this.isFocused()&&this.isAutoFocus()){this.focus()}if(this.isSingleOpening()){if(J!==null){J.hide()}J=this}this.#Ut(true);this.emit("onShow")}#Pt(){this.#ht();this.emit("onFirstShow")}#wt(){if(this.getType()==="date"){this.setCurrentView("day")}this.setFocusDate(null);this.setViewDate(this.getDefaultViewDate());if(this.isSingleOpening()){J=null}if(this.isFocused()){this.#Yt()}this.#Ut(false);this.emit("onHide")}#At(){this.destroy()}destroy(){if(this.#nt){return}this.#nt=true;this.emit(T.DESTROY);this.#pt();if(this.isRendered()){t.Dom.remove(this.getContainer())}this.#Lt(this.getInputField());this.#Lt(this.getRangeStartInput());this.#Lt(this.getRangeEndInput());if(this.#Oe!==null){this.#Oe.destroy()}this.#t=null;this.#le=null;this.#se=null;if(this.isSingleOpening()){J=null}Object.setPrototypeOf(this,null)}}e.DatePicker=ee;e.DatePickerEvent=T;e.addDate=d;e.addToRange=k;e.ceilDate=g;e.cloneDate=l;e.convertToDbFormat=E;e.copyTime=C;e.createDate=$;e.createUtcDate=m;e.floorDate=c;e.getDate=f;e.getDaysInMonth=u;e.getFocusableBoundaryElements=H;e.getNextDate=h;e.isDateAfter=y;e.isDateBefore=b;e.isDateLike=L;e.isDateMatch=V;e.isDatesEqual=p;e.isValidDate=Z;e.parseDate=_;e.setTime=Y})(this.BX.UI.DatePicker=this.BX.UI.DatePicker||{},BX,BX.Cache,BX.Event,BX.Main,BX.Main,BX.UI.Accessibility); 405//# sourceMappingURL=date-picker.bundle.map.js
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.