@aotearoan/neon 14.1.2 → 14.1.4

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.
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("vue"),Z=require("../../../common/enums/NeonSize.cjs.js"),ee=require("../../../common/enums/NeonFunctionalColor.cjs.js"),ae=require("../../presentation/dropdown/NeonDropdown.vue.cjs.js"),te=require("../button/NeonButton.vue.cjs.js"),ne=require("../input/NeonInput.vue.cjs.js"),i=require("../../../common/utils/NeonDateUtils.cjs.js"),le=require("../../../common/enums/NeonDropdownPlacement.cjs.js"),oe=t.defineComponent({name:"NeonDatePicker",components:{NeonButton:te,NeonDropdown:ae,NeonInput:ne},props:{modelValue:{type:String,default:null},locale:{type:String,default:null},disabled:{type:Boolean,default:!1},size:{type:String,default:Z.NeonSize.Medium},color:{type:String,default:ee.NeonFunctionalColor.Primary},min:{type:String,default:null},max:{type:String,default:null},placement:{type:String,default:le.NeonDropdownPlacement.BottomLeft},disabledDates:{type:Array,default:()=>[]},placeholder:{type:String,required:!1},openCalendarLabel:{type:String,default:"Open calendar"},doneLabel:{type:String,default:"Done"},clearLabel:{type:String,default:"Clear"},changeMonthLabel:{type:String,default:"Change month"},previousMonthLabel:{type:String,default:"Previous month"},nextMonthLabel:{type:String,default:"Next month"},changeYearLabel:{type:String,default:"Change year"},previousYearLabel:{type:String,default:"Previous year"},nextYearLabel:{type:String,default:"Next year"},previousDecadeLabel:{type:String,default:"Previous decade"},nextDecadeLabel:{type:String,default:"Next decade"}},setup(e,{emit:g}){const y=t.useAttrs(),P=!y.required,q=t.ref(null),v=t.ref(null),c=t.ref(!1),d=t.ref(!1),m=t.ref(!1),T=t.computed(()=>{if(e.modelValue){const a=i.NeonDateUtils.stringToNeonDate(e.modelValue,e.locale,!0);if(a){const{dayFormatted:n,monthShortName:u,yearFormatted:X}=a;return`${n} ${u} ${X}`}}return""}),U=(a,n,u)=>i.NeonDateUtils.dmyToIso(a,n,u),D=new Date,b=e.locale||navigator.language,o=t.ref(e.modelValue?+e.modelValue.substring(5,7):+D.toLocaleString(b,{month:"numeric"})),l=t.ref(e.modelValue?+e.modelValue.substring(0,4):+D.toLocaleString(b,{year:"numeric"})),s=t.ref(Math.floor(l.value/10)*10),r=t.computed(()=>i.NeonDateUtils.toCalendarConfiguration(e.modelValue,o.value,l.value,s.value,e.locale)),V=t.computed(()=>{const{day:a,month:n,year:u}=r.value.today;return i.NeonDateUtils.dmyToIso(a,n,u)}),I=()=>{if(!e.disabled&&(c.value=!0,v.value)){const a=v.value.querySelector(".neon-date-picker__calendar-date--selected");a&&setTimeout(()=>a.focus())}},O=a=>{g("update:modelValue",a)},p=()=>{o.value===1?(o.value=12,l.value=l.value-1):o.value=o.value-1},w=()=>{o.value===12?(o.value=1,l.value=l.value+1):o.value=o.value+1},$=()=>{d.value=!0},N=t.computed(()=>e.min&&e.min>=i.NeonDateUtils.dmyToIso(1,r.value.pageMonth,r.value.pageYear)),h=t.computed(()=>{const{pageYear:a,pageMonth:n,lastDayOfMonth:u}=r.value;return e.max&&e.max<=i.NeonDateUtils.dmyToIso(u,n,a)}),F=t.computed(()=>N.value&&h.value),_=()=>{l.value=l.value-1},z=()=>{l.value=l.value+1},B=()=>{m.value=!0},x=t.computed(()=>e.min&&e.min>=i.NeonDateUtils.dmyToIso(1,1,r.value.pageYear)),S=t.computed(()=>e.max&&e.max<=i.NeonDateUtils.dmyToIso(31,12,r.value.pageYear)),k=t.computed(()=>x.value&&S.value),A=()=>{s.value=s.value-10},R=()=>{s.value=s.value+10},j=t.computed(()=>e.min&&e.min>=i.NeonDateUtils.dmyToIso(1,1,Math.floor(r.value.pageYear/10)*10)),E=t.computed(()=>e.max&&e.max<=i.NeonDateUtils.dmyToIso(31,12,Math.floor(r.value.pageYear/10)*10+9)),f=()=>{d.value=!1,m.value=!1},G=()=>{c.value=!1,f()},H=()=>{g("update:modelValue",null),c.value=!1,f()},J=a=>{o.value=a,d.value=!1},K=a=>{l.value=a,m.value=!1},Q=a=>{var n;return((n=e.disabledDates)==null?void 0:n.indexOf(a))>=0||e.min&&e.min>a||e.max&&e.max<a},W=(a,n)=>{const u=`${a}-${n<10?"0"+n:n}`;return M.value&&M.value>u||C.value&&C.value<u},Y=t.computed(()=>e.min?+e.min.substring(0,4):null),M=t.computed(()=>e.min?e.min.substring(0,7):null),L=t.computed(()=>e.max?+e.max.substring(0,4):null),C=t.computed(()=>e.max?e.max.substring(0,7):null);return{attrs:y,calendar:r,calendarOpen:c,dropdown:q,formattedValue:T,isChangeDateDisabled:F,isChangeYearDisabled:k,isNextDisabled:h,isNextDecadeDisabled:E,isNextYearDisabled:S,isPreviousDisabled:N,isPreviousDecadeDisabled:j,isPreviousYearDisabled:x,monthSelectionOpen:d,optional:P,today:V,calendarRef:v,yearSelectionOpen:m,changeMonth:$,changeYear:B,clear:H,done:G,emitDate:O,isDisabled:Q,isoDate:U,isMonthDisabled:W,isYearDisabled:a=>Y.value&&Y.value>a||L.value&&L.value<a,openCalendar:I,onNext:w,onNextDecade:R,onNextYear:z,onPrevious:p,onPreviousDecade:A,onPreviousYear:_,resetToCalendar:f,selectMonth:J,selectYear:K}}});module.exports=oe;
1
+ "use strict";const t=require("vue"),ee=require("../../../common/enums/NeonSize.cjs.js"),ae=require("../../../common/enums/NeonFunctionalColor.cjs.js"),te=require("../../presentation/dropdown/NeonDropdown.vue.cjs.js"),ne=require("../button/NeonButton.vue.cjs.js"),le=require("../input/NeonInput.vue.cjs.js"),r=require("../../../common/utils/NeonDateUtils.cjs.js"),oe=require("../../../common/enums/NeonDropdownPlacement.cjs.js"),ue=t.defineComponent({name:"NeonDatePicker",components:{NeonButton:ne,NeonDropdown:te,NeonInput:le},props:{modelValue:{type:String,default:null},locale:{type:String,default:null},disabled:{type:Boolean,default:!1},size:{type:String,default:ee.NeonSize.Medium},color:{type:String,default:ae.NeonFunctionalColor.Primary},min:{type:String,default:null},max:{type:String,default:null},placement:{type:String,default:oe.NeonDropdownPlacement.BottomLeft},disabledDates:{type:Array,default:()=>[]},placeholder:{type:String,required:!1},openCalendarLabel:{type:String,default:"Open calendar"},doneLabel:{type:String,default:"Done"},clearLabel:{type:String,default:"Clear"},changeMonthLabel:{type:String,default:"Change month"},previousMonthLabel:{type:String,default:"Previous month"},nextMonthLabel:{type:String,default:"Next month"},changeYearLabel:{type:String,default:"Change year"},previousYearLabel:{type:String,default:"Previous year"},nextYearLabel:{type:String,default:"Next year"},previousDecadeLabel:{type:String,default:"Previous decade"},nextDecadeLabel:{type:String,default:"Next decade"}},setup(e,{emit:y}){const D=t.useAttrs(),q=!D.required,T=t.ref(null),f=t.ref(null),c=t.ref(!1),d=t.ref(!1),m=t.ref(!1),U=t.computed(()=>{if(e.modelValue){const a=r.NeonDateUtils.stringToNeonDate(e.modelValue,e.locale,!0);if(a){const{dayFormatted:n,monthShortName:u,yearFormatted:Z}=a;return`${n} ${u} ${Z}`}}return""}),V=(a,n,u)=>r.NeonDateUtils.dmyToIso(a,n,u),v=new Date,b=e.locale||navigator.language,o=t.ref(v.getMonth()),l=t.ref(v.getFullYear()),i=t.ref(Math.floor(l.value/10)*10),h=()=>{o.value=e.modelValue?+e.modelValue.substring(5,7):+v.toLocaleString(b,{month:"numeric"}),l.value=e.modelValue?+e.modelValue.substring(0,4):+v.toLocaleString(b,{year:"numeric"}),i.value=Math.floor(l.value/10)*10};h();const s=t.computed(()=>r.NeonDateUtils.toCalendarConfiguration(e.modelValue,o.value,l.value,i.value,e.locale)),I=t.computed(()=>{const{day:a,month:n,year:u}=s.value.today;return r.NeonDateUtils.dmyToIso(a,n,u)}),O=()=>{if(!e.disabled&&(h(),c.value=!0,f.value)){const a=f.value.querySelector(".neon-date-picker__calendar-date--selected");a&&setTimeout(()=>a.focus())}},p=a=>{y("update:modelValue",a)},w=()=>{o.value===1?(o.value=12,l.value=l.value-1):o.value=o.value-1},F=()=>{o.value===12?(o.value=1,l.value=l.value+1):o.value=o.value+1},$=()=>{d.value=!0},N=t.computed(()=>e.min&&e.min>=r.NeonDateUtils.dmyToIso(1,s.value.pageMonth,s.value.pageYear)),x=t.computed(()=>{const{pageYear:a,pageMonth:n,lastDayOfMonth:u}=s.value;return e.max&&e.max<=r.NeonDateUtils.dmyToIso(u,n,a)}),_=t.computed(()=>N.value&&x.value),z=()=>{l.value=l.value-1},B=()=>{l.value=l.value+1},k=()=>{m.value=!0},S=t.computed(()=>e.min&&e.min>=r.NeonDateUtils.dmyToIso(1,1,s.value.pageYear)),Y=t.computed(()=>e.max&&e.max<=r.NeonDateUtils.dmyToIso(31,12,s.value.pageYear)),A=t.computed(()=>S.value&&Y.value),R=()=>{i.value=i.value-10},j=()=>{i.value=i.value+10},E=t.computed(()=>e.min&&e.min>=r.NeonDateUtils.dmyToIso(1,1,Math.floor(s.value.pageYear/10)*10)),G=t.computed(()=>e.max&&e.max<=r.NeonDateUtils.dmyToIso(31,12,Math.floor(s.value.pageYear/10)*10+9)),g=()=>{d.value=!1,m.value=!1},H=()=>{c.value=!1,g()},J=()=>{y("update:modelValue",null),c.value=!1,g()},K=a=>{o.value=a,d.value=!1},Q=a=>{l.value=a,m.value=!1},W=a=>{var n;return((n=e.disabledDates)==null?void 0:n.indexOf(a))>=0||e.min&&e.min>a||e.max&&e.max<a},X=(a,n)=>{const u=`${a}-${n<10?"0"+n:n}`;return C.value&&C.value>u||P.value&&P.value<u},M=t.computed(()=>e.min?+e.min.substring(0,4):null),C=t.computed(()=>e.min?e.min.substring(0,7):null),L=t.computed(()=>e.max?+e.max.substring(0,4):null),P=t.computed(()=>e.max?e.max.substring(0,7):null);return{attrs:D,calendar:s,calendarOpen:c,dropdown:T,formattedValue:U,isChangeDateDisabled:_,isChangeYearDisabled:A,isNextDisabled:x,isNextDecadeDisabled:G,isNextYearDisabled:Y,isPreviousDisabled:N,isPreviousDecadeDisabled:E,isPreviousYearDisabled:S,monthSelectionOpen:d,optional:q,today:I,calendarRef:f,yearSelectionOpen:m,changeMonth:$,changeYear:k,clear:J,done:H,emitDate:p,isDisabled:W,isoDate:V,isMonthDisabled:X,isYearDisabled:a=>M.value&&M.value>a||L.value&&L.value<a,openCalendar:O,onNext:F,onNextDecade:j,onNextYear:B,onPrevious:w,onPreviousDecade:R,onPreviousYear:z,resetToCalendar:g,selectMonth:K,selectYear:Q}}});module.exports=ue;
2
2
  //# sourceMappingURL=NeonDatePicker.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonDatePicker.cjs.js","sources":["../../../../src/components/user-input/date-picker/NeonDatePicker.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, ref, useAttrs } from 'vue';\nimport { NeonSize } from '@/common/enums/NeonSize';\nimport { NeonFunctionalColor } from '@/common/enums/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport NeonButton from '@/components/user-input/button/NeonButton.vue';\nimport NeonInput from '@/components/user-input/input/NeonInput.vue';\nimport { NeonDateUtils } from '@/common/utils/NeonDateUtils';\nimport { NeonDropdownPlacement } from '@/common/enums/NeonDropdownPlacement';\n\n/**\n * <strong>NeonDatePicker</strong> is the equivalent of the native\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date\" target=\"_blank\">HTML Date Input</a>.\n * It accepts an <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> date string &\n * allows the user to select a date. Dates are formatted with the provided locale, if none is provided the browser\n * locale is used as a default. On touch devices the native date picker is presented to the user.\n *\n * The input date is displayed to the user WITHOUT any adjustment for their timezone, however 'Today' on the calendar is\n * highlighted for the user's timezone.\n *\n * This component interaction was inspired by this <a href=\"https://icehaunter.github.io/vue3-datepicker\" target=\"_blank\">vue-datepicker</a>\n */\nexport default defineComponent({\n name: 'NeonDatePicker',\n components: {\n NeonButton,\n NeonDropdown,\n NeonInput,\n },\n props: {\n /**\n * The selected date. A date string in the\n * <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n modelValue: { type: String, default: null },\n /**\n * The locale used for display purposes. This defaults to the browser's locale if none is provided.\n */\n locale: { type: String, default: null },\n /**\n * Disable date picker\n */\n disabled: { type: Boolean, default: false },\n /**\n * The size of the date picker, one of NeonSize.Small | NeonSize.Medium | NeonSize.Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * Color of the date picker\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.Primary },\n /**\n * Minimum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n min: { type: String, default: null },\n /**\n * Maximum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n max: { type: String, default: null },\n /**\n * The placement of the dropdown calendar popup.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Disabled dates, a list of <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format\n * dates for which to disable selection.\n */\n disabledDates: { type: Array as () => Array<string>, default: () => [] },\n /**\n * This is the placeholder for the text input when no value is provided.\n */\n placeholder: { type: String, required: false },\n /**\n * This is the label of the input field which opens the calendar. This is technically a button.\n */\n openCalendarLabel: { type: String, default: 'Open calendar' },\n /**\n * This is the label of the 'Done' button in the calendar popup.\n */\n doneLabel: { type: String, default: 'Done' },\n /**\n * This is the label of the 'Clear' button in the calendar popup.\n */\n clearLabel: { type: String, default: 'Clear' },\n /**\n * This is the ARIA label of the 'Change month' button in the calendar popup.\n */\n changeMonthLabel: { type: String, default: 'Change month' },\n /**\n * This is the ARIA label of the 'Previous month' button in the calendar popup.\n */\n previousMonthLabel: { type: String, default: 'Previous month' },\n /**\n * This is the ARIA label of the 'Next month' button in the calendar popup.\n */\n nextMonthLabel: { type: String, default: 'Next month' },\n /**\n * This is the ARIA label of the 'Change year' button in the calendar popup.\n */\n changeYearLabel: { type: String, default: 'Change year' },\n /**\n * This is the ARIA label of the 'Previous year' button in the calendar popup.\n */\n previousYearLabel: { type: String, default: 'Previous year' },\n /**\n * This is the ARIA label of the 'Next year' button in the calendar popup.\n */\n nextYearLabel: { type: String, default: 'Next year' },\n /**\n * This is the ARIA label of the 'Previous decade' button in the calendar popup.\n */\n previousDecadeLabel: { type: String, default: 'Previous decade' },\n /**\n * This is the ARIA label of the 'Next decade' button in the calendar popup.\n */\n nextDecadeLabel: { type: String, default: 'Next decade' },\n },\n setup(props, { emit }) {\n const attrs = useAttrs();\n const optional = !attrs.required;\n\n const dropdown = ref<HTMLElement | null>(null);\n const calendarRef = ref<HTMLElement | null>(null);\n const calendarOpen = ref<boolean>(false);\n const monthSelectionOpen = ref<boolean>(false);\n const yearSelectionOpen = ref<boolean>(false);\n\n const formattedValue = computed(() => {\n if (props.modelValue) {\n const formattedDate = NeonDateUtils.stringToNeonDate(props.modelValue, props.locale, true);\n if (formattedDate) {\n const { dayFormatted, monthShortName, yearFormatted } = formattedDate;\n return `${dayFormatted} ${monthShortName} ${yearFormatted}`;\n }\n }\n\n return '';\n });\n\n const isoDate = (day: number, month: number, year: number) => NeonDateUtils.dmyToIso(day, month, year);\n\n const todayDate = new Date();\n const locale = props.locale || navigator.language;\n\n const pageMonth = ref(\n props.modelValue ? +props.modelValue.substring(5, 7) : +todayDate.toLocaleString(locale, { month: 'numeric' }),\n );\n const pageYear = ref(\n props.modelValue ? +props.modelValue.substring(0, 4) : +todayDate.toLocaleString(locale, { year: 'numeric' }),\n );\n const pageDecadeStart = ref(Math.floor(pageYear.value / 10) * 10);\n\n const calendar = computed(() =>\n NeonDateUtils.toCalendarConfiguration(\n props.modelValue,\n pageMonth.value,\n pageYear.value,\n pageDecadeStart.value,\n props.locale,\n ),\n );\n\n const today = computed(() => {\n const { day, month, year } = calendar.value.today;\n return NeonDateUtils.dmyToIso(day, month, year);\n });\n\n const openCalendar = () => {\n if (!props.disabled) {\n calendarOpen.value = true;\n if (calendarRef.value) {\n const selected = calendarRef.value.querySelector('.neon-date-picker__calendar-date--selected') as HTMLElement;\n if (selected) {\n setTimeout(() => selected.focus());\n }\n }\n }\n };\n\n const emitDate = (newDate: string) => {\n emit('update:modelValue', newDate);\n };\n\n const onPrevious = () => {\n if (pageMonth.value === 1) {\n pageMonth.value = 12;\n pageYear.value = pageYear.value - 1;\n } else {\n pageMonth.value = pageMonth.value - 1;\n }\n };\n\n const onNext = () => {\n if (pageMonth.value === 12) {\n pageMonth.value = 1;\n pageYear.value = pageYear.value + 1;\n } else {\n pageMonth.value = pageMonth.value + 1;\n }\n };\n\n const changeMonth = () => {\n monthSelectionOpen.value = true;\n };\n\n const isPreviousDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, calendar.value.pageMonth, calendar.value.pageYear),\n );\n const isNextDisabled = computed(() => {\n const { pageYear, pageMonth, lastDayOfMonth } = calendar.value;\n return props.max && props.max <= NeonDateUtils.dmyToIso(lastDayOfMonth, pageMonth, pageYear);\n });\n const isChangeDateDisabled = computed(() => isPreviousDisabled.value && isNextDisabled.value);\n\n const onPreviousYear = () => {\n pageYear.value = pageYear.value - 1;\n };\n\n const onNextYear = () => {\n pageYear.value = pageYear.value + 1;\n };\n\n const changeYear = () => {\n yearSelectionOpen.value = true;\n };\n\n const isPreviousYearDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, calendar.value.pageYear),\n );\n const isNextYearDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, calendar.value.pageYear),\n );\n const isChangeYearDisabled = computed(() => isPreviousYearDisabled.value && isNextYearDisabled.value);\n\n const onPreviousDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value - 10;\n };\n\n const onNextDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value + 10;\n };\n\n const isPreviousDecadeDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, Math.floor(calendar.value.pageYear / 10) * 10),\n );\n const isNextDecadeDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, Math.floor(calendar.value.pageYear / 10) * 10 + 9),\n );\n\n const resetToCalendar = () => {\n monthSelectionOpen.value = false;\n yearSelectionOpen.value = false;\n };\n\n const done = () => {\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const clear = () => {\n emit('update:modelValue', null);\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const selectMonth = (month: number) => {\n pageMonth.value = month;\n monthSelectionOpen.value = false;\n };\n\n const selectYear = (year: number) => {\n pageYear.value = year;\n yearSelectionOpen.value = false;\n };\n\n const isDisabled = (isoDate: string) => {\n return (\n props.disabledDates?.indexOf(isoDate) >= 0 ||\n (props.min && props.min > isoDate) ||\n (props.max && props.max < isoDate)\n );\n };\n\n const isMonthDisabled = (year: number, month: number) => {\n const dateStr = `${year}-${month < 10 ? '0' + month : month}`;\n return (\n (minYearMonth.value && minYearMonth.value > dateStr) || (maxYearMonth.value && maxYearMonth.value < dateStr)\n );\n };\n\n const minYear = computed<number | null>(() => (props.min ? +props.min.substring(0, 4) : null));\n const minYearMonth = computed<string | null>(() => (props.min ? props.min.substring(0, 7) : null));\n const maxYear = computed<number | null>(() => (props.max ? +props.max.substring(0, 4) : null));\n const maxYearMonth = computed<string | null>(() => (props.max ? props.max.substring(0, 7) : null));\n\n const isYearDisabled = (year: number) => {\n return (minYear.value && minYear.value > year) || (maxYear.value && maxYear.value < year);\n };\n\n return {\n attrs,\n calendar,\n calendarOpen,\n dropdown,\n formattedValue,\n isChangeDateDisabled,\n isChangeYearDisabled,\n isNextDisabled,\n isNextDecadeDisabled,\n isNextYearDisabled,\n isPreviousDisabled,\n isPreviousDecadeDisabled,\n isPreviousYearDisabled,\n monthSelectionOpen,\n optional,\n today,\n calendarRef,\n yearSelectionOpen,\n changeMonth,\n changeYear,\n clear,\n done,\n emitDate,\n isDisabled,\n isoDate,\n isMonthDisabled,\n isYearDisabled,\n openCalendar,\n onNext,\n onNextDecade,\n onNextYear,\n onPrevious,\n onPreviousDecade,\n onPreviousYear,\n resetToCalendar,\n selectMonth,\n selectYear,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonButton","NeonDropdown","NeonInput","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","optional","dropdown","ref","calendarRef","calendarOpen","monthSelectionOpen","yearSelectionOpen","formattedValue","computed","formattedDate","NeonDateUtils","dayFormatted","monthShortName","yearFormatted","isoDate","day","month","year","todayDate","locale","pageMonth","pageYear","pageDecadeStart","calendar","today","openCalendar","selected","emitDate","newDate","onPrevious","onNext","changeMonth","isPreviousDisabled","isNextDisabled","lastDayOfMonth","isChangeDateDisabled","onPreviousYear","onNextYear","changeYear","isPreviousYearDisabled","isNextYearDisabled","isChangeYearDisabled","onPreviousDecade","onNextDecade","isPreviousDecadeDisabled","isNextDecadeDisabled","resetToCalendar","done","clear","selectMonth","selectYear","isDisabled","_a","isMonthDisabled","dateStr","minYearMonth","maxYearMonth","minYear","maxYear"],"mappings":"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"}
