@dialpad/dialtone-vue 3.204.0 → 3.205.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.
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.js","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.js","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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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("date-fns"),h=require("./datepicker-constants.cjs"),g=t=>t?new Date(t):new Date,m=(t,e,n,c=null,s=null)=>{const o=g(JSON.parse(JSON.stringify(t))),D=c?a.startOfDay(c):null,l=s?a.startOfDay(s):null,i=[];for(let d=0;d<7;d++){const r=a.addDays(o,d),u=a.getMonth(r)!==e,f=u||D&&a.startOfDay(r)<D||l&&a.startOfDay(r)>l;i.push({text:r.getDate(),value:r,currentMonth:!u,disabled:!!f,isFirstDayOfMonth:r.getDate()===1&&!u,selected:n?r.getDate()===n&&!f:!1})}return i},M=(t,e)=>!t||!e?!1:a.isEqual(t,e),w=(t,e,n,c=null,s=null)=>{const o=[],D=g(new Date(e,t)),l=g(new Date(e,t+1,0)),i=h.WEEK_START,d=a.startOfWeek(D,{weekStartsOn:i}),r=u=>{const f=m(u,t,n,c,s);if(o.push({days:f}),!o[o.length-1].days.some(y=>M(y.value,l))){const y=a.addDays(u,7);r(y)}};return r(d),o},O=(t,e)=>{const n=[1,2,3,4,5,6,7].map(o=>new Intl.DateTimeFormat(t,{weekday:"short",timeZone:"UTC"}).format(new Date(`2017-01-0${o}T00:00:00+00:00`)).slice(0,2)),c=n.slice(0,e),s=n.slice(e+1,n.length);return[n[e]].concat(...s).concat(...c)},k=(t,e,n)=>new Intl.DateTimeFormat(n,{month:e}).format(new Date(2e3,t,1)),W=(t,e,n)=>new Intl.DateTimeFormat(n,{dateStyle:e}).format(new Date(t)),x=t=>{const e=new Date(t),n=a.getDay(e),c=a.addMonths(e,1),s=a.startOfMonth(c),o=a.getDay(s),D=(n-o+7)%7,l=a.addDays(s,D);return a.getDate(l)},F=t=>{const e=new Date(t),n=a.getDay(e);let s=a.endOfMonth(a.subMonths(e,1));for(;a.getDay(s)!==n;)s=a.addDays(s,-1);return a.getDate(s)};exports.calculateNextFocusDate=x;exports.calculatePrevFocusDate=F;exports.formatDate=W;exports.formatMonth=k;exports.getCalendarDays=w;exports.getWeekDayNames=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("date-fns"),m=require("./datepicker-constants.cjs"),g=t=>t?new Date(t):new Date,M=(t,e,n,o=null,s=null)=>{const D=g(JSON.parse(JSON.stringify(t))),r=o?a.startOfDay(o):null,l=s?a.startOfDay(s):null,f=[];for(let d=0;d<7;d++){const c=a.addDays(D,d),u=a.getMonth(c)!==e,i=u||r&&a.startOfDay(c)<r||l&&a.startOfDay(c)>l;f.push({text:c.getDate(),value:c,currentMonth:!u,disabled:!!i,isFirstDayOfMonth:c.getDate()===1&&!u,selected:n?c.getDate()===n&&!i:!1})}return f},w=(t,e)=>!t||!e?!1:a.isEqual(t,e),O=(t,e,n,o=null,s=null,D=m.WEEK_START)=>{const r=[],l=g(new Date(e,t)),f=g(new Date(e,t+1,0)),d=D,c=a.startOfWeek(l,{weekStartsOn:d}),u=i=>{const h=M(i,t,n,o,s);if(r.push({days:h}),!r[r.length-1].days.some(y=>w(y.value,f))){const y=a.addDays(i,7);u(y)}};return u(c),r},k=(t,e)=>{const n=[1,2,3,4,5,6,7].map(D=>new Intl.DateTimeFormat(t,{weekday:"short",timeZone:"UTC"}).format(new Date(`2017-01-0${D}T00:00:00+00:00`)).slice(0,2)),o=n.slice(0,e),s=n.slice(e+1,n.length);return[n[e]].concat(...s).concat(...o)},W=(t,e,n)=>new Intl.DateTimeFormat(n,{month:e}).format(new Date(2e3,t,1)),x=(t,e,n)=>new Intl.DateTimeFormat(n,{dateStyle:e}).format(new Date(t)),F=t=>{const e=new Date(t),n=a.getDay(e),o=a.addMonths(e,1),s=a.startOfMonth(o),D=a.getDay(s),r=(n-D+7)%7,l=a.addDays(s,r);return a.getDate(l)},S=t=>{const e=new Date(t),n=a.getDay(e);let s=a.endOfMonth(a.subMonths(e,1));for(;a.getDay(s)!==n;)s=a.addDays(s,-1);return a.getDate(s)};exports.calculateNextFocusDate=F;exports.calculatePrevFocusDate=S;exports.formatDate=x;exports.formatMonth=W;exports.getCalendarDays=O;exports.getWeekDayNames=k;
2
2
  //# sourceMappingURL=utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../../components/datepicker/utils.js"],"sourcesContent":["import {\n startOfWeek, startOfDay, addDays, getMonth, isEqual,\n addMonths, startOfMonth, getDay, getDate,\n subMonths, endOfMonth,\n} from 'date-fns';\nimport { WEEK_START } from '@/components/datepicker/datepicker_constants.js';\n\nconst _parsedGetDate = (value) => (value ? new Date(value) : new Date());\n\n/**\n * Get 7 days from the provided start date, month is used to check\n * whether the date is from the specified month or in the offset\n */\nconst getWeekDays = (startDay, month, selectedDay, minDate = null, maxDate = null) => {\n const startDate = _parsedGetDate(JSON.parse(JSON.stringify(startDay)));\n const normalizedMin = minDate ? startOfDay(minDate) : null;\n const normalizedMax = maxDate ? startOfDay(maxDate) : null;\n const dates = [];\n for (let i = 0; i < 7; i++) {\n const next = addDays(startDate, i);\n const isNext = getMonth(next) !== month;\n const disabled = isNext\n || (normalizedMin && startOfDay(next) < normalizedMin)\n || (normalizedMax && startOfDay(next) > normalizedMax);\n dates.push({\n text: next.getDate(),\n value: next,\n currentMonth: !isNext,\n disabled: !!disabled,\n isFirstDayOfMonth: next.getDate() === 1 && !isNext,\n selected: selectedDay ? (next.getDate() === selectedDay && !disabled) : false,\n });\n }\n return dates;\n};\n\nconst isDateEqual = (date, dateToCompare) => {\n if (!date || !dateToCompare) {\n return false;\n }\n return isEqual(date, dateToCompare);\n};\n\n/**\n * Get days for the calendar to be displayed in a table grouped by weeks\n */\nexport const getCalendarDays = (month, year, selectedDay, minDate = null, maxDate = null) => {\n const weeks = [];\n const firstDate = _parsedGetDate(new Date(year, month));\n const lastDate = _parsedGetDate(new Date(year, month + 1, 0));\n\n const weekStartsOn = WEEK_START;\n\n const firstDateInCalendar = startOfWeek(firstDate, { weekStartsOn });\n\n const addDaysToWeek = (date) => {\n const days = getWeekDays(date, month, selectedDay, minDate, maxDate);\n\n weeks.push({ days });\n\n if (\n !weeks[weeks.length - 1].days.some((day) =>\n isDateEqual(day.value, lastDate),\n )\n ) {\n const nextDate = addDays(date, 7);\n addDaysToWeek(nextDate);\n }\n };\n\n addDaysToWeek(firstDateInCalendar);\n\n return weeks;\n};\n\n/**\n * Generate week day names based on locale and in order specified in week start\n */\nexport const getWeekDayNames = (locale, weekStart) => {\n // Get list in order from sun ... sat\n const days = [1, 2, 3, 4, 5, 6, 7].map((day) => {\n return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' })\n .format(new Date(`2017-01-0${day}T00:00:00+00:00`))\n .slice(0, 2);\n });\n\n // Get days that are in order before specified week start\n const beforeWeekStart = days.slice(0, weekStart);\n // Get days that are in order after specified week start\n const afterWeekStart = days.slice(weekStart + 1, days.length);\n\n // return them in correct order\n return [days[weekStart]].concat(...afterWeekStart).concat(...beforeWeekStart);\n};\n\nexport const formatMonth = (month, monthFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { month: monthFormat }).format(new Date(2000, month, 1));\n};\n\nexport const formatDate = (date, dateFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { dateStyle: dateFormat }).format(new Date(date));\n};\n\nexport const calculateNextFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n const nextMonthDate = addMonths(date, 1);\n const nextMonthStart = startOfMonth(nextMonthDate);\n const nextMonthStartWeekday = getDay(nextMonthStart);\n\n const dayDifference = (currentWeekday - nextMonthStartWeekday + 7) % 7;\n\n // Add the difference in days to the first day of the next month\n const focusDate = addDays(nextMonthStart, dayDifference);\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n\nexport const calculatePrevFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n\n // Move to the last day of the previous month\n const lastDayOfPrevMonth = endOfMonth(subMonths(date, 1));\n let focusDate = lastDayOfPrevMonth;\n\n // Adjust to the same weekday in the last week of the previous month\n while (getDay(focusDate) !== currentWeekday) {\n focusDate = addDays(focusDate, -1);\n }\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n"],"names":["_parsedGetDate","value","getWeekDays","startDay","month","selectedDay","minDate","maxDate","startDate","normalizedMin","startOfDay","normalizedMax","dates","i","next","addDays","isNext","getMonth","disabled","isDateEqual","date","dateToCompare","isEqual","getCalendarDays","year","weeks","firstDate","lastDate","weekStartsOn","WEEK_START","firstDateInCalendar","startOfWeek","addDaysToWeek","days","day","nextDate","getWeekDayNames","locale","weekStart","beforeWeekStart","afterWeekStart","formatMonth","monthFormat","formatDate","dateFormat","calculateNextFocusDate","currentDate","currentWeekday","getDay","nextMonthDate","addMonths","nextMonthStart","startOfMonth","nextMonthStartWeekday","dayDifference","focusDate","getDate","calculatePrevFocusDate","endOfMonth","subMonths"],"mappings":"oJAOMA,EAAkBC,GAAWA,EAAQ,IAAI,KAAKA,CAAK,EAAI,IAAI,KAM3DC,EAAc,CAACC,EAAUC,EAAOC,EAAaC,EAAU,KAAMC,EAAU,OAAS,CACpF,MAAMC,EAAYR,EAAe,KAAK,MAAM,KAAK,UAAUG,CAAQ,CAAC,CAAC,EAC/DM,EAAgBH,EAAUI,aAAWJ,CAAO,EAAI,KAChDK,EAAgBJ,EAAUG,aAAWH,CAAO,EAAI,KAChDK,EAAQ,CAAA,EACd,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMC,EAAOC,EAAAA,QAAQP,EAAWK,CAAC,EAC3BG,EAASC,EAAAA,SAASH,CAAI,IAAMV,EAC5Bc,EAAWF,GACXP,GAAiBC,EAAAA,WAAWI,CAAI,EAAIL,GACpCE,GAAiBD,EAAAA,WAAWI,CAAI,EAAIH,EAC1CC,EAAM,KAAK,CACT,KAAME,EAAK,QAAO,EAClB,MAAOA,EACP,aAAc,CAACE,EACf,SAAU,CAAC,CAACE,EACZ,kBAAmBJ,EAAK,YAAc,GAAK,CAACE,EAC5C,SAAUX,EAAeS,EAAK,QAAO,IAAOT,GAAe,CAACa,EAAY,EAC9E,CAAK,CACH,CACA,OAAON,CACT,EAEMO,EAAc,CAACC,EAAMC,IACrB,CAACD,GAAQ,CAACC,EACL,GAEFC,EAAAA,QAAQF,EAAMC,CAAa,EAMvBE,EAAkB,CAACnB,EAAOoB,EAAMnB,EAAaC,EAAU,KAAMC,EAAU,OAAS,CAC3F,MAAMkB,EAAQ,CAAA,EACRC,EAAY1B,EAAe,IAAI,KAAKwB,EAAMpB,CAAK,CAAC,EAChDuB,EAAW3B,EAAe,IAAI,KAAKwB,EAAMpB,EAAQ,EAAG,CAAC,CAAC,EAEtDwB,EAAeC,EAAAA,WAEfC,EAAsBC,EAAAA,YAAYL,EAAW,CAAE,aAAAE,CAAY,CAAE,EAE7DI,EAAiBZ,GAAS,CAC9B,MAAMa,EAAO/B,EAAYkB,EAAMhB,EAAOC,EAAaC,EAASC,CAAO,EAInE,GAFAkB,EAAM,KAAK,CAAE,KAAAQ,EAAM,EAGjB,CAACR,EAAMA,EAAM,OAAS,CAAC,EAAE,KAAK,KAAMS,GAClCf,EAAYe,EAAI,MAAOP,CAAQ,CACvC,EACM,CACA,MAAMQ,EAAWpB,EAAAA,QAAQK,EAAM,CAAC,EAChCY,EAAcG,CAAQ,CACxB,CACF,EAEA,OAAAH,EAAcF,CAAmB,EAE1BL,CACT,EAKaW,EAAkB,CAACC,EAAQC,IAAc,CAEpD,MAAML,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAE,IAAKC,GAC/B,IAAI,KAAK,eAAeG,EAAQ,CAAE,QAAS,QAAS,SAAU,KAAK,CAAE,EACzE,OAAO,IAAI,KAAK,YAAYH,CAAG,iBAAiB,CAAC,EACjD,MAAM,EAAG,CAAC,CACd,EAGKK,EAAkBN,EAAK,MAAM,EAAGK,CAAS,EAEzCE,EAAiBP,EAAK,MAAMK,EAAY,EAAGL,EAAK,MAAM,EAG5D,MAAO,CAACA,EAAKK,CAAS,CAAC,EAAE,OAAO,GAAGE,CAAc,EAAE,OAAO,GAAGD,CAAe,CAC9E,EAEaE,EAAc,CAACrC,EAAOsC,EAAaL,IACvC,IAAI,KAAK,eAAeA,EAAQ,CAAE,MAAOK,CAAW,CAAE,EAAE,OAAO,IAAI,KAAK,IAAMtC,EAAO,CAAC,CAAC,EAGnFuC,EAAa,CAACvB,EAAMwB,EAAYP,IACpC,IAAI,KAAK,eAAeA,EAAQ,CAAE,UAAWO,CAAU,CAAE,EAAE,OAAO,IAAI,KAAKxB,CAAI,CAAC,EAG5EyB,EAA0BC,GAAgB,CACrD,MAAM1B,EAAO,IAAI,KAAK0B,CAAW,EAC3BC,EAAiBC,EAAAA,OAAO5B,CAAI,EAC5B6B,EAAgBC,EAAAA,UAAU9B,EAAM,CAAC,EACjC+B,EAAiBC,EAAAA,aAAaH,CAAa,EAC3CI,EAAwBL,EAAAA,OAAOG,CAAc,EAE7CG,GAAiBP,EAAiBM,EAAwB,GAAK,EAG/DE,EAAYxC,EAAAA,QAAQoC,EAAgBG,CAAa,EAGvD,OAAOE,EAAAA,QAAQD,CAAS,CAC1B,EAEaE,EAA0BX,GAAgB,CACrD,MAAM1B,EAAO,IAAI,KAAK0B,CAAW,EAC3BC,EAAiBC,EAAAA,OAAO5B,CAAI,EAIlC,IAAImC,EADuBG,EAAAA,WAAWC,EAAAA,UAAUvC,EAAM,CAAC,CAAC,EAIxD,KAAO4B,EAAAA,OAAOO,CAAS,IAAMR,GAC3BQ,EAAYxC,EAAAA,QAAQwC,EAAW,EAAE,EAInC,OAAOC,EAAAA,QAAQD,CAAS,CAC1B"}
