@a.nemreen/dga-ui 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,387 @@
1
+ import*as i from"@angular/core";import{inject as $,ElementRef as ee,DestroyRef as ae,input as c,linkedSignal as te,model as T,booleanAttribute as S,signal as _,computed as p,output as z,effect as A,HostListener as q,ChangeDetectionStrategy as re,ViewEncapsulation as de,Component as ie}from"@angular/core";import{NgStyle as B}from"@angular/common";import{dgaFormStatusFromInvalid as ne,DgaFormControl as O,DgaIcon as j,dgaProvideValueAccessor as U}from"@a.nemreen/dga-ui";const H={ar:["\u0645\u062D\u0631\u0645","\u0635\u0641\u0631","\u0631\u0628\u064A\u0639 \u0627\u0644\u0623\u0648\u0644","\u0631\u0628\u064A\u0639 \u0627\u0644\u062B\u0627\u0646\u064A","\u062C\u0645\u0627\u062F\u0649 \u0627\u0644\u0623\u0648\u0644\u0649","\u062C\u0645\u0627\u062F\u0649 \u0627\u0644\u0622\u062E\u0631\u0629","\u0631\u062C\u0628","\u0634\u0639\u0628\u0627\u0646","\u0631\u0645\u0636\u0627\u0646","\u0634\u0648\u0627\u0644","\u0630\u0648 \u0627\u0644\u0642\u0639\u062F\u0629","\u0630\u0648 \u0627\u0644\u062D\u062C\u0629"],en:["Muharram","Safar","Rabi I","Rabi II","Jumada I","Jumada II","Rajab","Sha'ban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"]},J={ar:["\u064A\u0646\u0627\u064A\u0631","\u0641\u0628\u0631\u0627\u064A\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064A\u0644","\u0645\u0627\u064A\u0648","\u064A\u0648\u0646\u064A\u0648","\u064A\u0648\u0644\u064A\u0648","\u0623\u063A\u0633\u0637\u0633","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"],en:["January","February","March","April","May","June","July","August","September","October","November","December"]},G={ar:["\u0623\u062D\u062F","\u0625\u062B\u0646","\u062B\u0644\u0627","\u0623\u0631\u0628","\u062E\u0645\u064A","\u062C\u0645\u0639","\u0633\u0628\u062A"],en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},se=new Intl.DateTimeFormat("en-US-u-ca-islamic-umalqura",{day:"numeric",month:"numeric",year:"numeric",timeZone:"UTC"});function W(d){return d<10?`0${d}`:String(d)}function w(d){return new Date(Date.UTC(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate()))}function L(d,e){return parseInt(d.find(t=>t.type===e)?.value??"0",10)}function g(d,e){const t=w(d);if(e==="hijri"){const a=se.formatToParts(t);return{year:L(a,"year"),month:L(a,"month"),day:L(a,"day")}}return{year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate()}}function v(d,e){const{year:t,month:a,day:r}=d;if(e==="gregorian")return new Date(Date.UTC(t,a-1,r));let s=Date.UTC(Math.max(622,Math.floor(t*.97+579)-3),0,1),l=Date.UTC(Math.floor(t*.97+579)+3,11,31);for(;s<=l;){const n=s+Math.floor((l-s)/2),o=new Date(n),h=g(o,"hijri"),b=h.year!==t?h.year-t:h.month!==a?h.month-a:h.day-r;if(b===0)return w(o);b<0?s=n+864e5:l=n-864e5}return w(new Date(s))}function C(d,e,t){if(t==="gregorian")return new Date(Date.UTC(d,e,0)).getUTCDate();for(let a=30;a>=29;a--){const r=v({year:d,month:e,day:a},"hijri"),s=g(r,"hijri");if(s.year===d&&s.month===e&&s.day===a)return a}return 29}function R(d,e,t){let a=d.year,r=d.month+e;for(;r>12;)r-=12,a+=1;for(;r<1;)r+=12,a-=1;const s=C(a,r,t);return{year:a,month:r,day:Math.min(d.day,s)}}function K(d){const e=/D{1,2}/.test(d),t=/M{1,2}/.test(d);return e?"day":t?"month":"year"}function D(d,e,t){const a=g(d,t);return e.replace(/YYYY|YY|MM|M|DD|D/g,r=>{switch(r){case"YYYY":return String(a.year);case"YY":return String(a.year).slice(-2);case"MM":return W(a.month);case"M":return String(a.month);case"DD":return W(a.day);case"D":return String(a.day);default:return r}})}function V(d,e,t){const a=d.trim();if(!a)return null;const r=/(YYYY|YY|MM|M|DD|D)/g;if(![...e.matchAll(r)].map(f=>f[1]).length)return null;let l="",n=0;for(const f of e.matchAll(r)){l+=Q(e.slice(n,f.index));const k=f[1];k==="YYYY"?l+="(?<YYYY>\\d{4})":k==="YY"?l+="(?<YY>\\d{2})":k==="MM"||k==="DD"?l+=`(?<${k}>\\d{2})`:l+=`(?<${k}>\\d{1,2})`,n=(f.index??0)+k.length}l+=Q(e.slice(n));const o=new RegExp(`^${l}$`).exec(a);if(!o?.groups)return null;let b=g(new Date,t).year;if(o.groups.YYYY)b=parseInt(o.groups.YYYY,10);else if(o.groups.YY){const f=parseInt(o.groups.YY,10);b=f>=70?1900+f:2e3+f}let u=1;(o.groups.MM||o.groups.M)&&(u=parseInt(o.groups.MM??o.groups.M,10));let m=1;if((o.groups.DD||o.groups.D)&&(m=parseInt(o.groups.DD??o.groups.D,10)),u<1||u>12||m<1||m>31)return null;const Y=v({year:b,month:u,day:m},t),P=g(Y,t);return P.year!==b||P.month!==u||P.day!==m?null:Y}function Q(d){return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function M(d,e,t="gregorian"){if(!d||!e)return!1;const a=g(d,t),r=g(e,t);return a.year===r.year&&a.month===r.month&&a.day===r.day}function y(d,e,t="gregorian"){if(!d&&!e)return 0;if(!d)return-1;if(!e)return 1;const a=g(d,t),r=g(e,t);return a.year!==r.year?a.year-r.year:a.month!==r.month?a.month-r.month:a.day-r.day}function F(d,e,t,a="gregorian"){let r=w(d);return e&&y(r,e,a)<0&&(r=w(e)),t&&y(r,t,a)>0&&(r=w(t)),r}function E(d,e){return d==="hijri"?H[e]:J[e]}function Z(d,e,t){return v({year:d,month:e,day:1},t).getUTCDay()}function N(){const d=new Date;return new Date(Date.UTC(d.getFullYear(),d.getMonth(),d.getDate()))}function I(d,e,t){return d==null||d===""?null:d instanceof Date?w(d):V(String(d),e,t)}const le={ar:{today:"\u0627\u0644\u064A\u0648\u0645",clear:"\u0645\u0633\u062D",close:"\u0625\u063A\u0644\u0627\u0642",save:"\u062D\u0641\u0638",prev:"\u0627\u0644\u0633\u0627\u0628\u0642",next:"\u0627\u0644\u062A\u0627\u0644\u064A",calendar:"\u0641\u062A\u062D \u0627\u0644\u062A\u0642\u0648\u064A\u0645",clearInput:"\u0645\u0633\u062D \u0627\u0644\u062A\u0627\u0631\u064A\u062E",month:"\u0627\u0644\u0634\u0647\u0631",year:"\u0627\u0644\u0633\u0646\u0629",placeholder:"\u064A\u0648\u0645/\u0634\u0647\u0631/\u0633\u0646\u0629",rangeStart:"\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0628\u062F\u0627\u064A\u0629",rangeEnd:"\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0646\u0647\u0627\u064A\u0629"},en:{today:"Today",clear:"Clear",close:"Close",save:"Save",prev:"Previous",next:"Next",calendar:"Open calendar",clearInput:"Clear date",month:"Month",year:"Year",placeholder:"DD/MM/YYYY",rangeStart:"Start date",rangeEnd:"End date"}};let oe=0;class x{host=$(ee);destroyRef=$(ae);inputId=`dga-date-picker-${++oe}`;panelId=`${this.inputId}-panel`;valueInput=c("",{...ngDevMode?{debugName:"valueInput"}:{},alias:"value"});value=te(this.valueInput,...ngDevMode?[{debugName:"value"}]:[]);startValue=T("",...ngDevMode?[{debugName:"startValue"}]:[]);endValue=T("",...ngDevMode?[{debugName:"endValue"}]:[]);onChange=()=>{};onTouched=()=>{};calendar=c("gregorian",...ngDevMode?[{debugName:"calendar"}]:[]);range=c(!1,{...ngDevMode?{debugName:"range"}:{},transform:S});format=c("DD/MM/YYYY",...ngDevMode?[{debugName:"format"}]:[]);mode=c(null,...ngDevMode?[{debugName:"mode"}]:[]);locale=c("ar",...ngDevMode?[{debugName:"locale"}]:[]);minDate=c(null,...ngDevMode?[{debugName:"minDate"}]:[]);maxDate=c(null,...ngDevMode?[{debugName:"maxDate"}]:[]);yearBefore=c(40,...ngDevMode?[{debugName:"yearBefore"}]:[]);yearAfter=c(5,...ngDevMode?[{debugName:"yearAfter"}]:[]);placeholder=c("",...ngDevMode?[{debugName:"placeholder"}]:[]);controlId=c("",...ngDevMode?[{debugName:"controlId"}]:[]);name=c("",...ngDevMode?[{debugName:"name"}]:[]);size=c("md",...ngDevMode?[{debugName:"size"}]:[]);disabledInput=c(!1,{...ngDevMode?{debugName:"disabledInput"}:{},alias:"disabled",transform:S});cvaDisabled=_(!1,...ngDevMode?[{debugName:"cvaDisabled"}]:[]);disabled=p(()=>this.disabledInput()||this.cvaDisabled(),...ngDevMode?[{debugName:"disabled"}]:[]);required=c(!1,{...ngDevMode?{debugName:"required"}:{},transform:S});clearable=c(!1,{...ngDevMode?{debugName:"clearable"}:{},transform:S});editable=c(!0,{...ngDevMode?{debugName:"editable"}:{},transform:S});invalid=c(!1,{...ngDevMode?{debugName:"invalid"}:{},alias:"dgaInvalid",transform:S});status=c("default",...ngDevMode?[{debugName:"status"}]:[]);rangeSeparator=c(" - ",...ngDevMode?[{debugName:"rangeSeparator"}]:[]);todayLabel=c("",...ngDevMode?[{debugName:"todayLabel"}]:[]);clearLabel=c("",...ngDevMode?[{debugName:"clearLabel"}]:[]);closeLabel=c("",...ngDevMode?[{debugName:"closeLabel"}]:[]);saveLabel=c("",...ngDevMode?[{debugName:"saveLabel"}]:[]);ariaLabel=c("",...ngDevMode?[{debugName:"ariaLabel"}]:[]);resolvedTodayLabel=p(()=>this.todayLabel()||this.labels().today,...ngDevMode?[{debugName:"resolvedTodayLabel"}]:[]);resolvedClearLabel=p(()=>this.clearLabel()||this.labels().clear,...ngDevMode?[{debugName:"resolvedClearLabel"}]:[]);resolvedCloseLabel=p(()=>this.closeLabel()||this.labels().close,...ngDevMode?[{debugName:"resolvedCloseLabel"}]:[]);resolvedSaveLabel=p(()=>this.saveLabel()||this.labels().save,...ngDevMode?[{debugName:"resolvedSaveLabel"}]:[]);valueChange=z();rangeChange=z();open=_(!1,...ngDevMode?[{debugName:"open"}]:[]);panelStyle=_({},...ngDevMode?[{debugName:"panelStyle"}]:[]);panelView=_("day",...ngDevMode?[{debugName:"panelView"}]:[]);viewParts=_(this.initialViewParts(),...ngDevMode?[{debugName:"viewParts"}]:[]);draftStart=_(null,...ngDevMode?[{debugName:"draftStart"}]:[]);draftEnd=_(null,...ngDevMode?[{debugName:"draftEnd"}]:[]);rangePickPhase=_("start",...ngDevMode?[{debugName:"rangePickPhase"}]:[]);typedValue=_(null,...ngDevMode?[{debugName:"typedValue"}]:[]);effectiveStatus=p(()=>this.status()!=="default"?this.status():ne(this.invalid()),...ngDevMode?[{debugName:"effectiveStatus"}]:[]);panelMode=p(()=>this.mode()??K(this.format()),...ngDevMode?[{debugName:"panelMode"}]:[]);labels=p(()=>le[this.locale()],...ngDevMode?[{debugName:"labels"}]:[]);resolvedPlaceholder=p(()=>this.placeholder()||this.labels().placeholder,...ngDevMode?[{debugName:"resolvedPlaceholder"}]:[]);weekdays=p(()=>G[this.locale()],...ngDevMode?[{debugName:"weekdays"}]:[]);minBound=p(()=>I(this.minDate(),this.format(),this.calendar()),...ngDevMode?[{debugName:"minBound"}]:[]);maxBound=p(()=>I(this.maxDate(),this.format(),this.calendar()),...ngDevMode?[{debugName:"maxBound"}]:[]);displayValue=p(()=>{const e=this.typedValue();if(e!==null)return e;if(this.range()){const t=this.startValue()||this.parseRangeFromValue().start,a=this.endValue()||this.parseRangeFromValue().end;return t&&a?`${t}${this.rangeSeparator()}${a}`:t||a||this.value()}return this.value()},...ngDevMode?[{debugName:"displayValue"}]:[]);viewYear=p(()=>this.viewParts().year,...ngDevMode?[{debugName:"viewYear"}]:[]);viewMonth=p(()=>this.viewParts().month,...ngDevMode?[{debugName:"viewMonth"}]:[]);monthOptions=p(()=>{const e=E(this.calendar(),this.locale()),t=this.viewYear(),a=this.draftAnchorParts();return e.map((r,s)=>{const l=s+1,n=this.isMonthDisabled(t,l);return{value:l,label:r,selected:a?.month===l&&a?.year===t,disabled:n}})},...ngDevMode?[{debugName:"monthOptions"}]:[]);yearOptions=p(()=>{const e=this.viewParts(),t=this.draftAnchorParts(),a=g(N(),this.calendar()).year,r=a-this.yearBefore(),s=a+this.yearAfter(),l=[];for(let n=r;n<=s;n+=1)l.push({value:n,selected:t?.year===n,disabled:this.isYearDisabled(n)});return l.some(n=>n.value===e.year)||(l.unshift({value:e.year,selected:t?.year===e.year,disabled:this.isYearDisabled(e.year)}),l.sort((n,o)=>n.value-o.value)),l},...ngDevMode?[{debugName:"yearOptions"}]:[]);dayCells=p(()=>{if(this.panelView()!=="day")return[];const e=this.viewYear(),t=this.viewMonth(),a=this.calendar(),r=C(e,t,a),s=Z(e,t,a),l=N(),n=this.draftStart(),o=this.draftEnd(),h=o??n,b=[];for(let u=0;u<s;u+=1)b.push({key:`e-${u}`,empty:!0});for(let u=1;u<=r;u+=1){const m=v({year:e,month:t,day:u},a),Y=this.isDateDisabled(m),P=n&&M(m,n,a)||o&&M(m,o,a),f=this.range()&&n&&h&&y(m,n,a)>=0&&y(m,h,a)<=0,k=this.range()&&n&&M(m,n,a),X=this.range()&&h&&M(m,h,a);b.push({key:`${e}-${t}-${u}`,empty:!1,day:u,today:M(m,l,a),selected:!!P,inRange:!!f,rangeStart:!!k,rangeEnd:!!X,disabled:Y,label:D(m,this.format(),a)})}return b},...ngDevMode?[{debugName:"dayCells"}]:[]);constructor(){A(()=>{this.syncDraftFromModels()}),A(()=>{const e=this.panelMode();this.open()&&this.panelView.set(e)}),this.destroyRef.onDestroy(()=>{this.open.set(!1)})}onDocumentClick(e){if(!this.open())return;const t=e.target;t&&this.host.nativeElement.contains(t)||this.closePanel(!1)}onEscape(){this.open()&&this.closePanel(!1)}onReposition(){this.open()&&this.repositionPanel()}monthLabel(e){return E(this.calendar(),this.locale())[e-1]??String(e)}togglePanel(){if(!this.disabled()){if(this.open()){this.closePanel(!1);return}this.openPanel()}}openPanel(){this.syncDraftFromModels(),this.panelView.set(this.panelMode());const e=this.draftStart()??this.minBound()??N();this.viewParts.set(g(e,this.calendar())),this.repositionPanel(),this.open.set(!0),requestAnimationFrame(()=>this.repositionPanel())}closePanel(e=!1){e&&this.syncDraftFromModels(),this.open.set(!1),this.panelStyle.set({}),this.rangePickPhase.set("start")}repositionPanel(){if(typeof document>"u")return;const t=(this.host.nativeElement.querySelector("dga-form-control")??this.host.nativeElement).getBoundingClientRect(),a=4,r=340,s=window.innerHeight-t.bottom,l=s<r&&t.top>s,n=document.documentElement.dir==="rtl";this.panelStyle.set({position:"fixed",zIndex:"var(--z-index-dropdown)",...l?{bottom:`${Math.round(window.innerHeight-t.top+a)}px`,top:"auto"}:{top:`${Math.round(t.bottom+a)}px`,bottom:"auto"},...n?{right:`${Math.round(window.innerWidth-t.right)}px`,left:"auto"}:{left:`${Math.round(t.left)}px`,right:"auto"}})}navigate(e){const t=this.panelView(),a=this.viewParts();if(t==="year"){this.viewParts.set({...a,year:a.year+e*12});return}if(t==="month"){this.viewParts.set({...a,year:a.year+e});return}this.viewParts.set(R(a,e,this.calendar()))}setPanelView(e){this.panelView.set(e)}selectDay(e){const t={year:this.viewYear(),month:this.viewMonth(),day:e},a=v(t,this.calendar());this.isDateDisabled(a)||this.applyDraftDate(a)}selectMonth(e){if(this.isMonthDisabled(this.viewYear(),e))return;const t=R({year:this.viewYear(),month:e,day:1},0,this.calendar());if(this.viewParts.set(t),this.panelMode()==="month"){this.applyDraftDate(v(t,this.calendar()));return}this.panelView.set("day")}selectYear(e){if(this.isYearDisabled(e))return;const t={...this.viewParts(),year:e};if(this.viewParts.set(t),this.panelMode()==="year"){const a=v({year:e,month:1,day:1},this.calendar());this.applyDraftDate(a);return}this.panelView.set(this.panelMode()==="month"?"month":"day")}goToday(){const e=F(N(),this.minBound(),this.maxBound(),this.calendar());this.viewParts.set(g(e,this.calendar())),this.applyDraftDate(e)}clearDraft(){this.draftStart.set(null),this.draftEnd.set(null),this.rangePickPhase.set("start")}clearAll(){this.draftStart.set(null),this.draftEnd.set(null),this.typedValue.set(null),this.emitValues("","",""),this.closePanel()}save(){const e=this.calendar(),t=this.format();if(this.range()){const a=this.draftStart(),r=this.draftEnd()??a;if(!a){this.closePanel();return}const s=D(a,t,e),l=r?D(r,t,e):s,n=`${s}${this.rangeSeparator()}${l}`;this.emitValues(n,s,l)}else{const a=this.draftStart();if(!a)this.emitValues("","","");else{const r=D(a,t,e);this.emitValues(r,r,"")}}this.typedValue.set(null),this.closePanel()}onInput(e){this.editable()&&this.typedValue.set(e)}onInputBlur(){this.onTouched();const e=this.typedValue();if(e===null)return;if(this.typedValue.set(null),!e.trim()){this.clearAll();return}if(this.range()){const[a,r]=e.split(this.rangeSeparator()),s=V(a?.trim()??"",this.format(),this.calendar()),l=V(r?.trim()??"",this.format(),this.calendar());if(s&&l){const n=y(s,l,this.calendar())<=0?{start:s,end:l}:{start:l,end:s},o=D(n.start,this.format(),this.calendar()),h=D(n.end,this.format(),this.calendar());this.emitValues(`${o}${this.rangeSeparator()}${h}`,o,h)}else if(s){const n=D(s,this.format(),this.calendar());this.emitValues(n,n,"")}return}const t=V(e.trim(),this.format(),this.calendar());if(t){const a=D(t,this.format(),this.calendar());this.emitValues(a,a,"")}}onInputKeydown(e){(e.key==="ArrowDown"||e.key==="Enter")&&(this.open()||(e.preventDefault(),this.openPanel())),e.key==="Escape"&&this.open()&&(e.preventDefault(),this.closePanel(!1))}applyDraftDate(e){const t=F(e,this.minBound(),this.maxBound(),this.calendar());if(!this.range()){this.draftStart.set(t),this.draftEnd.set(null);return}if(this.rangePickPhase()==="start"||!this.draftStart()){this.draftStart.set(t),this.draftEnd.set(null),this.rangePickPhase.set("end");return}const a=this.draftStart();y(t,a,this.calendar())<0?(this.draftStart.set(t),this.draftEnd.set(a)):this.draftEnd.set(t),this.rangePickPhase.set("start")}draftAnchorParts(){const e=this.draftEnd()??this.draftStart();return e?g(e,this.calendar()):null}syncDraftFromModels(){const e=this.calendar(),t=this.format();if(this.range()){const r=this.parseRangeFromValue(),s=I(this.startValue()||r.start,t,e),l=I(this.endValue()||r.end,t,e);this.draftStart.set(s),this.draftEnd.set(l),s&&this.viewParts.set(g(s,e));return}const a=I(this.value(),t,e);this.draftStart.set(a),this.draftEnd.set(null),a&&this.viewParts.set(g(a,e))}parseRangeFromValue(){const e=this.value();if(!e)return{start:"",end:""};const t=this.rangeSeparator(),a=e.indexOf(t);return a===-1?{start:e,end:""}:{start:e.slice(0,a).trim(),end:e.slice(a+t.length).trim()}}emitValues(e,t,a){this.value.set(e),this.startValue.set(t),this.endValue.set(a),this.valueChange.emit(e),this.rangeChange.emit({start:t,end:a}),this.range()||this.onChange(e)}writeValue(e){this.value.set(e??"")}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.cvaDisabled.set(e)}isDateDisabled(e){const t=this.minBound(),a=this.maxBound();return!!(t&&y(e,t,this.calendar())<0||a&&y(e,a,this.calendar())>0)}isMonthDisabled(e,t){const a=this.calendar(),r=v({year:e,month:t,day:1},a),s=C(e,t,a),l=v({year:e,month:t,day:s},a),n=this.minBound(),o=this.maxBound();return!!(n&&y(l,n,a)<0||o&&y(r,o,a)>0)}isYearDisabled(e){const t=this.calendar();for(let a=1;a<=12;a+=1)if(!this.isMonthDisabled(e,a))return!1;return!0}initialViewParts(){return g(N(),"gregorian")}static \u0275fac=i.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"22.0.7",ngImport:i,type:x,deps:[],target:i.\u0275\u0275FactoryTarget.Component});static \u0275cmp=i.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"22.0.7",type:x,isStandalone:!0,selector:"dga-date-picker",inputs:{valueInput:{classPropertyName:"valueInput",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},startValue:{classPropertyName:"startValue",publicName:"startValue",isSignal:!0,isRequired:!1,transformFunction:null},endValue:{classPropertyName:"endValue",publicName:"endValue",isSignal:!0,isRequired:!1,transformFunction:null},calendar:{classPropertyName:"calendar",publicName:"calendar",isSignal:!0,isRequired:!1,transformFunction:null},range:{classPropertyName:"range",publicName:"range",isSignal:!0,isRequired:!1,transformFunction:null},format:{classPropertyName:"format",publicName:"format",isSignal:!0,isRequired:!1,transformFunction:null},mode:{classPropertyName:"mode",publicName:"mode",isSignal:!0,isRequired:!1,transformFunction:null},locale:{classPropertyName:"locale",publicName:"locale",isSignal:!0,isRequired:!1,transformFunction:null},minDate:{classPropertyName:"minDate",publicName:"minDate",isSignal:!0,isRequired:!1,transformFunction:null},maxDate:{classPropertyName:"maxDate",publicName:"maxDate",isSignal:!0,isRequired:!1,transformFunction:null},yearBefore:{classPropertyName:"yearBefore",publicName:"yearBefore",isSignal:!0,isRequired:!1,transformFunction:null},yearAfter:{classPropertyName:"yearAfter",publicName:"yearAfter",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},controlId:{classPropertyName:"controlId",publicName:"controlId",isSignal:!0,isRequired:!1,transformFunction:null},name:{classPropertyName:"name",publicName:"name",isSignal:!0,isRequired:!1,transformFunction:null},size:{classPropertyName:"size",publicName:"size",isSignal:!0,isRequired:!1,transformFunction:null},disabledInput:{classPropertyName:"disabledInput",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null},required:{classPropertyName:"required",publicName:"required",isSignal:!0,isRequired:!1,transformFunction:null},clearable:{classPropertyName:"clearable",publicName:"clearable",isSignal:!0,isRequired:!1,transformFunction:null},editable:{classPropertyName:"editable",publicName:"editable",isSignal:!0,isRequired:!1,transformFunction:null},invalid:{classPropertyName:"invalid",publicName:"dgaInvalid",isSignal:!0,isRequired:!1,transformFunction:null},status:{classPropertyName:"status",publicName:"status",isSignal:!0,isRequired:!1,transformFunction:null},rangeSeparator:{classPropertyName:"rangeSeparator",publicName:"rangeSeparator",isSignal:!0,isRequired:!1,transformFunction:null},todayLabel:{classPropertyName:"todayLabel",publicName:"todayLabel",isSignal:!0,isRequired:!1,transformFunction:null},clearLabel:{classPropertyName:"clearLabel",publicName:"clearLabel",isSignal:!0,isRequired:!1,transformFunction:null},closeLabel:{classPropertyName:"closeLabel",publicName:"closeLabel",isSignal:!0,isRequired:!1,transformFunction:null},saveLabel:{classPropertyName:"saveLabel",publicName:"saveLabel",isSignal:!0,isRequired:!1,transformFunction:null},ariaLabel:{classPropertyName:"ariaLabel",publicName:"ariaLabel",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{startValue:"startValueChange",endValue:"endValueChange",valueChange:"valueChange",rangeChange:"rangeChange"},host:{listeners:{"document:click":"onDocumentClick($event)","document:keydown.escape":"onEscape()","window:resize":"onReposition()","window:scroll":"onReposition()"},classAttribute:"dga-date-picker-host"},providers:[U(x)],ngImport:i,template:`
2
+ <div
3
+ class="dga-date-picker"
4
+ [class.dga-date-picker--open]="open()"
5
+ [class.dga-date-picker--disabled]="disabled()"
6
+ [class.dga-date-picker--range]="range()"
7
+ [attr.data-size]="size()"
8
+ [attr.data-locale]="locale()"
9
+ [attr.data-calendar]="calendar()"
10
+ >
11
+ <dga-form-control
12
+ [size]="size()"
13
+ [status]="effectiveStatus()"
14
+ [disabled]="disabled()"
15
+ [filled]="!!displayValue()"
16
+ >
17
+ <input
18
+ #inputEl
19
+ type="text"
20
+ class="dga-date-picker__input"
21
+ [id]="controlId() || inputId"
22
+ [name]="name() || null"
23
+ [attr.placeholder]="resolvedPlaceholder()"
24
+ [attr.aria-label]="ariaLabel() || null"
25
+ [attr.aria-expanded]="open()"
26
+ [attr.aria-haspopup]="'dialog'"
27
+ [attr.aria-controls]="open() ? panelId : null"
28
+ [attr.aria-invalid]="invalid() || effectiveStatus() === 'error' || null"
29
+ [attr.aria-required]="required() || null"
30
+ [disabled]="disabled()"
31
+ [readonly]="!editable()"
32
+ [value]="displayValue()"
33
+ (input)="onInput($any($event.target).value)"
34
+ (keydown)="onInputKeydown($event)"
35
+ (blur)="onInputBlur()"
36
+ />
37
+ @if (clearable() && displayValue() && !disabled()) {
38
+ <button
39
+ type="button"
40
+ class="dga-date-picker__clear"
41
+ [attr.aria-label]="labels().clearInput"
42
+ (mousedown)="$event.preventDefault()"
43
+ (click)="clearAll()"
44
+ >
45
+ \xD7
46
+ </button>
47
+ }
48
+ <button
49
+ type="button"
50
+ class="dga-date-picker__toggle"
51
+ [attr.aria-label]="labels().calendar"
52
+ [disabled]="disabled()"
53
+ (mousedown)="$event.preventDefault()"
54
+ (click)="togglePanel()"
55
+ >
56
+ <dga-icon name="calendar" size="sm" />
57
+ </button>
58
+ </dga-form-control>
59
+
60
+ @if (open()) {
61
+ <div
62
+ #panelEl
63
+ [id]="panelId"
64
+ class="dga-date-picker__panel"
65
+ role="dialog"
66
+ [attr.aria-label]="labels().calendar"
67
+ [ngStyle]="panelStyle()"
68
+ (mousedown)="$event.preventDefault()"
69
+ >
70
+ <div class="dga-date-picker__header">
71
+ <button
72
+ type="button"
73
+ class="dga-date-picker__nav"
74
+ [attr.aria-label]="labels().prev"
75
+ (click)="navigate(-1)"
76
+ >
77
+ \u2039
78
+ </button>
79
+
80
+ <div class="dga-date-picker__selects">
81
+ @if (panelMode() !== 'year') {
82
+ <button
83
+ type="button"
84
+ class="dga-date-picker__select-btn"
85
+ (click)="setPanelView('month')"
86
+ >
87
+ {{ monthLabel(viewMonth()) }}
88
+ </button>
89
+ }
90
+ <button
91
+ type="button"
92
+ class="dga-date-picker__select-btn"
93
+ (click)="setPanelView('year')"
94
+ >
95
+ {{ viewYear() }}
96
+ </button>
97
+ </div>
98
+
99
+ <button
100
+ type="button"
101
+ class="dga-date-picker__nav"
102
+ [attr.aria-label]="labels().next"
103
+ (click)="navigate(1)"
104
+ >
105
+ \u203A
106
+ </button>
107
+ </div>
108
+
109
+ @if (panelView() === 'day') {
110
+ <div class="dga-date-picker__weekdays" aria-hidden="true">
111
+ @for (wd of weekdays(); track wd) {
112
+ <span class="dga-date-picker__weekday">{{ wd }}</span>
113
+ }
114
+ </div>
115
+ <div class="dga-date-picker__grid dga-date-picker__grid--days" role="grid">
116
+ @for (cell of dayCells(); track cell.key) {
117
+ @if (cell.empty) {
118
+ <span class="dga-date-picker__day dga-date-picker__day--empty" aria-hidden="true"></span>
119
+ } @else {
120
+ <button
121
+ type="button"
122
+ role="gridcell"
123
+ class="dga-date-picker__day"
124
+ [class.dga-date-picker__day--today]="cell.today"
125
+ [class.dga-date-picker__day--selected]="cell.selected"
126
+ [class.dga-date-picker__day--in-range]="cell.inRange"
127
+ [class.dga-date-picker__day--range-start]="cell.rangeStart"
128
+ [class.dga-date-picker__day--range-end]="cell.rangeEnd"
129
+ [class.dga-date-picker__day--disabled]="cell.disabled"
130
+ [disabled]="cell.disabled"
131
+ [attr.aria-selected]="cell.selected"
132
+ [attr.aria-label]="cell.label"
133
+ (click)="selectDay(cell.day!)"
134
+ >
135
+ {{ cell.day }}
136
+ </button>
137
+ }
138
+ }
139
+ </div>
140
+ } @else if (panelView() === 'month') {
141
+ <div class="dga-date-picker__grid dga-date-picker__grid--months" role="listbox">
142
+ @for (m of monthOptions(); track m.value) {
143
+ <button
144
+ type="button"
145
+ role="option"
146
+ class="dga-date-picker__month"
147
+ [class.dga-date-picker__month--selected]="m.selected"
148
+ [class.dga-date-picker__month--disabled]="m.disabled"
149
+ [disabled]="m.disabled"
150
+ [attr.aria-selected]="m.selected"
151
+ (click)="selectMonth(m.value)"
152
+ >
153
+ {{ m.label }}
154
+ </button>
155
+ }
156
+ </div>
157
+ } @else {
158
+ <div class="dga-date-picker__grid dga-date-picker__grid--years" role="listbox">
159
+ @for (y of yearOptions(); track y.value) {
160
+ <button
161
+ type="button"
162
+ role="option"
163
+ class="dga-date-picker__year"
164
+ [class.dga-date-picker__year--selected]="y.selected"
165
+ [class.dga-date-picker__year--disabled]="y.disabled"
166
+ [disabled]="y.disabled"
167
+ [attr.aria-selected]="y.selected"
168
+ (click)="selectYear(y.value)"
169
+ >
170
+ {{ y.value }}
171
+ </button>
172
+ }
173
+ </div>
174
+ }
175
+
176
+ <div class="dga-date-picker__footer">
177
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--ghost" (click)="goToday()">
178
+ {{ resolvedTodayLabel() }}
179
+ </button>
180
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--ghost" (click)="clearDraft()">
181
+ {{ resolvedClearLabel() }}
182
+ </button>
183
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--ghost" (click)="closePanel()">
184
+ {{ resolvedCloseLabel() }}
185
+ </button>
186
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--primary" (click)="save()">
187
+ {{ resolvedSaveLabel() }}
188
+ </button>
189
+ </div>
190
+ </div>
191
+ }
192
+ </div>
193
+ `,isInline:!0,styles:[`.dga-date-picker{position:relative;display:block;width:100%;--dga-date-picker-primary: var(--dga-bg-primary, var(--dga-color-primary-600, #0b6b4f));--dga-date-picker-primary-faint: var(--dga-bg-primary-faint, color-mix(in srgb, var(--dga-date-picker-primary) 12%, transparent));--dga-date-picker-border: var(--dga-border-neutral, var(--dga-color-neutral-300, #d1d5db));--dga-date-picker-surface: var(--dga-bg-elevated, var(--dga-bg-card, var(--dga-bg-default, #fff)));--dga-date-picker-muted: var(--dga-text-muted, #6b7280);--dga-date-picker-fg: var(--dga-text-default, #111827);--dga-date-picker-radius: var(--dga-radius-md, 8px);--dga-date-picker-shadow: var(--dga-shadow-lg, 0 10px 24px rgb(0 0 0 / 12%));color-scheme:inherit}.dga-date-picker__input{flex:1 1 auto;min-width:0;border:0;background:transparent;color:inherit;font:inherit;outline:none;padding:0}.dga-date-picker__input::placeholder{color:var(--dga-date-picker-muted)}.dga-date-picker__input:disabled{cursor:not-allowed}.dga-date-picker__toggle,.dga-date-picker__clear{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:0;background:transparent;color:var(--dga-date-picker-muted);cursor:pointer;padding:0;min-width:1.75rem;min-height:1.75rem;border-radius:var(--dga-radius-sm, 4px);transition:color .16s ease,background-color .16s ease}.dga-date-picker__toggle:hover:not(:disabled),.dga-date-picker__clear:hover:not(:disabled){color:var(--dga-date-picker-fg);background:var(--dga-date-picker-primary-faint)}.dga-date-picker__toggle:disabled{cursor:not-allowed;opacity:.5}.dga-date-picker__panel{position:fixed;z-index:var(--z-index-dropdown);min-width:min(20rem,calc(100vw - 1rem));width:max-content;max-width:min(22rem,calc(100vw - 1rem));max-height:min(28rem,calc(100vh - 1rem));overflow:auto;padding:var(--dga-space-md, 12px);border:1px solid var(--dga-date-picker-border);border-radius:var(--dga-date-picker-radius);background:var(--dga-date-picker-surface);color:var(--dga-date-picker-fg);box-shadow:var(--dga-date-picker-shadow)}.dga-date-picker__header{display:flex;align-items:center;justify-content:space-between;gap:var(--dga-space-sm, 8px);margin-bottom:var(--dga-space-md, 12px)}.dga-date-picker__selects{display:flex;flex:1;align-items:center;justify-content:center;gap:var(--dga-space-xs, 4px);min-width:0}.dga-date-picker__select-btn{border:0;background:transparent;color:var(--dga-date-picker-fg);font:inherit;font-weight:600;cursor:pointer;padding:var(--dga-space-xs, 4px) var(--dga-space-sm, 8px);border-radius:var(--dga-radius-sm, 4px)}.dga-date-picker__select-btn:hover{background:var(--dga-date-picker-primary-faint);color:var(--dga-date-picker-primary)}.dga-date-picker__nav{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:999px;background:transparent;color:var(--dga-date-picker-fg);font-size:1.25rem;line-height:1;cursor:pointer}.dga-date-picker__nav:hover{background:var(--dga-date-picker-primary-faint);color:var(--dga-date-picker-primary)}.dga-date-picker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:var(--dga-space-xs, 4px)}.dga-date-picker__weekday{text-align:center;font-size:.75rem;font-weight:600;color:var(--dga-date-picker-muted);padding-block:2px}.dga-date-picker__grid{display:grid;gap:2px}.dga-date-picker__grid--days{grid-template-columns:repeat(7,1fr)}.dga-date-picker__grid--months{grid-template-columns:repeat(3,1fr)}.dga-date-picker__grid--years{grid-template-columns:repeat(4,1fr);max-height:14rem;overflow:auto}.dga-date-picker__day{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;margin-inline:auto;border:1px solid transparent;border-radius:999px;background:transparent;color:inherit;font:inherit;cursor:pointer;transition:background-color .14s ease,color .14s ease,border-color .14s ease}.dga-date-picker__day--empty{pointer-events:none}.dga-date-picker__day--today{border-color:var(--dga-date-picker-primary)}.dga-date-picker__day--selected,.dga-date-picker__day--range-start,.dga-date-picker__day--range-end{background:var(--dga-date-picker-primary);color:var(--dga-text-on-color, #fff);border-color:var(--dga-date-picker-primary)}.dga-date-picker__day--in-range:not(.dga-date-picker__day--selected){background:var(--dga-date-picker-primary-faint);border-radius:0}.dga-date-picker__day--range-start:not(.dga-date-picker__day--range-end){border-start-start-radius:999px;border-end-start-radius:999px}.dga-date-picker__day--range-end:not(.dga-date-picker__day--range-start){border-start-end-radius:999px;border-end-end-radius:999px}.dga-date-picker__day:hover:not(:disabled):not(.dga-date-picker__day--selected){background:var(--dga-date-picker-primary-faint)}.dga-date-picker__day--disabled,.dga-date-picker__month--disabled,.dga-date-picker__year--disabled{opacity:.35;cursor:not-allowed}.dga-date-picker__month,.dga-date-picker__year{border:1px solid transparent;border-radius:var(--dga-radius-sm, 4px);background:transparent;color:inherit;font:inherit;padding:var(--dga-space-sm, 8px);cursor:pointer;text-align:center}.dga-date-picker__month--selected,.dga-date-picker__year--selected{background:var(--dga-date-picker-primary);color:var(--dga-text-on-color, #fff)}.dga-date-picker__month:hover:not(:disabled):not(.dga-date-picker__month--selected),.dga-date-picker__year:hover:not(:disabled):not(.dga-date-picker__year--selected){background:var(--dga-date-picker-primary-faint)}.dga-date-picker__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--dga-space-xs, 4px);margin-top:var(--dga-space-md, 12px);padding-top:var(--dga-space-md, 12px);border-top:1px solid var(--dga-date-picker-border)}.dga-date-picker__btn{border:1px solid transparent;border-radius:var(--dga-radius-sm, 4px);background:transparent;font:inherit;font-weight:600;padding:var(--dga-space-xs, 4px) var(--dga-space-md, 12px);cursor:pointer;min-height:2rem}.dga-date-picker__btn--ghost{color:var(--dga-date-picker-fg);border-color:var(--dga-date-picker-border)}.dga-date-picker__btn--ghost:hover{background:var(--dga-date-picker-primary-faint);border-color:var(--dga-date-picker-primary);color:var(--dga-date-picker-primary)}.dga-date-picker__btn--primary{background:var(--dga-date-picker-primary);color:var(--dga-text-on-color, #fff)}.dga-date-picker__btn--primary:hover{filter:brightness(1.05)}.dga-date-picker[data-locale=ar] .dga-date-picker__panel{direction:rtl}.dga-date-picker[data-size=sm] .dga-date-picker__day{width:2rem;height:2rem;font-size:.8125rem}.dga-date-picker[data-size=lg] .dga-date-picker__day{width:2.5rem;height:2.5rem}
194
+ `],dependencies:[{kind:"component",type:O,selector:"dga-form-control",inputs:["size","status","disabled","filled","startIcon","endIcon"]},{kind:"component",type:j,selector:"dga-icon",inputs:["name","glyph","size","tone","label"]},{kind:"directive",type:B,selector:"[ngStyle]",inputs:["ngStyle"]}],changeDetection:i.ChangeDetectionStrategy.OnPush,encapsulation:i.ViewEncapsulation.None})}i.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"22.0.7",ngImport:i,type:x,decorators:[{type:ie,args:[{selector:"dga-date-picker",standalone:!0,imports:[O,j,B],encapsulation:de.None,template:`
195
+ <div
196
+ class="dga-date-picker"
197
+ [class.dga-date-picker--open]="open()"
198
+ [class.dga-date-picker--disabled]="disabled()"
199
+ [class.dga-date-picker--range]="range()"
200
+ [attr.data-size]="size()"
201
+ [attr.data-locale]="locale()"
202
+ [attr.data-calendar]="calendar()"
203
+ >
204
+ <dga-form-control
205
+ [size]="size()"
206
+ [status]="effectiveStatus()"
207
+ [disabled]="disabled()"
208
+ [filled]="!!displayValue()"
209
+ >
210
+ <input
211
+ #inputEl
212
+ type="text"
213
+ class="dga-date-picker__input"
214
+ [id]="controlId() || inputId"
215
+ [name]="name() || null"
216
+ [attr.placeholder]="resolvedPlaceholder()"
217
+ [attr.aria-label]="ariaLabel() || null"
218
+ [attr.aria-expanded]="open()"
219
+ [attr.aria-haspopup]="'dialog'"
220
+ [attr.aria-controls]="open() ? panelId : null"
221
+ [attr.aria-invalid]="invalid() || effectiveStatus() === 'error' || null"
222
+ [attr.aria-required]="required() || null"
223
+ [disabled]="disabled()"
224
+ [readonly]="!editable()"
225
+ [value]="displayValue()"
226
+ (input)="onInput($any($event.target).value)"
227
+ (keydown)="onInputKeydown($event)"
228
+ (blur)="onInputBlur()"
229
+ />
230
+ @if (clearable() && displayValue() && !disabled()) {
231
+ <button
232
+ type="button"
233
+ class="dga-date-picker__clear"
234
+ [attr.aria-label]="labels().clearInput"
235
+ (mousedown)="$event.preventDefault()"
236
+ (click)="clearAll()"
237
+ >
238
+ \xD7
239
+ </button>
240
+ }
241
+ <button
242
+ type="button"
243
+ class="dga-date-picker__toggle"
244
+ [attr.aria-label]="labels().calendar"
245
+ [disabled]="disabled()"
246
+ (mousedown)="$event.preventDefault()"
247
+ (click)="togglePanel()"
248
+ >
249
+ <dga-icon name="calendar" size="sm" />
250
+ </button>
251
+ </dga-form-control>
252
+
253
+ @if (open()) {
254
+ <div
255
+ #panelEl
256
+ [id]="panelId"
257
+ class="dga-date-picker__panel"
258
+ role="dialog"
259
+ [attr.aria-label]="labels().calendar"
260
+ [ngStyle]="panelStyle()"
261
+ (mousedown)="$event.preventDefault()"
262
+ >
263
+ <div class="dga-date-picker__header">
264
+ <button
265
+ type="button"
266
+ class="dga-date-picker__nav"
267
+ [attr.aria-label]="labels().prev"
268
+ (click)="navigate(-1)"
269
+ >
270
+ \u2039
271
+ </button>
272
+
273
+ <div class="dga-date-picker__selects">
274
+ @if (panelMode() !== 'year') {
275
+ <button
276
+ type="button"
277
+ class="dga-date-picker__select-btn"
278
+ (click)="setPanelView('month')"
279
+ >
280
+ {{ monthLabel(viewMonth()) }}
281
+ </button>
282
+ }
283
+ <button
284
+ type="button"
285
+ class="dga-date-picker__select-btn"
286
+ (click)="setPanelView('year')"
287
+ >
288
+ {{ viewYear() }}
289
+ </button>
290
+ </div>
291
+
292
+ <button
293
+ type="button"
294
+ class="dga-date-picker__nav"
295
+ [attr.aria-label]="labels().next"
296
+ (click)="navigate(1)"
297
+ >
298
+ \u203A
299
+ </button>
300
+ </div>
301
+
302
+ @if (panelView() === 'day') {
303
+ <div class="dga-date-picker__weekdays" aria-hidden="true">
304
+ @for (wd of weekdays(); track wd) {
305
+ <span class="dga-date-picker__weekday">{{ wd }}</span>
306
+ }
307
+ </div>
308
+ <div class="dga-date-picker__grid dga-date-picker__grid--days" role="grid">
309
+ @for (cell of dayCells(); track cell.key) {
310
+ @if (cell.empty) {
311
+ <span class="dga-date-picker__day dga-date-picker__day--empty" aria-hidden="true"></span>
312
+ } @else {
313
+ <button
314
+ type="button"
315
+ role="gridcell"
316
+ class="dga-date-picker__day"
317
+ [class.dga-date-picker__day--today]="cell.today"
318
+ [class.dga-date-picker__day--selected]="cell.selected"
319
+ [class.dga-date-picker__day--in-range]="cell.inRange"
320
+ [class.dga-date-picker__day--range-start]="cell.rangeStart"
321
+ [class.dga-date-picker__day--range-end]="cell.rangeEnd"
322
+ [class.dga-date-picker__day--disabled]="cell.disabled"
323
+ [disabled]="cell.disabled"
324
+ [attr.aria-selected]="cell.selected"
325
+ [attr.aria-label]="cell.label"
326
+ (click)="selectDay(cell.day!)"
327
+ >
328
+ {{ cell.day }}
329
+ </button>
330
+ }
331
+ }
332
+ </div>
333
+ } @else if (panelView() === 'month') {
334
+ <div class="dga-date-picker__grid dga-date-picker__grid--months" role="listbox">
335
+ @for (m of monthOptions(); track m.value) {
336
+ <button
337
+ type="button"
338
+ role="option"
339
+ class="dga-date-picker__month"
340
+ [class.dga-date-picker__month--selected]="m.selected"
341
+ [class.dga-date-picker__month--disabled]="m.disabled"
342
+ [disabled]="m.disabled"
343
+ [attr.aria-selected]="m.selected"
344
+ (click)="selectMonth(m.value)"
345
+ >
346
+ {{ m.label }}
347
+ </button>
348
+ }
349
+ </div>
350
+ } @else {
351
+ <div class="dga-date-picker__grid dga-date-picker__grid--years" role="listbox">
352
+ @for (y of yearOptions(); track y.value) {
353
+ <button
354
+ type="button"
355
+ role="option"
356
+ class="dga-date-picker__year"
357
+ [class.dga-date-picker__year--selected]="y.selected"
358
+ [class.dga-date-picker__year--disabled]="y.disabled"
359
+ [disabled]="y.disabled"
360
+ [attr.aria-selected]="y.selected"
361
+ (click)="selectYear(y.value)"
362
+ >
363
+ {{ y.value }}
364
+ </button>
365
+ }
366
+ </div>
367
+ }
368
+
369
+ <div class="dga-date-picker__footer">
370
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--ghost" (click)="goToday()">
371
+ {{ resolvedTodayLabel() }}
372
+ </button>
373
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--ghost" (click)="clearDraft()">
374
+ {{ resolvedClearLabel() }}
375
+ </button>
376
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--ghost" (click)="closePanel()">
377
+ {{ resolvedCloseLabel() }}
378
+ </button>
379
+ <button type="button" class="dga-date-picker__btn dga-date-picker__btn--primary" (click)="save()">
380
+ {{ resolvedSaveLabel() }}
381
+ </button>
382
+ </div>
383
+ </div>
384
+ }
385
+ </div>
386
+ `,changeDetection:re.OnPush,host:{class:"dga-date-picker-host"},providers:[U(x)],styles:[`.dga-date-picker{position:relative;display:block;width:100%;--dga-date-picker-primary: var(--dga-bg-primary, var(--dga-color-primary-600, #0b6b4f));--dga-date-picker-primary-faint: var(--dga-bg-primary-faint, color-mix(in srgb, var(--dga-date-picker-primary) 12%, transparent));--dga-date-picker-border: var(--dga-border-neutral, var(--dga-color-neutral-300, #d1d5db));--dga-date-picker-surface: var(--dga-bg-elevated, var(--dga-bg-card, var(--dga-bg-default, #fff)));--dga-date-picker-muted: var(--dga-text-muted, #6b7280);--dga-date-picker-fg: var(--dga-text-default, #111827);--dga-date-picker-radius: var(--dga-radius-md, 8px);--dga-date-picker-shadow: var(--dga-shadow-lg, 0 10px 24px rgb(0 0 0 / 12%));color-scheme:inherit}.dga-date-picker__input{flex:1 1 auto;min-width:0;border:0;background:transparent;color:inherit;font:inherit;outline:none;padding:0}.dga-date-picker__input::placeholder{color:var(--dga-date-picker-muted)}.dga-date-picker__input:disabled{cursor:not-allowed}.dga-date-picker__toggle,.dga-date-picker__clear{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:0;background:transparent;color:var(--dga-date-picker-muted);cursor:pointer;padding:0;min-width:1.75rem;min-height:1.75rem;border-radius:var(--dga-radius-sm, 4px);transition:color .16s ease,background-color .16s ease}.dga-date-picker__toggle:hover:not(:disabled),.dga-date-picker__clear:hover:not(:disabled){color:var(--dga-date-picker-fg);background:var(--dga-date-picker-primary-faint)}.dga-date-picker__toggle:disabled{cursor:not-allowed;opacity:.5}.dga-date-picker__panel{position:fixed;z-index:var(--z-index-dropdown);min-width:min(20rem,calc(100vw - 1rem));width:max-content;max-width:min(22rem,calc(100vw - 1rem));max-height:min(28rem,calc(100vh - 1rem));overflow:auto;padding:var(--dga-space-md, 12px);border:1px solid var(--dga-date-picker-border);border-radius:var(--dga-date-picker-radius);background:var(--dga-date-picker-surface);color:var(--dga-date-picker-fg);box-shadow:var(--dga-date-picker-shadow)}.dga-date-picker__header{display:flex;align-items:center;justify-content:space-between;gap:var(--dga-space-sm, 8px);margin-bottom:var(--dga-space-md, 12px)}.dga-date-picker__selects{display:flex;flex:1;align-items:center;justify-content:center;gap:var(--dga-space-xs, 4px);min-width:0}.dga-date-picker__select-btn{border:0;background:transparent;color:var(--dga-date-picker-fg);font:inherit;font-weight:600;cursor:pointer;padding:var(--dga-space-xs, 4px) var(--dga-space-sm, 8px);border-radius:var(--dga-radius-sm, 4px)}.dga-date-picker__select-btn:hover{background:var(--dga-date-picker-primary-faint);color:var(--dga-date-picker-primary)}.dga-date-picker__nav{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:999px;background:transparent;color:var(--dga-date-picker-fg);font-size:1.25rem;line-height:1;cursor:pointer}.dga-date-picker__nav:hover{background:var(--dga-date-picker-primary-faint);color:var(--dga-date-picker-primary)}.dga-date-picker__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:var(--dga-space-xs, 4px)}.dga-date-picker__weekday{text-align:center;font-size:.75rem;font-weight:600;color:var(--dga-date-picker-muted);padding-block:2px}.dga-date-picker__grid{display:grid;gap:2px}.dga-date-picker__grid--days{grid-template-columns:repeat(7,1fr)}.dga-date-picker__grid--months{grid-template-columns:repeat(3,1fr)}.dga-date-picker__grid--years{grid-template-columns:repeat(4,1fr);max-height:14rem;overflow:auto}.dga-date-picker__day{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;margin-inline:auto;border:1px solid transparent;border-radius:999px;background:transparent;color:inherit;font:inherit;cursor:pointer;transition:background-color .14s ease,color .14s ease,border-color .14s ease}.dga-date-picker__day--empty{pointer-events:none}.dga-date-picker__day--today{border-color:var(--dga-date-picker-primary)}.dga-date-picker__day--selected,.dga-date-picker__day--range-start,.dga-date-picker__day--range-end{background:var(--dga-date-picker-primary);color:var(--dga-text-on-color, #fff);border-color:var(--dga-date-picker-primary)}.dga-date-picker__day--in-range:not(.dga-date-picker__day--selected){background:var(--dga-date-picker-primary-faint);border-radius:0}.dga-date-picker__day--range-start:not(.dga-date-picker__day--range-end){border-start-start-radius:999px;border-end-start-radius:999px}.dga-date-picker__day--range-end:not(.dga-date-picker__day--range-start){border-start-end-radius:999px;border-end-end-radius:999px}.dga-date-picker__day:hover:not(:disabled):not(.dga-date-picker__day--selected){background:var(--dga-date-picker-primary-faint)}.dga-date-picker__day--disabled,.dga-date-picker__month--disabled,.dga-date-picker__year--disabled{opacity:.35;cursor:not-allowed}.dga-date-picker__month,.dga-date-picker__year{border:1px solid transparent;border-radius:var(--dga-radius-sm, 4px);background:transparent;color:inherit;font:inherit;padding:var(--dga-space-sm, 8px);cursor:pointer;text-align:center}.dga-date-picker__month--selected,.dga-date-picker__year--selected{background:var(--dga-date-picker-primary);color:var(--dga-text-on-color, #fff)}.dga-date-picker__month:hover:not(:disabled):not(.dga-date-picker__month--selected),.dga-date-picker__year:hover:not(:disabled):not(.dga-date-picker__year--selected){background:var(--dga-date-picker-primary-faint)}.dga-date-picker__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--dga-space-xs, 4px);margin-top:var(--dga-space-md, 12px);padding-top:var(--dga-space-md, 12px);border-top:1px solid var(--dga-date-picker-border)}.dga-date-picker__btn{border:1px solid transparent;border-radius:var(--dga-radius-sm, 4px);background:transparent;font:inherit;font-weight:600;padding:var(--dga-space-xs, 4px) var(--dga-space-md, 12px);cursor:pointer;min-height:2rem}.dga-date-picker__btn--ghost{color:var(--dga-date-picker-fg);border-color:var(--dga-date-picker-border)}.dga-date-picker__btn--ghost:hover{background:var(--dga-date-picker-primary-faint);border-color:var(--dga-date-picker-primary);color:var(--dga-date-picker-primary)}.dga-date-picker__btn--primary{background:var(--dga-date-picker-primary);color:var(--dga-text-on-color, #fff)}.dga-date-picker__btn--primary:hover{filter:brightness(1.05)}.dga-date-picker[data-locale=ar] .dga-date-picker__panel{direction:rtl}.dga-date-picker[data-size=sm] .dga-date-picker__day{width:2rem;height:2rem;font-size:.8125rem}.dga-date-picker[data-size=lg] .dga-date-picker__day{width:2.5rem;height:2.5rem}
387
+ `]}]}],ctorParameters:()=>[],propDecorators:{valueInput:[{type:i.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],startValue:[{type:i.Input,args:[{isSignal:!0,alias:"startValue",required:!1}]},{type:i.Output,args:["startValueChange"]}],endValue:[{type:i.Input,args:[{isSignal:!0,alias:"endValue",required:!1}]},{type:i.Output,args:["endValueChange"]}],calendar:[{type:i.Input,args:[{isSignal:!0,alias:"calendar",required:!1}]}],range:[{type:i.Input,args:[{isSignal:!0,alias:"range",required:!1}]}],format:[{type:i.Input,args:[{isSignal:!0,alias:"format",required:!1}]}],mode:[{type:i.Input,args:[{isSignal:!0,alias:"mode",required:!1}]}],locale:[{type:i.Input,args:[{isSignal:!0,alias:"locale",required:!1}]}],minDate:[{type:i.Input,args:[{isSignal:!0,alias:"minDate",required:!1}]}],maxDate:[{type:i.Input,args:[{isSignal:!0,alias:"maxDate",required:!1}]}],yearBefore:[{type:i.Input,args:[{isSignal:!0,alias:"yearBefore",required:!1}]}],yearAfter:[{type:i.Input,args:[{isSignal:!0,alias:"yearAfter",required:!1}]}],placeholder:[{type:i.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],controlId:[{type:i.Input,args:[{isSignal:!0,alias:"controlId",required:!1}]}],name:[{type:i.Input,args:[{isSignal:!0,alias:"name",required:!1}]}],size:[{type:i.Input,args:[{isSignal:!0,alias:"size",required:!1}]}],disabledInput:[{type:i.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],required:[{type:i.Input,args:[{isSignal:!0,alias:"required",required:!1}]}],clearable:[{type:i.Input,args:[{isSignal:!0,alias:"clearable",required:!1}]}],editable:[{type:i.Input,args:[{isSignal:!0,alias:"editable",required:!1}]}],invalid:[{type:i.Input,args:[{isSignal:!0,alias:"dgaInvalid",required:!1}]}],status:[{type:i.Input,args:[{isSignal:!0,alias:"status",required:!1}]}],rangeSeparator:[{type:i.Input,args:[{isSignal:!0,alias:"rangeSeparator",required:!1}]}],todayLabel:[{type:i.Input,args:[{isSignal:!0,alias:"todayLabel",required:!1}]}],clearLabel:[{type:i.Input,args:[{isSignal:!0,alias:"clearLabel",required:!1}]}],closeLabel:[{type:i.Input,args:[{isSignal:!0,alias:"closeLabel",required:!1}]}],saveLabel:[{type:i.Input,args:[{isSignal:!0,alias:"saveLabel",required:!1}]}],ariaLabel:[{type:i.Input,args:[{isSignal:!0,alias:"ariaLabel",required:!1}]}],valueChange:[{type:i.Output,args:["valueChange"]}],rangeChange:[{type:i.Output,args:["rangeChange"]}],onDocumentClick:[{type:q,args:["document:click",["$event"]]}],onEscape:[{type:q,args:["document:keydown.escape"]}],onReposition:[{type:q,args:["window:resize"]},{type:q,args:["window:scroll"]}]}});export{J as DGA_GREGORIAN_MONTHS,H as DGA_HIJRI_MONTHS,G as DGA_WEEKDAYS,x as DgaDatePicker,R as dgaAddMonths,F as dgaClampDate,I as dgaCoerceDate,y as dgaCompareDays,C as dgaDaysInMonth,D as dgaFormatDate,g as dgaGetCalendarParts,K as dgaModeFromFormat,E as dgaMonthNames,Z as dgaMonthStartWeekday,V as dgaParseDate,v as dgaPartsToDate,M as dgaSameDay,N as dgaTodayUtc};