@stenajs-webui/calendar 20.10.0 → 20.11.1
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.
- package/dist/components/calendar/CalendarMonth.d.ts +2 -1
- package/dist/components/input-types/date-input/DateInput.d.ts +1 -1
- package/dist/components/input-types/date-text-input/DateTextInput.d.ts +1 -1
- package/dist/index.es.js +6 -5
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/CalendarTypes.d.ts +3 -3
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._calendar_1b766_1{--swui-calendar-day-width: 48px;--swui-calendar-day-height: 48px;--swui-calendar-day-border-radius: var(--swui-max-border-radius);--swui-calendar-week-number-bg-color: transparent;--swui-calendar-week-number-text-color: var(--lhds-color-ui-500);--swui-calendar-week-number-clickable-text-color: var(--lhds-color-ui-500);--swui-calendar-week-day-text-color: var(--lhds-color-ui-500);--swui-calendar-week-day-clickable-text-color: var(--lhds-color-ui-500);--swui-calendar-wrapper-selected-border: var(--modern-red);--swui-calendar-wrapper-selected-background: var(--modern-red);--swui-calendar-wrapper-range-border: var(--lhds-color-red-100);--swui-calendar-wrapper-range-background: var(--lhds-color-red-100);--swui-calendar-wrapper-today-border: var(--lhds-color-ui-200);--swui-calendar-wrapper-today-background: var(--lhds-color-ui-50);--swui-calendar-text-selected-color: #fff;--swui-calendar-text-disabled-color: var(--swui-text-disabled-color);--swui-calendar-text-in-other-month-color: var(--swui-text-disabled-color)}._calendar_1b766_1 table{border-spacing:0 4px}._calendar_1b766_1 tr td:last-child{border-top-right-radius:var(--swui-calendar-day-border-radius);border-bottom-right-radius:var(--swui-calendar-day-border-radius)}._calendar_1b766_1._weekNumberVisible_1b766_41 tr td:nth-child(2),._calendar_1b766_1:not(._weekNumberVisible_1b766_41) tr td:first-child{border-top-left-radius:var(--swui-calendar-day-border-radius);border-bottom-left-radius:var(--swui-calendar-day-border-radius)}._calendar_1b766_1 td{padding:0;width:var(--swui-calendar-day-width);height:var(--swui-calendar-day-height)}._timePicker_1w05d_1{overflow:hidden;width:180px}._timePickerColumn_1w05d_6{overflow-y:hidden;flex:1}._timePickerColumn_1w05d_6:hover{overflow-y:scroll}")),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|
|
2
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),f=require("@stenajs-webui/core"),b=require("@stenajs-webui/elements"),u=require("date-fns"),xt=require("date-fns/locale"),H=require("lodash-es"),i=require("react"),Vt=require("classnames"),ut=require("@emotion/styled"),U=require("@stenajs-webui/forms"),Q=require("@stenajs-webui/tooltip"),Rt=require("@stenajs-webui/theme");function te(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const ee=te(i),$={yearAndMonth:"yyyy-MM",fullDate:"yyyy-MM-dd",fullMonthName:"LLLL",fullDateAndTime:"yyyy-MM-dd HH:mm",fullDateAndTimeSystem:"yyyy-MM-ddTHH:MM",weekDayName:"EEEE",weekDayNameShort:"EEE",dateAndMonth:"d MMM",monthAndDate:"MMM do"},G=(t={},e,r)=>{if(e&&r&&u.isAfter(r,e))return u.eachDayOfInterval({start:e,end:r}).reduce((s,o)=>{const l=u.isSameDay(o,e),a=u.isSameDay(o,r);return O(s,o,l?["selected","selectedStart","range"]:a?["selected","selectedEnd","range"]:["range"])},t);let n=t;return e&&(n=O(n,e,["selected","singleSelected"])),r&&(n=O(n,r,["selected","singleSelected"])),n},Tt=(t={},e,r,n)=>Et(t,e,r,u.startOfMonth(n),u.endOfMonth(n)),Et=(t={},e,r,n,s)=>e&&r?G(t,u.max([e,u.subDays(n,1)]),u.min([r,u.addDays(s,1)])):G(t,e,r),re=(t,e,r)=>{const n=u.format(e,$.yearAndMonth),s=u.getISOWeek(e),o=u.getDate(e);return{...t,[n]:{...t&&t[n],[s]:{...t&&t[n]&&t[n][s],[o]:{...t&&t[n]&&t[n][s]&&t[n][s][o],...r}}}}},ne=(t,e,r)=>{const n=u.format(e,$.yearAndMonth),s=u.getISOWeek(e),o=u.getDate(e);return{...t,[n]:{...t&&t[n],[s]:{...t&&t[n]&&t[n][s],[o]:{...t&&t[n]&&t[n][s]&&t[n][s][o],...r(t&&t[n]&&t[n][s]&&t[n][s][o])}}}}},O=(t,e,r)=>{const n=e.getMonth()+1,s=`${e.getFullYear()}-${n<10?"0":""}${n}`,o=u.getISOWeek(e),l=u.getDate(e),a=t&&t[s]&&t[s][o]&&t[s][o][l];return{...t,[s]:{...t&&t[s],[o]:{...t&&t[s]&&t[s][o],[l]:mt(a,r)}}}},mt=(t,e)=>({...t,highlights:[...(t==null?void 0:t.highlights)??[],...e]}),se=(t,e,r)=>{const n=e.days[0].date,s=n.getMonth()+1,o=`${n.getFullYear()}-${s<10?"0":""}${s}`,l=e.weekNumber;let a=t;e.days.forEach(m=>{a=O(a,m.date,r)});const d=a&&a[o]?a[o][l]:void 0,D=d&&d.highlights?[...d.highlights,...r]:r,g={...d,highlights:D};return{...a,[o]:{...t&&t[o],[l]:g}}},It=(t,e)=>{var s;if(!e.days.length)return{...t};const r=e.days[0].date,n=(s=H.last(e.days))==null?void 0:s.date;return{...G(t,r,n)}},oe=(t,e)=>i.useMemo(()=>t?O(e,new Date,["today"]):e,[t,e]);var yt=(t=>(t[t.JANUARY=0]="JANUARY",t[t.FEBRUARY=1]="FEBRUARY",t[t.MARCH=2]="MARCH",t[t.APRIL=3]="APRIL",t[t.MAY=4]="MAY",t[t.JUNE=5]="JUNE",t[t.JULY=6]="JULY",t[t.AUGUST=7]="AUGUST",t[t.SEPTEMBER=8]="SEPTEMBER",t[t.OCTOBER=9]="OCTOBER",t[t.NOVEMBER=10]="NOVEMBER",t[t.DECEMBER=11]="DECEMBER",t))(yt||{}),At=(t=>(t[t.SUNDAY=0]="SUNDAY",t[t.MONDAY=1]="MONDAY",t[t.TUESDAY=2]="TUESDAY",t[t.WEDNESDAY=3]="WEDNESDAY",t[t.THURSDAY=4]="THURSDAY",t[t.FRIDAY=5]="FRIDAY",t[t.SATURDAY=6]="SATURDAY",t))(At||{});const Dt=(t,e,r,n)=>{const s=[];for(let o=0;o<r;o++)s.push(bt(t,e+o,n));return s},bt=(t,e,r)=>{const n=t+Math.floor(e/12),s=e%12,o=new Date(n,s,1);return{monthString:u.format(o,$.yearAndMonth),name:H.startCase(u.format(o,$.fullMonthName,{locale:r})),year:n,monthInYear:s,weeks:Bt(n,s,r)}},Bt=(t,e,r,n=!0)=>{const s=new Date(t,e,1),o=u.startOfWeek(s,{locale:r}),l=[];for(let a=0;a<6;a++){const d=lt(u.addWeeks(o,a),r);if(a>0&&d.startMonth!==e&&!n)return l;l.push(d)}return l},lt=(t,e)=>{const r=u.getMonth(u.addDays(t,7))!==u.getMonth(t);return{weekNumber:u.getWeek(t,{locale:e}),startMonth:u.getMonth(t),startYear:u.getYear(t),endMonth:u.getMonth(u.addDays(t,6)),endYear:u.getYear(u.addDays(t,6)),days:Nt(t,e),isLastWeekOfMonth:r}},Yt=(t,e)=>{const r=u.getISODay(t);return{date:t,name:u.format(t,"EEE",e?{locale:e}:void 0),dateString:u.format(u.addHours(t,12),$.fullDate),weekNumber:u.getWeek(t,{locale:e}),year:u.getYear(t),month:u.getMonth(t),dayOfMonth:u.getDate(t),dayOfWeek:r,isFirstDayOfWeek:r===1,isLastDayOfWeek:r===7,isFirstDayOfMonth:u.isSameDay(u.startOfMonth(t),t),isLastDayOfMonth:u.isSameDay(u.endOfMonth(t),t)}},Nt=(t,e)=>u.eachDayOfInterval({start:t,end:u.addDays(t,6)}).map(r=>Yt(r,e)),Ht=(t,e)=>e>11?{year:t+Math.floor(e/12),month:e%12}:e<0?{year:t+Math.floor(e/12),month:12+e%12}:{year:t,month:e},ce="_calendar_1b766_1",ie="_weekNumberVisible_1b766_41",jt={calendar:ce,weekNumberVisible:ie},Pt=(t,e,r)=>!!(e&&e.indexOf(r)>=0||t&&t.highlights&&t.highlights.indexOf(r)>=0),W=(t,e,r,n,s)=>{if(r.length!==n.length)throw new Error("Select highlight failed, number of values do not equal number of highlights.");if(r.length===0)return s;for(let o=0;o<r.length;o++)if(typeof r[o]=="boolean"&&r[o]||typeof r[o]=="string"&&Pt(t,e,r[o]))return n[o];return s},Lt=({selectedBackground:t,todayBackground:e,rangeBackground:r,borderColor:n="transparent"})=>(s,o,l,a,d)=>({backgroundColor:W(o,s,["selected","range","today",l.month===d.monthInYear],[t,r,e,"#fff"],"transparent"),borderWidth:"1px",borderStyle:"solid",borderColor:W(o,s,["selectedStart","selectedEnd","singleSelected","range","today"],["var(--swui-calendar-wrapper-range-background)","var(--swui-calendar-wrapper-range-background)","var(--swui-calendar-wrapper-range-background)","var(--swui-calendar-wrapper-range-border)","var(--lhds-color-ui-500)"],n),borderTopLeftRadius:W(o,s,["selectedStart","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),borderBottomLeftRadius:W(o,s,["selectedStart","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),borderTopRightRadius:W(o,s,["selectedEnd","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),borderBottomRightRadius:W(o,s,["selectedEnd","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),boxSizing:"border-box"}),Wt=({selectedColor:t,disabledColor:e,inOtherMonthColor:r,rangeTextColor:n})=>(s,o,l,a,d)=>{const D=l.month!==d.monthInYear;return{color:W(o,s,[D,"selected","range","enabled","disabled"],[r,t,n,void 0,e])}},F={width:"var(--swui-calendar-day-width)",height:"var(--swui-calendar-day-height)",WeekNumber:{backgroundColor:"var(--swui-calendar-week-number-bg-color)",textColor:"var(--swui-calendar-week-number-text-color)",clickableTextColor:"var(--swui-calendar-week-number-clickable-text-color)"},WeekDay:{textColor:"var(--swui-calendar-week-day-text-color)",clickableTextColor:"var(--swui-calendar-week-day-clickable-text-color)"},CalendarDay:{tdStyle:Lt({selectedBackground:"var(--swui-calendar-wrapper-selected-background)",rangeBackground:"var(--swui-calendar-wrapper-range-background)",todayBackground:"var(--swui-calendar-wrapper-today-background)"}),textProps:Wt({selectedColor:"var(--swui-calendar-text-selected-color)",disabledColor:"var(--swui-calendar-text-disabled-color)",inOtherMonthColor:"var(--swui-calendar-text-in-other-month-color)"})},CalendarMonth:{headerTextColor:"var(--swui-calendar-week-day-text-color)"}},ae={...F,width:"37px",height:"37px"},Ot=({onClickWeekDay:t,day:e,theme:r})=>{const n=c.jsx(f.Box,{width:r.width,height:r.height,justifyContent:"center",alignItems:"center",children:c.jsx(f.Text,{size:"small",color:t?r.WeekDay.clickableTextColor:r.WeekDay.textColor,children:e.name})});return t?c.jsx(f.Clickable,{borderRadius:"var(--swui-calendar-day-border-radius)",onClick:s=>t(e.dayOfWeek,s),disableFocusHighlight:!t,children:n}):n},wt=function({day:e,week:r,month:n,dayState:s,userData:o,onClickDay:l,theme:a,extraDayContent:d,defaultHighlights:D}){const g=c.jsx(f.Box,{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",children:c.jsx(f.Text,{...a.CalendarDay.textProps&&a.CalendarDay.textProps(D,s,e,r,n,o),children:e.dayOfMonth})}),m=ut.td({...a.CalendarDay.tdStyle&&a.CalendarDay.tdStyle(D,s,e,r,n,o)}),h=ut.div({...a.CalendarDay.innerWrapperStyle&&a.CalendarDay.innerWrapperStyle(D,s,e,r,n,o),width:"100%",height:"100%"}),x=ut.div({...a.CalendarDay.cellWrapperStyle&&a.CalendarDay.cellWrapperStyle(D,s,e,r,n,o),width:"100%",height:"100%",position:"relative"}),w=le(D,s);return c.jsx(m,{onClick:w?void 0:C=>l==null?void 0:l(e,o,C),children:c.jsx(h,{children:c.jsx(x,{children:e.month===n.monthInYear&&c.jsxs(c.Fragment,{children:[d&&c.jsx(d,{week:r,month:n,day:e,dayState:s,theme:a,userData:o}),g]})})})})},le=(t,e)=>!!W(e,t,["disabled"],[!0],!1),Ut=({onClickWeek:t,theme:e,week:r,background:n,backgroundColor:s,prefix:o})=>{const l=c.jsxs(f.Box,{width:e.width,height:e.height,justifyContent:"center",alignItems:"center",children:[n&&c.jsx(f.Box,{position:"absolute",children:n}),c.jsx(f.Box,{position:"absolute",children:c.jsxs(f.Text,{color:t?e.WeekNumber.clickableTextColor:e.WeekNumber.textColor,children:[o,r.weekNumber]})})]});return c.jsx(f.Box,{background:s||e.WeekNumber.backgroundColor,position:"relative",children:t?c.jsx(f.Clickable,{borderRadius:"var(--swui-calendar-day-border-radius)",onClick:a=>t(r,a),disableFocusHighlight:!t,children:l}):l})},de=(t,e,r)=>e&&u.isBefore(t,e)?u.isSameDay(t,e):r&&u.isAfter(t,r)?u.isSameDay(t,r):!0,ue=function({dayComponent:e,minDate:r,maxDate:n,dayState:s,day:o,...l}){const a=i.useMemo(()=>de(o.date,r,n)?s:mt(s,["disabled"]),[o.date,s,n,r]);return c.jsx(e,{day:o,...l,dayState:a})};function fe({month:t,dayComponent:e=wt,statePerWeek:r,userDataPerWeek:n,minDate:s,maxDate:o,onClickDay:l,onClickWeek:a,onClickWeekDay:d,onClickMonth:D,renderWeekNumber:g,renderWeekDay:m,headerRightContent:h,theme:x=F,extraDayContent:w,defaultHighlights:C,showWeekNumber:S}){return c.jsx(c.Fragment,{children:c.jsxs(f.Box,{alignItems:"stretch",children:[c.jsxs(f.Row,{justifyContent:h?"space-between":"center",alignItems:"center",children:[c.jsx(f.Row,{justifyContent:"center",alignItems:"center",children:D?c.jsx(b.FlatButton,{onClick:()=>D(t),label:t.name+" "+String(t.year),rightIcon:b.stenaAngleDown}):c.jsxs(f.Text,{whiteSpace:"nowrap",children:[t.name," ",t.year]})}),h&&c.jsx(f.Box,{alignItems:"center",children:h})]}),c.jsx("table",{children:c.jsxs("tbody",{children:[c.jsxs("tr",{children:[S&&c.jsx("td",{children:c.jsx(f.Box,{width:x.width,height:x.height})}),t.weeks[0].days.map(p=>c.jsx("td",{children:m?m(p.name,x,d):c.jsx(Ot,{day:p,onClickWeekDay:d,theme:x})},p.name))]}),t.weeks.map(p=>c.jsx(c.Fragment,{children:c.jsxs("tr",{children:[S&&c.jsx("td",{children:g?g(p,x,a):c.jsx(Ut,{week:p,onClickWeek:a,theme:x})}),p.days.map(k=>c.jsx(ue,{dayComponent:e,day:k,week:p,month:t,dayState:r&&r[p.weekNumber]&&r[p.weekNumber][k.dayOfMonth],userData:n&&n[p.weekNumber]&&n[p.weekNumber][k.dayOfMonth],onClickDay:l,theme:x,extraDayContent:w,defaultHighlights:C,minDate:s,maxDate:o},k.dateString))]},p.weekNumber)}))]})})]})})}function De({monthRows:t,dayComponent:e=wt,userDataPerMonth:r,statePerMonth:n,minDate:s,maxDate:o,onClickDay:l,onClickWeekDay:a,onClickWeek:d,onClickMonth:D,renderWeekDay:g,renderWeekNumber:m,headerRightContent:h,extraDayContent:x,defaultHighlights:w,showWeekNumber:C,theme:S=F}){const p=i.useMemo(()=>s?u.parse(s,"yyyy-MM-dd",new Date):void 0,[s]),k=i.useMemo(()=>o?u.parse(o,"yyyy-MM-dd",new Date):void 0,[o]);return c.jsx("div",{className:Vt(jt.calendar,C&&jt.weekNumberVisible),children:t.map((y,j)=>c.jsx(f.Spacing,{children:c.jsx(f.Row,{gap:2,children:y.map(M=>c.jsx(fe,{month:M,dayComponent:e,userDataPerWeek:r&&r[M.monthString],statePerWeek:n&&n[M.monthString],onClickDay:l,onClickWeekDay:a,onClickWeek:d,onClickMonth:D,theme:S,renderWeekNumber:m,renderWeekDay:g,headerRightContent:h,extraDayContent:x,defaultHighlights:w,minDate:p,maxDate:k,showWeekNumber:C??!1},M.name))})},j))})}function ct(t){const e=ge(t.year,t.month,t.date),{year:r,month:n}=Ht(e.year,e.month),s=he(r,n,t.locale??xt.enGB,t.numMonths,t.monthsPerRow),o=oe(t.highlightToday,t.statePerMonth);return c.jsx(De,{year:r,month:n,monthRows:s,...t,statePerMonth:o})}const ge=(t,e,r)=>{if(e&&t)return{month:e,year:t};if(r)return{month:u.getMonth(r),year:u.getYear(r)};const n=new Date;return{month:u.getMonth(n),year:u.getYear(n)}},he=(t,e,r,n,s)=>n==null?[[bt(t,e,r)]]:s==null?[Dt(t,e,n,r)]:H.chunk(Dt(t,e,n,r),s),xe=({month:t,year:e,onClick:r,selected:n,locale:s})=>{const o=i.useMemo(()=>{const l=new Date(e,t,1);return H.startCase(u.format(l,"MMM",{locale:s}))},[s,e,t]);return c.jsx(f.Row,{justifyContent:"center",children:n?c.jsx(b.PrimaryButton,{label:o,onClick:r}):c.jsx(b.FlatButton,{label:o,onClick:r})})},$t=({value:t,onValueChange:e,locale:r=xt.enGB,firstMonth:n,numMonths:s})=>{const o=me(n,s);return c.jsx(f.Column,{gap:1,maxWidth:"336px",children:o.years.map(({year:l,months:a})=>c.jsxs(c.Fragment,{children:[c.jsx(f.Heading,{variant:"h4",children:l}),c.jsx(f.Row,{gap:1,flexWrap:"wrap",children:a.map(d=>c.jsx(xe,{month:d,year:l,locale:r,selected:(t==null?void 0:t.month)===d&&(t==null?void 0:t.year)===l,onClick:()=>e==null?void 0:e({month:d,year:l})},d))})]}))})},me=(t,e)=>{let r=t.getFullYear(),n=t.getMonth();const s={years:[{year:r,months:[n]}]};for(let o=1;o<e;o++)n===yt.DECEMBER?(r++,n=0,s.years.push({year:r,months:[n]})):(n++,s.years[s.years.length-1].months.push(n));return s},gt=t=>({year:t.getFullYear(),month:t.getMonth()}),ye=t=>[{label:"Past",presets:[{label:"Last 3 days",startDate:t,endDate:u.subDays(t,2)},{label:"Last 7 days",startDate:t,endDate:u.subDays(t,6)},{label:"Last 30 days",startDate:t,endDate:u.subDays(t,29)},{label:"Last 45 days",startDate:t,endDate:u.subDays(t,44)}]},{label:"Future",presets:[{label:"Next 3 days",startDate:t,endDate:u.addDays(t,2)},{label:"Next 7 days",startDate:t,endDate:u.addDays(t,6)},{label:"Next 30 days",startDate:t,endDate:u.addDays(t,29)},{label:"Next 45 days",startDate:t,endDate:u.addDays(t,44)}]}],Ft=({onClickPreset:t})=>{const[e,r]=i.useState(0),n=i.useMemo(()=>ye(new Date),[]),s=n[e]??n[0];return c.jsxs(f.Column,{children:[c.jsxs(f.Row,{justifyContent:"space-between",alignItems:"center",width:"200px",children:[c.jsx(b.FlatButton,{size:"small",leftIcon:b.stenaAngleLeft,disabled:e===0,onClick:()=>r(e-1)}),c.jsx(f.Text,{children:s.label}),c.jsx(b.FlatButton,{size:"small",leftIcon:b.stenaAngleRight,disabled:e===n.length-1,onClick:()=>r(e+1)})]}),c.jsx(f.Space,{}),c.jsx(f.Column,{alignItems:"center",children:s.presets.map(o=>c.jsxs(ee.Fragment,{children:[c.jsx(b.PrimaryButton,{label:o.label,onClick:()=>t(o)}),c.jsx(f.Space,{})]},o.label))})]})},be=function({locale:e,dateInFocus:r,setDateInFocus:n,currentPanel:s,setCurrentPanel:o,renderMonthPicker:l,...a}){const d=i.useCallback(g=>{const m=r?new Date(r):new Date;m.setMonth(g.month),m.setFullYear(g.year),n&&n(m),o("calendar")},[r,n,o]),D=i.useCallback(()=>{o("month")},[o]);switch(s){case"calendar":return c.jsx(ct,{...a,date:r,onClickMonth:D,locale:e});case"month":return l?l({value:gt(r),onValueChange:d,locale:e,firstMonth:new Date,numMonths:24,dateInFocus:r}):c.jsx($t,{value:gt(r),onValueChange:d,locale:e,firstMonth:new Date,numMonths:24});case"presets":return c.jsx(Ft,{onClickPreset:()=>{}});default:return c.jsx(f.Box,{children:c.jsx(b.PrimaryButton,{label:"Show calendar",onClick:()=>o("calendar")})})}},we=(t,e,r,n)=>{const s=i.useCallback(()=>{const d=u.addMonths(t,r??n??1);e==null||e(d)},[e,t,r,n]),o=i.useCallback(()=>{const d=u.addYears(t,1);e==null||e(d)},[e,t]),l=i.useCallback(()=>{const d=u.subMonths(t,r??n??1);e==null||e(d)},[e,t,r,n]),a=i.useCallback(()=>{const d=u.subYears(t,1);e==null||e(d)},[e,t]);return{nextMonth:s,prevMonth:l,nextYear:o,prevYear:a}},pe=({children:t,prevMonth:e,nextMonth:r,prevYear:n,nextYear:s})=>c.jsxs("div",{children:[t,c.jsx(f.Indent,{children:c.jsxs(f.Row,{gap:1,children:[c.jsx(b.SecondaryButton,{onClick:n,leftIcon:b.stenaAngleLeftDouble}),c.jsx(b.SecondaryButton,{onClick:e,leftIcon:b.stenaArrowLeft}),c.jsx(f.Indent,{num:2}),c.jsx(b.SecondaryButton,{onClick:r,leftIcon:b.stenaArrowRight}),c.jsx(b.SecondaryButton,{onClick:s,leftIcon:b.stenaAngleRightDouble})]})}),c.jsx(f.Space,{})]}),ke=()=>{};function q({monthSwitcherPlacement:t,theme:e=F,dateInFocus:r,setDateInFocus:n,currentPanel:s,setCurrentPanel:o,onSelectPreset:l=ke,renderMonthPicker:a,...d}){const{nextMonth:D,prevMonth:g,nextYear:m,prevYear:h}=we(r,n,d.monthsPerRow,d.numMonths);switch(Se(t,d.numMonths)){case"below":return c.jsx(pe,{theme:e,nextMonth:D,prevMonth:g,nextYear:m,prevYear:h,children:c.jsx(ct,{...d,theme:e,date:r})});case"header":return c.jsx(f.Column,{children:c.jsx(be,{...d,theme:e,renderMonthPicker:a,dateInFocus:r,setDateInFocus:n,currentPanel:s,setCurrentPanel:o,onSelectPreset:l,headerRightContent:c.jsxs(f.Row,{alignItems:"center",gap:1,children:[c.jsx(b.SecondaryButton,{onClick:g,leftIcon:b.stenaArrowLeft}),c.jsx(b.SecondaryButton,{onClick:D,leftIcon:b.stenaArrowRight})]})})});default:return c.jsx(ct,{...d,theme:e,date:r})}}const Se=(t,e)=>t||(e||1)>1?"below":"header",zt=t=>({startDate:t.startDate?u.format(t.startDate,"yyyy-MM-dd"):void 0,endDate:t.endDate?u.format(t.endDate,"yyyy-MM-dd"):void 0}),_t=({startDate:t,endDate:e})=>{const r=new Date;return{startDate:t?u.parse(t,"yyyy-MM-dd",r):void 0,endDate:e?u.parse(e,"yyyy-MM-dd",r):void 0}},pt=({startDate:t,endDate:e})=>!!(t&&e&&!u.isSameDay(t,e)&&u.isAfter(t,e)),kt=t=>pt(t)?{startDate:t.endDate,endDate:t.startDate}:t,je=t=>t.startDate&&t.endDate?zt(kt(_t(t))):t,Ce=(t,e,r,n)=>i.useCallback(s=>{const o={startDate:r==="startDate"?s.date:t==null?void 0:t.startDate,endDate:r==="endDate"?s.date:t==null?void 0:t.endDate};pt(o)||n(r==="startDate"?"endDate":"startDate"),e==null||e(kt(o))},[r,e,n,t==null?void 0:t.endDate,t==null?void 0:t.startDate]),dt=t=>{const[e,r]=i.useState("calendar"),n=i.useCallback(s=>{r(s),t==null||t(s)},[t]);return{currentPanel:e,setCurrentPanel:n}},qt=({focusedInput:t,value:e,onValueChange:r,setFocusedInput:n,statePerMonth:s,onChangePanel:o,initialDateInFocus:l})=>{const{currentPanel:a,setCurrentPanel:d}=dt(o),[D,g]=i.useState(()=>l??new Date),m=Ce(e,r,t,n),h=i.useMemo(()=>G(s,e==null?void 0:e.startDate,e==null?void 0:e.endDate),[s,e==null?void 0:e.endDate,e==null?void 0:e.startDate]);return{onClickDay:m,statePerMonth:h,currentPanel:a,setCurrentPanel:d,setDateInFocus:g,dateInFocus:D}};function Me(t){const e=qt(t);return c.jsx(q,{...t,...e})}const Re=()=>{const[t,e]=i.useState(),[r,n]=i.useState(),[s,o]=i.useState("startDate");return{startDate:t,setStartDate:e,endDate:r,setEndDate:n,focusedInput:s,setFocusedInput:o}},Jt=({onChange:t,value:e,statePerMonth:r,onChangePanel:n})=>{const{currentPanel:s,setCurrentPanel:o}=dt(n),[l,a]=i.useState(()=>e??new Date),d=i.useCallback(g=>{t&&t(g.date)},[t]),D=i.useMemo(()=>e?O(r,e,["selected","singleSelected"]):r,[r,e]);return{onClickDay:d,statePerMonth:D,date:e,currentPanel:s,setCurrentPanel:o,dateInFocus:l,setDateInFocus:a}};function St(t){const e=Jt(t);return c.jsx(q,{...t,...e})}const Kt=({onChange:t,value:e,statePerMonth:r,onChangePanel:n})=>{const{currentPanel:s,setCurrentPanel:o}=dt(n),[l,a]=i.useState(()=>new Date),d=i.useCallback(g=>{if(!t)return;const m=e&&e.find(h=>u.isSameDay(h,g.date));t(e&&m?e.filter(h=>!u.isSameDay(h,g.date)):[...e||[],g.date])},[t,e]),D=i.useMemo(()=>e?e.reduce((g,m)=>O(g,m,["selected"]),r):r,[r,e]);return{onClickDay:d,statePerMonth:D,currentPanel:s,setCurrentPanel:o,dateInFocus:l,setDateInFocus:a}};function Te(t){const e=Kt(t);return c.jsx(q,{...t,...e})}const Gt=({onChange:t,value:e,statePerMonth:r,onChangePanel:n,locale:s=xt.enGB})=>{const[o,l]=i.useState(()=>{const x=ft(e,s);return x?x.days[0].date:new Date}),{currentPanel:a,setCurrentPanel:d}=dt(n),D=i.useCallback(x=>{t&&t(Ct(lt(x.date,s)))},[s,t]),g=i.useCallback(x=>{t&&t(Ct(x))},[t]),m=i.useMemo(()=>{const x=ft(e,s);return x?It(r,x):r},[e,s,r]),h=i.useMemo(()=>{const x=ft(e,s);return x?x.days[0].date:new Date},[s,e]);return{statePerMonth:m,date:h,dateInFocus:o,setDateInFocus:l,onClickDay:D,onClickWeek:g,currentPanel:a,setCurrentPanel:d}},Ct=t=>{if(t)return`${t.endYear}-${t.weekNumber}`},ft=(t,e)=>{if(!t)return;const r=t.split("-"),n=parseInt(r[1],10),s=parseInt(r[0],10),o=new Date;o.setFullYear(s);const l=u.startOfWeek(u.setWeek(o,n),{locale:e});return lt(l,e)};function Ee(t){const e=Gt(t);return c.jsx(q,{...t,...e})}const tt="bottom",Qt=()=>{const[t,e]=Q.useTippyInstance();return{onChangePanel:i.useCallback(()=>{var n,s;(s=(n=e.current)==null?void 0:n.popperInstance)==null||s.update()},[e]),tippyRef:t}},Ie=(t,e,r)=>{const[n,s]=i.useState(r||!1),o=i.useCallback(()=>(s(!0),!0),[s]),l=i.useCallback(()=>{s(!1),e&&e()},[s,e]),a=i.useCallback(d=>{t&&t(d),setTimeout(l,150)},[t,l]);return{showCalendar:o,hideCalendar:l,showingCalendar:n,onSelectDate:a}},et="2999-12-31",Ae=({displayFormat:t=$.fullDate,placeholder:e="Enter date",value:r,zIndex:n=100,calendarTheme:s=F,calendarProps:o,openOnMount:l,onClose:a,onChange:d,portalTarget:D,variant:g,width:m,minDate:h,maxDate:x=et,disabled:w})=>{const{hideCalendar:C,showingCalendar:S,onSelectDate:p,showCalendar:k}=Ie(d,a,l),{tippyRef:y,onChangePanel:j}=Qt();return c.jsx(f.Box,{width:m,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,visible:S,onClickOutside:C,placement:tt,zIndex:n,appendTo:D??"parent",tippyRef:y,disabled:w,content:c.jsx(St,{...o,onChange:p,value:r,theme:s,onChangePanel:j,minDate:h,maxDate:x}),children:c.jsx(U.TextInput,{type:"date",onFocus:k,buttonRight:c.jsx(b.TextInputButton,{onClick:k,icon:b.stenaCalendar}),value:r?u.format(r,t):"",placeholder:e,size:9,disabled:w,autoFocus:l,variant:g,min:h,max:x})})})},Be=(t,e)=>{const r=i.useRef(null),n=i.useRef(null),[s,o]=i.useState(!1),[l,a]=i.useState(void 0),d=i.useCallback(()=>(a("startDate"),o(!0),!0),[a,o]),D=i.useCallback(()=>(a("endDate"),o(!0),!0),[a,o]),g=i.useCallback(()=>{o(!1)},[o]),m=i.useCallback(x=>{l==="startDate"?(e==null||e({startDate:x.date,endDate:t==null?void 0:t.endDate}),t!=null&&t.endDate?setTimeout(g,150):(a("endDate"),n.current&&n.current.focus())):l==="endDate"&&(e==null||e({startDate:t==null?void 0:t.startDate,endDate:x.date}),t!=null&&t.startDate?setTimeout(g,150):(a("startDate"),r.current&&r.current.focus()))},[l,e,a,g,t]),h=i.useMemo(()=>(t==null?void 0:t.startDate)&&(t==null?void 0:t.endDate)&&u.isAfter(t.startDate,t.endDate),[t==null?void 0:t.startDate,t==null?void 0:t.endDate]);return{showingCalendar:s,hideCalendar:g,showCalendarEndDate:D,showCalendarStartDate:d,focusedInput:l,setFocusedInput:a,startDateInputRef:r,endDateInputRef:n,onClickDay:m,startDateIsAfterEnd:h}};function Ye({displayFormat:t=$.fullDate,placeholderStartDate:e="Start date",placeholderEndDate:r="End date",portalTarget:n,value:s,onValueChange:o,zIndex:l=100,width:a,calendarTheme:d=F,calendarProps:D,minDate:g,maxDate:m=et,disabled:h}){const[x,w]=i.useState("calendar"),{hideCalendar:C,showCalendarEndDate:S,showCalendarStartDate:p,showingCalendar:k,focusedInput:y,startDateInputRef:j,endDateInputRef:M,onClickDay:T,startDateIsAfterEnd:R}=Be(s,o),[A,E]=i.useState(()=>(y&&(s==null?void 0:s[y]))??new Date),N=i.useMemo(()=>G(void 0,s==null?void 0:s.startDate,s==null?void 0:s.endDate),[s]);return c.jsx(Q.Popover,{arrow:!1,lazy:!0,disabled:h,visible:k,zIndex:l,placement:tt,appendTo:n??"parent",onClickOutside:C,content:c.jsx(q,{...D,dateInFocus:A,setDateInFocus:E,statePerMonth:N,theme:d,onClickDay:T,currentPanel:x,setCurrentPanel:w,minDate:g,maxDate:m}),children:c.jsxs(f.Row,{alignItems:"center",children:[c.jsx(U.TextInput,{iconLeft:b.stenaCalendar,onFocus:p,value:s!=null&&s.startDate?u.format(s.startDate,t):"",placeholder:e,width:a,disabled:h,inputRef:j,size:9,variant:R?"error":void 0}),c.jsx(f.Space,{}),c.jsx(b.Icon,{icon:b.stenaArrowWideRight,color:Rt.cssColor("--lhds-color-ui-500"),size:14}),c.jsx(f.Space,{}),c.jsx(U.TextInput,{iconLeft:b.stenaCalendar,onFocus:S,value:s!=null&&s.endDate?u.format(s.endDate,t):"",placeholder:r,width:a,disabled:h,inputRef:M,size:9,variant:R?"error":void 0})]})})}const Ne=({calendarProps:t,closeOnCalendarSelectDate:e=!0,dateFormat:r=$.fullDate,disableCalender:n=!1,onValueChange:s,placeholder:o="yyyy-mm-dd",portalTarget:l,value:a,width:d="130px",zIndex:D=100,calendarTheme:g=F,hideCalenderIcon:m=!1,minDate:h,maxDate:x=et,variant:w,...C})=>{const[S,p]=i.useState(!1),{tippyRef:k,onChangePanel:y}=Qt(),j=i.useCallback(()=>{p(!S)},[p,S]),M=i.useCallback(()=>{p(!1)},[p]),T=i.useCallback(B=>{s&&s(B)},[s]),R=i.useCallback(B=>{B&&(T(u.format(B,r)),e&&setTimeout(()=>p(!S),200))},[T,r,e,p,S]),A=!!a&&!/^[-/\\.0-9]+$/.test(a),E=!!a&&u.isValid(u.parse(a,r,new Date)),z=!!a&&a.length>=r.length&&!E||A;return c.jsx(f.Box,{width:d,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,visible:S,zIndex:D,appendTo:l??"parent",placement:tt,onClickOutside:M,tippyRef:k,content:c.jsx(St,{...t,onChange:R,onChangePanel:y,value:a&&E?u.parse(a,r,new Date):void 0,minDate:h,maxDate:x,theme:g}),children:c.jsx(U.TextInput,{...C,variant:z?"error":w,disableContentPaddingRight:!0,contentRight:m?void 0:c.jsx(f.Row,{alignItems:"center",indent:.5,children:c.jsx(b.FlatButton,{size:"small",disabled:C.disabled||n,leftIcon:b.stenaCalendar,onClick:j})}),onValueChange:T,placeholder:o,value:a||"",min:h,max:x,size:10})})})},it=t=>{if(t==="")return"00";const e=parseInt(t,10);if(isNaN(e))throw new Error("Hours is not a number");if(e<0||e>23)throw new Error("Hours is an invalid number");switch(t.length){case 1:return`0${e}`;case 2:return t;default:throw new Error("Invalid hour string")}},at=t=>{if(t==="")return"00";const e=parseInt(t,10);if(isNaN(e))throw new Error("Minutes is not a number");if(e<0||e>59)throw new Error("Minutes is an invalid number");switch(t.length){case 1:return`0${e}`;case 2:return t;default:throw new Error("Invalid minute string")}},He=t=>{if(!ht(t))return{time:t,success:!1};const e=t&&t.split(/-|:|,|;|[/]|[.]| /);if(e&&e.length===2)try{const r=it(e[0]),n=at(e[1]);return{time:`${r}:${n}`,success:!0}}catch{return{time:t,success:!1}}else if(e&&e.length===1){let r=0,n=0;switch(t.length){case 1:return{time:`0${t}:00`,success:!0};case 2:const s=parseInt(e[0],10);return s>=0&&s<24?{time:`${t}:00`,success:!0}:s>=24&&s<59?{time:`00:${t}`,success:!0}:{time:t,success:!1};case 3:return n=parseInt(t.substr(1,2),10),n>=0&&n<=59?{time:`0${t.substr(0,1)}:${t.substr(1,2)}`,success:!0}:{time:t,success:!1};case 4:return r=parseInt(t.substr(0,2),10),n=parseInt(t.substr(2,2),10),r<0||r>23?{time:t,success:!1}:n<0||n>59?{time:t,success:!1}:{time:`${t.substr(0,2)}:${t.substr(2,2)}`,success:!0};default:return{time:t,success:!1}}}return{time:t,success:!1}},ht=t=>t?/^[-:.,/; 0-9]+$/.test(t):!0,Pe=({onValueChange:t,showPlaceholder:e=!0,useIcon:r=!0,value:n,width:s="85px",variant:o,...l})=>{const[a,d]=i.useState(()=>ht(n)),D="hh:mm",g=i.useCallback(()=>{if(n){const h=He(n);d(h.success),h.success&&t&&t(h.time)}},[n,t,d]),m=i.useCallback(h=>{const x=h.target.value,w=ht(x);d(w&&x.length<=D.length),t&&t(x)},[t,d]);return c.jsx(U.TextInput,{...l,type:"time",variant:a?o:"error",iconLeft:r?b.stenaClock:void 0,value:n,placeholder:e?D:void 0,onChange:m,onBlur:g,width:s})},Xt=({autoFocusLeft:t,autoFocusRight:e,onEsc:r,onEnter:n,onValueChangeLeft:s,onValueChangeRight:o,separatorIcon:l,placeholderLeft:a,placeholderRight:d,typeLeft:D,typeRight:g,onChangeLeft:m,onChangeRight:h,valueLeft:x,valueRight:w,minLeft:C,maxLeft:S,minRight:p,maxRight:k,onClickLeft:y,onClickRight:j,onClickCalendar:M,onClickArrowDown:T,onBlurLeft:R,onBlurRight:A,onFocusLeft:E,onFocusRight:N,inputRefLeft:z,inputRefRight:B,variant:J,variantLeft:X,variantRight:K,onBlur:P,showPresets:Z,widthLeft:v,widthRight:V,disabled:_})=>{const I=i.useRef(0),Y=i.useMemo(()=>H.debounce(L=>{L===0&&(P==null||P())},10),[P]),rt=i.useCallback(L=>{I.current++,Y(I.current),E&&E(L)},[E,I,Y]),nt=i.useCallback(L=>{I.current++,Y(I.current),N&&N(L)},[N,I,Y]),st=i.useCallback(L=>{I.current--,Y(I.current),R&&R(L)},[R,I,Y]),vt=i.useCallback(L=>{I.current--,Y(I.current),A&&A(L)},[A,I,Y]);return c.jsx(f.Box,{children:c.jsxs(U.TextInputBox,{disableContentPaddingRight:!0,disabled:_,variant:J,contentRight:c.jsxs(f.Row,{alignItems:"center",children:[c.jsx(f.Indent,{num:.5,children:c.jsx(b.FlatButton,{leftIcon:b.stenaCalendar,onClick:M,disabled:_,size:"small"})}),Z?c.jsxs(c.Fragment,{children:[c.jsx(f.Row,{height:"22px",children:c.jsx(f.SeparatorLine,{vertical:!0})}),c.jsx(f.Indent,{num:.5,children:c.jsx(b.FlatButton,{leftIcon:b.stenaAngleDown,onClick:T,disabled:_,size:"small"})})]}):null]}),children:[c.jsx(f.Box,{width:v,children:c.jsx(U.TextInput,{onEsc:r,onEnter:n,onClick:y,disabled:_,hideBorder:!0,placeholder:a,value:x,onValueChange:s,onChange:m,onBlur:st,onFocus:rt,inputRef:z,variant:X,type:D,autoFocus:t,min:C,max:S})}),c.jsx(f.Row,{indent:.5,alignItems:"center",justifyContent:"center",children:c.jsx(b.Icon,{icon:l,size:12,color:Rt.cssColor("--lhds-color-ui-500")})}),c.jsx(f.Box,{width:V,children:c.jsx(U.TextInput,{onEsc:r,onEnter:n,onClick:j,disabled:_,hideBorder:!0,placeholder:d,value:w,onValueChange:o,onChange:h,onBlur:vt,onFocus:nt,inputRef:B,variant:K,type:g,autoFocus:e,min:p,max:k})})]})})},Le=t=>{if(t==null)throw new Error("Time is not set.");if(t==="")throw new Error("Time is empty.");const e=t.split(":");if(e.length!==2)throw new Error("Invalid time.");if(e[1].length!==2)throw new Error("Invalid time.");if(e[0].length<1||e[0].length>2)throw new Error("Invalid time.");const r=parseInt(e[0],10),n=parseInt(e[1],10);if(isNaN(r))throw new Error("Invalid time.");if(isNaN(n))throw new Error("Invalid time.");if(r<0||r>23)throw new Error("Invalid time.");if(n<0||n>59)throw new Error("Invalid time.");return r*100+n},We=t=>{try{return Le(t),!0}catch{return!1}},ot=t=>{if(t&&We(t)){const e=t.split(":");return{hour:f.parseIntElseUndefined(e[0]),minute:f.parseIntElseUndefined(e[1])}}return{hour:void 0,minute:void 0}},Oe=t=>`${it(String(t.getHours()))}:${at(String(t.getMinutes()))}`,Ue="_timePicker_1w05d_1",$e="_timePickerColumn_1w05d_6",Zt={timePicker:Ue,timePickerColumn:$e},Fe=({onClick:t,item:e,selected:r,columnRef:n,canScrollRef:s})=>{const o=i.useRef(null);return i.useEffect(function(){if(r&&n.current&&o.current&&s.current){const a=o.current.scrollHeight*Math.max(e-2,0);n.current.scrollTo(0,a),s.current=!1}},[n,e,r,s]),c.jsx(f.Row,{width:"64px",justifyContent:"center",spacing:.5,indent:.5,ref:o,children:r?c.jsx(b.PrimaryButton,{label:H.padStart(String(e),2,"0"),onClick:()=>t&&t(e)}):c.jsx(b.FlatButton,{label:String(e).padStart(2,"0"),onClick:()=>t&&t(e)})})},Mt=({onClick:t,items:e,selectedItem:r,canScrollRef:n})=>{const s=i.useRef(null);return c.jsx(f.Column,{className:Zt.timePickerColumn,ref:s,children:e.map(o=>c.jsx(Fe,{item:o,onClick:t,selected:o===r,columnRef:s,canScrollRef:n},o))})},ze=H.range(0,24),_e=H.range(0,60),qe=({value:t,onValueChange:e})=>{const r=i.useRef(!0),[n,s]=i.useState(void 0),[o,l]=i.useState(void 0);i.useEffect(()=>{if(t){const{minute:D,hour:g}=ot(t);s(g),l(D)}},[t]);const a=i.useCallback(D=>{s(D),e==null||e(`${it(String(D??0))}:${at(String(o??0))}`)},[o,e]),d=i.useCallback(D=>{l(D),e==null||e(`${it(String(n??0))}:${at(String(D??0))}`)},[n,e]);return c.jsxs(f.Row,{className:Zt.timePicker,children:[c.jsx(Mt,{items:ze,onClick:a,selectedItem:n,canScrollRef:r}),c.jsx(f.Indent,{}),c.jsx(Mt,{items:_e,onClick:d,selectedItem:o,canScrollRef:r})]})},Je=(t,e,r)=>{i.useEffect(function(){t&&e(t)},[t,e]),i.useEffect(function(){r.current&&(t?r.current.valueAsDate=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())):r.current.valueAsDate=null)},[t,r])},Ke=(t,e,{setDateInFocus:r,showCalendarInternal:n,hideCalendarInternal:s,setFirstFocusedInput:o,setCurrentPanel:l,localTime:a,setLocalTime:d,localDate:D,setLocalDate:g},m)=>{const h=i.useCallback(k=>{if(!k)return;const y=new Date(k);if(t)y.setHours(t.getHours()),y.setMinutes(t.getMinutes()),e==null||e(y),g(void 0);else if(a){const{minute:j,hour:M}=ot(a);y.setHours(M??0),y.setMinutes(j??0),e==null||e(y),g(void 0)}else g(y);r(y),m.current&&(m.current.valueAsDate=new Date(Date.UTC(y.getFullYear(),y.getMonth(),y.getDate())))},[t,m,a,e,r,g]),x=i.useCallback(k=>{if(k)if(t){const y=ot(k),j=new Date(t);j.setHours(y.hour||0),j.setMinutes(y.minute||0),e==null||e(j),d(void 0)}else if(D){const y=ot(k),j=new Date(D);j.setHours(y.hour||0),j.setMinutes(y.minute||0),e==null||e(j),d(void 0)}else d(k)},[e,t,D,d]),w=i.useCallback(k=>{k.target.value[0]!=="0"&&h(k.target.valueAsDate)},[h]),C=i.useCallback(k=>x(k.target.value),[x]),S=i.useCallback(()=>{r(t||new Date),l("calendar"),n()},[t,l,n,r]),p=i.useCallback(()=>{o(void 0),s()},[o,s]);return{inputLeftChangeHandler:w,inputRightChangeHandler:C,hideCalendar:p,showCalendar:S,onChangeTime:x,onChangeDate:h}},Ge=t=>{const[e,r]=i.useState(void 0),[n,s]=i.useState(void 0),[o,l,a]=f.useBoolean(!1),[d,D,g]=f.useBoolean(!1),[m,h]=i.useState(void 0),[x,w]=i.useState(()=>t??new Date),[C,S]=i.useState("calendar");return{isCalendarVisible:o,showCalendarInternal:l,hideCalendarInternal:a,firstFocusedInput:m,setFirstFocusedInput:h,dateInFocus:x,setDateInFocus:w,currentPanel:C,setCurrentPanel:S,isTimePickerVisible:d,showTimePicker:D,hideTimePicker:g,localDate:e,setLocalDate:r,localTime:n,setLocalTime:s}},Qe=(t,e,r,n,{isCalendarVisible:s,setCurrentPanel:o,showTimePicker:l,hideTimePicker:a})=>{const d=i.useCallback(()=>{s||r(),o("calendar"),a()},[a,s,o,r]),D=i.useCallback(()=>{n(),l()},[n,l]),g=i.useCallback(w=>{t(w.date),n(),l()},[t,n,l]),m=i.useCallback(()=>{o("presets"),r()},[o,r]),h=i.useCallback(()=>{var w;s?n():((w=e.current)==null||w.focus(),o("calendar"),r())},[s,n,e,o,r]),x=i.useCallback(w=>{w.key==="Escape"&&n()},[n]);return{onFocusLeft:d,onFocusRight:D,onClickDay:g,onClickArrowButton:m,onClickCalendarButton:h,onKeyDownHandler:x}},Xe=({value:t,onValueChange:e,onEnter:r,onEsc:n,onBlur:s,autoFocus:o,minDate:l,widthLeft:a=128,widthRight:d=80,maxDate:D=et,variant:g,disabled:m})=>{const h=i.useRef(null),x=i.useRef(null),w=Ge(t),{setCurrentPanel:C,currentPanel:S,isCalendarVisible:p,dateInFocus:k,setDateInFocus:y,isTimePickerVisible:j,hideTimePicker:M,localTime:T,localDate:R}=w,{showCalendar:A,hideCalendar:E,inputLeftChangeHandler:N,inputRightChangeHandler:z,onChangeTime:B,onChangeDate:J}=Ke(t,e,w,h),{onKeyDownHandler:X,onFocusRight:K,onFocusLeft:P,onClickDay:Z,onClickCalendarButton:v,onClickArrowButton:V}=Qe(J,h,A,E,w);Je(t,y,h);const _=i.useMemo(()=>{const st=t||R;return st?O(void 0,st,["singleSelected","selected"]):{}},[R,t]),I=i.useCallback(()=>{E(),M()},[E,M]),Y=i.useMemo(()=>t?Oe(t):T,[t,T]),rt=f.useDelayedFalse(p,300),nt=f.useDelayedFalse(j,300);return c.jsx(f.Box,{onKeyDown:X,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,disabled:m,placement:tt,visible:p||j,onClickOutside:I,content:(rt||nt)&&c.jsx(f.Column,{children:rt?c.jsx(q,{statePerMonth:_,onClickDay:Z,dateInFocus:k,setDateInFocus:y,currentPanel:S,setCurrentPanel:C,minDate:l,maxDate:D}):nt?c.jsxs(f.Column,{children:[c.jsx(f.Column,{overflow:"hidden",height:"250px",children:c.jsx(qe,{value:Y??"",onValueChange:B})}),c.jsx(f.Space,{}),c.jsx(f.Row,{justifyContent:"flex-end",children:c.jsx(b.PrimaryButton,{label:"Done",onClick:M})})]}):null}),children:c.jsx(Xt,{autoFocusLeft:o,onEsc:n,onEnter:r,onBlur:s,disabled:m,separatorIcon:b.stenaClock,typeLeft:"date",typeRight:"time",placeholderLeft:"yyyy-mm-dd",placeholderRight:"hh:mm",onChangeLeft:N,onChangeRight:z,onClickArrowDown:V,onClickCalendar:v,onFocusLeft:P,onFocusRight:K,onClickLeft:P,onClickRight:K,inputRefLeft:h,inputRefRight:x,valueRight:Y??"",widthLeft:a,widthRight:d,minLeft:l,maxLeft:D,variant:g})})})},Ze=({value:t,onValueChange:e,year:r})=>{const n=String(r);return c.jsx(f.Row,{justifyContent:"center",children:t===r?c.jsx(b.PrimaryButton,{label:n,onClick:()=>e==null?void 0:e(r)}):c.jsx(b.FlatButton,{label:n,onClick:()=>e==null?void 0:e(r)})})},ve=({value:t,onValueChange:e,initialLastYear:r})=>{const[n,s]=i.useState(()=>t?t+4:r??new Date().getFullYear()+4),o=i.useMemo(()=>{const l=n-11;return H.chunk(H.range(l,n+1),3)},[n]);return i.useEffect(()=>{s(l=>Ve(t,l))},[t]),c.jsxs(f.Row,{children:[c.jsx(f.Column,{justifyContent:"center",children:c.jsx(b.FlatButton,{leftIcon:b.stenaArrowLeft,onClick:()=>s(n-3)})}),c.jsx(f.Column,{gap:1,children:o.map(l=>c.jsx(f.Row,{gap:1,children:l.map(a=>c.jsx(Ze,{year:a,onValueChange:e,value:t},a))},l[0]))}),c.jsx(f.Column,{justifyContent:"center",children:c.jsx(b.FlatButton,{leftIcon:b.stenaArrowRight,onClick:()=>s(n+3)})})]})},Ve=(t,e)=>{if(t==null)return e;if(t>e){const n=t-e,s=n%3,o=n-s+3;return e+o}const r=e-11;if(t<r){const n=r-t,s=n%3,o=n-s+3;return e-o}return e},tr=(t,e,r,n,s)=>{i.useEffect(function(){t&&r(t)},[t,r]),i.useEffect(function(){e&&r(e)},[e,r]),i.useEffect(function(){n.current&&(t?n.current.valueAsDate=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())):n.current.valueAsDate=null)},[t,n]),i.useEffect(function(){s.current&&(e?s.current.valueAsDate=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())):s.current.valueAsDate=null)},[e,s])},er=(t,e,r,{setDateInFocus:n,showCalendarInternal:s,hideCalendarInternal:o,setFirstFocusedInput:l,setCurrentPanel:a})=>{const d=i.useCallback(h=>{h.target.value[0]!=="0"&&(r==null||r({startDate:h.target.valueAsDate??void 0,endDate:e}))},[r,e]),D=i.useCallback(h=>{h.target.value[0]!=="0"&&(r==null||r({startDate:t,endDate:h.target.valueAsDate??void 0}))},[r,t]),g=i.useCallback(()=>{n(t||e||new Date),a("calendar"),s()},[t,e,a,s,n]),m=i.useCallback(()=>{l(void 0),o()},[l,o]);return{inputLeftChangeHandler:d,inputRightChangeHandler:D,hideCalendar:m,setDateInFocus:n,setCurrentPanel:a,showCalendar:g}},rr=(t,e)=>{const[r,n,s]=f.useBoolean(!1),[o,l]=i.useState(void 0),[a,d]=i.useState("startDate"),[D,g]=i.useState(()=>(a==="startDate"?t:a==="endDate"?e:void 0)??new Date),[m,h]=i.useState("calendar");return{isCalendarVisible:r,showCalendarInternal:n,hideCalendarInternal:s,firstFocusedInput:o,setFirstFocusedInput:l,focusedInput:a,setFocusedInput:d,dateInFocus:D,setDateInFocus:g,currentPanel:m,setCurrentPanel:h}},nr=(t,e,r,n,s,o,l,{firstFocusedInput:a,setFirstFocusedInput:d,isCalendarVisible:D,setFocusedInput:g,focusedInput:m,setCurrentPanel:h})=>{const x=i.useCallback(()=>{a==null&&d("startDate"),g("startDate"),D||o()},[D,g,o,d,a]),w=i.useCallback(()=>{a==null&&d("endDate"),g("endDate"),D||o()},[D,g,o,d,a]),C=i.useCallback(y=>{var j,M,T,R;m==="startDate"?e!=null&&u.isAfter(y.date,e)?(r==null||r({startDate:y.date,endDate:void 0}),g("endDate"),(j=s.current)==null||j.focus()):(r==null||r({startDate:y.date,endDate:e}),a==="startDate"?(g("endDate"),(M=s.current)==null||M.focus()):setTimeout(l,50)):m==="endDate"&&(t?u.isAfter(t,y.date)?(r==null||r({startDate:y.date,endDate:void 0}),g("endDate"),(R=s.current)==null||R.focus()):(r==null||r({startDate:t,endDate:y.date}),setTimeout(l,50)):(r==null||r({startDate:t,endDate:y.date}),g("startDate"),(T=n.current)==null||T.focus()))},[m,r,e,a,g,s,l,t,n]),S=i.useCallback(()=>{h("presets"),o()},[h,o]),p=i.useCallback(()=>{var y;D?l():(g("startDate"),d("startDate"),(y=n.current)==null||y.focus(),h("calendar"),o())},[D,l,g,d,n,h,o]),k=i.useCallback(y=>{y.key==="Escape"&&l()},[l]);return{onFocusLeft:x,onFocusRight:w,onClickDay:C,onClickArrowButton:S,onClickCalendarButton:p,onKeyDownHandler:k}};function sr({value:t,onValueChange:e,autoFocus:r,onBlur:n,onEnter:s,onEsc:o,minDate:l,maxDate:a=et,calendarProps:d,widthLeft:D=128,widthRight:g=128,variant:m,disabled:h}){const{startDate:x,endDate:w}=t||{},C=i.useRef(null),S=i.useRef(null),p=rr(x,w),{dateInFocus:k,setDateInFocus:y,isCalendarVisible:j,currentPanel:M,setCurrentPanel:T}=p,{showCalendar:R,hideCalendar:A,inputLeftChangeHandler:E,inputRightChangeHandler:N}=er(x,w,e,p),{onKeyDownHandler:z,onFocusRight:B,onFocusLeft:J,onClickDay:X,onClickCalendarButton:K,onClickArrowButton:P}=nr(x,w,e,C,S,R,A,p);tr(x,w,y,C,S);const Z=i.useMemo(()=>x&&w&&u.isAfter(x,w),[x,w]),v=i.useMemo(()=>Tt(d==null?void 0:d.statePerMonth,x,w,k),[d==null?void 0:d.statePerMonth,x,w,k]),V=f.useDelayedFalse(j,300);return c.jsx(f.Box,{onKeyDown:z,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,disabled:h,placement:tt,onClickOutside:A,visible:j,content:V&&c.jsx(q,{onClickDay:X,dateInFocus:k,setDateInFocus:y,currentPanel:M,setCurrentPanel:T,minDate:l,maxDate:a,...d,statePerMonth:v}),children:c.jsx(Xt,{autoFocusLeft:r,onEsc:o,onEnter:s,onBlur:n,disabled:h,separatorIcon:b.stenaArrowRight,typeLeft:"date",typeRight:"date",placeholderLeft:"Start date",placeholderRight:"End date",onChangeLeft:E,onChangeRight:N,onClickArrowDown:P,onClickCalendar:K,onFocusLeft:J,onFocusRight:B,onClickLeft:J,onClickRight:B,inputRefLeft:C,inputRefRight:S,variant:Z?"error":m,widthLeft:D,widthRight:g,minLeft:l,maxLeft:a,minRight:l,maxRight:a})})})}exports.Calendar=ct;exports.CalendarDay=wt;exports.DateInput=Ae;exports.DateRangeCalendar=Me;exports.DateRangeDualTextInput=sr;exports.DateRangeInput=Ye;exports.DateTextInput=Ne;exports.DateTimeInput=Xe;exports.Month=yt;exports.MonthPicker=$t;exports.MultiDateCalendar=Te;exports.PresetPicker=Ft;exports.SingleDateCalendar=St;exports.SingleWeekCalendar=Ee;exports.TimeTextInput=Pe;exports.WeekDay=At;exports.WeekDayCell=Ot;exports.WeekNumberCell=Ut;exports.YearPicker=ve;exports.addDayStateHighlights=O;exports.addDayStateHighlightsOnSingleDay=mt;exports.addWeekRangeHighlights=It;exports.addWeekStateHighlights=se;exports.buildDayStateForDateRange=G;exports.buildDayStateForRange=Et;exports.buildDayStateForSingleMonth=Tt;exports.calculateOverflowingMonth=Ht;exports.createDay=Yt;exports.createFirstDate=gt;exports.dateRangeToStrings=zt;exports.dayHasHighlight=Pt;exports.dayHighlightSelect=W;exports.defaultCalendarTheme=F;exports.defaultTextPropsProvider=Wt;exports.defaultWrapperStyleProvider=Lt;exports.extranetCalendarTheme=ae;exports.getDaysForWeekForDate=Nt;exports.getMonthInYear=bt;exports.getMonthsInYear=Dt;exports.getWeekForDate=lt;exports.getWeeksForMonth=Bt;exports.isDateRangeInvalid=pt;exports.setDayStateValue=re;exports.setDayStateValueFunction=ne;exports.stringsToDateRange=_t;exports.toggleDateStringsIfEndIsEarlierThanStart=je;exports.toggleDatesIfEndIsEarlierThanStart=kt;exports.useDateRangeCalendarState=Re;exports.useDateRangeSelection=qt;exports.useMultiDateSelection=Kt;exports.useSingleDateSelection=Jt;exports.useSingleWeekSelection=Gt;
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),f=require("@stenajs-webui/core"),b=require("@stenajs-webui/elements"),u=require("date-fns"),xt=require("date-fns/locale"),H=require("lodash-es"),i=require("react"),Vt=require("classnames"),ut=require("@emotion/styled"),U=require("@stenajs-webui/forms"),Q=require("@stenajs-webui/tooltip"),Rt=require("@stenajs-webui/theme");function te(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const ee=te(i),$={yearAndMonth:"yyyy-MM",fullDate:"yyyy-MM-dd",fullMonthName:"LLLL",fullDateAndTime:"yyyy-MM-dd HH:mm",fullDateAndTimeSystem:"yyyy-MM-ddTHH:MM",weekDayName:"EEEE",weekDayNameShort:"EEE",dateAndMonth:"d MMM",monthAndDate:"MMM do"},G=(t={},e,n)=>{if(e&&n&&u.isAfter(n,e))return u.eachDayOfInterval({start:e,end:n}).reduce((s,o)=>{const l=u.isSameDay(o,e),a=u.isSameDay(o,n);return O(s,o,l?["selected","selectedStart","range"]:a?["selected","selectedEnd","range"]:["range"])},t);let r=t;return e&&(r=O(r,e,["selected","singleSelected"])),n&&(r=O(r,n,["selected","singleSelected"])),r},Tt=(t={},e,n,r)=>Et(t,e,n,u.startOfMonth(r),u.endOfMonth(r)),Et=(t={},e,n,r,s)=>e&&n?G(t,u.max([e,u.subDays(r,1)]),u.min([n,u.addDays(s,1)])):G(t,e,n),ne=(t,e,n)=>{const r=u.format(e,$.yearAndMonth),s=u.getISOWeek(e),o=u.getDate(e);return{...t,[r]:{...t&&t[r],[s]:{...t&&t[r]&&t[r][s],[o]:{...t&&t[r]&&t[r][s]&&t[r][s][o],...n}}}}},re=(t,e,n)=>{const r=u.format(e,$.yearAndMonth),s=u.getISOWeek(e),o=u.getDate(e);return{...t,[r]:{...t&&t[r],[s]:{...t&&t[r]&&t[r][s],[o]:{...t&&t[r]&&t[r][s]&&t[r][s][o],...n(t&&t[r]&&t[r][s]&&t[r][s][o])}}}}},O=(t,e,n)=>{const r=e.getMonth()+1,s=`${e.getFullYear()}-${r<10?"0":""}${r}`,o=u.getISOWeek(e),l=u.getDate(e),a=t&&t[s]&&t[s][o]&&t[s][o][l];return{...t,[s]:{...t&&t[s],[o]:{...t&&t[s]&&t[s][o],[l]:mt(a,n)}}}},mt=(t,e)=>({...t,highlights:[...(t==null?void 0:t.highlights)??[],...e]}),se=(t,e,n)=>{const r=e.days[0].date,s=r.getMonth()+1,o=`${r.getFullYear()}-${s<10?"0":""}${s}`,l=e.weekNumber;let a=t;e.days.forEach(m=>{a=O(a,m.date,n)});const d=a&&a[o]?a[o][l]:void 0,g=d&&d.highlights?[...d.highlights,...n]:n,D={...d,highlights:g};return{...a,[o]:{...t&&t[o],[l]:D}}},It=(t,e)=>{var s;if(!e.days.length)return{...t};const n=e.days[0].date,r=(s=H.last(e.days))==null?void 0:s.date;return{...G(t,n,r)}},oe=(t,e)=>i.useMemo(()=>t?O(e,new Date,["today"]):e,[t,e]);var yt=(t=>(t[t.JANUARY=0]="JANUARY",t[t.FEBRUARY=1]="FEBRUARY",t[t.MARCH=2]="MARCH",t[t.APRIL=3]="APRIL",t[t.MAY=4]="MAY",t[t.JUNE=5]="JUNE",t[t.JULY=6]="JULY",t[t.AUGUST=7]="AUGUST",t[t.SEPTEMBER=8]="SEPTEMBER",t[t.OCTOBER=9]="OCTOBER",t[t.NOVEMBER=10]="NOVEMBER",t[t.DECEMBER=11]="DECEMBER",t))(yt||{}),At=(t=>(t[t.SUNDAY=0]="SUNDAY",t[t.MONDAY=1]="MONDAY",t[t.TUESDAY=2]="TUESDAY",t[t.WEDNESDAY=3]="WEDNESDAY",t[t.THURSDAY=4]="THURSDAY",t[t.FRIDAY=5]="FRIDAY",t[t.SATURDAY=6]="SATURDAY",t))(At||{});const gt=(t,e,n,r)=>{const s=[];for(let o=0;o<n;o++)s.push(bt(t,e+o,r));return s},bt=(t,e,n)=>{const r=t+Math.floor(e/12),s=e%12,o=new Date(r,s,1);return{monthString:u.format(o,$.yearAndMonth),name:H.startCase(u.format(o,$.fullMonthName,{locale:n})),year:r,monthInYear:s,weeks:Bt(r,s,n)}},Bt=(t,e,n,r=!0)=>{const s=new Date(t,e,1),o=u.startOfWeek(s,{locale:n}),l=[];for(let a=0;a<6;a++){const d=lt(u.addWeeks(o,a),n);if(a>0&&d.startMonth!==e&&!r)return l;l.push(d)}return l},lt=(t,e)=>{const n=u.getMonth(u.addDays(t,7))!==u.getMonth(t);return{weekNumber:u.getWeek(t,{locale:e}),startMonth:u.getMonth(t),startYear:u.getYear(t),endMonth:u.getMonth(u.addDays(t,6)),endYear:u.getYear(u.addDays(t,6)),days:Nt(t,e),isLastWeekOfMonth:n}},Yt=(t,e)=>{const n=u.getISODay(t);return{date:t,name:u.format(t,"EEE",e?{locale:e}:void 0),dateString:u.format(u.addHours(t,12),$.fullDate),weekNumber:u.getWeek(t,{locale:e}),year:u.getYear(t),month:u.getMonth(t),dayOfMonth:u.getDate(t),dayOfWeek:n,isFirstDayOfWeek:n===1,isLastDayOfWeek:n===7,isFirstDayOfMonth:u.isSameDay(u.startOfMonth(t),t),isLastDayOfMonth:u.isSameDay(u.endOfMonth(t),t)}},Nt=(t,e)=>u.eachDayOfInterval({start:t,end:u.addDays(t,6)}).map(n=>Yt(n,e)),Ht=(t,e)=>e>11?{year:t+Math.floor(e/12),month:e%12}:e<0?{year:t+Math.floor(e/12),month:12+e%12}:{year:t,month:e},ce="_calendar_1b766_1",ie="_weekNumberVisible_1b766_41",jt={calendar:ce,weekNumberVisible:ie},Pt=(t,e,n)=>!!(e&&e.indexOf(n)>=0||t&&t.highlights&&t.highlights.indexOf(n)>=0),W=(t,e,n,r,s)=>{if(n.length!==r.length)throw new Error("Select highlight failed, number of values do not equal number of highlights.");if(n.length===0)return s;for(let o=0;o<n.length;o++)if(typeof n[o]=="boolean"&&n[o]||typeof n[o]=="string"&&Pt(t,e,n[o]))return r[o];return s},Lt=({selectedBackground:t,todayBackground:e,rangeBackground:n,borderColor:r="transparent"})=>(s,o,l,a,d)=>({backgroundColor:W(o,s,["selected","range","today",l.month===d.monthInYear],[t,n,e,"#fff"],"transparent"),borderWidth:"1px",borderStyle:"solid",borderColor:W(o,s,["selectedStart","selectedEnd","singleSelected","range","today"],["var(--swui-calendar-wrapper-range-background)","var(--swui-calendar-wrapper-range-background)","var(--swui-calendar-wrapper-range-background)","var(--swui-calendar-wrapper-range-border)","var(--lhds-color-ui-500)"],r),borderTopLeftRadius:W(o,s,["selectedStart","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),borderBottomLeftRadius:W(o,s,["selectedStart","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),borderTopRightRadius:W(o,s,["selectedEnd","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),borderBottomRightRadius:W(o,s,["selectedEnd","singleSelected","today"],["var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)","var(--swui-calendar-day-border-radius)"],"unset"),boxSizing:"border-box"}),Wt=({selectedColor:t,disabledColor:e,inOtherMonthColor:n,rangeTextColor:r})=>(s,o,l,a,d)=>{const g=l.month!==d.monthInYear;return{color:W(o,s,[g,"selected","range","enabled","disabled"],[n,t,r,void 0,e])}},F={width:"var(--swui-calendar-day-width)",height:"var(--swui-calendar-day-height)",WeekNumber:{backgroundColor:"var(--swui-calendar-week-number-bg-color)",textColor:"var(--swui-calendar-week-number-text-color)",clickableTextColor:"var(--swui-calendar-week-number-clickable-text-color)"},WeekDay:{textColor:"var(--swui-calendar-week-day-text-color)",clickableTextColor:"var(--swui-calendar-week-day-clickable-text-color)"},CalendarDay:{tdStyle:Lt({selectedBackground:"var(--swui-calendar-wrapper-selected-background)",rangeBackground:"var(--swui-calendar-wrapper-range-background)",todayBackground:"var(--swui-calendar-wrapper-today-background)"}),textProps:Wt({selectedColor:"var(--swui-calendar-text-selected-color)",disabledColor:"var(--swui-calendar-text-disabled-color)",inOtherMonthColor:"var(--swui-calendar-text-in-other-month-color)"})},CalendarMonth:{headerTextColor:"var(--swui-calendar-week-day-text-color)"}},ae={...F,width:"37px",height:"37px"},Ot=({onClickWeekDay:t,day:e,theme:n})=>{const r=c.jsx(f.Box,{width:n.width,height:n.height,justifyContent:"center",alignItems:"center",children:c.jsx(f.Text,{size:"small",color:t?n.WeekDay.clickableTextColor:n.WeekDay.textColor,children:e.name})});return t?c.jsx(f.Clickable,{borderRadius:"var(--swui-calendar-day-border-radius)",onClick:s=>t(e.dayOfWeek,s),disableFocusHighlight:!t,children:r}):r},wt=function({day:e,week:n,month:r,dayState:s,userData:o,onClickDay:l,theme:a,extraDayContent:d,defaultHighlights:g}){const D=c.jsx(f.Box,{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",children:c.jsx(f.Text,{...a.CalendarDay.textProps&&a.CalendarDay.textProps(g,s,e,n,r,o),children:e.dayOfMonth})}),m=ut.td({...a.CalendarDay.tdStyle&&a.CalendarDay.tdStyle(g,s,e,n,r,o)}),h=ut.div({...a.CalendarDay.innerWrapperStyle&&a.CalendarDay.innerWrapperStyle(g,s,e,n,r,o),width:"100%",height:"100%"}),x=ut.div({...a.CalendarDay.cellWrapperStyle&&a.CalendarDay.cellWrapperStyle(g,s,e,n,r,o),width:"100%",height:"100%",position:"relative"}),w=le(g,s);return c.jsx(m,{onClick:w?void 0:C=>l==null?void 0:l(e,o,C),children:c.jsx(h,{children:c.jsx(x,{children:e.month===r.monthInYear&&c.jsxs(c.Fragment,{children:[d&&c.jsx(d,{week:n,month:r,day:e,dayState:s,theme:a,userData:o}),D]})})})})},le=(t,e)=>!!W(e,t,["disabled"],[!0],!1),Ut=({onClickWeek:t,theme:e,week:n,background:r,backgroundColor:s,prefix:o})=>{const l=c.jsxs(f.Box,{width:e.width,height:e.height,justifyContent:"center",alignItems:"center",children:[r&&c.jsx(f.Box,{position:"absolute",children:r}),c.jsx(f.Box,{position:"absolute",children:c.jsxs(f.Text,{color:t?e.WeekNumber.clickableTextColor:e.WeekNumber.textColor,children:[o,n.weekNumber]})})]});return c.jsx(f.Box,{background:s||e.WeekNumber.backgroundColor,position:"relative",children:t?c.jsx(f.Clickable,{borderRadius:"var(--swui-calendar-day-border-radius)",onClick:a=>t(n,a),disableFocusHighlight:!t,children:l}):l})},de=(t,e,n)=>e&&u.isBefore(t,e)?u.isSameDay(t,e):n&&u.isAfter(t,n)?u.isSameDay(t,n):!0,ue=function({dayComponent:e,minDate:n,maxDate:r,dayState:s,day:o,...l}){const a=i.useMemo(()=>de(o.date,n,r)?s:mt(s,["disabled"]),[o.date,s,r,n]);return c.jsx(e,{day:o,...l,dayState:a})};function fe({month:t,dayComponent:e=wt,statePerWeek:n,userDataPerWeek:r,minDate:s,maxDate:o,onClickDay:l,onClickWeek:a,onClickWeekDay:d,onClickMonth:g,renderWeekNumber:D,renderWeekDay:m,headerRightContent:h,theme:x=F,extraDayContent:w,defaultHighlights:C,showWeekNumber:S}){return c.jsx(c.Fragment,{children:c.jsxs(f.Box,{alignItems:"stretch",children:[c.jsxs(f.Row,{justifyContent:h?"space-between":"center",alignItems:"center",children:[c.jsx(f.Row,{justifyContent:"center",alignItems:"center",children:g?c.jsx(b.FlatButton,{onClick:()=>g(t),label:t.name+" "+String(t.year),rightIcon:b.stenaAngleDown}):c.jsxs(f.Text,{whiteSpace:"nowrap",children:[t.name," ",t.year]})}),h&&c.jsx(f.Box,{alignItems:"center",children:h})]}),c.jsx("table",{children:c.jsxs("tbody",{children:[c.jsxs("tr",{children:[S&&c.jsx("td",{children:c.jsx(f.Box,{width:x.width,height:x.height})}),t.weeks[0].days.map(p=>c.jsx("td",{children:m?m(p.name,x,d):c.jsx(Ot,{day:p,onClickWeekDay:d,theme:x})},p.name))]}),t.weeks.map(p=>c.jsx(c.Fragment,{children:c.jsxs("tr",{children:[S&&c.jsx("td",{children:D?D(p,x,a):c.jsx(Ut,{week:p,onClickWeek:a,theme:x})}),p.days.map(k=>c.jsx(ue,{dayComponent:e,day:k,week:p,month:t,dayState:n&&n[p.weekNumber]&&n[p.weekNumber][k.dayOfMonth],userData:r&&r[p.weekNumber]&&r[p.weekNumber][k.dayOfMonth],onClickDay:l,theme:x,extraDayContent:w,defaultHighlights:C,minDate:s,maxDate:o},k.dateString))]},p.weekNumber)}))]})})]})})}function ge({monthRows:t,dayComponent:e=wt,userDataPerMonth:n,statePerMonth:r,minDate:s,maxDate:o,onClickDay:l,onClickWeekDay:a,onClickWeek:d,onClickMonth:g,renderWeekDay:D,renderWeekNumber:m,headerRightContent:h,extraDayContent:x,defaultHighlights:w,showWeekNumber:C,theme:S=F}){const p=i.useMemo(()=>s?u.parse(s,"yyyy-MM-dd",new Date):void 0,[s]),k=i.useMemo(()=>o?u.parse(o,"yyyy-MM-dd",new Date):void 0,[o]);return c.jsx("div",{className:Vt(jt.calendar,C&&jt.weekNumberVisible),children:t.map((y,j)=>c.jsx(f.Spacing,{children:c.jsx(f.Row,{gap:2,children:y.map(M=>c.jsx(fe,{month:M,dayComponent:e,userDataPerWeek:n&&n[M.monthString],statePerWeek:r&&r[M.monthString],onClickDay:l,onClickWeekDay:a,onClickWeek:d,onClickMonth:g,theme:S,renderWeekNumber:m,renderWeekDay:D,headerRightContent:h,extraDayContent:x,defaultHighlights:w,minDate:p,maxDate:k,showWeekNumber:C??!1},M.name))})},j))})}function ct(t){const e=De(t.year,t.month,t.date),{year:n,month:r}=Ht(e.year,e.month),s=he(n,r,t.locale??xt.enGB,t.numMonths,t.monthsPerRow),o=oe(t.highlightToday,t.statePerMonth);return c.jsx(ge,{year:n,month:r,monthRows:s,...t,statePerMonth:o})}const De=(t,e,n)=>{if(e&&t)return{month:e,year:t};if(n)return{month:u.getMonth(n),year:u.getYear(n)};const r=new Date;return{month:u.getMonth(r),year:u.getYear(r)}},he=(t,e,n,r,s)=>r==null?[[bt(t,e,n)]]:s==null?[gt(t,e,r,n)]:H.chunk(gt(t,e,r,n),s),xe=({month:t,year:e,onClick:n,selected:r,locale:s})=>{const o=i.useMemo(()=>{const l=new Date(e,t,1);return H.startCase(u.format(l,"MMM",{locale:s}))},[s,e,t]);return c.jsx(f.Row,{justifyContent:"center",children:r?c.jsx(b.PrimaryButton,{label:o,onClick:n}):c.jsx(b.FlatButton,{label:o,onClick:n})})},$t=({value:t,onValueChange:e,locale:n=xt.enGB,firstMonth:r,numMonths:s})=>{const o=me(r,s);return c.jsx(f.Column,{gap:1,maxWidth:"336px",children:o.years.map(({year:l,months:a})=>c.jsxs(c.Fragment,{children:[c.jsx(f.Heading,{variant:"h4",children:l}),c.jsx(f.Row,{gap:1,flexWrap:"wrap",children:a.map(d=>c.jsx(xe,{month:d,year:l,locale:n,selected:(t==null?void 0:t.month)===d&&(t==null?void 0:t.year)===l,onClick:()=>e==null?void 0:e({month:d,year:l})},d))})]}))})},me=(t,e)=>{let n=t.getFullYear(),r=t.getMonth();const s={years:[{year:n,months:[r]}]};for(let o=1;o<e;o++)r===yt.DECEMBER?(n++,r=0,s.years.push({year:n,months:[r]})):(r++,s.years[s.years.length-1].months.push(r));return s},Dt=t=>({year:t.getFullYear(),month:t.getMonth()}),ye=t=>[{label:"Past",presets:[{label:"Last 3 days",startDate:t,endDate:u.subDays(t,2)},{label:"Last 7 days",startDate:t,endDate:u.subDays(t,6)},{label:"Last 30 days",startDate:t,endDate:u.subDays(t,29)},{label:"Last 45 days",startDate:t,endDate:u.subDays(t,44)}]},{label:"Future",presets:[{label:"Next 3 days",startDate:t,endDate:u.addDays(t,2)},{label:"Next 7 days",startDate:t,endDate:u.addDays(t,6)},{label:"Next 30 days",startDate:t,endDate:u.addDays(t,29)},{label:"Next 45 days",startDate:t,endDate:u.addDays(t,44)}]}],Ft=({onClickPreset:t})=>{const[e,n]=i.useState(0),r=i.useMemo(()=>ye(new Date),[]),s=r[e]??r[0];return c.jsxs(f.Column,{children:[c.jsxs(f.Row,{justifyContent:"space-between",alignItems:"center",width:"200px",children:[c.jsx(b.FlatButton,{size:"small",leftIcon:b.stenaAngleLeft,disabled:e===0,onClick:()=>n(e-1)}),c.jsx(f.Text,{children:s.label}),c.jsx(b.FlatButton,{size:"small",leftIcon:b.stenaAngleRight,disabled:e===r.length-1,onClick:()=>n(e+1)})]}),c.jsx(f.Space,{}),c.jsx(f.Column,{alignItems:"center",children:s.presets.map(o=>c.jsxs(ee.Fragment,{children:[c.jsx(b.PrimaryButton,{label:o.label,onClick:()=>t(o)}),c.jsx(f.Space,{})]},o.label))})]})},be=function({locale:e,dateInFocus:n,setDateInFocus:r,currentPanel:s,setCurrentPanel:o,renderMonthPicker:l,...a}){const d=i.useCallback(D=>{const m=n?new Date(n):new Date;m.setMonth(D.month),m.setFullYear(D.year),r&&r(m),o("calendar")},[n,r,o]),g=i.useCallback(()=>{o("month")},[o]);switch(s){case"calendar":return c.jsx(ct,{...a,date:n,onClickMonth:g,locale:e});case"month":return l?l({value:Dt(n),onValueChange:d,locale:e,firstMonth:new Date,numMonths:24,dateInFocus:n}):c.jsx($t,{value:Dt(n),onValueChange:d,locale:e,firstMonth:new Date,numMonths:24});case"presets":return c.jsx(Ft,{onClickPreset:()=>{}});default:return c.jsx(f.Box,{children:c.jsx(b.PrimaryButton,{label:"Show calendar",onClick:()=>o("calendar")})})}},we=(t,e,n,r)=>{const s=i.useCallback(()=>{const d=u.addMonths(t,n??r??1);e==null||e(d)},[e,t,n,r]),o=i.useCallback(()=>{const d=u.addYears(t,1);e==null||e(d)},[e,t]),l=i.useCallback(()=>{const d=u.subMonths(t,n??r??1);e==null||e(d)},[e,t,n,r]),a=i.useCallback(()=>{const d=u.subYears(t,1);e==null||e(d)},[e,t]);return{nextMonth:s,prevMonth:l,nextYear:o,prevYear:a}},pe=({children:t,prevMonth:e,nextMonth:n,prevYear:r,nextYear:s})=>c.jsxs("div",{children:[t,c.jsx(f.Indent,{children:c.jsxs(f.Row,{gap:1,children:[c.jsx(b.SecondaryButton,{onClick:r,leftIcon:b.stenaAngleLeftDouble}),c.jsx(b.SecondaryButton,{onClick:e,leftIcon:b.stenaArrowLeft}),c.jsx(f.Indent,{num:2}),c.jsx(b.SecondaryButton,{onClick:n,leftIcon:b.stenaArrowRight}),c.jsx(b.SecondaryButton,{onClick:s,leftIcon:b.stenaAngleRightDouble})]})}),c.jsx(f.Space,{})]}),ke=()=>{};function q({monthSwitcherPlacement:t,theme:e=F,dateInFocus:n,setDateInFocus:r,currentPanel:s,setCurrentPanel:o,onSelectPreset:l=ke,renderMonthPicker:a,...d}){const{nextMonth:g,prevMonth:D,nextYear:m,prevYear:h}=we(n,r,d.monthsPerRow,d.numMonths);switch(Se(t,d.numMonths)){case"below":return c.jsx(pe,{theme:e,nextMonth:g,prevMonth:D,nextYear:m,prevYear:h,children:c.jsx(ct,{...d,theme:e,date:n})});case"header":return c.jsx(f.Column,{children:c.jsx(be,{...d,theme:e,renderMonthPicker:a,dateInFocus:n,setDateInFocus:r,currentPanel:s,setCurrentPanel:o,onSelectPreset:l,headerRightContent:c.jsxs(f.Row,{alignItems:"center",gap:1,children:[c.jsx(b.SecondaryButton,{onClick:D,leftIcon:b.stenaArrowLeft}),c.jsx(b.SecondaryButton,{onClick:g,leftIcon:b.stenaArrowRight})]})})});default:return c.jsx(ct,{...d,theme:e,date:n})}}const Se=(t,e)=>t||(e||1)>1?"below":"header",zt=t=>({startDate:t.startDate?u.format(t.startDate,"yyyy-MM-dd"):void 0,endDate:t.endDate?u.format(t.endDate,"yyyy-MM-dd"):void 0}),_t=({startDate:t,endDate:e})=>{const n=new Date;return{startDate:t?u.parse(t,"yyyy-MM-dd",n):void 0,endDate:e?u.parse(e,"yyyy-MM-dd",n):void 0}},pt=({startDate:t,endDate:e})=>!!(t&&e&&!u.isSameDay(t,e)&&u.isAfter(t,e)),kt=t=>pt(t)?{startDate:t.endDate,endDate:t.startDate}:t,je=t=>t.startDate&&t.endDate?zt(kt(_t(t))):t,Ce=(t,e,n,r)=>i.useCallback(s=>{const o={startDate:n==="startDate"?s.date:t==null?void 0:t.startDate,endDate:n==="endDate"?s.date:t==null?void 0:t.endDate};pt(o)||r(n==="startDate"?"endDate":"startDate"),e==null||e(kt(o))},[n,e,r,t==null?void 0:t.endDate,t==null?void 0:t.startDate]),dt=t=>{const[e,n]=i.useState("calendar"),r=i.useCallback(s=>{n(s),t==null||t(s)},[t]);return{currentPanel:e,setCurrentPanel:r}},qt=({focusedInput:t,value:e,onValueChange:n,setFocusedInput:r,statePerMonth:s,onChangePanel:o,initialDateInFocus:l})=>{const{currentPanel:a,setCurrentPanel:d}=dt(o),[g,D]=i.useState(()=>l??new Date),m=Ce(e,n,t,r),h=i.useMemo(()=>G(s,e==null?void 0:e.startDate,e==null?void 0:e.endDate),[s,e==null?void 0:e.endDate,e==null?void 0:e.startDate]);return{onClickDay:m,statePerMonth:h,currentPanel:a,setCurrentPanel:d,setDateInFocus:D,dateInFocus:g}};function Me(t){const e=qt(t);return c.jsx(q,{...t,...e})}const Re=()=>{const[t,e]=i.useState(),[n,r]=i.useState(),[s,o]=i.useState("startDate");return{startDate:t,setStartDate:e,endDate:n,setEndDate:r,focusedInput:s,setFocusedInput:o}},Jt=({onChange:t,value:e,statePerMonth:n,onChangePanel:r})=>{const{currentPanel:s,setCurrentPanel:o}=dt(r),[l,a]=i.useState(()=>e??new Date),d=i.useCallback(D=>{t&&t(D.date)},[t]),g=i.useMemo(()=>e?O(n,e,["selected","singleSelected"]):n,[n,e]);return{onClickDay:d,statePerMonth:g,date:e,currentPanel:s,setCurrentPanel:o,dateInFocus:l,setDateInFocus:a}};function St(t){const e=Jt(t);return c.jsx(q,{...t,...e})}const Kt=({onChange:t,value:e,statePerMonth:n,onChangePanel:r})=>{const{currentPanel:s,setCurrentPanel:o}=dt(r),[l,a]=i.useState(()=>new Date),d=i.useCallback(D=>{if(!t)return;const m=e&&e.find(h=>u.isSameDay(h,D.date));t(e&&m?e.filter(h=>!u.isSameDay(h,D.date)):[...e||[],D.date])},[t,e]),g=i.useMemo(()=>e?e.reduce((D,m)=>O(D,m,["selected"]),n):n,[n,e]);return{onClickDay:d,statePerMonth:g,currentPanel:s,setCurrentPanel:o,dateInFocus:l,setDateInFocus:a}};function Te(t){const e=Kt(t);return c.jsx(q,{...t,...e})}const Gt=({onChange:t,value:e,statePerMonth:n,onChangePanel:r,locale:s=xt.enGB})=>{const[o,l]=i.useState(()=>{const x=ft(e,s);return x?x.days[0].date:new Date}),{currentPanel:a,setCurrentPanel:d}=dt(r),g=i.useCallback(x=>{t&&t(Ct(lt(x.date,s)))},[s,t]),D=i.useCallback(x=>{t&&t(Ct(x))},[t]),m=i.useMemo(()=>{const x=ft(e,s);return x?It(n,x):n},[e,s,n]),h=i.useMemo(()=>{const x=ft(e,s);return x?x.days[0].date:new Date},[s,e]);return{statePerMonth:m,date:h,dateInFocus:o,setDateInFocus:l,onClickDay:g,onClickWeek:D,currentPanel:a,setCurrentPanel:d}},Ct=t=>{if(t)return`${t.endYear}-${t.weekNumber}`},ft=(t,e)=>{if(!t)return;const n=t.split("-"),r=parseInt(n[1],10),s=parseInt(n[0],10),o=new Date;o.setFullYear(s);const l=u.startOfWeek(u.setWeek(o,r),{locale:e});return lt(l,e)};function Ee(t){const e=Gt(t);return c.jsx(q,{...t,...e})}const tt="bottom",Qt=()=>{const[t,e]=Q.useTippyInstance();return{onChangePanel:i.useCallback(()=>{var r,s;(s=(r=e.current)==null?void 0:r.popperInstance)==null||s.update()},[e]),tippyRef:t}},Ie=(t,e,n)=>{const[r,s]=i.useState(n||!1),o=i.useCallback(()=>(s(!0),!0),[s]),l=i.useCallback(()=>{s(!1),e&&e()},[s,e]),a=i.useCallback(d=>{t&&t(d),setTimeout(l,150)},[t,l]);return{showCalendar:o,hideCalendar:l,showingCalendar:r,onSelectDate:a}},et="2999-12-31",Ae=({displayFormat:t=$.fullDate,placeholder:e="Enter date",value:n,zIndex:r=100,calendarTheme:s=F,calendarProps:o,openOnMount:l,onClose:a,onChange:d,portalTarget:g,variant:D,width:m,minDate:h,maxDate:x=et,disabled:w})=>{const{hideCalendar:C,showingCalendar:S,onSelectDate:p,showCalendar:k}=Ie(d,a,l),{tippyRef:y,onChangePanel:j}=Qt();return c.jsx(f.Box,{width:m,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,visible:S,onClickOutside:C,placement:tt,zIndex:r,appendTo:g??"parent",tippyRef:y,disabled:w,content:c.jsx(St,{...o,onChange:p,value:n,theme:s,onChangePanel:j,minDate:h,maxDate:x}),children:c.jsx(U.TextInput,{type:"date",onFocus:k,buttonRight:c.jsx(b.TextInputButton,{onClick:k,icon:b.stenaCalendar}),value:n?u.format(n,t):"",placeholder:e,size:9,disabled:w,autoFocus:l,variant:D,min:h,max:x})})})},Be=(t,e)=>{const n=i.useRef(null),r=i.useRef(null),[s,o]=i.useState(!1),[l,a]=i.useState(void 0),d=i.useCallback(()=>(a("startDate"),o(!0),!0),[a,o]),g=i.useCallback(()=>(a("endDate"),o(!0),!0),[a,o]),D=i.useCallback(()=>{o(!1)},[o]),m=i.useCallback(x=>{l==="startDate"?(e==null||e({startDate:x.date,endDate:t==null?void 0:t.endDate}),t!=null&&t.endDate?setTimeout(D,150):(a("endDate"),r.current&&r.current.focus())):l==="endDate"&&(e==null||e({startDate:t==null?void 0:t.startDate,endDate:x.date}),t!=null&&t.startDate?setTimeout(D,150):(a("startDate"),n.current&&n.current.focus()))},[l,e,a,D,t]),h=i.useMemo(()=>(t==null?void 0:t.startDate)&&(t==null?void 0:t.endDate)&&u.isAfter(t.startDate,t.endDate),[t==null?void 0:t.startDate,t==null?void 0:t.endDate]);return{showingCalendar:s,hideCalendar:D,showCalendarEndDate:g,showCalendarStartDate:d,focusedInput:l,setFocusedInput:a,startDateInputRef:n,endDateInputRef:r,onClickDay:m,startDateIsAfterEnd:h}};function Ye({displayFormat:t=$.fullDate,placeholderStartDate:e="Start date",placeholderEndDate:n="End date",portalTarget:r,value:s,onValueChange:o,zIndex:l=100,width:a,calendarTheme:d=F,calendarProps:g,minDate:D,maxDate:m=et,disabled:h}){const[x,w]=i.useState("calendar"),{hideCalendar:C,showCalendarEndDate:S,showCalendarStartDate:p,showingCalendar:k,focusedInput:y,startDateInputRef:j,endDateInputRef:M,onClickDay:T,startDateIsAfterEnd:R}=Be(s,o),[A,E]=i.useState(()=>(y&&(s==null?void 0:s[y]))??new Date),N=i.useMemo(()=>G(void 0,s==null?void 0:s.startDate,s==null?void 0:s.endDate),[s]);return c.jsx(Q.Popover,{arrow:!1,lazy:!0,disabled:h,visible:k,zIndex:l,placement:tt,appendTo:r??"parent",onClickOutside:C,content:c.jsx(q,{...g,dateInFocus:A,setDateInFocus:E,statePerMonth:N,theme:d,onClickDay:T,currentPanel:x,setCurrentPanel:w,minDate:D,maxDate:m}),children:c.jsxs(f.Row,{alignItems:"center",children:[c.jsx(U.TextInput,{iconLeft:b.stenaCalendar,onFocus:p,value:s!=null&&s.startDate?u.format(s.startDate,t):"",placeholder:e,width:a,disabled:h,inputRef:j,size:9,variant:R?"error":void 0}),c.jsx(f.Space,{}),c.jsx(b.Icon,{icon:b.stenaArrowWideRight,color:Rt.cssColor("--lhds-color-ui-500"),size:14}),c.jsx(f.Space,{}),c.jsx(U.TextInput,{iconLeft:b.stenaCalendar,onFocus:S,value:s!=null&&s.endDate?u.format(s.endDate,t):"",placeholder:n,width:a,disabled:h,inputRef:M,size:9,variant:R?"error":void 0})]})})}const Ne=({calendarProps:t,closeOnCalendarSelectDate:e=!0,dateFormat:n=$.fullDate,disableCalender:r=!1,onValueChange:s,placeholder:o="yyyy-mm-dd",portalTarget:l,value:a,width:d="130px",zIndex:g=100,calendarTheme:D=F,hideCalenderIcon:m=!1,minDate:h,maxDate:x=et,variant:w,...C})=>{const[S,p]=i.useState(!1),{tippyRef:k,onChangePanel:y}=Qt(),j=i.useCallback(()=>{p(!S)},[p,S]),M=i.useCallback(()=>{p(!1)},[p]),T=i.useCallback(B=>{s&&s(B)},[s]),R=i.useCallback(B=>{B&&(T(u.format(B,n)),e&&setTimeout(()=>p(!S),200))},[T,n,e,p,S]),A=!!a&&!/^[-/\\.0-9]+$/.test(a),E=!!a&&u.isValid(u.parse(a,n,new Date)),z=!!a&&a.length>=n.length&&!E||A;return c.jsx(f.Box,{width:d,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,visible:S,zIndex:g,appendTo:l??"parent",placement:tt,onClickOutside:M,tippyRef:k,content:c.jsx(St,{...t,onChange:R,onChangePanel:y,value:a&&E?u.parse(a,n,new Date):void 0,minDate:h,maxDate:x,theme:D}),children:c.jsx(U.TextInput,{...C,variant:z?"error":w,disableContentPaddingRight:!0,contentRight:m?void 0:c.jsx(f.Row,{alignItems:"center",indent:.5,children:c.jsx(b.FlatButton,{size:"small",disabled:C.disabled||r,leftIcon:b.stenaCalendar,onClick:j})}),onValueChange:T,placeholder:o,value:a||"",min:h,max:x,size:10})})})},it=t=>{if(t==="")return"00";const e=parseInt(t,10);if(isNaN(e))throw new Error("Hours is not a number");if(e<0||e>23)throw new Error("Hours is an invalid number");switch(t.length){case 1:return`0${e}`;case 2:return t;default:throw new Error("Invalid hour string")}},at=t=>{if(t==="")return"00";const e=parseInt(t,10);if(isNaN(e))throw new Error("Minutes is not a number");if(e<0||e>59)throw new Error("Minutes is an invalid number");switch(t.length){case 1:return`0${e}`;case 2:return t;default:throw new Error("Invalid minute string")}},He=t=>{if(!ht(t))return{time:t,success:!1};const e=t&&t.split(/-|:|,|;|[/]|[.]| /);if(e&&e.length===2)try{const n=it(e[0]),r=at(e[1]);return{time:`${n}:${r}`,success:!0}}catch{return{time:t,success:!1}}else if(e&&e.length===1){let n=0,r=0;switch(t.length){case 1:return{time:`0${t}:00`,success:!0};case 2:{const s=parseInt(e[0],10);return s>=0&&s<24?{time:`${t}:00`,success:!0}:s>=24&&s<59?{time:`00:${t}`,success:!0}:{time:t,success:!1}}case 3:return r=parseInt(t.substring(1,3),10),r>=0&&r<=59?{time:`0${t.substring(0,1)}:${t.substring(1,3)}`,success:!0}:{time:t,success:!1};case 4:return n=parseInt(t.substring(0,2),10),r=parseInt(t.substring(2,4),10),n<0||n>23?{time:t,success:!1}:r<0||r>59?{time:t,success:!1}:{time:`${t.substring(0,2)}:${t.substring(2,4)}`,success:!0};default:return{time:t,success:!1}}}return{time:t,success:!1}},ht=t=>t?/^[-:.,/; 0-9]+$/.test(t):!0,Pe=({onValueChange:t,showPlaceholder:e=!0,useIcon:n=!0,value:r,width:s="85px",variant:o,...l})=>{const[a,d]=i.useState(()=>ht(r)),g="hh:mm",D=i.useCallback(()=>{if(r){const h=He(r);d(h.success),h.success&&t&&t(h.time)}},[r,t,d]),m=i.useCallback(h=>{const x=h.target.value,w=ht(x);d(w&&x.length<=g.length),t&&t(x)},[t,d]);return c.jsx(U.TextInput,{...l,type:"time",variant:a?o:"error",iconLeft:n?b.stenaClock:void 0,value:r,placeholder:e?g:void 0,onChange:m,onBlur:D,width:s})},Xt=({autoFocusLeft:t,autoFocusRight:e,onEsc:n,onEnter:r,onValueChangeLeft:s,onValueChangeRight:o,separatorIcon:l,placeholderLeft:a,placeholderRight:d,typeLeft:g,typeRight:D,onChangeLeft:m,onChangeRight:h,valueLeft:x,valueRight:w,minLeft:C,maxLeft:S,minRight:p,maxRight:k,onClickLeft:y,onClickRight:j,onClickCalendar:M,onClickArrowDown:T,onBlurLeft:R,onBlurRight:A,onFocusLeft:E,onFocusRight:N,inputRefLeft:z,inputRefRight:B,variant:J,variantLeft:X,variantRight:K,onBlur:P,showPresets:Z,widthLeft:v,widthRight:V,disabled:_})=>{const I=i.useRef(0),Y=i.useMemo(()=>H.debounce(L=>{L===0&&(P==null||P())},10),[P]),nt=i.useCallback(L=>{I.current++,Y(I.current),E&&E(L)},[E,I,Y]),rt=i.useCallback(L=>{I.current++,Y(I.current),N&&N(L)},[N,I,Y]),st=i.useCallback(L=>{I.current--,Y(I.current),R&&R(L)},[R,I,Y]),vt=i.useCallback(L=>{I.current--,Y(I.current),A&&A(L)},[A,I,Y]);return c.jsx(f.Box,{children:c.jsxs(U.TextInputBox,{disableContentPaddingRight:!0,disabled:_,variant:J,contentRight:c.jsxs(f.Row,{alignItems:"center",children:[c.jsx(f.Indent,{num:.5,children:c.jsx(b.FlatButton,{leftIcon:b.stenaCalendar,onClick:M,disabled:_,size:"small"})}),Z?c.jsxs(c.Fragment,{children:[c.jsx(f.Row,{height:"22px",children:c.jsx(f.SeparatorLine,{vertical:!0})}),c.jsx(f.Indent,{num:.5,children:c.jsx(b.FlatButton,{leftIcon:b.stenaAngleDown,onClick:T,disabled:_,size:"small"})})]}):null]}),children:[c.jsx(f.Box,{width:v,children:c.jsx(U.TextInput,{onEsc:n,onEnter:r,onClick:y,disabled:_,hideBorder:!0,placeholder:a,value:x,onValueChange:s,onChange:m,onBlur:st,onFocus:nt,inputRef:z,variant:X,type:g,autoFocus:t,min:C,max:S})}),c.jsx(f.Row,{indent:.5,alignItems:"center",justifyContent:"center",children:c.jsx(b.Icon,{icon:l,size:12,color:Rt.cssColor("--lhds-color-ui-500")})}),c.jsx(f.Box,{width:V,children:c.jsx(U.TextInput,{onEsc:n,onEnter:r,onClick:j,disabled:_,hideBorder:!0,placeholder:d,value:w,onValueChange:o,onChange:h,onBlur:vt,onFocus:rt,inputRef:B,variant:K,type:D,autoFocus:e,min:p,max:k})})]})})},Le=t=>{if(t==null)throw new Error("Time is not set.");if(t==="")throw new Error("Time is empty.");const e=t.split(":");if(e.length!==2)throw new Error("Invalid time.");if(e[1].length!==2)throw new Error("Invalid time.");if(e[0].length<1||e[0].length>2)throw new Error("Invalid time.");const n=parseInt(e[0],10),r=parseInt(e[1],10);if(isNaN(n))throw new Error("Invalid time.");if(isNaN(r))throw new Error("Invalid time.");if(n<0||n>23)throw new Error("Invalid time.");if(r<0||r>59)throw new Error("Invalid time.");return n*100+r},We=t=>{try{return Le(t),!0}catch{return!1}},ot=t=>{if(t&&We(t)){const e=t.split(":");return{hour:f.parseIntElseUndefined(e[0]),minute:f.parseIntElseUndefined(e[1])}}return{hour:void 0,minute:void 0}},Oe=t=>`${it(String(t.getHours()))}:${at(String(t.getMinutes()))}`,Ue="_timePicker_1w05d_1",$e="_timePickerColumn_1w05d_6",Zt={timePicker:Ue,timePickerColumn:$e},Fe=({onClick:t,item:e,selected:n,columnRef:r,canScrollRef:s})=>{const o=i.useRef(null);return i.useEffect(function(){if(n&&r.current&&o.current&&s.current){const a=o.current.scrollHeight*Math.max(e-2,0);r.current.scrollTo(0,a),s.current=!1}},[r,e,n,s]),c.jsx(f.Row,{width:"64px",justifyContent:"center",spacing:.5,indent:.5,ref:o,children:n?c.jsx(b.PrimaryButton,{label:H.padStart(String(e),2,"0"),onClick:()=>t&&t(e)}):c.jsx(b.FlatButton,{label:String(e).padStart(2,"0"),onClick:()=>t&&t(e)})})},Mt=({onClick:t,items:e,selectedItem:n,canScrollRef:r})=>{const s=i.useRef(null);return c.jsx(f.Column,{className:Zt.timePickerColumn,ref:s,children:e.map(o=>c.jsx(Fe,{item:o,onClick:t,selected:o===n,columnRef:s,canScrollRef:r},o))})},ze=H.range(0,24),_e=H.range(0,60),qe=({value:t,onValueChange:e})=>{const n=i.useRef(!0),[r,s]=i.useState(void 0),[o,l]=i.useState(void 0);i.useEffect(()=>{if(t){const{minute:g,hour:D}=ot(t);s(D),l(g)}},[t]);const a=i.useCallback(g=>{s(g),e==null||e(`${it(String(g??0))}:${at(String(o??0))}`)},[o,e]),d=i.useCallback(g=>{l(g),e==null||e(`${it(String(r??0))}:${at(String(g??0))}`)},[r,e]);return c.jsxs(f.Row,{className:Zt.timePicker,children:[c.jsx(Mt,{items:ze,onClick:a,selectedItem:r,canScrollRef:n}),c.jsx(f.Indent,{}),c.jsx(Mt,{items:_e,onClick:d,selectedItem:o,canScrollRef:n})]})},Je=(t,e,n)=>{i.useEffect(function(){t&&e(t)},[t,e]),i.useEffect(function(){n.current&&(t?n.current.valueAsDate=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())):n.current.valueAsDate=null)},[t,n])},Ke=(t,e,{setDateInFocus:n,showCalendarInternal:r,hideCalendarInternal:s,setFirstFocusedInput:o,setCurrentPanel:l,localTime:a,setLocalTime:d,localDate:g,setLocalDate:D},m)=>{const h=i.useCallback(k=>{if(!k)return;const y=new Date(k);if(t)y.setHours(t.getHours()),y.setMinutes(t.getMinutes()),e==null||e(y),D(void 0);else if(a){const{minute:j,hour:M}=ot(a);y.setHours(M??0),y.setMinutes(j??0),e==null||e(y),D(void 0)}else D(y);n(y),m.current&&(m.current.valueAsDate=new Date(Date.UTC(y.getFullYear(),y.getMonth(),y.getDate())))},[t,m,a,e,n,D]),x=i.useCallback(k=>{if(k)if(t){const y=ot(k),j=new Date(t);j.setHours(y.hour||0),j.setMinutes(y.minute||0),e==null||e(j),d(void 0)}else if(g){const y=ot(k),j=new Date(g);j.setHours(y.hour||0),j.setMinutes(y.minute||0),e==null||e(j),d(void 0)}else d(k)},[e,t,g,d]),w=i.useCallback(k=>{k.target.value[0]!=="0"&&h(k.target.valueAsDate)},[h]),C=i.useCallback(k=>x(k.target.value),[x]),S=i.useCallback(()=>{n(t||new Date),l("calendar"),r()},[t,l,r,n]),p=i.useCallback(()=>{o(void 0),s()},[o,s]);return{inputLeftChangeHandler:w,inputRightChangeHandler:C,hideCalendar:p,showCalendar:S,onChangeTime:x,onChangeDate:h}},Ge=t=>{const[e,n]=i.useState(void 0),[r,s]=i.useState(void 0),[o,l,a]=f.useBoolean(!1),[d,g,D]=f.useBoolean(!1),[m,h]=i.useState(void 0),[x,w]=i.useState(()=>t??new Date),[C,S]=i.useState("calendar");return{isCalendarVisible:o,showCalendarInternal:l,hideCalendarInternal:a,firstFocusedInput:m,setFirstFocusedInput:h,dateInFocus:x,setDateInFocus:w,currentPanel:C,setCurrentPanel:S,isTimePickerVisible:d,showTimePicker:g,hideTimePicker:D,localDate:e,setLocalDate:n,localTime:r,setLocalTime:s}},Qe=(t,e,n,r,{isCalendarVisible:s,setCurrentPanel:o,showTimePicker:l,hideTimePicker:a})=>{const d=i.useCallback(()=>{s||n(),o("calendar"),a()},[a,s,o,n]),g=i.useCallback(()=>{r(),l()},[r,l]),D=i.useCallback(w=>{t(w.date),r(),l()},[t,r,l]),m=i.useCallback(()=>{o("presets"),n()},[o,n]),h=i.useCallback(()=>{var w;s?r():((w=e.current)==null||w.focus(),o("calendar"),n())},[s,r,e,o,n]),x=i.useCallback(w=>{w.key==="Escape"&&r()},[r]);return{onFocusLeft:d,onFocusRight:g,onClickDay:D,onClickArrowButton:m,onClickCalendarButton:h,onKeyDownHandler:x}},Xe=({value:t,onValueChange:e,onEnter:n,onEsc:r,onBlur:s,autoFocus:o,minDate:l,widthLeft:a=128,widthRight:d=80,maxDate:g=et,variant:D,disabled:m})=>{const h=i.useRef(null),x=i.useRef(null),w=Ge(t),{setCurrentPanel:C,currentPanel:S,isCalendarVisible:p,dateInFocus:k,setDateInFocus:y,isTimePickerVisible:j,hideTimePicker:M,localTime:T,localDate:R}=w,{showCalendar:A,hideCalendar:E,inputLeftChangeHandler:N,inputRightChangeHandler:z,onChangeTime:B,onChangeDate:J}=Ke(t,e,w,h),{onKeyDownHandler:X,onFocusRight:K,onFocusLeft:P,onClickDay:Z,onClickCalendarButton:v,onClickArrowButton:V}=Qe(J,h,A,E,w);Je(t,y,h);const _=i.useMemo(()=>{const st=t||R;return st?O(void 0,st,["singleSelected","selected"]):{}},[R,t]),I=i.useCallback(()=>{E(),M()},[E,M]),Y=i.useMemo(()=>t?Oe(t):T,[t,T]),nt=f.useDelayedFalse(p,300),rt=f.useDelayedFalse(j,300);return c.jsx(f.Box,{onKeyDown:X,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,disabled:m,placement:tt,visible:p||j,onClickOutside:I,content:(nt||rt)&&c.jsx(f.Column,{children:nt?c.jsx(q,{statePerMonth:_,onClickDay:Z,dateInFocus:k,setDateInFocus:y,currentPanel:S,setCurrentPanel:C,minDate:l,maxDate:g}):rt?c.jsxs(f.Column,{children:[c.jsx(f.Column,{overflow:"hidden",height:"250px",children:c.jsx(qe,{value:Y??"",onValueChange:B})}),c.jsx(f.Space,{}),c.jsx(f.Row,{justifyContent:"flex-end",children:c.jsx(b.PrimaryButton,{label:"Done",onClick:M})})]}):null}),children:c.jsx(Xt,{autoFocusLeft:o,onEsc:r,onEnter:n,onBlur:s,disabled:m,separatorIcon:b.stenaClock,typeLeft:"date",typeRight:"time",placeholderLeft:"yyyy-mm-dd",placeholderRight:"hh:mm",onChangeLeft:N,onChangeRight:z,onClickArrowDown:V,onClickCalendar:v,onFocusLeft:P,onFocusRight:K,onClickLeft:P,onClickRight:K,inputRefLeft:h,inputRefRight:x,valueRight:Y??"",widthLeft:a,widthRight:d,minLeft:l,maxLeft:g,variant:D})})})},Ze=({value:t,onValueChange:e,year:n})=>{const r=String(n);return c.jsx(f.Row,{justifyContent:"center",children:t===n?c.jsx(b.PrimaryButton,{label:r,onClick:()=>e==null?void 0:e(n)}):c.jsx(b.FlatButton,{label:r,onClick:()=>e==null?void 0:e(n)})})},ve=({value:t,onValueChange:e,initialLastYear:n})=>{const[r,s]=i.useState(()=>t?t+4:n??new Date().getFullYear()+4),o=i.useMemo(()=>{const l=r-11;return H.chunk(H.range(l,r+1),3)},[r]);return i.useEffect(()=>{s(l=>Ve(t,l))},[t]),c.jsxs(f.Row,{children:[c.jsx(f.Column,{justifyContent:"center",children:c.jsx(b.FlatButton,{leftIcon:b.stenaArrowLeft,onClick:()=>s(r-3)})}),c.jsx(f.Column,{gap:1,children:o.map(l=>c.jsx(f.Row,{gap:1,children:l.map(a=>c.jsx(Ze,{year:a,onValueChange:e,value:t},a))},l[0]))}),c.jsx(f.Column,{justifyContent:"center",children:c.jsx(b.FlatButton,{leftIcon:b.stenaArrowRight,onClick:()=>s(r+3)})})]})},Ve=(t,e)=>{if(t==null)return e;if(t>e){const r=t-e,s=r%3,o=r-s+3;return e+o}const n=e-11;if(t<n){const r=n-t,s=r%3,o=r-s+3;return e-o}return e},tn=(t,e,n,r,s)=>{i.useEffect(function(){t&&n(t)},[t,n]),i.useEffect(function(){e&&n(e)},[e,n]),i.useEffect(function(){r.current&&(t?r.current.valueAsDate=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())):r.current.valueAsDate=null)},[t,r]),i.useEffect(function(){s.current&&(e?s.current.valueAsDate=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())):s.current.valueAsDate=null)},[e,s])},en=(t,e,n,{setDateInFocus:r,showCalendarInternal:s,hideCalendarInternal:o,setFirstFocusedInput:l,setCurrentPanel:a})=>{const d=i.useCallback(h=>{h.target.value[0]!=="0"&&(n==null||n({startDate:h.target.valueAsDate??void 0,endDate:e}))},[n,e]),g=i.useCallback(h=>{h.target.value[0]!=="0"&&(n==null||n({startDate:t,endDate:h.target.valueAsDate??void 0}))},[n,t]),D=i.useCallback(()=>{r(t||e||new Date),a("calendar"),s()},[t,e,a,s,r]),m=i.useCallback(()=>{l(void 0),o()},[l,o]);return{inputLeftChangeHandler:d,inputRightChangeHandler:g,hideCalendar:m,setDateInFocus:r,setCurrentPanel:a,showCalendar:D}},nn=(t,e)=>{const[n,r,s]=f.useBoolean(!1),[o,l]=i.useState(void 0),[a,d]=i.useState("startDate"),[g,D]=i.useState(()=>(a==="startDate"?t:a==="endDate"?e:void 0)??new Date),[m,h]=i.useState("calendar");return{isCalendarVisible:n,showCalendarInternal:r,hideCalendarInternal:s,firstFocusedInput:o,setFirstFocusedInput:l,focusedInput:a,setFocusedInput:d,dateInFocus:g,setDateInFocus:D,currentPanel:m,setCurrentPanel:h}},rn=(t,e,n,r,s,o,l,{firstFocusedInput:a,setFirstFocusedInput:d,isCalendarVisible:g,setFocusedInput:D,focusedInput:m,setCurrentPanel:h})=>{const x=i.useCallback(()=>{a==null&&d("startDate"),D("startDate"),g||o()},[g,D,o,d,a]),w=i.useCallback(()=>{a==null&&d("endDate"),D("endDate"),g||o()},[g,D,o,d,a]),C=i.useCallback(y=>{var j,M,T,R;m==="startDate"?e!=null&&u.isAfter(y.date,e)?(n==null||n({startDate:y.date,endDate:void 0}),D("endDate"),(j=s.current)==null||j.focus()):(n==null||n({startDate:y.date,endDate:e}),a==="startDate"?(D("endDate"),(M=s.current)==null||M.focus()):setTimeout(l,50)):m==="endDate"&&(t?u.isAfter(t,y.date)?(n==null||n({startDate:y.date,endDate:void 0}),D("endDate"),(R=s.current)==null||R.focus()):(n==null||n({startDate:t,endDate:y.date}),setTimeout(l,50)):(n==null||n({startDate:t,endDate:y.date}),D("startDate"),(T=r.current)==null||T.focus()))},[m,n,e,a,D,s,l,t,r]),S=i.useCallback(()=>{h("presets"),o()},[h,o]),p=i.useCallback(()=>{var y;g?l():(D("startDate"),d("startDate"),(y=r.current)==null||y.focus(),h("calendar"),o())},[g,l,D,d,r,h,o]),k=i.useCallback(y=>{y.key==="Escape"&&l()},[l]);return{onFocusLeft:x,onFocusRight:w,onClickDay:C,onClickArrowButton:S,onClickCalendarButton:p,onKeyDownHandler:k}};function sn({value:t,onValueChange:e,autoFocus:n,onBlur:r,onEnter:s,onEsc:o,minDate:l,maxDate:a=et,calendarProps:d,widthLeft:g=128,widthRight:D=128,variant:m,disabled:h}){const{startDate:x,endDate:w}=t||{},C=i.useRef(null),S=i.useRef(null),p=nn(x,w),{dateInFocus:k,setDateInFocus:y,isCalendarVisible:j,currentPanel:M,setCurrentPanel:T}=p,{showCalendar:R,hideCalendar:A,inputLeftChangeHandler:E,inputRightChangeHandler:N}=en(x,w,e,p),{onKeyDownHandler:z,onFocusRight:B,onFocusLeft:J,onClickDay:X,onClickCalendarButton:K,onClickArrowButton:P}=rn(x,w,e,C,S,R,A,p);tn(x,w,y,C,S);const Z=i.useMemo(()=>x&&w&&u.isAfter(x,w),[x,w]),v=i.useMemo(()=>Tt(d==null?void 0:d.statePerMonth,x,w,k),[d==null?void 0:d.statePerMonth,x,w,k]),V=f.useDelayedFalse(j,300);return c.jsx(f.Box,{onKeyDown:z,children:c.jsx(Q.Popover,{arrow:!1,lazy:!0,disabled:h,placement:tt,onClickOutside:A,visible:j,content:V&&c.jsx(q,{onClickDay:X,dateInFocus:k,setDateInFocus:y,currentPanel:M,setCurrentPanel:T,minDate:l,maxDate:a,...d,statePerMonth:v}),children:c.jsx(Xt,{autoFocusLeft:n,onEsc:o,onEnter:s,onBlur:r,disabled:h,separatorIcon:b.stenaArrowRight,typeLeft:"date",typeRight:"date",placeholderLeft:"Start date",placeholderRight:"End date",onChangeLeft:E,onChangeRight:N,onClickArrowDown:P,onClickCalendar:K,onFocusLeft:J,onFocusRight:B,onClickLeft:J,onClickRight:B,inputRefLeft:C,inputRefRight:S,variant:Z?"error":m,widthLeft:g,widthRight:D,minLeft:l,maxLeft:a,minRight:l,maxRight:a})})})}exports.Calendar=ct;exports.CalendarDay=wt;exports.DateInput=Ae;exports.DateRangeCalendar=Me;exports.DateRangeDualTextInput=sn;exports.DateRangeInput=Ye;exports.DateTextInput=Ne;exports.DateTimeInput=Xe;exports.Month=yt;exports.MonthPicker=$t;exports.MultiDateCalendar=Te;exports.PresetPicker=Ft;exports.SingleDateCalendar=St;exports.SingleWeekCalendar=Ee;exports.TimeTextInput=Pe;exports.WeekDay=At;exports.WeekDayCell=Ot;exports.WeekNumberCell=Ut;exports.YearPicker=ve;exports.addDayStateHighlights=O;exports.addDayStateHighlightsOnSingleDay=mt;exports.addWeekRangeHighlights=It;exports.addWeekStateHighlights=se;exports.buildDayStateForDateRange=G;exports.buildDayStateForRange=Et;exports.buildDayStateForSingleMonth=Tt;exports.calculateOverflowingMonth=Ht;exports.createDay=Yt;exports.createFirstDate=Dt;exports.dateRangeToStrings=zt;exports.dayHasHighlight=Pt;exports.dayHighlightSelect=W;exports.defaultCalendarTheme=F;exports.defaultTextPropsProvider=Wt;exports.defaultWrapperStyleProvider=Lt;exports.extranetCalendarTheme=ae;exports.getDaysForWeekForDate=Nt;exports.getMonthInYear=bt;exports.getMonthsInYear=gt;exports.getWeekForDate=lt;exports.getWeeksForMonth=Bt;exports.isDateRangeInvalid=pt;exports.setDayStateValue=ne;exports.setDayStateValueFunction=re;exports.stringsToDateRange=_t;exports.toggleDateStringsIfEndIsEarlierThanStart=je;exports.toggleDatesIfEndIsEarlierThanStart=kt;exports.useDateRangeCalendarState=Re;exports.useDateRangeSelection=qt;exports.useMultiDateSelection=Kt;exports.useSingleDateSelection=Jt;exports.useSingleWeekSelection=Gt;
|
|
3
3
|
//# sourceMappingURL=index.js.map
|