1
+ {"version":3,"file":"utils.cjs","sources":["../../../components/datepicker/utils.js"],"sourcesContent":["import {\n startOfWeek, startOfDay, addDays, getMonth, isEqual,\n addMonths, startOfMonth, getDay, getDate,\n subMonths, endOfMonth,\n} from 'date-fns';\nimport { WEEK_START } from '@/components/datepicker/datepicker_constants.js';\n\nconst _parsedGetDate = (value) => (value ? new Date(value) : new Date());\n\n/**\n * Get 7 days from the provided start date, month is used to check\n * whether the date is from the specified month or in the offset\n */\nconst getWeekDays = (startDay, month, selectedDay, minDate = null, maxDate = null) => {\n const startDate = _parsedGetDate(JSON.parse(JSON.stringify(startDay)));\n const normalizedMin = minDate ? startOfDay(minDate) : null;\n const normalizedMax = maxDate ? startOfDay(maxDate) : null;\n const dates = [];\n for (let i = 0; i < 7; i++) {\n const next = addDays(startDate, i);\n const isNext = getMonth(next) !== month;\n const disabled = isNext\n || (normalizedMin && startOfDay(next) < normalizedMin)\n || (normalizedMax && startOfDay(next) > normalizedMax);\n dates.push({\n text: next.getDate(),\n value: next,\n currentMonth: !isNext,\n disabled: !!disabled,\n isFirstDayOfMonth: next.getDate() === 1 && !isNext,\n selected: selectedDay ? (next.getDate() === selectedDay && !disabled) : false,\n });\n }\n return dates;\n};\n\nconst isDateEqual = (date, dateToCompare) => {\n if (!date || !dateToCompare) {\n return false;\n }\n return isEqual(date, dateToCompare);\n};\n\n/**\n * Get days for the calendar to be displayed in a table grouped by weeks\n */\nexport const getCalendarDays = (month, year, selectedDay, minDate = null, maxDate = null, weekStart = WEEK_START) => {\n const weeks = [];\n const firstDate = _parsedGetDate(new Date(year, month));\n const lastDate = _parsedGetDate(new Date(year, month + 1, 0));\n\n const weekStartsOn = weekStart;\n\n const firstDateInCalendar = startOfWeek(firstDate, { weekStartsOn });\n\n const addDaysToWeek = (date) => {\n const days = getWeekDays(date, month, selectedDay, minDate, maxDate);\n\n weeks.push({ days });\n\n if (\n !weeks[weeks.length - 1].days.some((day) =>\n isDateEqual(day.value, lastDate),\n )\n ) {\n const nextDate = addDays(date, 7);\n addDaysToWeek(nextDate);\n }\n };\n\n addDaysToWeek(firstDateInCalendar);\n\n return weeks;\n};\n\n/**\n * Generate week day names based on locale and in order specified in week start\n */\nexport const getWeekDayNames = (locale, weekStart) => {\n // Get list in order from sun ... sat\n const days = [1, 2, 3, 4, 5, 6, 7].map((day) => {\n return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' })\n .format(new Date(`2017-01-0${day}T00:00:00+00:00`))\n .slice(0, 2);\n });\n\n // Get days that are in order before specified week start\n const beforeWeekStart = days.slice(0, weekStart);\n // Get days that are in order after specified week start\n const afterWeekStart = days.slice(weekStart + 1, days.length);\n\n // return them in correct order\n return [days[weekStart]].concat(...afterWeekStart).concat(...beforeWeekStart);\n};\n\nexport const formatMonth = (month, monthFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { month: monthFormat }).format(new Date(2000, month, 1));\n};\n\nexport const formatDate = (date, dateFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { dateStyle: dateFormat }).format(new Date(date));\n};\n\nexport const calculateNextFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n const nextMonthDate = addMonths(date, 1);\n const nextMonthStart = startOfMonth(nextMonthDate);\n const nextMonthStartWeekday = getDay(nextMonthStart);\n\n const dayDifference = (currentWeekday - nextMonthStartWeekday + 7) % 7;\n\n // Add the difference in days to the first day of the next month\n const focusDate = addDays(nextMonthStart, dayDifference);\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n\nexport const calculatePrevFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n\n // Move to the last day of the previous month\n const lastDayOfPrevMonth = endOfMonth(subMonths(date, 1));\n let focusDate = lastDayOfPrevMonth;\n\n // Adjust to the same weekday in the last week of the previous month\n while (getDay(focusDate) !== currentWeekday) {\n focusDate = addDays(focusDate, -1);\n }\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n"],"names":["_parsedGetDate","value","getWeekDays","startDay","month","selectedDay","minDate","maxDate","startDate","normalizedMin","startOfDay","normalizedMax","dates","i","next","addDays","isNext","getMonth","disabled","isDateEqual","date","dateToCompare","isEqual","getCalendarDays","year","weekStart","WEEK_START","weeks","firstDate","lastDate","weekStartsOn","firstDateInCalendar","startOfWeek","addDaysToWeek","days","day","nextDate","getWeekDayNames","locale","beforeWeekStart","afterWeekStart","formatMonth","monthFormat","formatDate","dateFormat","calculateNextFocusDate","currentDate","currentWeekday","getDay","nextMonthDate","addMonths","nextMonthStart","startOfMonth","nextMonthStartWeekday","dayDifference","focusDate","getDate","calculatePrevFocusDate","endOfMonth","subMonths"],"mappings":"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"}
@@ -1,49 +1,49 @@
1
- import { getDay as d, addMonths as g, startOfMonth as k, addDays as h, getDate as M, endOfMonth as O, subMonths as W, startOfWeek as x, startOfDay as i, getMonth as S, isEqual as p } from "date-fns";
2
- import { WEEK_START as T } from "./datepicker-constants.js";
3
- const w = (t) => t ? new Date(t) : /* @__PURE__ */ new Date(), F = (t, e, n, r = null, a = null) => {
4
- const s = w(JSON.parse(JSON.stringify(t))), c = r ? i(r) : null, l = a ? i(a) : null, y = [];
5
- for (let u = 0; u < 7; u++) {
6
- const o = h(s, u), D = S(o) !== e, f = D || c && i(o) < c || l && i(o) > l;
7
- y.push({
8
- text: o.getDate(),
9
- value: o,
1
+ import { getDay as h, addMonths as k, startOfMonth as O, addDays as y, getDate as M, endOfMonth as W, subMonths as x, startOfWeek as S, startOfDay as d, getMonth as p, isEqual as T } from "date-fns";
2
+ import { WEEK_START as F } from "./datepicker-constants.js";
3
+ const w = (t) => t ? new Date(t) : /* @__PURE__ */ new Date(), N = (t, e, n, s = null, a = null) => {
4
+ const c = w(JSON.parse(JSON.stringify(t))), o = s ? d(s) : null, l = a ? d(a) : null, f = [];
5
+ for (let i = 0; i < 7; i++) {
6
+ const r = y(c, i), D = p(r) !== e, u = D || o && d(r) < o || l && d(r) > l;
7
+ f.push({
8
+ text: r.getDate(),
9
+ value: r,
10
10
  currentMonth: !D,
11
- disabled: !!f,
12
- isFirstDayOfMonth: o.getDate() === 1 && !D,
13
- selected: n ? o.getDate() === n && !f : !1
11
+ disabled: !!u,
12
+ isFirstDayOfMonth: r.getDate() === 1 && !D,
13
+ selected: n ? r.getDate() === n && !u : !1
14
14
  });
15
15
  }
16
- return y;
17
- }, N = (t, e) => !t || !e ? !1 : p(t, e), E = (t, e, n, r = null, a = null) => {
18
- const s = [], c = w(new Date(e, t)), l = w(new Date(e, t + 1, 0)), u = x(c, { weekStartsOn: T }), o = (D) => {
19
- const f = F(D, t, n, r, a);
20
- if (s.push({ days: f }), !s[s.length - 1].days.some(
21
- (m) => N(m.value, l)
16
+ return f;
17
+ }, b = (t, e) => !t || !e ? !1 : T(t, e), I = (t, e, n, s = null, a = null, c = F) => {
18
+ const o = [], l = w(new Date(e, t)), f = w(new Date(e, t + 1, 0)), r = S(l, { weekStartsOn: c }), D = (u) => {
19
+ const g = N(u, t, n, s, a);
20
+ if (o.push({ days: g }), !o[o.length - 1].days.some(
21
+ (m) => b(m.value, f)
22
22
  )) {
23
- const m = h(D, 7);
24
- o(m);
23
+ const m = y(u, 7);
24
+ D(m);
25
25
  }
26
26
  };
27
- return o(u), s;
28
- }, I = (t, e) => {
29
- const n = [1, 2, 3, 4, 5, 6, 7].map((s) => new Intl.DateTimeFormat(t, { weekday: "short", timeZone: "UTC" }).format(/* @__PURE__ */ new Date(`2017-01-0${s}T00:00:00+00:00`)).slice(0, 2)), r = n.slice(0, e), a = n.slice(e + 1, n.length);
30
- return [n[e]].concat(...a).concat(...r);
31
- }, P = (t, e, n) => new Intl.DateTimeFormat(n, { month: e }).format(new Date(2e3, t, 1)), q = (t, e, n) => new Intl.DateTimeFormat(n, { dateStyle: e }).format(new Date(t)), z = (t) => {
32
- const e = new Date(t), n = d(e), r = g(e, 1), a = k(r), s = d(a), c = (n - s + 7) % 7, l = h(a, c);
27
+ return D(r), o;
28
+ }, P = (t, e) => {
29
+ const n = [1, 2, 3, 4, 5, 6, 7].map((c) => new Intl.DateTimeFormat(t, { weekday: "short", timeZone: "UTC" }).format(/* @__PURE__ */ new Date(`2017-01-0${c}T00:00:00+00:00`)).slice(0, 2)), s = n.slice(0, e), a = n.slice(e + 1, n.length);
30
+ return [n[e]].concat(...a).concat(...s);
31
+ }, q = (t, e, n) => new Intl.DateTimeFormat(n, { month: e }).format(new Date(2e3, t, 1)), z = (t, e, n) => new Intl.DateTimeFormat(n, { dateStyle: e }).format(new Date(t)), C = (t) => {
32
+ const e = new Date(t), n = h(e), s = k(e, 1), a = O(s), c = h(a), o = (n - c + 7) % 7, l = y(a, o);
33
33
  return M(l);
34
- }, C = (t) => {
35
- const e = new Date(t), n = d(e);
36
- let a = O(W(e, 1));
37
- for (; d(a) !== n; )
38
- a = h(a, -1);
34
+ }, J = (t) => {
35
+ const e = new Date(t), n = h(e);
36
+ let a = W(x(e, 1));
37
+ for (; h(a) !== n; )
38
+ a = y(a, -1);
39
39
  return M(a);
40
40
  };
41
41
  export {
42
- z as calculateNextFocusDate,
43
- C as calculatePrevFocusDate,
44
- q as formatDate,
45
- P as formatMonth,
46
- E as getCalendarDays,
47
- I as getWeekDayNames
42
+ C as calculateNextFocusDate,
43
+ J as calculatePrevFocusDate,
44
+ z as formatDate,
45
+ q as formatMonth,
46
+ I as getCalendarDays,
47
+ P as getWeekDayNames
48
48
  };
49
49
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../components/datepicker/utils.js"],"sourcesContent":["import {\n startOfWeek, startOfDay, addDays, getMonth, isEqual,\n addMonths, startOfMonth, getDay, getDate,\n subMonths, endOfMonth,\n} from 'date-fns';\nimport { WEEK_START } from '@/components/datepicker/datepicker_constants.js';\n\nconst _parsedGetDate = (value) => (value ? new Date(value) : new Date());\n\n/**\n * Get 7 days from the provided start date, month is used to check\n * whether the date is from the specified month or in the offset\n */\nconst getWeekDays = (startDay, month, selectedDay, minDate = null, maxDate = null) => {\n const startDate = _parsedGetDate(JSON.parse(JSON.stringify(startDay)));\n const normalizedMin = minDate ? startOfDay(minDate) : null;\n const normalizedMax = maxDate ? startOfDay(maxDate) : null;\n const dates = [];\n for (let i = 0; i < 7; i++) {\n const next = addDays(startDate, i);\n const isNext = getMonth(next) !== month;\n const disabled = isNext\n || (normalizedMin && startOfDay(next) < normalizedMin)\n || (normalizedMax && startOfDay(next) > normalizedMax);\n dates.push({\n text: next.getDate(),\n value: next,\n currentMonth: !isNext,\n disabled: !!disabled,\n isFirstDayOfMonth: next.getDate() === 1 && !isNext,\n selected: selectedDay ? (next.getDate() === selectedDay && !disabled) : false,\n });\n }\n return dates;\n};\n\nconst isDateEqual = (date, dateToCompare) => {\n if (!date || !dateToCompare) {\n return false;\n }\n return isEqual(date, dateToCompare);\n};\n\n/**\n * Get days for the calendar to be displayed in a table grouped by weeks\n */\nexport const getCalendarDays = (month, year, selectedDay, minDate = null, maxDate = null) => {\n const weeks = [];\n const firstDate = _parsedGetDate(new Date(year, month));\n const lastDate = _parsedGetDate(new Date(year, month + 1, 0));\n\n const weekStartsOn = WEEK_START;\n\n const firstDateInCalendar = startOfWeek(firstDate, { weekStartsOn });\n\n const addDaysToWeek = (date) => {\n const days = getWeekDays(date, month, selectedDay, minDate, maxDate);\n\n weeks.push({ days });\n\n if (\n !weeks[weeks.length - 1].days.some((day) =>\n isDateEqual(day.value, lastDate),\n )\n ) {\n const nextDate = addDays(date, 7);\n addDaysToWeek(nextDate);\n }\n };\n\n addDaysToWeek(firstDateInCalendar);\n\n return weeks;\n};\n\n/**\n * Generate week day names based on locale and in order specified in week start\n */\nexport const getWeekDayNames = (locale, weekStart) => {\n // Get list in order from sun ... sat\n const days = [1, 2, 3, 4, 5, 6, 7].map((day) => {\n return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' })\n .format(new Date(`2017-01-0${day}T00:00:00+00:00`))\n .slice(0, 2);\n });\n\n // Get days that are in order before specified week start\n const beforeWeekStart = days.slice(0, weekStart);\n // Get days that are in order after specified week start\n const afterWeekStart = days.slice(weekStart + 1, days.length);\n\n // return them in correct order\n return [days[weekStart]].concat(...afterWeekStart).concat(...beforeWeekStart);\n};\n\nexport const formatMonth = (month, monthFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { month: monthFormat }).format(new Date(2000, month, 1));\n};\n\nexport const formatDate = (date, dateFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { dateStyle: dateFormat }).format(new Date(date));\n};\n\nexport const calculateNextFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n const nextMonthDate = addMonths(date, 1);\n const nextMonthStart = startOfMonth(nextMonthDate);\n const nextMonthStartWeekday = getDay(nextMonthStart);\n\n const dayDifference = (currentWeekday - nextMonthStartWeekday + 7) % 7;\n\n // Add the difference in days to the first day of the next month\n const focusDate = addDays(nextMonthStart, dayDifference);\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n\nexport const calculatePrevFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n\n // Move to the last day of the previous month\n const lastDayOfPrevMonth = endOfMonth(subMonths(date, 1));\n let focusDate = lastDayOfPrevMonth;\n\n // Adjust to the same weekday in the last week of the previous month\n while (getDay(focusDate) !== currentWeekday) {\n focusDate = addDays(focusDate, -1);\n }\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n"],"names":["_parsedGetDate","value","getWeekDays","startDay","month","selectedDay","minDate","maxDate","startDate","normalizedMin","startOfDay","normalizedMax","dates","i","next","addDays","isNext","getMonth","disabled","isDateEqual","date","dateToCompare","isEqual","getCalendarDays","year","weeks","firstDate","lastDate","firstDateInCalendar","startOfWeek","WEEK_START","addDaysToWeek","days","day","nextDate","getWeekDayNames","locale","weekStart","beforeWeekStart","afterWeekStart","formatMonth","monthFormat","formatDate","dateFormat","calculateNextFocusDate","currentDate","currentWeekday","getDay","nextMonthDate","addMonths","nextMonthStart","startOfMonth","nextMonthStartWeekday","dayDifference","focusDate","getDate","calculatePrevFocusDate","endOfMonth","subMonths"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../components/datepicker/utils.js"],"sourcesContent":["import {\n startOfWeek, startOfDay, addDays, getMonth, isEqual,\n addMonths, startOfMonth, getDay, getDate,\n subMonths, endOfMonth,\n} from 'date-fns';\nimport { WEEK_START } from '@/components/datepicker/datepicker_constants.js';\n\nconst _parsedGetDate = (value) => (value ? new Date(value) : new Date());\n\n/**\n * Get 7 days from the provided start date, month is used to check\n * whether the date is from the specified month or in the offset\n */\nconst getWeekDays = (startDay, month, selectedDay, minDate = null, maxDate = null) => {\n const startDate = _parsedGetDate(JSON.parse(JSON.stringify(startDay)));\n const normalizedMin = minDate ? startOfDay(minDate) : null;\n const normalizedMax = maxDate ? startOfDay(maxDate) : null;\n const dates = [];\n for (let i = 0; i < 7; i++) {\n const next = addDays(startDate, i);\n const isNext = getMonth(next) !== month;\n const disabled = isNext\n || (normalizedMin && startOfDay(next) < normalizedMin)\n || (normalizedMax && startOfDay(next) > normalizedMax);\n dates.push({\n text: next.getDate(),\n value: next,\n currentMonth: !isNext,\n disabled: !!disabled,\n isFirstDayOfMonth: next.getDate() === 1 && !isNext,\n selected: selectedDay ? (next.getDate() === selectedDay && !disabled) : false,\n });\n }\n return dates;\n};\n\nconst isDateEqual = (date, dateToCompare) => {\n if (!date || !dateToCompare) {\n return false;\n }\n return isEqual(date, dateToCompare);\n};\n\n/**\n * Get days for the calendar to be displayed in a table grouped by weeks\n */\nexport const getCalendarDays = (month, year, selectedDay, minDate = null, maxDate = null, weekStart = WEEK_START) => {\n const weeks = [];\n const firstDate = _parsedGetDate(new Date(year, month));\n const lastDate = _parsedGetDate(new Date(year, month + 1, 0));\n\n const weekStartsOn = weekStart;\n\n const firstDateInCalendar = startOfWeek(firstDate, { weekStartsOn });\n\n const addDaysToWeek = (date) => {\n const days = getWeekDays(date, month, selectedDay, minDate, maxDate);\n\n weeks.push({ days });\n\n if (\n !weeks[weeks.length - 1].days.some((day) =>\n isDateEqual(day.value, lastDate),\n )\n ) {\n const nextDate = addDays(date, 7);\n addDaysToWeek(nextDate);\n }\n };\n\n addDaysToWeek(firstDateInCalendar);\n\n return weeks;\n};\n\n/**\n * Generate week day names based on locale and in order specified in week start\n */\nexport const getWeekDayNames = (locale, weekStart) => {\n // Get list in order from sun ... sat\n const days = [1, 2, 3, 4, 5, 6, 7].map((day) => {\n return new Intl.DateTimeFormat(locale, { weekday: 'short', timeZone: 'UTC' })\n .format(new Date(`2017-01-0${day}T00:00:00+00:00`))\n .slice(0, 2);\n });\n\n // Get days that are in order before specified week start\n const beforeWeekStart = days.slice(0, weekStart);\n // Get days that are in order after specified week start\n const afterWeekStart = days.slice(weekStart + 1, days.length);\n\n // return them in correct order\n return [days[weekStart]].concat(...afterWeekStart).concat(...beforeWeekStart);\n};\n\nexport const formatMonth = (month, monthFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { month: monthFormat }).format(new Date(2000, month, 1));\n};\n\nexport const formatDate = (date, dateFormat, locale) => {\n return new Intl.DateTimeFormat(locale, { dateStyle: dateFormat }).format(new Date(date));\n};\n\nexport const calculateNextFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n const nextMonthDate = addMonths(date, 1);\n const nextMonthStart = startOfMonth(nextMonthDate);\n const nextMonthStartWeekday = getDay(nextMonthStart);\n\n const dayDifference = (currentWeekday - nextMonthStartWeekday + 7) % 7;\n\n // Add the difference in days to the first day of the next month\n const focusDate = addDays(nextMonthStart, dayDifference);\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n\nexport const calculatePrevFocusDate = (currentDate) => {\n const date = new Date(currentDate);\n const currentWeekday = getDay(date);\n\n // Move to the last day of the previous month\n const lastDayOfPrevMonth = endOfMonth(subMonths(date, 1));\n let focusDate = lastDayOfPrevMonth;\n\n // Adjust to the same weekday in the last week of the previous month\n while (getDay(focusDate) !== currentWeekday) {\n focusDate = addDays(focusDate, -1);\n }\n\n // Returns only the day of the month\n return getDate(focusDate);\n};\n"],"names":["_parsedGetDate","value","getWeekDays","startDay","month","selectedDay","minDate","maxDate","startDate","normalizedMin","startOfDay","normalizedMax","dates","next","addDays","isNext","getMonth","disabled","isDateEqual","date","dateToCompare","isEqual","getCalendarDays","year","weekStart","WEEK_START","weeks","firstDate","lastDate","firstDateInCalendar","startOfWeek","addDaysToWeek","days","day","nextDate","getWeekDayNames","locale","beforeWeekStart","afterWeekStart","formatMonth","monthFormat","formatDate","dateFormat","calculateNextFocusDate","currentDate","currentWeekday","getDay","nextMonthDate","addMonths","nextMonthStart","startOfMonth","nextMonthStartWeekday","dayDifference","focusDate","getDate","calculatePrevFocusDate","endOfMonth","subMonths"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("./popover-constants.cjs"),a=require("../../common/utils/index.cjs"),f=require("../../common/mixins/modal.cjs"),u=require("./tippy-utils.cjs"),m=require("./popover-header-footer.cjs"),v=require("../../shared/sr_only_close_button.cjs"),n=require("vue"),E=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),y=require("../lazy-show/lazy-show.cjs"),g={compatConfig:{MODE:3},name:"DtPopover",components:{SrOnlyCloseButton:v.default,DtLazyShow:y.default,PopoverHeaderFooter:m.default},mixins:[f.default],props:{open:{type:Boolean,default:null},openOnContext:{type:Boolean,default:!1},elementType:{type:String,default:"div"},transition:{type:String,default:"fade"},role:{type:String,default:"dialog",validator:e=>d.POPOVER_ROLES.includes(e)},ariaLabelledby:{type:String,default:null},ariaLabel:{type:String,default:null},padding:{type:String,default:"large",validator:e=>Object.keys(d.POPOVER_PADDING_CLASSES).some(t=>t===e)},contentClass:{type:[String,Array,Object],default:""},contentWidth:{type:String,default:"",validator:e=>d.POPOVER_CONTENT_WIDTHS.includes(e)},contentAppear:{type:Boolean,default:null},contentTabindex:{type:Number||null,default:-1},externalAnchor:{type:String,default:""},id:{type:String,default(){return a.getUniqueString()}},offset:{type:Array,default:()=>[0,4]},hideOnClick:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},fallbackPlacements:{type:Array,default:()=>["auto"]},placement:{type:String,default:"bottom-end"},tether:{type:Boolean,default:!0},sticky:{type:[Boolean,String],default:!1,validator:e=>d.POPOVER_STICKY_VALUES.includes(e)},maxHeight:{type:String,default:""},maxWidth:{type:String,default:""},showCloseButton:{type:Boolean,default:!1},headerClass:{type:[String,Array,Object],default:""},footerClass:{type:[String,Array,Object],default:""},dialogClass:{type:[String,Array,Object],default:""},initialFocusElement:{type:[String,HTMLElement],default:"first",validator:e=>d.POPOVER_INITIAL_FOCUS_STRINGS.includes(e)||e instanceof HTMLElement||e.startsWith("#")},openWithArrowKeys:{type:Boolean,default:!1},appendTo:{type:[HTMLElement,String],default:"body",validator:e=>d.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement}},emits:["keydown","update:open","opened","mouseenter-popover","mouseleave-popover","mouseenter-popover-anchor","mouseleave-popover-anchor"],data(){return{POPOVER_PADDING_CLASSES:d.POPOVER_PADDING_CLASSES,POPOVER_HEADER_FOOTER_PADDING_CLASSES:d.POPOVER_HEADER_FOOTER_PADDING_CLASSES,intersectionObserver:null,mutationObserver:null,isOutsideViewport:!1,isOpen:!1,toAppear:!1,anchorEl:null,popoverContentEl:null,hasSlotContent:a.hasSlotContent}},computed:{popoverListeners(){return{keydown:e=>{this.onKeydown(e)},"after-leave":()=>{this.onLeaveTransitionComplete()},"after-enter":()=>{this.onEnterTransitionComplete()}}},calculatedMaxHeight(){return this.isOutsideViewport&&this.modal?"calc(100vh - var(--dt-space-300))":this.maxHeight},labelledBy(){return this.ariaLabelledby||!this.ariaLabel&&a.getUniqueString("DtPopover__anchor")}},watch:{$props:{immediate:!0,deep:!0,handler(){this.validateProps()}},modal(e){var t;(t=this.tip)==null||t.setProps({zIndex:e?650:this.calculateAnchorZindex()})},offset(e){var t;(t=this.tip)==null||t.setProps({offset:e})},sticky(e){var t;(t=this.tip)==null||t.setProps({sticky:e})},fallbackPlacements(){var e;(e=this.tip)==null||e.setProps({popperOptions:this.popperOptions()})},tether(){var e;(e=this.tip)==null||e.setProps({popperOptions:this.popperOptions()})},placement(e){var t;(t=this.tip)==null||t.setProps({placement:e})},open:{handler:function(e){e!==null&&(this.isOpen=e),e===!0&&(this.toAppear=!0)},immediate:!0},contentAppear:{handler:function(e){e!==null&&(this.toAppear=e)}},isOpen(e,t){var o,i;e?(this.initTippyInstance(),(o=this.tip)==null||o.show()):!e&&t!==e&&(this.removeEventListeners(),(i=this.tip)==null||i.hide())}},mounted(){var e;a.warnIfUnmounted(a.returnFirstEl(this.$el),this.$options.name),this.popoverContentEl=a.returnFirstEl((e=this.$refs.content)==null?void 0:e.$el),this.updateAnchorEl(),this.mutationObserver=new MutationObserver(this.updateAnchorEl),this.mutationObserver.observe(this.$refs.anchor,{childList:!0}),this.intersectionObserver=new IntersectionObserver(this.hasIntersectedViewport),this.intersectionObserver.observe(this.popoverContentEl)},beforeUnmount(){var e,t,o;(e=this.tip)==null||e.destroy(),(t=this.intersectionObserver)==null||t.disconnect(),(o=this.mutationObserver)==null||o.disconnect(),this.removeReferences(),this.removeEventListeners()},methods:{hasIntersectedViewport(e){var i;const t=(i=e==null?void 0:e[0])==null?void 0:i.target;if(!t)return;const o=a.isOutOfViewPort(t);this.isOutsideViewport=o.bottom||o.top},updateAnchorEl(){var o,i;const t=(this.externalAnchor?this.$refs.anchor.getRootNode().querySelector(`#${this.externalAnchor}`):null)??this.$refs.anchor.children[0];if(t!==this.anchorEl){if(this.anchorEl=t,(o=this.tip)==null||o.destroy(),delete this.tip,!this.anchorEl){console.warn("No anchor found for popover");return}this.isOpen&&(this.initTippyInstance(),(i=this.tip)==null||i.show())}},popperOptions(){return u.getPopperOptions({fallbackPlacements:this.fallbackPlacements,tether:this.tether,hasHideModifierEnabled:!0})},validateProps(){this.modal&&this.initialFocusElement==="none"&&console.error('If the popover is modal you must set the initialFocusElement prop. Possible values: "dialog", "first", HTMLElement')},calculateAnchorZindex(){var e;return a.returnFirstEl(this.$el).getRootNode().querySelector('.d-modal[aria-hidden="false"], .d-modal--transparent[aria-hidden="false"]')||(e=this.anchorEl)!=null&&e.closest(".d-zi-drawer")?650:300},defaultToggleOpen(e){var t,o,i;if(!this.openOnContext&&(this.open===null||this.open===void 0)){if(!((t=this.anchorEl)!=null&&t.contains(e.target))&&!((o=this.anchorEl)!=null&&o.isEqualNode(e.target))||(i=this.anchorEl)!=null&&i.disabled)return;this.toggleOpen()}},async onContext(e){var t;this.openOnContext&&(e.preventDefault(),this.isOpen=!0,await this.$nextTick(),(t=this.tip)==null||t.setProps({placement:"right-start",getReferenceClientRect:()=>({width:0,height:0,top:e.clientY,bottom:e.clientY,left:e.clientX,right:e.clientX})}))},toggleOpen(){this.isOpen=!this.isOpen},onArrowKeyPress(e){var t;this.open===null&&(this.openWithArrowKeys&&((t=this.anchorEl)!=null&&t.contains(e.target))&&(this.isOpen||(this.isOpen=!0)),this.$emit("keydown",e))},addEventListeners(){window.addEventListener("dt-popover-close",this.closePopover),this.contentWidth==="anchor"&&window.addEventListener("resize",this.onResize)},removeEventListeners(){window.removeEventListener("dt-popover-close",this.closePopover),this.contentWidth==="anchor"&&window.removeEventListener("resize",this.onResize)},closePopover(){this.isOpen=!1},preventScrolling(){var e,t,o;if(this.modal){const i=(e=this.anchorEl)==null?void 0:e.closest("body, .tippy-box");if(!i)return;((t=i.tagName)==null?void 0:t.toLowerCase())==="body"?(a.disableRootScrolling(this.anchorEl.getRootNode().host),(o=this.tip)==null||o.setProps({offset:this.offset})):i.classList.add("d-zi-popover")}},enableScrolling(){var t,o,i;const e=(t=this.anchorEl)==null?void 0:t.closest("body, .tippy-box");e&&(((o=e.tagName)==null?void 0:o.toLowerCase())==="body"?(a.enableRootScrolling(this.anchorEl.getRootNode().host),(i=this.tip)==null||i.setProps({offset:this.offset})):e.classList.remove("d-zi-popover"))},removeReferences(){this.anchorEl=null,this.popoverContentEl=null,this.tip=null},async onShow(){this.contentWidth==="anchor"&&await this.setPopoverContentAnchorWidth(),this.contentWidth===null&&(this.popoverContentEl.style.width="auto"),this.addEventListeners()},async onLeaveTransitionComplete(){var e;this.modal&&(await this.focusFirstElement(this.$refs.anchor),await this.$nextTick(),this.enableScrolling()),(e=this.tip)==null||e.unmount(),this.$emit("opened",!1),this.open!==null&&this.$emit("update:open",!1)},async onEnterTransitionComplete(){this.focusInitialElement(),await this.$nextTick(),this.preventScrolling(),this.$emit("opened",!0,this.$refs.popover__content),this.open!==null&&this.$emit("update:open",!0)},focusInitialElement(){var e,t;this.initialFocusElement==="dialog"&&((t=a.returnFirstEl((e=this.$refs.content)==null?void 0:e.$el))==null||t.focus()),this.initialFocusElement.startsWith("#")&&this.focusInitialElementById(),this.initialFocusElement==="first"&&this.focusFirstElementIfNeeded(this.$refs.popover__content),this.initialFocusElement instanceof HTMLElement&&this.initialFocusElement.focus()},focusInitialElementById(){var t,o,i;const e=(o=a.returnFirstEl((t=this.$refs.content)==null?void 0:t.$el))==null?void 0:o.querySelector(this.initialFocusElement);e?e.focus():console.warn('Could not find the element specified in dt-popover prop "initialFocusElement". Defaulting to focusing the dialog.'),e?e.focus():a.returnFirstEl((i=this.$refs.content)==null?void 0:i.$el).focus()},onResize(){this.closePopover()},onClickOutside(){var t;if(!this.hideOnClick)return;((t=this.popoverContentEl)==null?void 0:t.querySelector(".d-popover__anchor--opened"))||this.closePopover()},onKeydown(e){e.key==="Tab"&&this.modal&&this.focusTrappedTabPress(e,this.popoverContentEl),e.key==="Escape"&&this.closePopover(),this.$emit("keydown",e)},async setPopoverContentAnchorWidth(){var e;await this.$nextTick(),this.popoverContentEl.style.width=`${(e=this.anchorEl)==null?void 0:e.clientWidth}px`},focusFirstElementIfNeeded(e){var o,i;this._getFocusableElements(e,!0).length!==0?this.focusFirstElement(e):this.showCloseButton?(o=this.$refs.popover__header)==null||o.focusCloseButton():a.returnFirstEl((i=this.$refs.content)==null?void 0:i.$el).focus()},getReferenceClientRect(e){var h,p;const t=(h=this.anchorEl)==null?void 0:h.getBoundingClientRect();if(this.appendTo!=="root"||e)return t;const o=(p=this.anchorEl)==null?void 0:p.ownerDocument,i=(o==null?void 0:o.defaultView)||(o==null?void 0:o.parentWindow),r=i==null?void 0:i.frameElement;if(!r)return t;const s=r.getBoundingClientRect();return{width:t==null?void 0:t.width,height:t==null?void 0:t.height,top:(s==null?void 0:s.top)+(t==null?void 0:t.top),left:(s==null?void 0:s.left)+(t==null?void 0:t.left),right:(s==null?void 0:s.right)+(t==null?void 0:t.right),bottom:(s==null?void 0:s.bottom)+(t==null?void 0:t.bottom)}},initTippyInstance(){var o,i,r;let e=null,t=!1;switch(this.appendTo){case"body":e=(i=(o=this.anchorEl)==null?void 0:o.getRootNode())==null?void 0:i.querySelector("body");break;case"root":try{e=window.parent.document.body}catch(s){console.error("Could not attach the popover to iframe parent window: ",s),e="parent",t=!0}break;default:e=this.appendTo;break}(r=this.tip)==null||r.destroy(),this.tip=u.createTippyPopover(this.anchorEl,{popperOptions:this.popperOptions(),contentElement:this.popoverContentEl,placement:this.placement,offset:this.offset,sticky:this.sticky,appendTo:e,interactive:!0,trigger:"manual",getReferenceClientRect:()=>this.getReferenceClientRect(t),hideOnClick:!1,zIndex:this.modal?650:this.calculateAnchorZindex(),onClickOutside:this.onClickOutside,onShow:this.onShow})},onMouseEnter(){this.$emit("mouseenter-popover")},onMouseLeave(){this.$emit("mouseleave-popover")},onMouseEnterAnchor(){this.$emit("mouseenter-popover-anchor")},onMouseLeaveAnchor(){this.$emit("mouseleave-popover-anchor")}}},C=["id","data-qa","tabindex"],O=["data-qa"];function b(e,t,o,i,r,s){const h=n.resolveComponent("popover-header-footer"),p=n.resolveComponent("sr-only-close-button"),c=n.resolveComponent("dt-lazy-show");return n.openBlock(),n.createElementBlock("div",null,[o.modal&&r.isOpen?(n.openBlock(),n.createBlock(n.Teleport,{key:0,to:"body"},[n.createElementVNode("div",{class:"d-modal--transparent","aria-hidden":"false",onClick:t[0]||(t[0]=n.withModifiers(()=>{},["prevent","stop"]))})])):n.createCommentVNode("",!0),(n.openBlock(),n.createBlock(n.resolveDynamicComponent(o.elementType),{ref:"popover",class:n.normalizeClass(["d-popover",{"d-popover__anchor--opened":r.isOpen}]),"data-qa":"dt-popover-container"},{default:n.withCtx(()=>[n.createElementVNode("div",{id:!o.ariaLabelledby&&s.labelledBy,ref:"anchor","data-qa":e.$attrs["data-qa"]?`${e.$attrs["data-qa"]}-anchor`:"dt-popover-anchor",tabindex:o.openOnContext?0:void 0,onClickCapture:t[1]||(t[1]=(...l)=>s.defaultToggleOpen&&s.defaultToggleOpen(...l)),onContextmenu:t[2]||(t[2]=(...l)=>s.onContext&&s.onContext(...l)),onKeydown:[t[3]||(t[3]=n.withKeys(n.withModifiers((...l)=>s.onArrowKeyPress&&s.onArrowKeyPress(...l),["prevent"]),["up"])),t[4]||(t[4]=n.withKeys(n.withModifiers((...l)=>s.onArrowKeyPress&&s.onArrowKeyPress(...l),["prevent"]),["down"])),t[6]||(t[6]=n.withKeys(l=>e.$emit("keydown",l),["enter"])),t[7]||(t[7]=n.withKeys(l=>e.$emit("keydown",l),["space"]))],onKeydownCapture:t[5]||(t[5]=n.withKeys((...l)=>s.closePopover&&s.closePopover(...l),["escape"])),onMouseenter:t[8]||(t[8]=(...l)=>s.onMouseEnter&&s.onMouseEnter(...l)),onMouseleave:t[9]||(t[9]=(...l)=>s.onMouseLeave&&s.onMouseLeave(...l))},[n.renderSlot(e.$slots,"anchor",{attrs:{"aria-expanded":r.isOpen.toString(),"aria-controls":o.id,"aria-haspopup":o.role}})],40,C),n.createVNode(c,n.mergeProps({id:o.id,ref:"content",role:o.role,"data-qa":e.$attrs["data-qa"]?`${e.$attrs["data-qa"]}__dialog`:"dt-popover","aria-hidden":`${!r.isOpen}`,"aria-labelledby":s.labelledBy,"aria-label":o.ariaLabel,"aria-modal":`${!o.modal}`,transition:o.transition,show:r.isOpen,appear:r.toAppear,class:["d-popover__dialog",{"d-popover__dialog--modal":o.modal},o.dialogClass],style:{"max-height":s.calculatedMaxHeight,"max-width":o.maxWidth},css:e.$attrs.css,tabindex:o.contentTabindex},n.toHandlers(s.popoverListeners),{onMouseenter:s.onMouseEnterAnchor,onMouseleave:s.onMouseLeaveAnchor}),{default:n.withCtx(()=>[r.hasSlotContent(e.$slots.headerContent)||o.showCloseButton?(n.openBlock(),n.createBlock(h,{key:0,ref:"popover__header",class:n.normalizeClass(r.POPOVER_HEADER_FOOTER_PADDING_CLASSES[o.padding]),"content-class":o.headerClass,type:"header","show-close-button":o.showCloseButton,onClose:s.closePopover},{content:n.withCtx(()=>[n.renderSlot(e.$slots,"headerContent",{close:s.closePopover})]),_:3},8,["class","content-class","show-close-button","onClose"])):n.createCommentVNode("",!0),n.createElementVNode("div",{ref:"popover__content","data-qa":e.$attrs["data-qa"]?`${e.$attrs["data-qa"]}-content`:"dt-popover-content",class:n.normalizeClass(["d-popover__content",r.POPOVER_PADDING_CLASSES[o.padding],o.contentClass])},[n.renderSlot(e.$slots,"content",{close:s.closePopover})],10,O),r.hasSlotContent(e.$slots.footerContent)?(n.openBlock(),n.createBlock(h,{key:1,ref:"popover__footer",type:"footer",class:n.normalizeClass(r.POPOVER_HEADER_FOOTER_PADDING_CLASSES[o.padding]),"content-class":o.footerClass},{content:n.withCtx(()=>[n.renderSlot(e.$slots,"footerContent",{close:s.closePopover})]),_:3},8,["class","content-class"])):n.createCommentVNode("",!0),o.showCloseButton?n.createCommentVNode("",!0):(n.openBlock(),n.createBlock(p,{key:2,onClose:s.closePopover},null,8,["onClose"]))]),_:3},16,["id","role","data-qa","aria-hidden","aria-labelledby","aria-label","aria-modal","transition","show","appear","class","style","css","tabindex","onMouseenter","onMouseleave"])]),_:3},8,["class"]))])}const w=E._(g,[["render",b]]);exports.default=w;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("./popover-constants.cjs"),a=require("../../common/utils/index.cjs"),f=require("../../common/mixins/modal.cjs"),u=require("./tippy-utils.cjs"),m=require("./popover-header-footer.cjs"),v=require("../../shared/sr_only_close_button.cjs"),n=require("vue"),E=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),y=require("../lazy-show/lazy-show.cjs"),g={compatConfig:{MODE:3},name:"DtPopover",components:{SrOnlyCloseButton:v.default,DtLazyShow:y.default,PopoverHeaderFooter:m.default},mixins:[f.default],props:{open:{type:Boolean,default:null},openOnContext:{type:Boolean,default:!1},elementType:{type:String,default:"div"},transition:{type:String,default:"fade"},role:{type:String,default:"dialog",validator:e=>d.POPOVER_ROLES.includes(e)},ariaLabelledby:{type:String,default:null},ariaLabel:{type:String,default:null},padding:{type:String,default:"large",validator:e=>Object.keys(d.POPOVER_PADDING_CLASSES).some(t=>t===e)},contentClass:{type:[String,Array,Object],default:""},contentWidth:{type:String,default:"",validator:e=>d.POPOVER_CONTENT_WIDTHS.includes(e)},contentAppear:{type:Boolean,default:null},contentTabindex:{type:Number||null,default:-1},externalAnchor:{type:String,default:""},id:{type:String,default(){return a.getUniqueString()}},offset:{type:Array,default:()=>[0,4]},hideOnClick:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},fallbackPlacements:{type:Array,default:()=>["auto"]},placement:{type:String,default:"bottom-end"},tether:{type:Boolean,default:!0},sticky:{type:[Boolean,String],default:!1,validator:e=>d.POPOVER_STICKY_VALUES.includes(e)},maxHeight:{type:String,default:""},maxWidth:{type:String,default:""},showCloseButton:{type:Boolean,default:!1},headerClass:{type:[String,Array,Object],default:""},footerClass:{type:[String,Array,Object],default:""},dialogClass:{type:[String,Array,Object],default:""},initialFocusElement:{type:[String,HTMLElement],default:"first",validator:e=>d.POPOVER_INITIAL_FOCUS_STRINGS.includes(e)||e instanceof HTMLElement||e.startsWith("#")},openWithArrowKeys:{type:Boolean,default:!1},appendTo:{type:[HTMLElement,String],default:"body",validator:e=>d.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement}},emits:["keydown","update:open","opened","mouseenter-popover","mouseleave-popover","mouseenter-popover-anchor","mouseleave-popover-anchor"],data(){return{POPOVER_PADDING_CLASSES:d.POPOVER_PADDING_CLASSES,POPOVER_HEADER_FOOTER_PADDING_CLASSES:d.POPOVER_HEADER_FOOTER_PADDING_CLASSES,intersectionObserver:null,mutationObserver:null,isOutsideViewport:!1,isOpen:!1,toAppear:!1,anchorEl:null,popoverContentEl:null,hasSlotContent:a.hasSlotContent}},computed:{popoverListeners(){return{keydown:e=>{this.onKeydown(e)},"after-leave":()=>{this.onLeaveTransitionComplete()},"after-enter":()=>{this.onEnterTransitionComplete()}}},calculatedMaxHeight(){return this.isOutsideViewport&&this.modal?"calc(100vh - var(--dt-space-300))":this.maxHeight},labelledBy(){return this.ariaLabelledby||!this.ariaLabel&&a.getUniqueString("DtPopover__anchor")}},watch:{$props:{immediate:!0,deep:!0,handler(){this.validateProps()}},modal(e){var t;(t=this.tip)==null||t.setProps({zIndex:e?650:this.calculateAnchorZindex()})},offset(e){var t;(t=this.tip)==null||t.setProps({offset:e})},sticky(e){var t;(t=this.tip)==null||t.setProps({sticky:e})},fallbackPlacements(){var e;(e=this.tip)==null||e.setProps({popperOptions:this.popperOptions()})},tether(){var e;(e=this.tip)==null||e.setProps({popperOptions:this.popperOptions()})},placement(e){var t;(t=this.tip)==null||t.setProps({placement:e})},open:{handler:function(e){e!==null&&(this.isOpen=e),e===!0&&(this.toAppear=!0)},immediate:!0},contentAppear:{handler:function(e){e!==null&&(this.toAppear=e)}},isOpen(e,t){var o,s;e?(this.initTippyInstance(),(o=this.tip)==null||o.show()):!e&&t!==e&&(this.removeEventListeners(),(s=this.tip)==null||s.hide())}},mounted(){var e;a.warnIfUnmounted(a.returnFirstEl(this.$el),this.$options.name),this.popoverContentEl=a.returnFirstEl((e=this.$refs.content)==null?void 0:e.$el),this.updateAnchorEl(),this.mutationObserver=new MutationObserver(this.updateAnchorEl),this.mutationObserver.observe(this.$refs.anchor,{childList:!0}),this.intersectionObserver=new IntersectionObserver(this.hasIntersectedViewport),this.intersectionObserver.observe(this.popoverContentEl)},beforeUnmount(){var e,t,o;(e=this.tip)==null||e.destroy(),(t=this.intersectionObserver)==null||t.disconnect(),(o=this.mutationObserver)==null||o.disconnect(),this.removeReferences(),this.removeEventListeners()},methods:{hasIntersectedViewport(e){var s;const t=(s=e==null?void 0:e[0])==null?void 0:s.target;if(!t)return;const o=a.isOutOfViewPort(t);this.isOutsideViewport=o.bottom||o.top},updateAnchorEl(){var o,s;const t=(this.externalAnchor?this.$refs.anchor.getRootNode().querySelector(`#${this.externalAnchor}`):null)??this.$refs.anchor.children[0];if(t!==this.anchorEl){if(this.anchorEl=t,(o=this.tip)==null||o.destroy(),delete this.tip,!this.anchorEl){console.warn("No anchor found for popover");return}this.isOpen&&(this.initTippyInstance(),(s=this.tip)==null||s.show())}},popperOptions(){return u.getPopperOptions({fallbackPlacements:this.fallbackPlacements,tether:this.tether,hasHideModifierEnabled:!0})},validateProps(){this.modal&&this.initialFocusElement==="none"&&console.error('If the popover is modal you must set the initialFocusElement prop. Possible values: "dialog", "first", HTMLElement')},calculateAnchorZindex(){var e;return a.returnFirstEl(this.$el).getRootNode().querySelector('.d-modal[aria-hidden="false"], .d-modal--transparent[aria-hidden="false"]')||(e=this.anchorEl)!=null&&e.closest(".d-zi-drawer")?650:300},defaultToggleOpen(e){var t,o,s;if(!this.openOnContext&&(this.open===null||this.open===void 0)){if(!((t=this.anchorEl)!=null&&t.contains(e.target))&&!((o=this.anchorEl)!=null&&o.isEqualNode(e.target))||(s=this.anchorEl)!=null&&s.disabled)return;this.toggleOpen()}},async onContext(e){var t;this.openOnContext&&(e.preventDefault(),this.isOpen=!0,await this.$nextTick(),(t=this.tip)==null||t.setProps({placement:"right-start",getReferenceClientRect:()=>({width:0,height:0,top:e.clientY,bottom:e.clientY,left:e.clientX,right:e.clientX})}))},toggleOpen(){this.isOpen=!this.isOpen},onArrowKeyPress(e){var t;this.open===null&&(this.openWithArrowKeys&&((t=this.anchorEl)!=null&&t.contains(e.target))&&(this.isOpen||(this.isOpen=!0)),this.$emit("keydown",e))},addEventListeners(){window.addEventListener("dt-popover-close",this.closePopover),this.contentWidth==="anchor"&&window.addEventListener("resize",this.onResize)},removeEventListeners(){window.removeEventListener("dt-popover-close",this.closePopover),this.contentWidth==="anchor"&&window.removeEventListener("resize",this.onResize)},closePopover(){this.isOpen=!1},preventScrolling(){var e,t,o;if(this.modal){const s=(e=this.anchorEl)==null?void 0:e.closest("body, .tippy-box");if(!s)return;((t=s.tagName)==null?void 0:t.toLowerCase())==="body"?(a.disableRootScrolling(this.anchorEl.getRootNode().host),(o=this.tip)==null||o.setProps({offset:this.offset})):s.classList.add("d-zi-popover")}},enableScrolling(){var t,o,s;const e=(t=this.anchorEl)==null?void 0:t.closest("body, .tippy-box");e&&(((o=e.tagName)==null?void 0:o.toLowerCase())==="body"?(a.enableRootScrolling(this.anchorEl.getRootNode().host),(s=this.tip)==null||s.setProps({offset:this.offset})):e.classList.remove("d-zi-popover"))},removeReferences(){this.anchorEl=null,this.popoverContentEl=null,this.tip=null},async onShow(){this.contentWidth==="anchor"&&await this.setPopoverContentAnchorWidth(),this.contentWidth===null&&(this.popoverContentEl.style.width="auto"),this.addEventListeners()},async onLeaveTransitionComplete(){var e;this.modal&&(await this.focusFirstElement(this.$refs.anchor),await this.$nextTick(),this.enableScrolling()),(e=this.tip)==null||e.unmount(),this.$emit("opened",!1),this.open!==null&&this.$emit("update:open",!1)},async onEnterTransitionComplete(){this.focusInitialElement(),await this.$nextTick(),this.preventScrolling(),this.$emit("opened",!0,this.$refs.popover__content),this.open!==null&&this.$emit("update:open",!0)},focusInitialElement(){var e,t;this.initialFocusElement==="dialog"&&((t=a.returnFirstEl((e=this.$refs.content)==null?void 0:e.$el))==null||t.focus()),this.initialFocusElement.startsWith("#")&&this.focusInitialElementById(),this.initialFocusElement==="first"&&this.focusFirstElementIfNeeded(this.$refs.popover__content),this.initialFocusElement instanceof HTMLElement&&this.initialFocusElement.focus()},focusInitialElementById(){var t,o,s,r;const e=(o=a.returnFirstEl((t=this.$refs.content)==null?void 0:t.$el))==null?void 0:o.querySelector(this.initialFocusElement);e?e.focus():(console.warn('Could not find the element specified in dt-popover prop "initialFocusElement". Defaulting to focusing the dialog.'),(r=a.returnFirstEl((s=this.$refs.content)==null?void 0:s.$el))==null||r.focus())},onResize(){this.closePopover()},onClickOutside(){var t;if(!this.hideOnClick)return;((t=this.popoverContentEl)==null?void 0:t.querySelector(".d-popover__anchor--opened"))||this.closePopover()},onKeydown(e){e.key==="Tab"&&this.modal&&this.focusTrappedTabPress(e,this.popoverContentEl),e.key==="Escape"&&this.closePopover(),this.$emit("keydown",e)},async setPopoverContentAnchorWidth(){var e;await this.$nextTick(),this.popoverContentEl.style.width=`${(e=this.anchorEl)==null?void 0:e.clientWidth}px`},focusFirstElementIfNeeded(e){var o,s;this._getFocusableElements(e,!0).length!==0?this.focusFirstElement(e):this.showCloseButton?(o=this.$refs.popover__header)==null||o.focusCloseButton():a.returnFirstEl((s=this.$refs.content)==null?void 0:s.$el).focus()},getReferenceClientRect(e){var h,p;const t=(h=this.anchorEl)==null?void 0:h.getBoundingClientRect();if(this.appendTo!=="root"||e)return t;const o=(p=this.anchorEl)==null?void 0:p.ownerDocument,s=(o==null?void 0:o.defaultView)||(o==null?void 0:o.parentWindow),r=s==null?void 0:s.frameElement;if(!r)return t;const i=r.getBoundingClientRect();return{width:t==null?void 0:t.width,height:t==null?void 0:t.height,top:(i==null?void 0:i.top)+(t==null?void 0:t.top),left:(i==null?void 0:i.left)+(t==null?void 0:t.left),right:(i==null?void 0:i.right)+(t==null?void 0:t.right),bottom:(i==null?void 0:i.bottom)+(t==null?void 0:t.bottom)}},initTippyInstance(){var o,s,r;let e=null,t=!1;switch(this.appendTo){case"body":e=(s=(o=this.anchorEl)==null?void 0:o.getRootNode())==null?void 0:s.querySelector("body");break;case"root":try{e=window.parent.document.body}catch(i){console.error("Could not attach the popover to iframe parent window: ",i),e="parent",t=!0}break;default:e=this.appendTo;break}(r=this.tip)==null||r.destroy(),this.tip=u.createTippyPopover(this.anchorEl,{popperOptions:this.popperOptions(),contentElement:this.popoverContentEl,placement:this.placement,offset:this.offset,sticky:this.sticky,appendTo:e,interactive:!0,trigger:"manual",getReferenceClientRect:()=>this.getReferenceClientRect(t),hideOnClick:!1,zIndex:this.modal?650:this.calculateAnchorZindex(),onClickOutside:this.onClickOutside,onShow:this.onShow})},onMouseEnter(){this.$emit("mouseenter-popover")},onMouseLeave(){this.$emit("mouseleave-popover")},onMouseEnterAnchor(){this.$emit("mouseenter-popover-anchor")},onMouseLeaveAnchor(){this.$emit("mouseleave-popover-anchor")}}},C=["id","data-qa","tabindex"],O=["data-qa"];function b(e,t,o,s,r,i){const h=n.resolveComponent("popover-header-footer"),p=n.resolveComponent("sr-only-close-button"),c=n.resolveComponent("dt-lazy-show");return n.openBlock(),n.createElementBlock("div",null,[o.modal&&r.isOpen?(n.openBlock(),n.createBlock(n.Teleport,{key:0,to:"body"},[n.createElementVNode("div",{class:"d-modal--transparent","aria-hidden":"false",onClick:t[0]||(t[0]=n.withModifiers(()=>{},["prevent","stop"]))})])):n.createCommentVNode("",!0),(n.openBlock(),n.createBlock(n.resolveDynamicComponent(o.elementType),{ref:"popover",class:n.normalizeClass(["d-popover",{"d-popover__anchor--opened":r.isOpen}]),"data-qa":"dt-popover-container"},{default:n.withCtx(()=>[n.createElementVNode("div",{id:!o.ariaLabelledby&&i.labelledBy,ref:"anchor","data-qa":e.$attrs["data-qa"]?`${e.$attrs["data-qa"]}-anchor`:"dt-popover-anchor",tabindex:o.openOnContext?0:void 0,onClickCapture:t[1]||(t[1]=(...l)=>i.defaultToggleOpen&&i.defaultToggleOpen(...l)),onContextmenu:t[2]||(t[2]=(...l)=>i.onContext&&i.onContext(...l)),onKeydown:[t[3]||(t[3]=n.withKeys(n.withModifiers((...l)=>i.onArrowKeyPress&&i.onArrowKeyPress(...l),["prevent"]),["up"])),t[4]||(t[4]=n.withKeys(n.withModifiers((...l)=>i.onArrowKeyPress&&i.onArrowKeyPress(...l),["prevent"]),["down"])),t[6]||(t[6]=n.withKeys(l=>e.$emit("keydown",l),["enter"])),t[7]||(t[7]=n.withKeys(l=>e.$emit("keydown",l),["space"]))],onKeydownCapture:t[5]||(t[5]=n.withKeys((...l)=>i.closePopover&&i.closePopover(...l),["escape"])),onMouseenter:t[8]||(t[8]=(...l)=>i.onMouseEnter&&i.onMouseEnter(...l)),onMouseleave:t[9]||(t[9]=(...l)=>i.onMouseLeave&&i.onMouseLeave(...l))},[n.renderSlot(e.$slots,"anchor",{attrs:{"aria-expanded":r.isOpen.toString(),"aria-controls":o.id,"aria-haspopup":o.role}})],40,C),n.createVNode(c,n.mergeProps({id:o.id,ref:"content",role:o.role,"data-qa":e.$attrs["data-qa"]?`${e.$attrs["data-qa"]}__dialog`:"dt-popover","aria-hidden":`${!r.isOpen}`,"aria-labelledby":i.labelledBy,"aria-label":o.ariaLabel,"aria-modal":`${!o.modal}`,transition:o.transition,show:r.isOpen,appear:r.toAppear,class:["d-popover__dialog",{"d-popover__dialog--modal":o.modal},o.dialogClass],style:{"max-height":i.calculatedMaxHeight,"max-width":o.maxWidth},css:e.$attrs.css,tabindex:o.contentTabindex},n.toHandlers(i.popoverListeners),{onMouseenter:i.onMouseEnterAnchor,onMouseleave:i.onMouseLeaveAnchor}),{default:n.withCtx(()=>[r.hasSlotContent(e.$slots.headerContent)||o.showCloseButton?(n.openBlock(),n.createBlock(h,{key:0,ref:"popover__header",class:n.normalizeClass(r.POPOVER_HEADER_FOOTER_PADDING_CLASSES[o.padding]),"content-class":o.headerClass,type:"header","show-close-button":o.showCloseButton,onClose:i.closePopover},{content:n.withCtx(()=>[n.renderSlot(e.$slots,"headerContent",{close:i.closePopover})]),_:3},8,["class","content-class","show-close-button","onClose"])):n.createCommentVNode("",!0),n.createElementVNode("div",{ref:"popover__content","data-qa":e.$attrs["data-qa"]?`${e.$attrs["data-qa"]}-content`:"dt-popover-content",class:n.normalizeClass(["d-popover__content",r.POPOVER_PADDING_CLASSES[o.padding],o.contentClass])},[n.renderSlot(e.$slots,"content",{close:i.closePopover})],10,O),r.hasSlotContent(e.$slots.footerContent)?(n.openBlock(),n.createBlock(h,{key:1,ref:"popover__footer",type:"footer",class:n.normalizeClass(r.POPOVER_HEADER_FOOTER_PADDING_CLASSES[o.padding]),"content-class":o.footerClass},{content:n.withCtx(()=>[n.renderSlot(e.$slots,"footerContent",{close:i.closePopover})]),_:3},8,["class","content-class"])):n.createCommentVNode("",!0),o.showCloseButton?n.createCommentVNode("",!0):(n.openBlock(),n.createBlock(p,{key:2,onClose:i.closePopover},null,8,["onClose"]))]),_:3},16,["id","role","data-qa","aria-hidden","aria-labelledby","aria-label","aria-modal","transition","show","appear","class","style","css","tabindex","onMouseenter","onMouseleave"])]),_:3},8,["class"]))])}const w=E._(g,[["render",b]]);exports.default=w;
2
2
  //# sourceMappingURL=popover.cjs.map