@dialpad/dialtone 9.160.1 → 9.161.0
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/tokens/doc.json +83679 -83679
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/lib/datepicker/datepicker.cjs +1 -1
- package/dist/vue3/lib/datepicker/datepicker.cjs.map +1 -1
- package/dist/vue3/lib/datepicker/datepicker.js +188 -159
- package/dist/vue3/lib/datepicker/datepicker.js.map +1 -1
- package/dist/vue3/lib/datepicker/utils.cjs +1 -1
- package/dist/vue3/lib/datepicker/utils.cjs.map +1 -1
- package/dist/vue3/lib/datepicker/utils.js +37 -37
- package/dist/vue3/lib/datepicker/utils.js.map +1 -1
- package/dist/vue3/lib/popover/popover.cjs +1 -1
- package/dist/vue3/lib/popover/popover.cjs.map +1 -1
- package/dist/vue3/lib/popover/popover.js +35 -35
- package/dist/vue3/lib/popover/popover.js.map +1 -1
- package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts.map +1 -1
- package/dist/vue3/types/components/datepicker/datepicker.vue.d.ts +8 -0
- package/dist/vue3/types/components/datepicker/datepicker.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/datepicker/modules/calendar.vue.d.ts +2 -0
- package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts +2 -0
- package/dist/vue3/types/components/datepicker/utils.d.ts +1 -1
- package/dist/vue3/types/components/datepicker/utils.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),g=require("@dialpad/dialtone-icons/vue3"),c=require("date-fns"),N=require("./utils.cjs"),P=require("./datepicker-constants.cjs"),v=require("../../common/utils/index.cjs"),R=require("../../localization/index.cjs"),A=require("../stack/stack.cjs"),M=require("../tooltip/tooltip.cjs"),T=require("../button/button.cjs");function V(r,o){const s=e.ref(c.getMonth(r.selectedDate)),a=e.ref(c.getYear(r.selectedDate)),n=e.ref(null),l=e.ref(0),m=e.ref([]),D=new R.DialtoneLocalization,b=e.computed(()=>N.getCalendarDays(s.value,a.value,n.value,r.minDate,r.maxDate)),k=e.computed(()=>{if(!r.minDate)return!1;const t=c.subMonths(new Date(a.value,s.value,1),1);return c.endOfMonth(t)<c.startOfDay(r.minDate)}),E=e.computed(()=>{if(!r.maxDate)return!1;const t=c.addMonths(new Date(a.value,s.value,1),1);return c.startOfMonth(t)>c.startOfDay(r.maxDate)}),p=e.computed(()=>{if(!r.minDate)return!1;const t=new Date(a.value-1,s.value,1);return c.endOfMonth(t)<c.startOfDay(r.minDate)}),_=e.computed(()=>{if(!r.maxDate)return!1;const t=new Date(a.value+1,s.value,1);return c.startOfMonth(t)>c.startOfDay(r.maxDate)});e.watch(s,()=>{$(),o("calendar-days",b.value)},{immediate:!0}),e.watch(a,()=>{$(),o("calendar-days",b.value)},{immediate:!0}),e.watch(()=>r.minDate,()=>{o("calendar-days",b.value)}),e.watch(()=>r.maxDate,()=>{o("calendar-days",b.value)});function u(t){return N.formatMonth(t,P.INTL_MONTH_FORMAT,D.currentLocale)}function i(t){m.value.includes(t)||m.value.push(t)}function y(){v.returnFirstEl(m.value[0].$el).focus()}function f(t){switch(t.key){case"ArrowLeft":t.preventDefault(),l.value===0?(l.value=3,v.returnFirstEl(m.value[l.value].$el).focus()):(l.value--,v.returnFirstEl(m.value[l.value].$el).focus());break;case"ArrowRight":t.preventDefault(),l.value===3?(l.value=0,v.returnFirstEl(m.value[l.value].$el).focus()):(l.value++,v.returnFirstEl(m.value[l.value].$el).focus());break;case"ArrowDown":t.preventDefault(),o("focus-first-day");break;case"Tab":t.preventDefault(),o("focus-first-day");break;case"Escape":o("close-datepicker");break}}function $(){const t=c.getYear(r.selectedDate),x=c.getMonth(r.selectedDate);t!==a.value||x!==s.value?n.value=null:n.value=c.getDate(r.selectedDate)}function h(t){if(t===-1&&k.value||t===1&&E.value)return;(s.value===0&&t===-1||s.value===11&&t===1)&&(a.value+=t);const x=c.set(r.selectedDate,{month:s.value,year:a.value}),F=t===1?c.addMonths(x,1):c.subMonths(x,1);s.value=c.getMonth(F)}function w(t){t===-1&&p.value||t===1&&_.value||(a.value=a.value+t)}function C(){h(1)}function L(){h(-1)}function I(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR")} ${a.value-1}`}function O(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH")} ${u(s.value-1)}`}function Y(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_NEXT_YEAR")} ${a.value+1}`}function d(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_NEXT_MONTH")} ${u(s.value+1)}`}return{selectMonth:s,selectYear:a,formattedMonth:u,setDayRef:i,focusMonthYearPicker:y,handleKeyDown:f,changeMonth:h,changeYear:w,goToNextMonth:C,goToPrevMonth:L,isPrevMonthDisabled:k,isNextMonthDisabled:E,isPrevYearDisabled:p,isNextYearDisabled:_,previousYearAriaLabel:I,previousMonthAriaLabel:O,nextYearAriaLabel:Y,nextMonthAriaLabel:d}}const K={id:"calendar-heading",class:"d-datepicker__month-year-title"},B={__name:"month-year-picker",props:{selectedDate:{type:Date,required:!0},minDate:{type:Date,default:null},maxDate:{type:Date,default:null}},emits:["calendar-days","focus-first-day","focus-last-day","close-datepicker"],setup(r,{expose:o,emit:s}){const a=r,n=s,l=new R.DialtoneLocalization,{selectMonth:m,selectYear:D,formattedMonth:b,setDayRef:k,focusMonthYearPicker:E,handleKeyDown:p,changeMonth:_,changeYear:u,goToNextMonth:i,goToPrevMonth:y,isPrevMonthDisabled:f,isNextMonthDisabled:$,isPrevYearDisabled:h,isNextYearDisabled:w,previousYearAriaLabel:C,previousMonthAriaLabel:L,nextMonthAriaLabel:I,nextYearAriaLabel:O}=V(a,n);return e.onMounted(()=>{E()}),o({focusMonthYearPicker:E,goToNextMonth:i,goToPrevMonth:y}),(Y,d)=>(e.openBlock(),e.createBlock(e.unref(A.default),{class:"d-datepicker__month-year",direction:"row",gap:"300"},{default:e.withCtx(()=>[e.createVNode(e.unref(A.default),{as:"nav",class:"d-datepicker__nav",direction:"row",gap:"200"},{default:e.withCtx(()=>[e.createVNode(e.unref(M.default),{"fallback-placements":["top-start","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref(T.default),{id:"prevYearButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(C)(),circle:!0,disabled:e.unref(h),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[0]||(d[0]=t=>e.unref(u)(-1)),onKeydown:d[1]||(d[1]=t=>e.unref(p)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(g.DtIconChevronsLeft),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"]),e.createVNode(e.unref(M.default),{"fallback-placements":["top-start","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref(T.default),{id:"prevMonthButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(L)(),circle:!0,disabled:e.unref(f),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[2]||(d[2]=t=>e.unref(_)(-1)),onKeydown:d[3]||(d[3]=t=>e.unref(p)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(g.DtIconChevronLeft),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"])]),_:1}),e.createElementVNode("div",K,e.toDisplayString(e.unref(b)(e.unref(m)))+" "+e.toDisplayString(e.unref(D)),1),e.createVNode(e.unref(A.default),{as:"nav",class:"d-datepicker__nav",direction:"row",gap:"200"},{default:e.withCtx(()=>[e.createVNode(e.unref(M.default),{"fallback-placements":["top-end","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_NEXT_MONTH"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref(T.default),{id:"nextMonthButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(I)(),circle:!0,disabled:e.unref($),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[4]||(d[4]=t=>e.unref(_)(1)),onKeydown:d[5]||(d[5]=t=>e.unref(p)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(g.DtIconChevronRight),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"]),e.createVNode(e.unref(M.default),{"fallback-placements":["top-end","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_NEXT_YEAR"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref(T.default),{id:"nextYearButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(O)(),circle:!0,disabled:e.unref(w),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[6]||(d[6]=t=>e.unref(u)(1)),onKeydown:d[7]||(d[7]=t=>e.unref(p)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(g.DtIconChevronsRight),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"])]),_:1})]),_:1}))}};function z(r,o){const s=e.ref(null),a=e.ref(0),n=e.ref([]),l=new R.DialtoneLocalization,m=e.computed(()=>N.getWeekDayNames(r.locale,P.WEEK_START));e.watch(()=>r.calendarDays,()=>{a.value=0,n.value=[],s.value=null});function D(u){return l.$t("DIALTONE_DATEPICKER_SELECT_DAY")+` ${N.formatDate(u.value,P.INTL_MONTH_FORMAT,l.currentLocale)}`}function b(u,i){!n.value.some(y=>y.el===u)&&!i.disabled&&n.value.push({el:u,day:i})}function k(u){switch(u.key){case"ArrowUp":u.preventDefault(),a.value-=7;try{v.returnFirstEl(n.value[a.value].el.$el).focus()}catch{const i=N.calculatePrevFocusDate(n.value[a.value+7].day.value);o("go-to-prev-month"),e.nextTick(()=>{v.returnFirstEl(n.value[i-1].el.$el).focus(),a.value+=i-1})}break;case"ArrowDown":u.preventDefault(),a.value+=7;try{v.returnFirstEl(n.value[a.value].el.$el).focus()}catch{const i=N.calculateNextFocusDate(n.value[a.value-7].day.value);o("go-to-next-month"),e.nextTick(()=>{v.returnFirstEl(n.value[i-1].el.$el).focus(),a.value+=i-1})}break;case"ArrowLeft":u.preventDefault(),a.value>0?(a.value-=1,v.returnFirstEl(n.value[a.value].el.$el).focus()):(o("go-to-prev-month"),p());break;case"ArrowRight":u.preventDefault(),a.value<n.value.length-1?(a.value+=1,v.returnFirstEl(n.value[a.value].el.$el).focus()):(o("go-to-next-month"),E());break;case"Tab":u.preventDefault(),o("focus-month-year-picker");break;case"Escape":o("close-datepicker");break}}function E(){a.value=0,e.nextTick(()=>{v.returnFirstEl(n.value[a.value].el.$el).focus()})}function p(){e.nextTick(()=>{a.value=n.value.length-1,v.returnFirstEl(n.value[a.value].el.$el).focus()})}function _(u){u.disabled||(s.value=u.text,o("select-date",u.value))}return{selectedDay:s,weekDays:m,dayAriaLabel:D,setDayRef:b,handleKeyDown:k,focusFirstDay:E,selectDay:_}}const q={class:"d-datepicker__calendar","aria-labelledby":"calendar-heading"},S=["title","aria-label"],H={__name:"calendar",props:{calendarDays:{type:Array,required:!0}},emits:["select-date","focus-month-year-picker","close-datepicker","go-to-next-month","go-to-prev-month"],setup(r,{expose:o,emit:s}){const a=r,n=s,{selectedDay:l,weekDays:m,dayAriaLabel:D,setDayRef:b,handleKeyDown:k,focusFirstDay:E,selectDay:p}=z(a,n);return o({focusFirstDay:E}),(_,u)=>(e.openBlock(),e.createElementBlock("table",q,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),i=>(e.openBlock(),e.createElementBlock("th",{key:i,scope:"col",class:"d-datepicker__cell d-datepicker__cell--header"},[e.createElementVNode("span",{class:"d-datepicker__weekday",title:i,"aria-label":i},e.toDisplayString(i),9,S)]))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.calendarDays,(i,y)=>(e.openBlock(),e.createElementBlock("tr",{key:y},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.days,(f,$)=>(e.openBlock(),e.createElementBlock("td",{key:y+$,class:"d-datepicker__cell",role:"listbox"},[e.createVNode(e.unref(T.default),{ref_for:!0,ref:h=>{h&&e.unref(b)(h,f)},class:e.normalizeClass(["d-datepicker__day",{"d-datepicker__day--disabled":f.disabled,"d-datepicker__day--selected":e.unref(l)?f.text===e.unref(l)&&!f.disabled:f.selected}]),circle:!0,size:"sm",importance:"clear",disabled:f.disabled,type:"button","aria-selected":e.unref(l)?f.text===e.unref(l)&&!f.disabled:f.selected,"aria-label":e.unref(D)(f),role:"option",onClick:h=>e.unref(p)(f),onKeydown:u[0]||(u[0]=h=>e.unref(k)(h))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.text),1)]),_:2},1032,["disabled","class","aria-selected","aria-label","onClick"])]))),128))]))),128))])]))}},G={class:"d-datepicker__hd"},U={class:"d-datepicker__bd"},X={__name:"datepicker",props:{selectedDate:{type:Date,default:()=>new Date},minDate:{type:Date,default:null},maxDate:{type:Date,default:null,validator:(r,o)=>r&&o.minDate&&r<o.minDate?(console.warn("[DtDatepicker]: maxDate must be after or equal to minDate."),!1):!0}},emits:["selected-date","close-datepicker"],setup(r){const o=e.ref([]);function s(a){o.value=a}return e.onMounted(()=>{const a=e.getCurrentInstance();v.warnIfUnmounted(v.returnFirstEl(a.proxy.$el),"datepicker")}),(a,n)=>(e.openBlock(),e.createBlock(e.unref(A.default),{class:"d-datepicker",gap:"400"},{default:e.withCtx(()=>[e.createElementVNode("div",G,[e.createVNode(B,{ref:"monthYearPicker","selected-date":r.selectedDate,"min-date":r.minDate,"max-date":r.maxDate,onCalendarDays:s,onFocusFirstDay:n[0]||(n[0]=l=>a.$refs.calendar.focusFirstDay()),onFocusLastDay:n[1]||(n[1]=l=>a.$refs.calendar.focusLastDay()),onCloseDatepicker:n[2]||(n[2]=l=>a.$emit("close-datepicker"))},null,8,["selected-date","min-date","max-date"])]),e.createElementVNode("div",U,[e.createVNode(H,{ref:"calendar","calendar-days":o.value,onSelectDate:n[3]||(n[3]=l=>a.$emit("selected-date",l)),onFocusMonthYearPicker:n[4]||(n[4]=l=>a.$refs.monthYearPicker.focusMonthYearPicker()),onCloseDatepicker:n[5]||(n[5]=l=>a.$emit("close-datepicker")),onGoToNextMonth:n[6]||(n[6]=l=>a.$refs.monthYearPicker.goToNextMonth()),onGoToPrevMonth:n[7]||(n[7]=l=>a.$refs.monthYearPicker.goToPrevMonth())},null,8,["calendar-days"])])]),_:1}))}};exports.default=X;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),T=require("@dialpad/dialtone-icons/vue3"),c=require("date-fns"),w=require("./utils.cjs"),Y=require("./datepicker-constants.cjs"),v=require("../../common/utils/index.cjs"),P=require("../../localization/index.cjs"),M=require("../stack/stack.cjs"),x=require("../tooltip/tooltip.cjs"),$=require("../button/button.cjs");function V(n,o){const s=e.ref(c.getMonth(n.selectedDate)),a=e.ref(c.getYear(n.selectedDate)),r=e.ref(null),l=e.ref(0),m=e.ref([]),D=new P.DialtoneLocalization,p=e.computed(()=>w.getCalendarDays(s.value,a.value,r.value,n.minDate,n.maxDate,n.weekStartsOn)),k=e.computed(()=>{if(!n.minDate)return!1;const t=c.subMonths(new Date(a.value,s.value,1),1);return c.endOfMonth(t)<c.startOfDay(n.minDate)}),E=e.computed(()=>{if(!n.maxDate)return!1;const t=c.addMonths(new Date(a.value,s.value,1),1);return c.startOfMonth(t)>c.startOfDay(n.maxDate)}),b=e.computed(()=>{if(!n.minDate)return!1;const t=new Date(a.value-1,s.value,1);return c.endOfMonth(t)<c.startOfDay(n.minDate)}),y=e.computed(()=>{if(!n.maxDate)return!1;const t=new Date(a.value+1,s.value,1);return c.startOfMonth(t)>c.startOfDay(n.maxDate)});e.watch(s,()=>{N(),o("calendar-days",p.value)},{immediate:!0}),e.watch(a,()=>{N(),o("calendar-days",p.value)},{immediate:!0}),e.watch(()=>n.minDate,()=>{o("calendar-days",p.value)}),e.watch(()=>n.maxDate,()=>{o("calendar-days",p.value)});function u(t){return w.formatMonth(t,Y.INTL_MONTH_FORMAT,D.currentLocale)}function i(t){m.value.includes(t)||m.value.push(t)}function _(){v.returnFirstEl(m.value[0].$el).focus()}function f(t){switch(t.key){case"ArrowLeft":t.preventDefault(),l.value===0?(l.value=3,v.returnFirstEl(m.value[l.value].$el).focus()):(l.value--,v.returnFirstEl(m.value[l.value].$el).focus());break;case"ArrowRight":t.preventDefault(),l.value===3?(l.value=0,v.returnFirstEl(m.value[l.value].$el).focus()):(l.value++,v.returnFirstEl(m.value[l.value].$el).focus());break;case"ArrowDown":t.preventDefault(),o("focus-first-day");break;case"Tab":t.preventDefault(),o("focus-first-day");break;case"Escape":o("close-datepicker");break}}function N(){const t=c.getYear(n.selectedDate),g=c.getMonth(n.selectedDate);t!==a.value||g!==s.value?r.value=null:r.value=c.getDate(n.selectedDate)}function h(t){if(t===-1&&k.value||t===1&&E.value)return;(s.value===0&&t===-1||s.value===11&&t===1)&&(a.value+=t);const g=c.set(n.selectedDate,{month:s.value,year:a.value}),F=t===1?c.addMonths(g,1):c.subMonths(g,1);s.value=c.getMonth(F)}function A(t){t===-1&&b.value||t===1&&y.value||(a.value=a.value+t)}function C(){h(1)}function O(){h(-1)}function I(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR")} ${a.value-1}`}function L(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH")} ${u(s.value-1)}`}function R(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_NEXT_YEAR")} ${a.value+1}`}function d(){return`${D.$t("DIALTONE_DATEPICKER_CHANGE_TO")} ${D.$t("DIALTONE_DATEPICKER_NEXT_MONTH")} ${u(s.value+1)}`}return{selectMonth:s,selectYear:a,formattedMonth:u,setDayRef:i,focusMonthYearPicker:_,handleKeyDown:f,changeMonth:h,changeYear:A,goToNextMonth:C,goToPrevMonth:O,isPrevMonthDisabled:k,isNextMonthDisabled:E,isPrevYearDisabled:b,isNextYearDisabled:y,previousYearAriaLabel:I,previousMonthAriaLabel:L,nextYearAriaLabel:R,nextMonthAriaLabel:d}}const B={id:"calendar-heading",class:"d-datepicker__month-year-title"},K={__name:"month-year-picker",props:{selectedDate:{type:Date,required:!0},minDate:{type:Date,default:null},maxDate:{type:Date,default:null},weekStartsOn:{type:Number,default:0,validator:n=>Number.isInteger(n)&&n>=0&&n<=6}},emits:["calendar-days","focus-first-day","focus-last-day","close-datepicker"],setup(n,{expose:o,emit:s}){const a=n,r=s,l=new P.DialtoneLocalization,{selectMonth:m,selectYear:D,formattedMonth:p,setDayRef:k,focusMonthYearPicker:E,handleKeyDown:b,changeMonth:y,changeYear:u,goToNextMonth:i,goToPrevMonth:_,isPrevMonthDisabled:f,isNextMonthDisabled:N,isPrevYearDisabled:h,isNextYearDisabled:A,previousYearAriaLabel:C,previousMonthAriaLabel:O,nextMonthAriaLabel:I,nextYearAriaLabel:L}=V(a,r);return e.onMounted(()=>{E()}),o({focusMonthYearPicker:E,goToNextMonth:i,goToPrevMonth:_}),(R,d)=>(e.openBlock(),e.createBlock(e.unref(M.default),{class:"d-datepicker__month-year",direction:"row",gap:"300"},{default:e.withCtx(()=>[e.createVNode(e.unref(M.default),{as:"nav",class:"d-datepicker__nav",direction:"row",gap:"200"},{default:e.withCtx(()=>[e.createVNode(e.unref(x.default),{"fallback-placements":["top-start","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_PREVIOUS_YEAR"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref($.default),{id:"prevYearButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(C)(),circle:!0,disabled:e.unref(h),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[0]||(d[0]=t=>e.unref(u)(-1)),onKeydown:d[1]||(d[1]=t=>e.unref(b)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(T.DtIconChevronsLeft),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"]),e.createVNode(e.unref(x.default),{"fallback-placements":["top-start","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_PREVIOUS_MONTH"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref($.default),{id:"prevMonthButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(O)(),circle:!0,disabled:e.unref(f),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[2]||(d[2]=t=>e.unref(y)(-1)),onKeydown:d[3]||(d[3]=t=>e.unref(b)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(T.DtIconChevronLeft),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"])]),_:1}),e.createElementVNode("div",B,e.toDisplayString(e.unref(p)(e.unref(m)))+" "+e.toDisplayString(e.unref(D)),1),e.createVNode(e.unref(M.default),{as:"nav",class:"d-datepicker__nav",direction:"row",gap:"200"},{default:e.withCtx(()=>[e.createVNode(e.unref(x.default),{"fallback-placements":["top-end","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_NEXT_MONTH"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref($.default),{id:"nextMonthButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(I)(),circle:!0,disabled:e.unref(N),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[4]||(d[4]=t=>e.unref(y)(1)),onKeydown:d[5]||(d[5]=t=>e.unref(b)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(T.DtIconChevronRight),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"]),e.createVNode(e.unref(x.default),{"fallback-placements":["top-end","auto"],message:e.unref(l).$t("DIALTONE_DATEPICKER_NEXT_YEAR"),placement:"top"},{anchor:e.withCtx(()=>[e.createVNode(e.unref($.default),{id:"nextYearButton",ref:t=>{t&&e.unref(k)(t)},"aria-label":e.unref(L)(),circle:!0,disabled:e.unref(A),class:"d-datepicker__nav-btn",importance:"clear",kind:"muted",size:"xs",type:"button",onClick:d[6]||(d[6]=t=>e.unref(u)(1)),onKeydown:d[7]||(d[7]=t=>e.unref(b)(t))},{default:e.withCtx(()=>[e.createVNode(e.unref(T.DtIconChevronsRight),{size:"200"})]),_:1},8,["aria-label","disabled"])]),_:1},8,["message"])]),_:1})]),_:1}))}};function S(n,o){const s=e.ref(null),a=e.ref(0),r=e.ref([]),l=new P.DialtoneLocalization,m=e.computed(()=>w.getWeekDayNames(n.locale,n.weekStartsOn));e.watch(()=>n.calendarDays,()=>{a.value=0,r.value=[],s.value=null});function D(u){return l.$t("DIALTONE_DATEPICKER_SELECT_DAY")+` ${w.formatDate(u.value,Y.INTL_MONTH_FORMAT,l.currentLocale)}`}function p(u,i){!r.value.some(_=>_.el===u)&&!i.disabled&&r.value.push({el:u,day:i})}function k(u){switch(u.key){case"ArrowUp":u.preventDefault(),a.value-=7;try{v.returnFirstEl(r.value[a.value].el.$el).focus()}catch{const i=w.calculatePrevFocusDate(r.value[a.value+7].day.value);o("go-to-prev-month"),e.nextTick(()=>{v.returnFirstEl(r.value[i-1].el.$el).focus(),a.value+=i-1})}break;case"ArrowDown":u.preventDefault(),a.value+=7;try{v.returnFirstEl(r.value[a.value].el.$el).focus()}catch{const i=w.calculateNextFocusDate(r.value[a.value-7].day.value);o("go-to-next-month"),e.nextTick(()=>{v.returnFirstEl(r.value[i-1].el.$el).focus(),a.value+=i-1})}break;case"ArrowLeft":u.preventDefault(),a.value>0?(a.value-=1,v.returnFirstEl(r.value[a.value].el.$el).focus()):(o("go-to-prev-month"),b());break;case"ArrowRight":u.preventDefault(),a.value<r.value.length-1?(a.value+=1,v.returnFirstEl(r.value[a.value].el.$el).focus()):(o("go-to-next-month"),E());break;case"Tab":u.preventDefault(),o("focus-month-year-picker");break;case"Escape":o("close-datepicker");break}}function E(){a.value=0,e.nextTick(()=>{v.returnFirstEl(r.value[a.value].el.$el).focus()})}function b(){e.nextTick(()=>{a.value=r.value.length-1,v.returnFirstEl(r.value[a.value].el.$el).focus()})}function y(u){u.disabled||(s.value=u.text,o("select-date",u.value))}return{selectedDay:s,weekDays:m,dayAriaLabel:D,setDayRef:p,handleKeyDown:k,focusFirstDay:E,selectDay:y}}const z={class:"d-datepicker__calendar","aria-labelledby":"calendar-heading"},q=["title","aria-label"],H={__name:"calendar",props:{calendarDays:{type:Array,required:!0},weekStartsOn:{type:Number,default:0,validator:n=>Number.isInteger(n)&&n>=0&&n<=6}},emits:["select-date","focus-month-year-picker","close-datepicker","go-to-next-month","go-to-prev-month"],setup(n,{expose:o,emit:s}){const a=n,r=s,{selectedDay:l,weekDays:m,dayAriaLabel:D,setDayRef:p,handleKeyDown:k,focusFirstDay:E,selectDay:b}=S(a,r);return o({focusFirstDay:E}),(y,u)=>(e.openBlock(),e.createElementBlock("table",z,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),i=>(e.openBlock(),e.createElementBlock("th",{key:i,scope:"col",class:"d-datepicker__cell d-datepicker__cell--header"},[e.createElementVNode("span",{class:"d-datepicker__weekday",title:i,"aria-label":i},e.toDisplayString(i),9,q)]))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.calendarDays,(i,_)=>(e.openBlock(),e.createElementBlock("tr",{key:_},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.days,(f,N)=>(e.openBlock(),e.createElementBlock("td",{key:_+N,class:"d-datepicker__cell",role:"listbox"},[e.createVNode(e.unref($.default),{ref_for:!0,ref:h=>{h&&e.unref(p)(h,f)},class:e.normalizeClass(["d-datepicker__day",{"d-datepicker__day--disabled":f.disabled,"d-datepicker__day--selected":e.unref(l)?f.text===e.unref(l)&&!f.disabled:f.selected}]),circle:!0,size:"sm",importance:"clear",disabled:f.disabled,type:"button","aria-selected":e.unref(l)?f.text===e.unref(l)&&!f.disabled:f.selected,"aria-label":e.unref(D)(f),role:"option",onClick:h=>e.unref(b)(f),onKeydown:u[0]||(u[0]=h=>e.unref(k)(h))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.text),1)]),_:2},1032,["disabled","class","aria-selected","aria-label","onClick"])]))),128))]))),128))])]))}},G={class:"d-datepicker__hd"},U={class:"d-datepicker__bd"},X={__name:"datepicker",props:{selectedDate:{type:Date,default:()=>new Date},minDate:{type:Date,default:null},maxDate:{type:Date,default:null,validator:(n,o)=>n&&o.minDate&&n<o.minDate?(console.warn("[DtDatepicker]: maxDate must be after or equal to minDate."),!1):!0},weekStartsOn:{type:Number,default:0,validator:n=>Number.isInteger(n)&&n>=0&&n<=6}},emits:["selected-date","close-datepicker"],setup(n){const o=e.ref([]);function s(a){o.value=a}return e.onMounted(()=>{const a=e.getCurrentInstance();v.warnIfUnmounted(v.returnFirstEl(a.proxy.$el),"datepicker")}),(a,r)=>(e.openBlock(),e.createBlock(e.unref(M.default),{class:"d-datepicker",gap:"400"},{default:e.withCtx(()=>[e.createElementVNode("div",G,[e.createVNode(K,{ref:"monthYearPicker","selected-date":n.selectedDate,"min-date":n.minDate,"max-date":n.maxDate,"week-starts-on":n.weekStartsOn,onCalendarDays:s,onFocusFirstDay:r[0]||(r[0]=l=>a.$refs.calendar.focusFirstDay()),onFocusLastDay:r[1]||(r[1]=l=>a.$refs.calendar.focusLastDay()),onCloseDatepicker:r[2]||(r[2]=l=>a.$emit("close-datepicker"))},null,8,["selected-date","min-date","max-date","week-starts-on"])]),e.createElementVNode("div",U,[e.createVNode(H,{ref:"calendar","calendar-days":o.value,"week-starts-on":n.weekStartsOn,onSelectDate:r[3]||(r[3]=l=>a.$emit("selected-date",l)),onFocusMonthYearPicker:r[4]||(r[4]=l=>a.$refs.monthYearPicker.focusMonthYearPicker()),onCloseDatepicker:r[5]||(r[5]=l=>a.$emit("close-datepicker")),onGoToNextMonth:r[6]||(r[6]=l=>a.$refs.monthYearPicker.goToNextMonth()),onGoToPrevMonth:r[7]||(r[7]=l=>a.$refs.monthYearPicker.goToPrevMonth())},null,8,["calendar-days","week-starts-on"])])]),_:1}))}};exports.default=X;
|
|
2
2
|
//# sourceMappingURL=datepicker.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.cjs","sources":["../../../components/datepicker/composables/useMonthYearPicker.js","../../../components/datepicker/modules/month-year-picker.vue","../../../components/datepicker/composables/useCalendar.js","../../../components/datepicker/modules/calendar.vue","../../../components/datepicker/datepicker.vue"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, endOfMonth, getDate, getMonth, getYear, set, startOfDay, startOfMonth, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '../utils.js';\nimport { INTL_MONTH_FORMAT } from '../datepicker_constants';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n const i18n = new DialtoneLocalization();\n\n const calendarDays = computed(() => {\n return getCalendarDays(selectMonth.value, selectYear.value, highlightedDay.value, props.minDate, props.maxDate);\n });\n\n const isPrevMonthDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevMonth = subMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return endOfMonth(prevMonth) < startOfDay(props.minDate);\n });\n\n const isNextMonthDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextMonth = addMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return startOfMonth(nextMonth) > startOfDay(props.maxDate);\n });\n\n const isPrevYearDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevYearMonth = new Date(selectYear.value - 1, selectMonth.value, 1);\n return endOfMonth(prevYearMonth) < startOfDay(props.minDate);\n });\n\n const isNextYearDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextYearMonth = new Date(selectYear.value + 1, selectMonth.value, 1);\n return startOfMonth(nextYearMonth) > startOfDay(props.maxDate);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(() => props.minDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n watch(() => props.maxDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n function formattedMonth (month) {\n return formatMonth(month, INTL_MONTH_FORMAT, i18n.currentLocale);\n }\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n returnFirstEl(focusRefs.value[0].$el).focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value--;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value++;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n if (value === -1 && isPrevMonthDisabled.value) return;\n if (value === 1 && isNextMonthDisabled.value) return;\n\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n if (value === -1 && isPrevYearDisabled.value) return;\n if (value === 1 && isNextYearDisabled.value) return;\n\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n function previousYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')} ${selectYear.value - 1}`;\n }\n\n function previousMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')} ${formattedMonth(selectMonth.value - 1)}`;\n }\n\n function nextYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')} ${selectYear.value + 1}`;\n }\n\n function nextMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')} ${formattedMonth(selectMonth.value + 1)}`;\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextYearAriaLabel,\n nextMonthAriaLabel,\n };\n}\n","<template>\n <dt-stack\n class=\"d-datepicker__month-year\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"200\"\n >\n <dt-tooltip\n :fallback-placements=\"['top-start', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevYearButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousYearAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isPrevYearDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :fallback-placements=\"['top-start', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevMonthButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousMonthAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isPrevMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n <div\n id=\"calendar-heading\"\n class=\"d-datepicker__month-year-title\"\n >\n {{ formattedMonth(selectMonth) }}\n\n {{ selectYear }}\n </div>\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"200\"\n >\n <dt-tooltip\n :fallback-placements=\"['top-end', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextMonthButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextMonthAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isNextMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :fallback-placements=\"['top-end', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextYearButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextYearAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isNextYearDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n </dt-stack>\n</template>\n\n<script setup>\nimport {\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DtStack } from '@/components/stack';\nimport { DtButton } from '@/components/button';\nimport { DtTooltip } from '@/components/tooltip';\nimport { onMounted } from 'vue';\nimport { useMonthYearPicker } from '../composables/useMonthYearPicker.js';\nimport { DialtoneLocalization } from '@/localization';\n\nconst props = defineProps({\n selectedDate: {\n type: Date,\n required: true,\n },\n\n minDate: {\n type: Date,\n default: null,\n },\n\n maxDate: {\n type: Date,\n default: null,\n },\n});\n\nconst emits = defineEmits([\n /**\n * Will retrieve the calendar days of the given date\n *\n * @event calendar-days\n * @type {Array}\n */\n 'calendar-days',\n\n /**\n * Will focus first day in calendar\n *\n * @event focus-first-day\n */\n 'focus-first-day',\n\n /**\n * Will focus last day in calendar\n *\n * @event focus-last-day\n */\n 'focus-last-day',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst i18n = new DialtoneLocalization();\n\nconst {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextMonthAriaLabel,\n nextYearAriaLabel,\n} = useMonthYearPicker(props, emits);\n\nonMounted(() => {\n focusMonthYearPicker();\n});\n\ndefineExpose({\n focusMonthYearPicker,\n goToNextMonth,\n goToPrevMonth,\n});\n</script>\n","import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate, formatDate } from '../utils.js';\nimport { INTL_MONTH_FORMAT, WEEK_START } from '../datepicker_constants.js';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n const i18n = new DialtoneLocalization();\n\n const weekDays = computed(() => {\n return getWeekDayNames(props.locale, WEEK_START);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return i18n.$t('DIALTONE_DATEPICKER_SELECT_DAY') + ` ${formatDate(day.value, INTL_MONTH_FORMAT, i18n.currentLocale)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && !day.disabled) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function selectDay (day) {\n if (day.disabled) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\n","<template>\n <table\n class=\"d-datepicker__calendar\"\n aria-labelledby=\"calendar-heading\"\n >\n <thead>\n <tr>\n <th\n v-for=\"day in weekDays\"\n :key=\"day\"\n scope=\"col\"\n class=\"d-datepicker__cell d-datepicker__cell--header\"\n >\n <span\n class=\"d-datepicker__weekday\"\n :title=\"day\"\n :aria-label=\"day\"\n > {{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(week, indexWeek) in calendarDays\"\n :key=\"indexWeek\"\n >\n <td\n v-for=\"(day, indexDays) in week.days\"\n :key=\"indexWeek + indexDays\"\n class=\"d-datepicker__cell\"\n role=\"listbox\"\n >\n <dt-button\n :ref=\"el => { if (el) setDayRef(el, day) }\"\n class=\"d-datepicker__day\"\n :circle=\"true\"\n size=\"sm\"\n importance=\"clear\"\n :disabled=\"day.disabled\"\n :class=\"{\n 'd-datepicker__day--disabled': day.disabled,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && !day.disabled)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && !day.disabled) : day.selected\"\n :aria-label=\"dayAriaLabel(day)\"\n role=\"option\"\n @click=\"selectDay(day)\"\n @keydown=\"handleKeyDown($event)\"\n >\n {{ day.text }}\n </dt-button>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script setup>\nimport { useCalendar } from '../composables/useCalendar.js';\nimport { DtButton } from '@/components/button';\n\nconst props = defineProps({\n calendarDays: {\n type: Array,\n required: true,\n },\n});\n\nconst emits = defineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event select-date\n * @type {Date}\n */\n 'select-date',\n\n /**\n * Will focus the month and year picker\n *\n * @event focus-month-year-picker\n */\n 'focus-month-year-picker',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n\n /**\n * Will go to the next month\n *\n * @event go-to-next-month\n */\n 'go-to-next-month',\n\n /**\n * Will go to the previous month\n *\n * @event go-to-prev-month\n */\n 'go-to-prev-month',\n]);\n\nconst {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n} = useCalendar(props, emits);\n\ndefineExpose({\n focusFirstDay,\n});\n</script>\n","<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :selected-date=\"selectedDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :calendar-days=\"calendarDays\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script setup>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\nimport { returnFirstEl, warnIfUnmounted } from '@/common/utils';\nimport { onMounted, ref, getCurrentInstance } from 'vue';\n\ndefineProps({\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n\n /**\n * Minimum selectable date. Days before this date will be disabled.\n * Must be before or equal to maxDate when both are provided.\n *\n * @type {Date}\n */\n minDate: {\n type: Date,\n default: null,\n },\n\n /**\n * Maximum selectable date. Days after this date will be disabled.\n * Must be after or equal to minDate when both are provided.\n *\n * @type {Date}\n */\n maxDate: {\n type: Date,\n default: null,\n validator: (value, props) => {\n if (value && props.minDate && value < props.minDate) {\n console.warn('[DtDatepicker]: maxDate must be after or equal to minDate.');\n return false;\n }\n return true;\n },\n },\n});\n\ndefineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(returnFirstEl(instance.proxy.$el), 'datepicker');\n});\n</script>\n"],"names":["useMonthYearPicker","props","emits","selectMonth","ref","getMonth","selectYear","getYear","highlightedDay","focusPicker","focusRefs","i18n","DialtoneLocalization","calendarDays","computed","getCalendarDays","isPrevMonthDisabled","prevMonth","subMonths","endOfMonth","startOfDay","isNextMonthDisabled","nextMonth","addMonths","startOfMonth","isPrevYearDisabled","prevYearMonth","isNextYearDisabled","nextYearMonth","watch","highlightDay","formattedMonth","month","formatMonth","INTL_MONTH_FORMAT","setDayRef","el","focusMonthYearPicker","returnFirstEl","handleKeyDown","event","year","getDate","changeMonth","value","initialDate","set","newDate","changeYear","goToNextMonth","goToPrevMonth","previousYearAriaLabel","previousMonthAriaLabel","nextYearAriaLabel","nextMonthAriaLabel","__props","__emit","onMounted","__expose","_createBlock","_unref","DtStack","_createVNode","DtTooltip","DtButton","_cache","$event","DtIconChevronsLeft","DtIconChevronLeft","_createElementVNode","_hoisted_1","_toDisplayString","DtIconChevronRight","DtIconChevronsRight","useCalendar","selectedDay","focusDay","daysRef","weekDays","getWeekDayNames","WEEK_START","dayAriaLabel","day","formatDate","prevFocusDate","calculatePrevFocusDate","nextTick","nextFocusDate","calculateNextFocusDate","focusLastDay","focusFirstDay","selectDay","_openBlock","_createElementBlock","_Fragment","_renderList","_hoisted_2","week","indexWeek","indexDays","_createTextVNode","updateCalendarDays","days","instance","getCurrentInstance","warnIfUnmounted","MonthYearPicker","$refs","$emit","Calendar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datepicker.cjs","sources":["../../../components/datepicker/composables/useMonthYearPicker.js","../../../components/datepicker/modules/month-year-picker.vue","../../../components/datepicker/composables/useCalendar.js","../../../components/datepicker/modules/calendar.vue","../../../components/datepicker/datepicker.vue"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, endOfMonth, getDate, getMonth, getYear, set, startOfDay, startOfMonth, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '../utils.js';\nimport { INTL_MONTH_FORMAT } from '../datepicker_constants';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n const i18n = new DialtoneLocalization();\n\n const calendarDays = computed(() => {\n return getCalendarDays(\n selectMonth.value, selectYear.value, highlightedDay.value,\n props.minDate, props.maxDate, props.weekStartsOn,\n );\n });\n\n const isPrevMonthDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevMonth = subMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return endOfMonth(prevMonth) < startOfDay(props.minDate);\n });\n\n const isNextMonthDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextMonth = addMonths(new Date(selectYear.value, selectMonth.value, 1), 1);\n return startOfMonth(nextMonth) > startOfDay(props.maxDate);\n });\n\n const isPrevYearDisabled = computed(() => {\n if (!props.minDate) return false;\n const prevYearMonth = new Date(selectYear.value - 1, selectMonth.value, 1);\n return endOfMonth(prevYearMonth) < startOfDay(props.minDate);\n });\n\n const isNextYearDisabled = computed(() => {\n if (!props.maxDate) return false;\n const nextYearMonth = new Date(selectYear.value + 1, selectMonth.value, 1);\n return startOfMonth(nextYearMonth) > startOfDay(props.maxDate);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(() => props.minDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n watch(() => props.maxDate, () => {\n emits('calendar-days', calendarDays.value);\n });\n\n function formattedMonth (month) {\n return formatMonth(month, INTL_MONTH_FORMAT, i18n.currentLocale);\n }\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n returnFirstEl(focusRefs.value[0].$el).focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value--;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value++;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n if (value === -1 && isPrevMonthDisabled.value) return;\n if (value === 1 && isNextMonthDisabled.value) return;\n\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n if (value === -1 && isPrevYearDisabled.value) return;\n if (value === 1 && isNextYearDisabled.value) return;\n\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n function previousYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')} ${selectYear.value - 1}`;\n }\n\n function previousMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')} ${formattedMonth(selectMonth.value - 1)}`;\n }\n\n function nextYearAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')} ${selectYear.value + 1}`;\n }\n\n function nextMonthAriaLabel () {\n return `${i18n.$t('DIALTONE_DATEPICKER_CHANGE_TO')} ${i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')} ${formattedMonth(selectMonth.value + 1)}`;\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextYearAriaLabel,\n nextMonthAriaLabel,\n };\n}\n","<template>\n <dt-stack\n class=\"d-datepicker__month-year\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"200\"\n >\n <dt-tooltip\n :fallback-placements=\"['top-start', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_YEAR')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevYearButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousYearAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isPrevYearDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :fallback-placements=\"['top-start', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_PREVIOUS_MONTH')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevMonthButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"previousMonthAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isPrevMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-left\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n <div\n id=\"calendar-heading\"\n class=\"d-datepicker__month-year-title\"\n >\n {{ formattedMonth(selectMonth) }}\n\n {{ selectYear }}\n </div>\n <dt-stack\n as=\"nav\"\n class=\"d-datepicker__nav\"\n direction=\"row\"\n gap=\"200\"\n >\n <dt-tooltip\n :fallback-placements=\"['top-end', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_NEXT_MONTH')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextMonthButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextMonthAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isNextMonthDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevron-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :fallback-placements=\"['top-end', 'auto']\"\n :message=\"i18n.$t('DIALTONE_DATEPICKER_NEXT_YEAR')\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextYearButton\"\n :ref=\"el => { if (el) setDayRef(el) }\"\n :aria-label=\"nextYearAriaLabel()\"\n :circle=\"true\"\n :disabled=\"isNextYearDisabled\"\n class=\"d-datepicker__nav-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n type=\"button\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon-chevrons-right\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n </dt-stack>\n </dt-stack>\n</template>\n\n<script setup>\nimport {\n DtIconChevronLeft,\n DtIconChevronsLeft,\n DtIconChevronRight,\n DtIconChevronsRight,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DtStack } from '@/components/stack';\nimport { DtButton } from '@/components/button';\nimport { DtTooltip } from '@/components/tooltip';\nimport { onMounted } from 'vue';\nimport { useMonthYearPicker } from '../composables/useMonthYearPicker.js';\nimport { DialtoneLocalization } from '@/localization';\n\nconst props = defineProps({\n selectedDate: {\n type: Date,\n required: true,\n },\n\n minDate: {\n type: Date,\n default: null,\n },\n\n maxDate: {\n type: Date,\n default: null,\n },\n\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\nconst emits = defineEmits([\n /**\n * Will retrieve the calendar days of the given date\n *\n * @event calendar-days\n * @type {Array}\n */\n 'calendar-days',\n\n /**\n * Will focus first day in calendar\n *\n * @event focus-first-day\n */\n 'focus-first-day',\n\n /**\n * Will focus last day in calendar\n *\n * @event focus-last-day\n */\n 'focus-last-day',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst i18n = new DialtoneLocalization();\n\nconst {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n isPrevMonthDisabled,\n isNextMonthDisabled,\n isPrevYearDisabled,\n isNextYearDisabled,\n previousYearAriaLabel,\n previousMonthAriaLabel,\n nextMonthAriaLabel,\n nextYearAriaLabel,\n} = useMonthYearPicker(props, emits);\n\nonMounted(() => {\n focusMonthYearPicker();\n});\n\ndefineExpose({\n focusMonthYearPicker,\n goToNextMonth,\n goToPrevMonth,\n});\n</script>\n","import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate, formatDate } from '../utils.js';\nimport { INTL_MONTH_FORMAT } from '../datepicker_constants.js';\nimport { returnFirstEl } from '@/common/utils';\nimport { DialtoneLocalization } from '@/localization';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n const i18n = new DialtoneLocalization();\n\n const weekDays = computed(() => {\n return getWeekDayNames(props.locale, props.weekStartsOn);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return i18n.$t('DIALTONE_DATEPICKER_SELECT_DAY') + ` ${formatDate(day.value, INTL_MONTH_FORMAT, i18n.currentLocale)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && !day.disabled) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function selectDay (day) {\n if (day.disabled) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\n","<template>\n <table\n class=\"d-datepicker__calendar\"\n aria-labelledby=\"calendar-heading\"\n >\n <thead>\n <tr>\n <th\n v-for=\"day in weekDays\"\n :key=\"day\"\n scope=\"col\"\n class=\"d-datepicker__cell d-datepicker__cell--header\"\n >\n <span\n class=\"d-datepicker__weekday\"\n :title=\"day\"\n :aria-label=\"day\"\n > {{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(week, indexWeek) in calendarDays\"\n :key=\"indexWeek\"\n >\n <td\n v-for=\"(day, indexDays) in week.days\"\n :key=\"indexWeek + indexDays\"\n class=\"d-datepicker__cell\"\n role=\"listbox\"\n >\n <dt-button\n :ref=\"el => { if (el) setDayRef(el, day) }\"\n class=\"d-datepicker__day\"\n :circle=\"true\"\n size=\"sm\"\n importance=\"clear\"\n :disabled=\"day.disabled\"\n :class=\"{\n 'd-datepicker__day--disabled': day.disabled,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && !day.disabled)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && !day.disabled) : day.selected\"\n :aria-label=\"dayAriaLabel(day)\"\n role=\"option\"\n @click=\"selectDay(day)\"\n @keydown=\"handleKeyDown($event)\"\n >\n {{ day.text }}\n </dt-button>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script setup>\nimport { useCalendar } from '../composables/useCalendar.js';\nimport { DtButton } from '@/components/button';\n\nconst props = defineProps({\n calendarDays: {\n type: Array,\n required: true,\n },\n\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\nconst emits = defineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event select-date\n * @type {Date}\n */\n 'select-date',\n\n /**\n * Will focus the month and year picker\n *\n * @event focus-month-year-picker\n */\n 'focus-month-year-picker',\n\n /**\n * Will close the datepicker\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n\n /**\n * Will go to the next month\n *\n * @event go-to-next-month\n */\n 'go-to-next-month',\n\n /**\n * Will go to the previous month\n *\n * @event go-to-prev-month\n */\n 'go-to-prev-month',\n]);\n\nconst {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n} = useCalendar(props, emits);\n\ndefineExpose({\n focusFirstDay,\n});\n</script>\n","<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :selected-date=\"selectedDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :week-starts-on=\"weekStartsOn\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :calendar-days=\"calendarDays\"\n :week-starts-on=\"weekStartsOn\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script setup>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\nimport { returnFirstEl, warnIfUnmounted } from '@/common/utils';\nimport { onMounted, ref, getCurrentInstance } from 'vue';\n\ndefineProps({\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n\n /**\n * Minimum selectable date. Days before this date will be disabled.\n * Must be before or equal to maxDate when both are provided.\n *\n * @type {Date}\n */\n minDate: {\n type: Date,\n default: null,\n },\n\n /**\n * Maximum selectable date. Days after this date will be disabled.\n * Must be after or equal to minDate when both are provided.\n *\n * @type {Date}\n */\n maxDate: {\n type: Date,\n default: null,\n validator: (value, props) => {\n if (value && props.minDate && value < props.minDate) {\n console.warn('[DtDatepicker]: maxDate must be after or equal to minDate.');\n return false;\n }\n return true;\n },\n },\n\n /**\n * Day the week starts on. 0 = Sunday, 1 = Monday, ... 6 = Saturday.\n *\n * @values 0, 1, 2, 3, 4, 5, 6\n */\n weekStartsOn: {\n type: Number,\n default: 0,\n validator: (v) => Number.isInteger(v) && v >= 0 && v <= 6,\n },\n});\n\ndefineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(returnFirstEl(instance.proxy.$el), 'datepicker');\n});\n</script>\n"],"names":["useMonthYearPicker","props","emits","selectMonth","ref","getMonth","selectYear","getYear","highlightedDay","focusPicker","focusRefs","i18n","DialtoneLocalization","calendarDays","computed","getCalendarDays","isPrevMonthDisabled","prevMonth","subMonths","endOfMonth","startOfDay","isNextMonthDisabled","nextMonth","addMonths","startOfMonth","isPrevYearDisabled","prevYearMonth","isNextYearDisabled","nextYearMonth","watch","highlightDay","formattedMonth","month","formatMonth","INTL_MONTH_FORMAT","setDayRef","el","focusMonthYearPicker","returnFirstEl","handleKeyDown","event","year","getDate","changeMonth","value","initialDate","set","newDate","changeYear","goToNextMonth","goToPrevMonth","previousYearAriaLabel","previousMonthAriaLabel","nextYearAriaLabel","nextMonthAriaLabel","__props","__emit","onMounted","__expose","_createBlock","_unref","DtStack","_createVNode","DtTooltip","DtButton","_cache","$event","DtIconChevronsLeft","DtIconChevronLeft","_createElementVNode","_hoisted_1","_toDisplayString","DtIconChevronRight","DtIconChevronsRight","useCalendar","selectedDay","focusDay","daysRef","weekDays","getWeekDayNames","dayAriaLabel","day","formatDate","prevFocusDate","calculatePrevFocusDate","nextTick","nextFocusDate","calculateNextFocusDate","focusLastDay","focusFirstDay","selectDay","_openBlock","_createElementBlock","_Fragment","_renderList","_hoisted_2","week","indexWeek","indexDays","_createTextVNode","updateCalendarDays","days","instance","getCurrentInstance","warnIfUnmounted","MonthYearPicker","$refs","$emit","Calendar"],"mappings":"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"}
|