1
+ {"version":3,"file":"NeonDatePicker.cjs.js","sources":["../../../../src/components/user-input/date-picker/NeonDatePicker.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, ref, useAttrs } from 'vue';\nimport { NeonSize } from '@/common/enums/NeonSize';\nimport { NeonFunctionalColor } from '@/common/enums/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport NeonButton from '@/components/user-input/button/NeonButton.vue';\nimport NeonInput from '@/components/user-input/input/NeonInput.vue';\nimport { NeonDateUtils } from '@/common/utils/NeonDateUtils';\nimport { NeonDropdownPlacement } from '@/common/enums/NeonDropdownPlacement';\n\n/**\n * <strong>NeonDatePicker</strong> is the equivalent of the native\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date\" target=\"_blank\">HTML Date Input</a>.\n * It accepts an <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> date string &\n * allows the user to select a date. Dates are formatted with the provided locale, if none is provided the browser\n * locale is used as a default. On touch devices the native date picker is presented to the user.\n *\n * The input date is displayed to the user WITHOUT any adjustment for their timezone, however 'Today' on the calendar is\n * highlighted for the user's timezone.\n *\n * This component interaction was inspired by this <a href=\"https://icehaunter.github.io/vue3-datepicker\" target=\"_blank\">vue-datepicker</a>\n */\nexport default defineComponent({\n name: 'NeonDatePicker',\n components: {\n NeonButton,\n NeonDropdown,\n NeonInput,\n },\n props: {\n /**\n * The selected date. A date string in the\n * <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n modelValue: { type: String, default: null },\n /**\n * The locale used for display purposes. This defaults to the browser's locale if none is provided.\n */\n locale: { type: String, default: null },\n /**\n * Disable date picker\n */\n disabled: { type: Boolean, default: false },\n /**\n * The size of the date picker, one of NeonSize.Small | NeonSize.Medium | NeonSize.Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * Color of the date picker\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.Primary },\n /**\n * Minimum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n min: { type: String, default: null },\n /**\n * Maximum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n max: { type: String, default: null },\n /**\n * The placement of the dropdown calendar popup.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Disabled dates, a list of <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format\n * dates for which to disable selection.\n */\n disabledDates: { type: Array as () => Array<string>, default: () => [] },\n /**\n * This is the placeholder for the text input when no value is provided.\n */\n placeholder: { type: String, required: false },\n /**\n * This is the label of the input field which opens the calendar. This is technically a button.\n */\n openCalendarLabel: { type: String, default: 'Open calendar' },\n /**\n * This is the label of the 'Done' button in the calendar popup.\n */\n doneLabel: { type: String, default: 'Done' },\n /**\n * This is the label of the 'Clear' button in the calendar popup.\n */\n clearLabel: { type: String, default: 'Clear' },\n /**\n * This is the ARIA label of the 'Change month' button in the calendar popup.\n */\n changeMonthLabel: { type: String, default: 'Change month' },\n /**\n * This is the ARIA label of the 'Previous month' button in the calendar popup.\n */\n previousMonthLabel: { type: String, default: 'Previous month' },\n /**\n * This is the ARIA label of the 'Next month' button in the calendar popup.\n */\n nextMonthLabel: { type: String, default: 'Next month' },\n /**\n * This is the ARIA label of the 'Change year' button in the calendar popup.\n */\n changeYearLabel: { type: String, default: 'Change year' },\n /**\n * This is the ARIA label of the 'Previous year' button in the calendar popup.\n */\n previousYearLabel: { type: String, default: 'Previous year' },\n /**\n * This is the ARIA label of the 'Next year' button in the calendar popup.\n */\n nextYearLabel: { type: String, default: 'Next year' },\n /**\n * This is the ARIA label of the 'Previous decade' button in the calendar popup.\n */\n previousDecadeLabel: { type: String, default: 'Previous decade' },\n /**\n * This is the ARIA label of the 'Next decade' button in the calendar popup.\n */\n nextDecadeLabel: { type: String, default: 'Next decade' },\n },\n setup(props, { emit }) {\n const attrs = useAttrs();\n const optional = !attrs.required;\n\n const dropdown = ref<HTMLElement | null>(null);\n const calendarRef = ref<HTMLElement | null>(null);\n const calendarOpen = ref<boolean>(false);\n const monthSelectionOpen = ref<boolean>(false);\n const yearSelectionOpen = ref<boolean>(false);\n\n const formattedValue = computed(() => {\n if (props.modelValue) {\n const formattedDate = NeonDateUtils.stringToNeonDate(props.modelValue, props.locale, true);\n if (formattedDate) {\n const { dayFormatted, monthShortName, yearFormatted } = formattedDate;\n return `${dayFormatted} ${monthShortName} ${yearFormatted}`;\n }\n }\n\n return '';\n });\n\n const isoDate = (day: number, month: number, year: number) => NeonDateUtils.dmyToIso(day, month, year);\n\n const todayDate = new Date();\n const locale = props.locale || navigator.language;\n\n const pageMonth = ref<number>(todayDate.getMonth());\n const pageYear = ref<number>(todayDate.getFullYear());\n const pageDecadeStart = ref<number>(Math.floor(pageYear.value / 10) * 10);\n\n const resetCalendarPages = () => {\n pageMonth.value = props.modelValue\n ? +props.modelValue.substring(5, 7)\n : +todayDate.toLocaleString(locale, { month: 'numeric' });\n pageYear.value = props.modelValue\n ? +props.modelValue.substring(0, 4)\n : +todayDate.toLocaleString(locale, { year: 'numeric' });\n pageDecadeStart.value = Math.floor(pageYear.value / 10) * 10;\n };\n\n resetCalendarPages();\n\n const calendar = computed(() =>\n NeonDateUtils.toCalendarConfiguration(\n props.modelValue,\n pageMonth.value,\n pageYear.value,\n pageDecadeStart.value,\n props.locale,\n ),\n );\n\n const today = computed(() => {\n const { day, month, year } = calendar.value.today;\n return NeonDateUtils.dmyToIso(day, month, year);\n });\n\n const openCalendar = () => {\n if (!props.disabled) {\n resetCalendarPages();\n calendarOpen.value = true;\n if (calendarRef.value) {\n const selected = calendarRef.value.querySelector('.neon-date-picker__calendar-date--selected') as HTMLElement;\n if (selected) {\n setTimeout(() => selected.focus());\n }\n }\n }\n };\n\n const emitDate = (newDate: string) => {\n emit('update:modelValue', newDate);\n };\n\n const onPrevious = () => {\n if (pageMonth.value === 1) {\n pageMonth.value = 12;\n pageYear.value = pageYear.value - 1;\n } else {\n pageMonth.value = pageMonth.value - 1;\n }\n };\n\n const onNext = () => {\n if (pageMonth.value === 12) {\n pageMonth.value = 1;\n pageYear.value = pageYear.value + 1;\n } else {\n pageMonth.value = pageMonth.value + 1;\n }\n };\n\n const changeMonth = () => {\n monthSelectionOpen.value = true;\n };\n\n const isPreviousDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, calendar.value.pageMonth, calendar.value.pageYear),\n );\n const isNextDisabled = computed(() => {\n const { pageYear, pageMonth, lastDayOfMonth } = calendar.value;\n return props.max && props.max <= NeonDateUtils.dmyToIso(lastDayOfMonth, pageMonth, pageYear);\n });\n const isChangeDateDisabled = computed(() => isPreviousDisabled.value && isNextDisabled.value);\n\n const onPreviousYear = () => {\n pageYear.value = pageYear.value - 1;\n };\n\n const onNextYear = () => {\n pageYear.value = pageYear.value + 1;\n };\n\n const changeYear = () => {\n yearSelectionOpen.value = true;\n };\n\n const isPreviousYearDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, calendar.value.pageYear),\n );\n const isNextYearDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, calendar.value.pageYear),\n );\n const isChangeYearDisabled = computed(() => isPreviousYearDisabled.value && isNextYearDisabled.value);\n\n const onPreviousDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value - 10;\n };\n\n const onNextDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value + 10;\n };\n\n const isPreviousDecadeDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, Math.floor(calendar.value.pageYear / 10) * 10),\n );\n const isNextDecadeDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, Math.floor(calendar.value.pageYear / 10) * 10 + 9),\n );\n\n const resetToCalendar = () => {\n monthSelectionOpen.value = false;\n yearSelectionOpen.value = false;\n };\n\n const done = () => {\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const clear = () => {\n emit('update:modelValue', null);\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const selectMonth = (month: number) => {\n pageMonth.value = month;\n monthSelectionOpen.value = false;\n };\n\n const selectYear = (year: number) => {\n pageYear.value = year;\n yearSelectionOpen.value = false;\n };\n\n const isDisabled = (isoDate: string) => {\n return (\n props.disabledDates?.indexOf(isoDate) >= 0 ||\n (props.min && props.min > isoDate) ||\n (props.max && props.max < isoDate)\n );\n };\n\n const isMonthDisabled = (year: number, month: number) => {\n const dateStr = `${year}-${month < 10 ? '0' + month : month}`;\n return (\n (minYearMonth.value && minYearMonth.value > dateStr) || (maxYearMonth.value && maxYearMonth.value < dateStr)\n );\n };\n\n const minYear = computed<number | null>(() => (props.min ? +props.min.substring(0, 4) : null));\n const minYearMonth = computed<string | null>(() => (props.min ? props.min.substring(0, 7) : null));\n const maxYear = computed<number | null>(() => (props.max ? +props.max.substring(0, 4) : null));\n const maxYearMonth = computed<string | null>(() => (props.max ? props.max.substring(0, 7) : null));\n\n const isYearDisabled = (year: number) => {\n return (minYear.value && minYear.value > year) || (maxYear.value && maxYear.value < year);\n };\n\n return {\n attrs,\n calendar,\n calendarOpen,\n dropdown,\n formattedValue,\n isChangeDateDisabled,\n isChangeYearDisabled,\n isNextDisabled,\n isNextDecadeDisabled,\n isNextYearDisabled,\n isPreviousDisabled,\n isPreviousDecadeDisabled,\n isPreviousYearDisabled,\n monthSelectionOpen,\n optional,\n today,\n calendarRef,\n yearSelectionOpen,\n changeMonth,\n changeYear,\n clear,\n done,\n emitDate,\n isDisabled,\n isoDate,\n isMonthDisabled,\n isYearDisabled,\n openCalendar,\n onNext,\n onNextDecade,\n onNextYear,\n onPrevious,\n onPreviousDecade,\n onPreviousYear,\n resetToCalendar,\n selectMonth,\n selectYear,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonButton","NeonDropdown","NeonInput","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","optional","dropdown","ref","calendarRef","calendarOpen","monthSelectionOpen","yearSelectionOpen","formattedValue","computed","formattedDate","NeonDateUtils","dayFormatted","monthShortName","yearFormatted","isoDate","day","month","year","todayDate","locale","pageMonth","pageYear","pageDecadeStart","resetCalendarPages","calendar","today","openCalendar","selected","emitDate","newDate","onPrevious","onNext","changeMonth","isPreviousDisabled","isNextDisabled","lastDayOfMonth","isChangeDateDisabled","onPreviousYear","onNextYear","changeYear","isPreviousYearDisabled","isNextYearDisabled","isChangeYearDisabled","onPreviousDecade","onNextDecade","isPreviousDecadeDisabled","isNextDecadeDisabled","resetToCalendar","done","clear","selectMonth","selectYear","isDisabled","_a","isMonthDisabled","dateStr","minYearMonth","maxYearMonth","minYear","maxYear"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { defineComponent as ee, useAttrs as ae, ref as s, computed as t } from "vue";
2
- import { NeonSize as te } from "../../../common/enums/NeonSize.es.js";
3
- import { NeonFunctionalColor as le } from "../../../common/enums/NeonFunctionalColor.es.js";
4
- import ne from "../../presentation/dropdown/NeonDropdown.vue.es.js";
5
- import oe from "../button/NeonButton.vue.es.js";
6
- import ue from "../input/NeonInput.vue.es.js";
1
+ import { defineComponent as ae, useAttrs as te, ref as s, computed as t } from "vue";
2
+ import { NeonSize as le } from "../../../common/enums/NeonSize.es.js";
3
+ import { NeonFunctionalColor as ne } from "../../../common/enums/NeonFunctionalColor.es.js";
4
+ import oe from "../../presentation/dropdown/NeonDropdown.vue.es.js";
5
+ import ue from "../button/NeonButton.vue.es.js";
6
+ import re from "../input/NeonInput.vue.es.js";
7
7
  import { NeonDateUtils as r } from "../../../common/utils/NeonDateUtils.es.js";
8
- import { NeonDropdownPlacement as re } from "../../../common/enums/NeonDropdownPlacement.es.js";
9
- const be = ee({
8
+ import { NeonDropdownPlacement as ie } from "../../../common/enums/NeonDropdownPlacement.es.js";
9
+ const he = ae({
10
10
  name: "NeonDatePicker",
11
11
  components: {
12
- NeonButton: oe,
13
- NeonDropdown: ne,
14
- NeonInput: ue
12
+ NeonButton: ue,
13
+ NeonDropdown: oe,
14
+ NeonInput: re
15
15
  },
16
16
  props: {
17
17
  /**
@@ -30,11 +30,11 @@ const be = ee({
30
30
  /**
31
31
  * The size of the date picker, one of NeonSize.Small | NeonSize.Medium | NeonSize.Large.
32
32
  */
33
- size: { type: String, default: te.Medium },
33
+ size: { type: String, default: le.Medium },
34
34
  /**
35
35
  * Color of the date picker
36
36
  */
37
- color: { type: String, default: le.Primary },
37
+ color: { type: String, default: ne.Primary },
38
38
  /**
39
39
  * Minimum allowed date value in the <a href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a> format.
40
40
  */
@@ -46,7 +46,7 @@ const be = ee({
46
46
  /**
47
47
  * The placement of the dropdown calendar popup.
48
48
  */
49
- placement: { type: String, default: re.BottomLeft },
49
+ placement: { type: String, default: ie.BottomLeft },
50
50
  /**
51
51
  * Disabled dates, a list of <a href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a> format
52
52
  * dates for which to disable selection.
@@ -101,21 +101,21 @@ const be = ee({
101
101
  */
102
102
  nextDecadeLabel: { type: String, default: "Next decade" }
103
103
  },
104
- setup(e, { emit: y }) {
105
- const b = ae(), T = !b.required, V = s(null), f = s(null), c = s(!1), m = s(!1), v = s(!1), I = t(() => {
104
+ setup(e, { emit: b }) {
105
+ const h = te(), V = !h.required, I = s(null), g = s(null), c = s(!1), m = s(!1), v = s(!1), O = t(() => {
106
106
  if (e.modelValue) {
107
107
  const a = r.stringToNeonDate(e.modelValue, e.locale, !0);
108
108
  if (a) {
109
- const { dayFormatted: l, monthShortName: u, yearFormatted: p } = a;
110
- return `${l} ${u} ${p}`;
109
+ const { dayFormatted: l, monthShortName: u, yearFormatted: ee } = a;
110
+ return `${l} ${u} ${ee}`;
111
111
  }
112
112
  }
113
113
  return "";
114
- }), O = (a, l, u) => r.dmyToIso(a, l, u), D = /* @__PURE__ */ new Date(), h = e.locale || navigator.language, o = s(
115
- e.modelValue ? +e.modelValue.substring(5, 7) : +D.toLocaleString(h, { month: "numeric" })
116
- ), n = s(
117
- e.modelValue ? +e.modelValue.substring(0, 4) : +D.toLocaleString(h, { year: "numeric" })
118
- ), d = s(Math.floor(n.value / 10) * 10), i = t(
114
+ }), $ = (a, l, u) => r.dmyToIso(a, l, u), f = /* @__PURE__ */ new Date(), D = e.locale || navigator.language, o = s(f.getMonth()), n = s(f.getFullYear()), d = s(Math.floor(n.value / 10) * 10), x = () => {
115
+ o.value = e.modelValue ? +e.modelValue.substring(5, 7) : +f.toLocaleString(D, { month: "numeric" }), n.value = e.modelValue ? +e.modelValue.substring(0, 4) : +f.toLocaleString(D, { year: "numeric" }), d.value = Math.floor(n.value / 10) * 10;
116
+ };
117
+ x();
118
+ const i = t(
119
119
  () => r.toCalendarConfiguration(
120
120
  e.modelValue,
121
121
  o.value,
@@ -123,104 +123,104 @@ const be = ee({
123
123
  d.value,
124
124
  e.locale
125
125
  )
126
- ), $ = t(() => {
126
+ ), w = t(() => {
127
127
  const { day: a, month: l, year: u } = i.value.today;
128
128
  return r.dmyToIso(a, l, u);
129
- }), w = () => {
130
- if (!e.disabled && (c.value = !0, f.value)) {
131
- const a = f.value.querySelector(".neon-date-picker__calendar-date--selected");
129
+ }), F = () => {
130
+ if (!e.disabled && (x(), c.value = !0, g.value)) {
131
+ const a = g.value.querySelector(".neon-date-picker__calendar-date--selected");
132
132
  a && setTimeout(() => a.focus());
133
133
  }
134
134
  }, _ = (a) => {
135
- y("update:modelValue", a);
135
+ b("update:modelValue", a);
136
136
  }, q = () => {
137
137
  o.value === 1 ? (o.value = 12, n.value = n.value - 1) : o.value = o.value - 1;
138
138
  }, B = () => {
139
139
  o.value === 12 ? (o.value = 1, n.value = n.value + 1) : o.value = o.value + 1;
140
- }, F = () => {
140
+ }, k = () => {
141
141
  m.value = !0;
142
- }, x = t(
142
+ }, S = t(
143
143
  () => e.min && e.min >= r.dmyToIso(1, i.value.pageMonth, i.value.pageYear)
144
- ), S = t(() => {
144
+ ), Y = t(() => {
145
145
  const { pageYear: a, pageMonth: l, lastDayOfMonth: u } = i.value;
146
146
  return e.max && e.max <= r.dmyToIso(u, l, a);
147
- }), k = t(() => x.value && S.value), z = () => {
147
+ }), z = t(() => S.value && Y.value), A = () => {
148
148
  n.value = n.value - 1;
149
- }, A = () => {
150
- n.value = n.value + 1;
151
149
  }, R = () => {
150
+ n.value = n.value + 1;
151
+ }, U = () => {
152
152
  v.value = !0;
153
- }, Y = t(
153
+ }, M = t(
154
154
  () => e.min && e.min >= r.dmyToIso(1, 1, i.value.pageYear)
155
155
  ), N = t(
156
156
  () => e.max && e.max <= r.dmyToIso(31, 12, i.value.pageYear)
157
- ), U = t(() => Y.value && N.value), j = () => {
157
+ ), j = t(() => M.value && N.value), E = () => {
158
158
  d.value = d.value - 10;
159
- }, E = () => {
159
+ }, G = () => {
160
160
  d.value = d.value + 10;
161
- }, G = t(
161
+ }, H = t(
162
162
  () => e.min && e.min >= r.dmyToIso(1, 1, Math.floor(i.value.pageYear / 10) * 10)
163
- ), H = t(
163
+ ), J = t(
164
164
  () => e.max && e.max <= r.dmyToIso(31, 12, Math.floor(i.value.pageYear / 10) * 10 + 9)
165
- ), g = () => {
165
+ ), y = () => {
166
166
  m.value = !1, v.value = !1;
167
- }, J = () => {
168
- c.value = !1, g();
169
167
  }, K = () => {
170
- y("update:modelValue", null), c.value = !1, g();
171
- }, Q = (a) => {
172
- o.value = a, m.value = !1;
168
+ c.value = !1, y();
169
+ }, Q = () => {
170
+ b("update:modelValue", null), c.value = !1, y();
173
171
  }, W = (a) => {
174
- n.value = a, v.value = !1;
172
+ o.value = a, m.value = !1;
175
173
  }, X = (a) => {
174
+ n.value = a, v.value = !1;
175
+ }, Z = (a) => {
176
176
  var l;
177
177
  return ((l = e.disabledDates) == null ? void 0 : l.indexOf(a)) >= 0 || e.min && e.min > a || e.max && e.max < a;
178
- }, Z = (a, l) => {
178
+ }, p = (a, l) => {
179
179
  const u = `${a}-${l < 10 ? "0" + l : l}`;
180
- return L.value && L.value > u || P.value && P.value < u;
181
- }, M = t(() => e.min ? +e.min.substring(0, 4) : null), L = t(() => e.min ? e.min.substring(0, 7) : null), C = t(() => e.max ? +e.max.substring(0, 4) : null), P = t(() => e.max ? e.max.substring(0, 7) : null);
180
+ return C.value && C.value > u || T.value && T.value < u;
181
+ }, L = t(() => e.min ? +e.min.substring(0, 4) : null), C = t(() => e.min ? e.min.substring(0, 7) : null), P = t(() => e.max ? +e.max.substring(0, 4) : null), T = t(() => e.max ? e.max.substring(0, 7) : null);
182
182
  return {
183
- attrs: b,
183
+ attrs: h,
184
184
  calendar: i,
185
185
  calendarOpen: c,
186
- dropdown: V,
187
- formattedValue: I,
188
- isChangeDateDisabled: k,
189
- isChangeYearDisabled: U,
190
- isNextDisabled: S,
191
- isNextDecadeDisabled: H,
186
+ dropdown: I,
187
+ formattedValue: O,
188
+ isChangeDateDisabled: z,
189
+ isChangeYearDisabled: j,
190
+ isNextDisabled: Y,
191
+ isNextDecadeDisabled: J,
192
192
  isNextYearDisabled: N,
193
- isPreviousDisabled: x,
194
- isPreviousDecadeDisabled: G,
195
- isPreviousYearDisabled: Y,
193
+ isPreviousDisabled: S,
194
+ isPreviousDecadeDisabled: H,
195
+ isPreviousYearDisabled: M,
196
196
  monthSelectionOpen: m,
197
- optional: T,
198
- today: $,
199
- calendarRef: f,
197
+ optional: V,
198
+ today: w,
199
+ calendarRef: g,
200
200
  yearSelectionOpen: v,
201
- changeMonth: F,
202
- changeYear: R,
203
- clear: K,
204
- done: J,
201
+ changeMonth: k,
202
+ changeYear: U,
203
+ clear: Q,
204
+ done: K,
205
205
  emitDate: _,
206
- isDisabled: X,
207
- isoDate: O,
208
- isMonthDisabled: Z,
209
- isYearDisabled: (a) => M.value && M.value > a || C.value && C.value < a,
210
- openCalendar: w,
206
+ isDisabled: Z,
207
+ isoDate: $,
208
+ isMonthDisabled: p,
209
+ isYearDisabled: (a) => L.value && L.value > a || P.value && P.value < a,
210
+ openCalendar: F,
211
211
  onNext: B,
212
- onNextDecade: E,
213
- onNextYear: A,
212
+ onNextDecade: G,
213
+ onNextYear: R,
214
214
  onPrevious: q,
215
- onPreviousDecade: j,
216
- onPreviousYear: z,
217
- resetToCalendar: g,
218
- selectMonth: Q,
219
- selectYear: W
215
+ onPreviousDecade: E,
216
+ onPreviousYear: A,
217
+ resetToCalendar: y,
218
+ selectMonth: W,
219
+ selectYear: X
220
220
  };
221
221
  }
222
222
  });
223
223
  export {
224
- be as default
224
+ he as default
225
225
  };
226
226
  //# sourceMappingURL=NeonDatePicker.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NeonDatePicker.es.js","sources":["../../../../src/components/user-input/date-picker/NeonDatePicker.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, ref, useAttrs } from 'vue';\nimport { NeonSize } from '@/common/enums/NeonSize';\nimport { NeonFunctionalColor } from '@/common/enums/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport NeonButton from '@/components/user-input/button/NeonButton.vue';\nimport NeonInput from '@/components/user-input/input/NeonInput.vue';\nimport { NeonDateUtils } from '@/common/utils/NeonDateUtils';\nimport { NeonDropdownPlacement } from '@/common/enums/NeonDropdownPlacement';\n\n/**\n * <strong>NeonDatePicker</strong> is the equivalent of the native\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date\" target=\"_blank\">HTML Date Input</a>.\n * It accepts an <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> date string &\n * allows the user to select a date. Dates are formatted with the provided locale, if none is provided the browser\n * locale is used as a default. On touch devices the native date picker is presented to the user.\n *\n * The input date is displayed to the user WITHOUT any adjustment for their timezone, however 'Today' on the calendar is\n * highlighted for the user's timezone.\n *\n * This component interaction was inspired by this <a href=\"https://icehaunter.github.io/vue3-datepicker\" target=\"_blank\">vue-datepicker</a>\n */\nexport default defineComponent({\n name: 'NeonDatePicker',\n components: {\n NeonButton,\n NeonDropdown,\n NeonInput,\n },\n props: {\n /**\n * The selected date. A date string in the\n * <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n modelValue: { type: String, default: null },\n /**\n * The locale used for display purposes. This defaults to the browser's locale if none is provided.\n */\n locale: { type: String, default: null },\n /**\n * Disable date picker\n */\n disabled: { type: Boolean, default: false },\n /**\n * The size of the date picker, one of NeonSize.Small | NeonSize.Medium | NeonSize.Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * Color of the date picker\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.Primary },\n /**\n * Minimum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n min: { type: String, default: null },\n /**\n * Maximum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n max: { type: String, default: null },\n /**\n * The placement of the dropdown calendar popup.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Disabled dates, a list of <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format\n * dates for which to disable selection.\n */\n disabledDates: { type: Array as () => Array<string>, default: () => [] },\n /**\n * This is the placeholder for the text input when no value is provided.\n */\n placeholder: { type: String, required: false },\n /**\n * This is the label of the input field which opens the calendar. This is technically a button.\n */\n openCalendarLabel: { type: String, default: 'Open calendar' },\n /**\n * This is the label of the 'Done' button in the calendar popup.\n */\n doneLabel: { type: String, default: 'Done' },\n /**\n * This is the label of the 'Clear' button in the calendar popup.\n */\n clearLabel: { type: String, default: 'Clear' },\n /**\n * This is the ARIA label of the 'Change month' button in the calendar popup.\n */\n changeMonthLabel: { type: String, default: 'Change month' },\n /**\n * This is the ARIA label of the 'Previous month' button in the calendar popup.\n */\n previousMonthLabel: { type: String, default: 'Previous month' },\n /**\n * This is the ARIA label of the 'Next month' button in the calendar popup.\n */\n nextMonthLabel: { type: String, default: 'Next month' },\n /**\n * This is the ARIA label of the 'Change year' button in the calendar popup.\n */\n changeYearLabel: { type: String, default: 'Change year' },\n /**\n * This is the ARIA label of the 'Previous year' button in the calendar popup.\n */\n previousYearLabel: { type: String, default: 'Previous year' },\n /**\n * This is the ARIA label of the 'Next year' button in the calendar popup.\n */\n nextYearLabel: { type: String, default: 'Next year' },\n /**\n * This is the ARIA label of the 'Previous decade' button in the calendar popup.\n */\n previousDecadeLabel: { type: String, default: 'Previous decade' },\n /**\n * This is the ARIA label of the 'Next decade' button in the calendar popup.\n */\n nextDecadeLabel: { type: String, default: 'Next decade' },\n },\n setup(props, { emit }) {\n const attrs = useAttrs();\n const optional = !attrs.required;\n\n const dropdown = ref<HTMLElement | null>(null);\n const calendarRef = ref<HTMLElement | null>(null);\n const calendarOpen = ref<boolean>(false);\n const monthSelectionOpen = ref<boolean>(false);\n const yearSelectionOpen = ref<boolean>(false);\n\n const formattedValue = computed(() => {\n if (props.modelValue) {\n const formattedDate = NeonDateUtils.stringToNeonDate(props.modelValue, props.locale, true);\n if (formattedDate) {\n const { dayFormatted, monthShortName, yearFormatted } = formattedDate;\n return `${dayFormatted} ${monthShortName} ${yearFormatted}`;\n }\n }\n\n return '';\n });\n\n const isoDate = (day: number, month: number, year: number) => NeonDateUtils.dmyToIso(day, month, year);\n\n const todayDate = new Date();\n const locale = props.locale || navigator.language;\n\n const pageMonth = ref(\n props.modelValue ? +props.modelValue.substring(5, 7) : +todayDate.toLocaleString(locale, { month: 'numeric' }),\n );\n const pageYear = ref(\n props.modelValue ? +props.modelValue.substring(0, 4) : +todayDate.toLocaleString(locale, { year: 'numeric' }),\n );\n const pageDecadeStart = ref(Math.floor(pageYear.value / 10) * 10);\n\n const calendar = computed(() =>\n NeonDateUtils.toCalendarConfiguration(\n props.modelValue,\n pageMonth.value,\n pageYear.value,\n pageDecadeStart.value,\n props.locale,\n ),\n );\n\n const today = computed(() => {\n const { day, month, year } = calendar.value.today;\n return NeonDateUtils.dmyToIso(day, month, year);\n });\n\n const openCalendar = () => {\n if (!props.disabled) {\n calendarOpen.value = true;\n if (calendarRef.value) {\n const selected = calendarRef.value.querySelector('.neon-date-picker__calendar-date--selected') as HTMLElement;\n if (selected) {\n setTimeout(() => selected.focus());\n }\n }\n }\n };\n\n const emitDate = (newDate: string) => {\n emit('update:modelValue', newDate);\n };\n\n const onPrevious = () => {\n if (pageMonth.value === 1) {\n pageMonth.value = 12;\n pageYear.value = pageYear.value - 1;\n } else {\n pageMonth.value = pageMonth.value - 1;\n }\n };\n\n const onNext = () => {\n if (pageMonth.value === 12) {\n pageMonth.value = 1;\n pageYear.value = pageYear.value + 1;\n } else {\n pageMonth.value = pageMonth.value + 1;\n }\n };\n\n const changeMonth = () => {\n monthSelectionOpen.value = true;\n };\n\n const isPreviousDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, calendar.value.pageMonth, calendar.value.pageYear),\n );\n const isNextDisabled = computed(() => {\n const { pageYear, pageMonth, lastDayOfMonth } = calendar.value;\n return props.max && props.max <= NeonDateUtils.dmyToIso(lastDayOfMonth, pageMonth, pageYear);\n });\n const isChangeDateDisabled = computed(() => isPreviousDisabled.value && isNextDisabled.value);\n\n const onPreviousYear = () => {\n pageYear.value = pageYear.value - 1;\n };\n\n const onNextYear = () => {\n pageYear.value = pageYear.value + 1;\n };\n\n const changeYear = () => {\n yearSelectionOpen.value = true;\n };\n\n const isPreviousYearDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, calendar.value.pageYear),\n );\n const isNextYearDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, calendar.value.pageYear),\n );\n const isChangeYearDisabled = computed(() => isPreviousYearDisabled.value && isNextYearDisabled.value);\n\n const onPreviousDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value - 10;\n };\n\n const onNextDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value + 10;\n };\n\n const isPreviousDecadeDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, Math.floor(calendar.value.pageYear / 10) * 10),\n );\n const isNextDecadeDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, Math.floor(calendar.value.pageYear / 10) * 10 + 9),\n );\n\n const resetToCalendar = () => {\n monthSelectionOpen.value = false;\n yearSelectionOpen.value = false;\n };\n\n const done = () => {\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const clear = () => {\n emit('update:modelValue', null);\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const selectMonth = (month: number) => {\n pageMonth.value = month;\n monthSelectionOpen.value = false;\n };\n\n const selectYear = (year: number) => {\n pageYear.value = year;\n yearSelectionOpen.value = false;\n };\n\n const isDisabled = (isoDate: string) => {\n return (\n props.disabledDates?.indexOf(isoDate) >= 0 ||\n (props.min && props.min > isoDate) ||\n (props.max && props.max < isoDate)\n );\n };\n\n const isMonthDisabled = (year: number, month: number) => {\n const dateStr = `${year}-${month < 10 ? '0' + month : month}`;\n return (\n (minYearMonth.value && minYearMonth.value > dateStr) || (maxYearMonth.value && maxYearMonth.value < dateStr)\n );\n };\n\n const minYear = computed<number | null>(() => (props.min ? +props.min.substring(0, 4) : null));\n const minYearMonth = computed<string | null>(() => (props.min ? props.min.substring(0, 7) : null));\n const maxYear = computed<number | null>(() => (props.max ? +props.max.substring(0, 4) : null));\n const maxYearMonth = computed<string | null>(() => (props.max ? props.max.substring(0, 7) : null));\n\n const isYearDisabled = (year: number) => {\n return (minYear.value && minYear.value > year) || (maxYear.value && maxYear.value < year);\n };\n\n return {\n attrs,\n calendar,\n calendarOpen,\n dropdown,\n formattedValue,\n isChangeDateDisabled,\n isChangeYearDisabled,\n isNextDisabled,\n isNextDecadeDisabled,\n isNextYearDisabled,\n isPreviousDisabled,\n isPreviousDecadeDisabled,\n isPreviousYearDisabled,\n monthSelectionOpen,\n optional,\n today,\n calendarRef,\n yearSelectionOpen,\n changeMonth,\n changeYear,\n clear,\n done,\n emitDate,\n isDisabled,\n isoDate,\n isMonthDisabled,\n isYearDisabled,\n openCalendar,\n onNext,\n onNextDecade,\n onNextYear,\n onPrevious,\n onPreviousDecade,\n onPreviousYear,\n resetToCalendar,\n selectMonth,\n selectYear,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonButton","NeonDropdown","NeonInput","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","optional","dropdown","ref","calendarRef","calendarOpen","monthSelectionOpen","yearSelectionOpen","formattedValue","computed","formattedDate","NeonDateUtils","dayFormatted","monthShortName","yearFormatted","isoDate","day","month","year","todayDate","locale","pageMonth","pageYear","pageDecadeStart","calendar","today","openCalendar","selected","emitDate","newDate","onPrevious","onNext","changeMonth","isPreviousDisabled","isNextDisabled","lastDayOfMonth","isChangeDateDisabled","onPreviousYear","onNextYear","changeYear","isPreviousYearDisabled","isNextYearDisabled","isChangeYearDisabled","onPreviousDecade","onNextDecade","isPreviousDecadeDisabled","isNextDecadeDisabled","resetToCalendar","done","clear","selectMonth","selectYear","isDisabled","_a","isMonthDisabled","dateStr","minYearMonth","maxYearMonth","minYear","maxYear"],"mappings":"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"}
1
+ {"version":3,"file":"NeonDatePicker.es.js","sources":["../../../../src/components/user-input/date-picker/NeonDatePicker.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, ref, useAttrs } from 'vue';\nimport { NeonSize } from '@/common/enums/NeonSize';\nimport { NeonFunctionalColor } from '@/common/enums/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport NeonButton from '@/components/user-input/button/NeonButton.vue';\nimport NeonInput from '@/components/user-input/input/NeonInput.vue';\nimport { NeonDateUtils } from '@/common/utils/NeonDateUtils';\nimport { NeonDropdownPlacement } from '@/common/enums/NeonDropdownPlacement';\n\n/**\n * <strong>NeonDatePicker</strong> is the equivalent of the native\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date\" target=\"_blank\">HTML Date Input</a>.\n * It accepts an <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> date string &\n * allows the user to select a date. Dates are formatted with the provided locale, if none is provided the browser\n * locale is used as a default. On touch devices the native date picker is presented to the user.\n *\n * The input date is displayed to the user WITHOUT any adjustment for their timezone, however 'Today' on the calendar is\n * highlighted for the user's timezone.\n *\n * This component interaction was inspired by this <a href=\"https://icehaunter.github.io/vue3-datepicker\" target=\"_blank\">vue-datepicker</a>\n */\nexport default defineComponent({\n name: 'NeonDatePicker',\n components: {\n NeonButton,\n NeonDropdown,\n NeonInput,\n },\n props: {\n /**\n * The selected date. A date string in the\n * <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n modelValue: { type: String, default: null },\n /**\n * The locale used for display purposes. This defaults to the browser's locale if none is provided.\n */\n locale: { type: String, default: null },\n /**\n * Disable date picker\n */\n disabled: { type: Boolean, default: false },\n /**\n * The size of the date picker, one of NeonSize.Small | NeonSize.Medium | NeonSize.Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * Color of the date picker\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.Primary },\n /**\n * Minimum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n min: { type: String, default: null },\n /**\n * Maximum allowed date value in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.\n */\n max: { type: String, default: null },\n /**\n * The placement of the dropdown calendar popup.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n /**\n * Disabled dates, a list of <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format\n * dates for which to disable selection.\n */\n disabledDates: { type: Array as () => Array<string>, default: () => [] },\n /**\n * This is the placeholder for the text input when no value is provided.\n */\n placeholder: { type: String, required: false },\n /**\n * This is the label of the input field which opens the calendar. This is technically a button.\n */\n openCalendarLabel: { type: String, default: 'Open calendar' },\n /**\n * This is the label of the 'Done' button in the calendar popup.\n */\n doneLabel: { type: String, default: 'Done' },\n /**\n * This is the label of the 'Clear' button in the calendar popup.\n */\n clearLabel: { type: String, default: 'Clear' },\n /**\n * This is the ARIA label of the 'Change month' button in the calendar popup.\n */\n changeMonthLabel: { type: String, default: 'Change month' },\n /**\n * This is the ARIA label of the 'Previous month' button in the calendar popup.\n */\n previousMonthLabel: { type: String, default: 'Previous month' },\n /**\n * This is the ARIA label of the 'Next month' button in the calendar popup.\n */\n nextMonthLabel: { type: String, default: 'Next month' },\n /**\n * This is the ARIA label of the 'Change year' button in the calendar popup.\n */\n changeYearLabel: { type: String, default: 'Change year' },\n /**\n * This is the ARIA label of the 'Previous year' button in the calendar popup.\n */\n previousYearLabel: { type: String, default: 'Previous year' },\n /**\n * This is the ARIA label of the 'Next year' button in the calendar popup.\n */\n nextYearLabel: { type: String, default: 'Next year' },\n /**\n * This is the ARIA label of the 'Previous decade' button in the calendar popup.\n */\n previousDecadeLabel: { type: String, default: 'Previous decade' },\n /**\n * This is the ARIA label of the 'Next decade' button in the calendar popup.\n */\n nextDecadeLabel: { type: String, default: 'Next decade' },\n },\n setup(props, { emit }) {\n const attrs = useAttrs();\n const optional = !attrs.required;\n\n const dropdown = ref<HTMLElement | null>(null);\n const calendarRef = ref<HTMLElement | null>(null);\n const calendarOpen = ref<boolean>(false);\n const monthSelectionOpen = ref<boolean>(false);\n const yearSelectionOpen = ref<boolean>(false);\n\n const formattedValue = computed(() => {\n if (props.modelValue) {\n const formattedDate = NeonDateUtils.stringToNeonDate(props.modelValue, props.locale, true);\n if (formattedDate) {\n const { dayFormatted, monthShortName, yearFormatted } = formattedDate;\n return `${dayFormatted} ${monthShortName} ${yearFormatted}`;\n }\n }\n\n return '';\n });\n\n const isoDate = (day: number, month: number, year: number) => NeonDateUtils.dmyToIso(day, month, year);\n\n const todayDate = new Date();\n const locale = props.locale || navigator.language;\n\n const pageMonth = ref<number>(todayDate.getMonth());\n const pageYear = ref<number>(todayDate.getFullYear());\n const pageDecadeStart = ref<number>(Math.floor(pageYear.value / 10) * 10);\n\n const resetCalendarPages = () => {\n pageMonth.value = props.modelValue\n ? +props.modelValue.substring(5, 7)\n : +todayDate.toLocaleString(locale, { month: 'numeric' });\n pageYear.value = props.modelValue\n ? +props.modelValue.substring(0, 4)\n : +todayDate.toLocaleString(locale, { year: 'numeric' });\n pageDecadeStart.value = Math.floor(pageYear.value / 10) * 10;\n };\n\n resetCalendarPages();\n\n const calendar = computed(() =>\n NeonDateUtils.toCalendarConfiguration(\n props.modelValue,\n pageMonth.value,\n pageYear.value,\n pageDecadeStart.value,\n props.locale,\n ),\n );\n\n const today = computed(() => {\n const { day, month, year } = calendar.value.today;\n return NeonDateUtils.dmyToIso(day, month, year);\n });\n\n const openCalendar = () => {\n if (!props.disabled) {\n resetCalendarPages();\n calendarOpen.value = true;\n if (calendarRef.value) {\n const selected = calendarRef.value.querySelector('.neon-date-picker__calendar-date--selected') as HTMLElement;\n if (selected) {\n setTimeout(() => selected.focus());\n }\n }\n }\n };\n\n const emitDate = (newDate: string) => {\n emit('update:modelValue', newDate);\n };\n\n const onPrevious = () => {\n if (pageMonth.value === 1) {\n pageMonth.value = 12;\n pageYear.value = pageYear.value - 1;\n } else {\n pageMonth.value = pageMonth.value - 1;\n }\n };\n\n const onNext = () => {\n if (pageMonth.value === 12) {\n pageMonth.value = 1;\n pageYear.value = pageYear.value + 1;\n } else {\n pageMonth.value = pageMonth.value + 1;\n }\n };\n\n const changeMonth = () => {\n monthSelectionOpen.value = true;\n };\n\n const isPreviousDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, calendar.value.pageMonth, calendar.value.pageYear),\n );\n const isNextDisabled = computed(() => {\n const { pageYear, pageMonth, lastDayOfMonth } = calendar.value;\n return props.max && props.max <= NeonDateUtils.dmyToIso(lastDayOfMonth, pageMonth, pageYear);\n });\n const isChangeDateDisabled = computed(() => isPreviousDisabled.value && isNextDisabled.value);\n\n const onPreviousYear = () => {\n pageYear.value = pageYear.value - 1;\n };\n\n const onNextYear = () => {\n pageYear.value = pageYear.value + 1;\n };\n\n const changeYear = () => {\n yearSelectionOpen.value = true;\n };\n\n const isPreviousYearDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, calendar.value.pageYear),\n );\n const isNextYearDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, calendar.value.pageYear),\n );\n const isChangeYearDisabled = computed(() => isPreviousYearDisabled.value && isNextYearDisabled.value);\n\n const onPreviousDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value - 10;\n };\n\n const onNextDecade = () => {\n pageDecadeStart.value = pageDecadeStart.value + 10;\n };\n\n const isPreviousDecadeDisabled = computed(\n () => props.min && props.min >= NeonDateUtils.dmyToIso(1, 1, Math.floor(calendar.value.pageYear / 10) * 10),\n );\n const isNextDecadeDisabled = computed(\n () => props.max && props.max <= NeonDateUtils.dmyToIso(31, 12, Math.floor(calendar.value.pageYear / 10) * 10 + 9),\n );\n\n const resetToCalendar = () => {\n monthSelectionOpen.value = false;\n yearSelectionOpen.value = false;\n };\n\n const done = () => {\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const clear = () => {\n emit('update:modelValue', null);\n calendarOpen.value = false;\n resetToCalendar();\n };\n\n const selectMonth = (month: number) => {\n pageMonth.value = month;\n monthSelectionOpen.value = false;\n };\n\n const selectYear = (year: number) => {\n pageYear.value = year;\n yearSelectionOpen.value = false;\n };\n\n const isDisabled = (isoDate: string) => {\n return (\n props.disabledDates?.indexOf(isoDate) >= 0 ||\n (props.min && props.min > isoDate) ||\n (props.max && props.max < isoDate)\n );\n };\n\n const isMonthDisabled = (year: number, month: number) => {\n const dateStr = `${year}-${month < 10 ? '0' + month : month}`;\n return (\n (minYearMonth.value && minYearMonth.value > dateStr) || (maxYearMonth.value && maxYearMonth.value < dateStr)\n );\n };\n\n const minYear = computed<number | null>(() => (props.min ? +props.min.substring(0, 4) : null));\n const minYearMonth = computed<string | null>(() => (props.min ? props.min.substring(0, 7) : null));\n const maxYear = computed<number | null>(() => (props.max ? +props.max.substring(0, 4) : null));\n const maxYearMonth = computed<string | null>(() => (props.max ? props.max.substring(0, 7) : null));\n\n const isYearDisabled = (year: number) => {\n return (minYear.value && minYear.value > year) || (maxYear.value && maxYear.value < year);\n };\n\n return {\n attrs,\n calendar,\n calendarOpen,\n dropdown,\n formattedValue,\n isChangeDateDisabled,\n isChangeYearDisabled,\n isNextDisabled,\n isNextDecadeDisabled,\n isNextYearDisabled,\n isPreviousDisabled,\n isPreviousDecadeDisabled,\n isPreviousYearDisabled,\n monthSelectionOpen,\n optional,\n today,\n calendarRef,\n yearSelectionOpen,\n changeMonth,\n changeYear,\n clear,\n done,\n emitDate,\n isDisabled,\n isoDate,\n isMonthDisabled,\n isYearDisabled,\n openCalendar,\n onNext,\n onNextDecade,\n onNextYear,\n onPrevious,\n onPreviousDecade,\n onPreviousYear,\n resetToCalendar,\n selectMonth,\n selectYear,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonButton","NeonDropdown","NeonInput","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","optional","dropdown","ref","calendarRef","calendarOpen","monthSelectionOpen","yearSelectionOpen","formattedValue","computed","formattedDate","NeonDateUtils","dayFormatted","monthShortName","yearFormatted","isoDate","day","month","year","todayDate","locale","pageMonth","pageYear","pageDecadeStart","resetCalendarPages","calendar","today","openCalendar","selected","emitDate","newDate","onPrevious","onNext","changeMonth","isPreviousDisabled","isNextDisabled","lastDayOfMonth","isChangeDateDisabled","onPreviousYear","onNextYear","changeYear","isPreviousYearDisabled","isNextYearDisabled","isChangeYearDisabled","onPreviousDecade","onNextDecade","isPreviousDecadeDisabled","isNextDecadeDisabled","resetToCalendar","done","clear","selectMonth","selectYear","isDisabled","_a","isMonthDisabled","dateStr","minYearMonth","maxYearMonth","minYear","maxYear"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aotearoan/neon",
3
3
  "description": "Neon is a lightweight design library of Vue 3 components with minimal dependencies.",
4
- "version": "14.1.2",
4
+ "version": "14.1.4",
5
5
  "main": "./dist/neon.cjs.js",
6
6
  "module": "./dist/neon.es.js",
7
7
  "types": "./dist/src/neon.d.ts",
@@ -178,6 +178,7 @@
178
178
  margin-left: 0;
179
179
  margin-right: 0;
180
180
  cursor: pointer;
181
+ font-family: var(--neon-body-font-family);
181
182
 
182
183
  &--s {
183
184
  @include button-small;