bge-ui 1.3.4 → 1.3.6

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.
Files changed (135) hide show
  1. package/dist/datePicker/components/ActionRow.vue.d.ts +1051 -0
  2. package/dist/datePicker/components/Common/ArrowBtn.vue.d.ts +29 -0
  3. package/dist/datePicker/components/Common/InstanceWrap.vue.d.ts +29 -0
  4. package/dist/datePicker/components/Common/SelectionOverlay.vue.d.ts +55 -0
  5. package/dist/datePicker/components/DatePicker/DatePicker.vue.d.ts +1114 -0
  6. package/dist/datePicker/components/DatePicker/DpCalendar.vue.d.ts +1085 -0
  7. package/dist/datePicker/components/DatePicker/DpHeader.vue.d.ts +1103 -0
  8. package/dist/datePicker/components/DatePicker/date-picker.d.ts +35 -0
  9. package/dist/datePicker/components/DatepickerInput.vue.d.ts +1008 -0
  10. package/dist/datePicker/components/DatepickerMenu.vue.d.ts +1061 -0
  11. package/dist/datePicker/components/Icons/CalendarIcon.d.ts +9 -0
  12. package/dist/datePicker/components/Icons/CancelIcon.d.ts +9 -0
  13. package/dist/datePicker/components/Icons/ChevronDownIcon.d.ts +9 -0
  14. package/dist/datePicker/components/Icons/ChevronLeftIcon.d.ts +9 -0
  15. package/dist/datePicker/components/Icons/ChevronRightIcon.d.ts +9 -0
  16. package/dist/datePicker/components/Icons/ChevronUpIcon.d.ts +9 -0
  17. package/dist/datePicker/components/Icons/ClockIcon.d.ts +9 -0
  18. package/dist/datePicker/components/Icons/index.d.ts +7 -0
  19. package/dist/datePicker/components/MonthPicker/MonthPicker.vue.d.ts +1071 -0
  20. package/dist/datePicker/components/MonthPicker/month-picker.d.ts +34 -0
  21. package/dist/datePicker/components/QuarterPicker/QuarterPicker.vue.d.ts +1043 -0
  22. package/dist/datePicker/components/QuarterPicker/quarter-picker.d.ts +25 -0
  23. package/dist/datePicker/components/TimePicker/TimeInput.vue.d.ts +1116 -0
  24. package/dist/datePicker/components/TimePicker/TimePicker.vue.d.ts +1087 -0
  25. package/dist/datePicker/components/TimePicker/TimePickerSolo.vue.d.ts +1036 -0
  26. package/dist/datePicker/components/TimePicker/time-picker-utils.d.ts +15 -0
  27. package/dist/datePicker/components/TimePicker/time-picker.d.ts +13 -0
  28. package/dist/datePicker/components/YearPicker/YearPicker.vue.d.ts +1040 -0
  29. package/dist/datePicker/components/YearPicker/year-picker.d.ts +9 -0
  30. package/dist/datePicker/components/shared/YearModePicker.vue.d.ts +1075 -0
  31. package/dist/datePicker/components/shared/month-quarter-picker.d.ts +29 -0
  32. package/dist/datePicker/composables/arrow-navigate.d.ts +26 -0
  33. package/dist/datePicker/composables/calendar-class.d.ts +8 -0
  34. package/dist/datePicker/composables/common.d.ts +6 -0
  35. package/dist/datePicker/composables/defaults.d.ts +37 -0
  36. package/dist/datePicker/composables/external-internal-mapper.d.ts +14 -0
  37. package/dist/datePicker/composables/flow.d.ts +10 -0
  38. package/dist/datePicker/composables/index.d.ts +14 -0
  39. package/dist/datePicker/composables/model.d.ts +17 -0
  40. package/dist/datePicker/composables/month-year.d.ts +10 -0
  41. package/dist/datePicker/composables/position.d.ts +25 -0
  42. package/dist/datePicker/composables/shared.d.ts +12 -0
  43. package/dist/datePicker/composables/slots.d.ts +10 -0
  44. package/dist/datePicker/composables/state.d.ts +8 -0
  45. package/dist/datePicker/composables/transition.d.ts +7 -0
  46. package/dist/datePicker/composables/validation.d.ts +12 -0
  47. package/dist/datePicker/constants/index.d.ts +43 -0
  48. package/dist/datePicker/datePicker.vue.d.ts +1006 -0
  49. package/dist/datePicker/directives/clickOutside.d.ts +2 -0
  50. package/dist/datePicker/index.vue.d.ts +1012 -0
  51. package/dist/datePicker/interfaces.d.ts +323 -0
  52. package/dist/datePicker/props.d.ts +865 -0
  53. package/dist/datePicker/utils/date-utils.d.ts +45 -0
  54. package/dist/datePicker/utils/defaults.d.ts +42 -0
  55. package/dist/datePicker/utils/timezone.d.ts +8 -0
  56. package/dist/datePicker/utils/type-guard.d.ts +1 -0
  57. package/dist/datePicker/utils/util.d.ts +57 -0
  58. package/dist/dialog/index.vue.d.ts +6 -3
  59. package/dist/index.d.ts +2 -1
  60. package/dist/index.js +13008 -1250
  61. package/dist/style.css +1188 -1
  62. package/dist/tooltip/index.vue.d.ts +2 -2
  63. package/dist/tooltip/usePopper.d.ts +5 -5
  64. package/package.json +3 -2
  65. package/src/datePicker/components/ActionRow.vue +216 -0
  66. package/src/datePicker/components/Common/ArrowBtn.vue +42 -0
  67. package/src/datePicker/components/Common/InstanceWrap.vue +28 -0
  68. package/src/datePicker/components/Common/SelectionOverlay.vue +320 -0
  69. package/src/datePicker/components/DatePicker/DatePicker.vue +302 -0
  70. package/src/datePicker/components/DatePicker/DpCalendar.vue +405 -0
  71. package/src/datePicker/components/DatePicker/DpHeader.vue +332 -0
  72. package/src/datePicker/components/DatePicker/date-picker.ts +674 -0
  73. package/src/datePicker/components/DatepickerInput.vue +334 -0
  74. package/src/datePicker/components/DatepickerMenu.vue +424 -0
  75. package/src/datePicker/components/Icons/CalendarIcon.ts +40 -0
  76. package/src/datePicker/components/Icons/CancelIcon.ts +32 -0
  77. package/src/datePicker/components/Icons/ChevronDownIcon.ts +29 -0
  78. package/src/datePicker/components/Icons/ChevronLeftIcon.ts +29 -0
  79. package/src/datePicker/components/Icons/ChevronRightIcon.ts +29 -0
  80. package/src/datePicker/components/Icons/ChevronUpIcon.ts +29 -0
  81. package/src/datePicker/components/Icons/ClockIcon.ts +32 -0
  82. package/src/datePicker/components/Icons/index.ts +8 -0
  83. package/src/datePicker/components/MonthPicker/MonthPicker.vue +130 -0
  84. package/src/datePicker/components/MonthPicker/month-picker.ts +232 -0
  85. package/src/datePicker/components/QuarterPicker/QuarterPicker.vue +111 -0
  86. package/src/datePicker/components/QuarterPicker/quarter-picker.ts +153 -0
  87. package/src/datePicker/components/TimePicker/TimeInput.vue +477 -0
  88. package/src/datePicker/components/TimePicker/TimePicker.vue +265 -0
  89. package/src/datePicker/components/TimePicker/TimePickerSolo.vue +79 -0
  90. package/src/datePicker/components/TimePicker/time-picker-utils.ts +179 -0
  91. package/src/datePicker/components/TimePicker/time-picker.ts +112 -0
  92. package/src/datePicker/components/YearPicker/YearPicker.vue +70 -0
  93. package/src/datePicker/components/YearPicker/year-picker.ts +109 -0
  94. package/src/datePicker/components/shared/YearModePicker.vue +105 -0
  95. package/src/datePicker/components/shared/month-quarter-picker.ts +199 -0
  96. package/src/datePicker/composables/arrow-navigate.ts +191 -0
  97. package/src/datePicker/composables/calendar-class.ts +383 -0
  98. package/src/datePicker/composables/common.ts +25 -0
  99. package/src/datePicker/composables/defaults.ts +123 -0
  100. package/src/datePicker/composables/external-internal-mapper.ts +442 -0
  101. package/src/datePicker/composables/flow.ts +70 -0
  102. package/src/datePicker/composables/index.ts +14 -0
  103. package/src/datePicker/composables/model.ts +89 -0
  104. package/src/datePicker/composables/month-year.ts +72 -0
  105. package/src/datePicker/composables/position.ts +297 -0
  106. package/src/datePicker/composables/shared.ts +98 -0
  107. package/src/datePicker/composables/slots.ts +84 -0
  108. package/src/datePicker/composables/state.ts +25 -0
  109. package/src/datePicker/composables/transition.ts +18 -0
  110. package/src/datePicker/composables/validation.ts +312 -0
  111. package/src/datePicker/constants/index.ts +49 -0
  112. package/src/datePicker/datePicker.vue +554 -0
  113. package/src/datePicker/directives/clickOutside.ts +79 -0
  114. package/src/datePicker/index.vue +158 -0
  115. package/src/datePicker/interfaces.ts +404 -0
  116. package/src/datePicker/props.ts +173 -0
  117. package/src/datePicker/style/components/_ActionRow.scss +73 -0
  118. package/src/datePicker/style/components/_Calendar.scss +284 -0
  119. package/src/datePicker/style/components/_DatepickerInput.scss +109 -0
  120. package/src/datePicker/style/components/_DatepickerMenu.scss +213 -0
  121. package/src/datePicker/style/components/_MonthYearInput.scss +97 -0
  122. package/src/datePicker/style/components/_QuarterPicker.scss +53 -0
  123. package/src/datePicker/style/components/_SelectionOverlay.scss +142 -0
  124. package/src/datePicker/style/components/_TimeInput.scss +181 -0
  125. package/src/datePicker/style/components/_shared.scss +15 -0
  126. package/src/datePicker/style/main.scss +259 -0
  127. package/src/datePicker/utils/date-utils.ts +440 -0
  128. package/src/datePicker/utils/defaults.ts +327 -0
  129. package/src/datePicker/utils/timezone.ts +38 -0
  130. package/src/datePicker/utils/type-guard.ts +3 -0
  131. package/src/datePicker/utils/util.ts +322 -0
  132. package/src/dialog/index.vue +9 -0
  133. package/src/form/index.vue +2 -1
  134. package/src/index.ts +6 -2
  135. package/src/slider/index.vue +1 -1
@@ -0,0 +1,424 @@
1
+ <template>
2
+ <div
3
+ :id="uid ? `dp-menu-${uid}` : undefined"
4
+ ref="dpMenuRef"
5
+ :tabindex="defaultedInline.enabled ? undefined : '0'"
6
+ :role="defaultedInline.enabled ? undefined : 'dialog'"
7
+ :aria-label="ariaLabels?.menu"
8
+ :class="dpMenuClass"
9
+ :style="{ '--dp-arrow-left': arrowPos }"
10
+ @mouseleave="clearHoverDate"
11
+ @click="handleDpMenuClick"
12
+ @keydown="onKeyDown"
13
+ >
14
+ <div v-if="((disabled || readonly) && defaultedInline.enabled) || loading" :class="disabledReadonlyOverlay">
15
+ <div v-if="loading" class="dp--menu-load-container">
16
+ <span class="dp--menu-loader"></span>
17
+ </div>
18
+ </div>
19
+ <div v-if="$slots['menu-header']" class="dp--menu-header"><slot name="menu-header" /></div>
20
+ <!-- <div v-if="!defaultedInline.enabled && !teleportCenter" :class="arrowClass"></div> -->
21
+ <div
22
+ ref="innerMenuRef"
23
+ :class="{
24
+ dp__menu_content_wrapper: presetDates?.length || !!$slots['left-sidebar'] || !!$slots['right-sidebar'],
25
+ 'dp--menu-content-wrapper-collapsed':
26
+ collapse && (presetDates?.length || !!$slots['left-sidebar'] || !!$slots['right-sidebar']),
27
+ }"
28
+ :style="{ '--dp-menu-width': `${calendarWidth}px` }"
29
+ >
30
+ <div v-if="$slots['left-sidebar']" class="dp__sidebar_left">
31
+ <slot name="left-sidebar" v-bind="getSidebarProps" />
32
+ </div>
33
+ <div
34
+ v-if="presetDates.length"
35
+ :class="{ 'dp--preset-dates-collapsed': collapse, 'dp--preset-dates': true }"
36
+ >
37
+ <template v-for="(preset, i) in presetDates" :key="i">
38
+ <template v-if="preset.slot">
39
+ <slot
40
+ :name="preset.slot"
41
+ :preset-date="presetDate"
42
+ :label="preset.label"
43
+ :value="preset.value"
44
+ />
45
+ </template>
46
+ <template v-else>
47
+ <button
48
+ type="button"
49
+ :style="preset.style || {}"
50
+ class="dp__btn dp--preset-range"
51
+ :class="{ 'dp--preset-range-collapsed': collapse }"
52
+ :data-test="preset.testId ?? undefined"
53
+ @click.prevent="presetDate(preset.value, preset.noTz)"
54
+ @keydown="checkKeyDown($event, () => presetDate(preset.value, preset.noTz), true)"
55
+ >
56
+ {{ preset.label }}
57
+ </button>
58
+ </template>
59
+ </template>
60
+ </div>
61
+ <div ref="calendarWrapperRef" class="dp__instance_calendar" role="document">
62
+ <component
63
+ :is="displayComponent"
64
+ ref="dynCmpRef"
65
+ v-bind="baseProps"
66
+ :flow-step="flowStep"
67
+ @mount="childMount"
68
+ @update-flow-step="updateFlowStep"
69
+ @reset-flow="resetFlow"
70
+ @focus-menu="focusMenu"
71
+ @select-date="$emit('select-date')"
72
+ @date-update="$emit('date-update', $event)"
73
+ @tooltip-open="$emit('tooltip-open', $event)"
74
+ @tooltip-close="$emit('tooltip-close', $event)"
75
+ @auto-apply="$emit('auto-apply', $event)"
76
+ @range-start="$emit('range-start', $event)"
77
+ @range-end="$emit('range-end', $event)"
78
+ @invalid-fixed-range="$emit('invalid-fixed-range', $event)"
79
+ @time-update="$emit('time-update')"
80
+ @am-pm-change="$emit('am-pm-change', $event)"
81
+ @time-picker-open="$emit('time-picker-open', $event)"
82
+ @time-picker-close="onTimePickerClose"
83
+ @recalculate-position="recalculatePosition"
84
+ @update-month-year="$emit('update-month-year', $event)"
85
+ @auto-apply-invalid="$emit('auto-apply-invalid', $event)"
86
+ @invalid-date="$emit('invalid-date', $event)"
87
+ @overlay-toggle="$emit('overlay-toggle', $event)"
88
+ @update:internal-model-value="$emit('update:internal-model-value', $event)"
89
+ >
90
+ <template v-for="(slot, i) in sharedSlots" #[slot]="args" :key="i">
91
+ <slot :name="slot" v-bind="{ ...args }" />
92
+ </template>
93
+ </component>
94
+ </div>
95
+ <div v-if="$slots['right-sidebar']" class="dp__sidebar_right">
96
+ <slot name="right-sidebar" v-bind="getSidebarProps" />
97
+ </div>
98
+ <div v-if="$slots['action-extra']" class="dp__action_extra">
99
+ <slot v-if="$slots['action-extra']" name="action-extra" :select-current-date="selectCurrentDate" />
100
+ </div>
101
+ </div>
102
+ <ActionRow
103
+ v-if="!autoApply || defaultedConfig.keepActionRow"
104
+ :menu-mount="menuMount"
105
+ v-bind="baseProps"
106
+ :calendar-width="calendarWidth"
107
+ @close-picker="$emit('close-picker')"
108
+ @select-date="$emit('select-date')"
109
+ @invalid-select="$emit('invalid-select')"
110
+ @select-now="selectCurrentDate"
111
+ >
112
+ <template v-for="(slot, i) in actionSlots" #[slot]="args" :key="i">
113
+ <slot :name="slot" v-bind="{ ...args }" />
114
+ </template>
115
+ </ActionRow>
116
+ </div>
117
+ </template>
118
+
119
+ <script lang="ts" setup>
120
+ import { computed, onMounted, onUnmounted, ref, useSlots } from 'vue';
121
+
122
+ import ActionRow from '../components/ActionRow.vue';
123
+
124
+ import { mapSlots, useArrowNavigation, useState, useFlow, useDefaults } from '../composables';
125
+ import { checkKeyDown, checkStopPropagation, getElWithin, unrefElement } from '../utils/util';
126
+ import { AllProps } from '../props';
127
+
128
+ import MonthPicker from '../components/MonthPicker/MonthPicker.vue';
129
+ import YearPicker from '../components/YearPicker/YearPicker.vue';
130
+ import TimePickerSolo from '../components/TimePicker/TimePickerSolo.vue';
131
+ import DatePicker from '../components/DatePicker/DatePicker.vue';
132
+ import QuarterPicker from '../components/QuarterPicker/QuarterPicker.vue';
133
+
134
+ import type { DynamicClass, MenuView, InternalModuleValue, MenuExposedFn, MonthModel } from '../interfaces';
135
+ import type { PropType } from 'vue';
136
+ import { ArrowDirection, EventKey } from '../constants';
137
+
138
+ defineOptions({
139
+ compatConfig: {
140
+ MODE: 3,
141
+ },
142
+ });
143
+
144
+ const emit = defineEmits([
145
+ 'close-picker',
146
+ 'select-date',
147
+ 'auto-apply',
148
+ 'time-update',
149
+ 'flow-step',
150
+ 'update-month-year',
151
+ 'invalid-select',
152
+ 'update:internal-model-value',
153
+ 'recalculate-position',
154
+ 'invalid-fixed-range',
155
+ 'tooltip-open',
156
+ 'tooltip-close',
157
+ 'time-picker-open',
158
+ 'time-picker-close',
159
+ 'am-pm-change',
160
+ 'range-start',
161
+ 'range-end',
162
+ 'auto-apply-invalid',
163
+ 'date-update',
164
+ 'invalid-date',
165
+ 'overlay-toggle',
166
+ ]);
167
+
168
+ const props = defineProps({
169
+ ...AllProps,
170
+ shadow: { type: Boolean as PropType<boolean>, default: false },
171
+ openOnTop: { type: Boolean as PropType<boolean>, default: false },
172
+ internalModelValue: { type: [Date, Array] as PropType<InternalModuleValue>, default: null },
173
+ noOverlayFocus: { type: Boolean as PropType<boolean>, default: false },
174
+ collapse: { type: Boolean as PropType<boolean>, default: false },
175
+ getInputRect: { type: Function as PropType<() => DOMRect>, default: () => ({}) },
176
+ isTextInputDate: { type: Boolean as PropType<boolean>, default: false },
177
+ });
178
+
179
+ const dpMenuRef = ref<HTMLElement | null>(null);
180
+
181
+ const baseProps = computed(() => {
182
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
+ const { openOnTop, ...initProps } = props;
184
+ return {
185
+ ...initProps,
186
+ flowStep: flowStep.value,
187
+ collapse: props.collapse,
188
+ noOverlayFocus: props.noOverlayFocus,
189
+ menuWrapRef: dpMenuRef.value,
190
+ };
191
+ });
192
+
193
+ const { setMenuFocused, setShiftKey, control } = useState();
194
+ const slots = useSlots();
195
+ const { defaultedTextInput, defaultedInline, defaultedConfig, defaultedUI } = useDefaults(props);
196
+
197
+ const calendarWrapperRef = ref(null);
198
+ const calendarWidth = ref(0);
199
+ const innerMenuRef = ref(null);
200
+ const menuMount = ref(false);
201
+ const dynCmpRef = ref<any>(null);
202
+
203
+ onMounted(() => {
204
+ if (!props.shadow) {
205
+ menuMount.value = true;
206
+ getCalendarWidth();
207
+ window.addEventListener('resize', getCalendarWidth);
208
+
209
+ const menu = unrefElement(dpMenuRef);
210
+ if (menu && !defaultedTextInput.value.enabled && !defaultedInline.value.enabled) {
211
+ setMenuFocused(true);
212
+ focusMenu();
213
+ }
214
+ if (menu) {
215
+ const stopDefault = (event: Event) => {
216
+ if (defaultedConfig.value.allowPreventDefault) {
217
+ event.preventDefault();
218
+ }
219
+ checkStopPropagation(event, defaultedConfig.value, true);
220
+ };
221
+ menu.addEventListener('pointerdown', stopDefault);
222
+ menu.addEventListener('mousedown', stopDefault);
223
+ }
224
+ }
225
+ });
226
+
227
+ onUnmounted(() => {
228
+ window.removeEventListener('resize', getCalendarWidth);
229
+ });
230
+
231
+ const getCalendarWidth = (): void => {
232
+ const el = unrefElement(innerMenuRef);
233
+ if (el) {
234
+ calendarWidth.value = el.getBoundingClientRect().width;
235
+ }
236
+ };
237
+
238
+ const { arrowRight, arrowLeft, arrowDown, arrowUp } = useArrowNavigation();
239
+ const { flowStep, updateFlowStep, childMount, resetFlow, handleFlow } = useFlow(props, emit, dynCmpRef);
240
+
241
+ const displayComponent = computed(() => {
242
+ if (props.monthPicker) return MonthPicker;
243
+ if (props.yearPicker) return YearPicker;
244
+ if (props.timePicker) return TimePickerSolo;
245
+ if (props.quarterPicker) return QuarterPicker;
246
+ return DatePicker;
247
+ });
248
+
249
+ const arrowPos = computed(() => {
250
+ if (defaultedConfig.value.arrowLeft) return defaultedConfig.value.arrowLeft;
251
+ const menuRect = dpMenuRef.value?.getBoundingClientRect();
252
+ const inputRect = props.getInputRect();
253
+ if (inputRect?.width < calendarWidth?.value && inputRect?.left <= (menuRect?.left ?? 0)) {
254
+ return `${inputRect?.width / 2}px`;
255
+ } else if (inputRect?.right >= (menuRect?.right ?? 0) && inputRect?.width < calendarWidth?.value) {
256
+ return `${calendarWidth?.value - inputRect?.width / 2}px`;
257
+ }
258
+ return '50%';
259
+ });
260
+
261
+ const focusMenu = (): void => {
262
+ const menu = unrefElement(dpMenuRef);
263
+ if (menu) {
264
+ menu.focus({ preventScroll: true });
265
+ }
266
+ };
267
+
268
+ const getSidebarProps = computed(() => dynCmpRef.value?.getSidebarProps() || {});
269
+
270
+ const recalculatePosition = () => {
271
+ if (props.openOnTop) {
272
+ emit('recalculate-position');
273
+ }
274
+ };
275
+
276
+ const actionSlots = mapSlots(slots, 'action');
277
+
278
+ const sharedSlots = computed(() => {
279
+ if (props.monthPicker || props.yearPicker) return mapSlots(slots, 'monthYear');
280
+ if (props.timePicker) return mapSlots(slots, 'timePicker');
281
+ return mapSlots(slots, 'shared');
282
+ });
283
+
284
+ const arrowClass = computed(() => (!props.openOnTop ? 'dp__arrow_top' : 'dp__arrow_bottom'));
285
+
286
+ const disabledReadonlyOverlay = computed(() => ({
287
+ dp__menu_disabled: props.disabled,
288
+ dp__menu_readonly: props.readonly,
289
+ 'dp-menu-loading': props.loading,
290
+ }));
291
+
292
+ const dpMenuClass = computed(
293
+ (): DynamicClass => ({
294
+ dp__menu: true,
295
+ dp__menu_index: !defaultedInline.value.enabled,
296
+ dp__relative: defaultedInline.value.enabled,
297
+ ...(defaultedUI.value.menu ?? {}),
298
+ }),
299
+ );
300
+
301
+ const handleDpMenuClick = (ev: Event) => {
302
+ checkStopPropagation(ev, defaultedConfig.value, true);
303
+ };
304
+
305
+ const handleEsc = (): void => {
306
+ if (props.escClose) {
307
+ emit('close-picker');
308
+ }
309
+ };
310
+
311
+ const handleArrowKey = (arrow: ArrowDirection): void => {
312
+ if (props.arrowNavigation) {
313
+ if (arrow === ArrowDirection.up) return arrowUp();
314
+ if (arrow === ArrowDirection.down) return arrowDown();
315
+ if (arrow === ArrowDirection.left) return arrowLeft();
316
+ if (arrow === ArrowDirection.right) return arrowRight();
317
+ } else if (arrow === ArrowDirection.left || arrow === ArrowDirection.up) {
318
+ callChildFn('handleArrow', ArrowDirection.left, 0, arrow === ArrowDirection.up);
319
+ } else {
320
+ callChildFn('handleArrow', ArrowDirection.right, 0, arrow === ArrowDirection.down);
321
+ }
322
+ };
323
+
324
+ const checkShiftKey = (ev: KeyboardEvent) => {
325
+ setShiftKey(ev.shiftKey);
326
+ if (!props.disableMonthYearSelect && ev.code === EventKey.tab) {
327
+ if ((ev.target as HTMLElement).classList.contains('dp__menu') && control.value.shiftKeyInMenu) {
328
+ ev.preventDefault();
329
+ checkStopPropagation(ev, defaultedConfig.value, true);
330
+ emit('close-picker');
331
+ }
332
+ }
333
+ };
334
+
335
+ const onTimePickerClose = () => {
336
+ focusMenu();
337
+ emit('time-picker-close');
338
+ };
339
+
340
+ const closeOverlays = (instance: number) => {
341
+ dynCmpRef.value?.toggleTimePicker(false, false);
342
+ dynCmpRef.value?.toggleMonthPicker(false, false, instance);
343
+ dynCmpRef.value?.toggleYearPicker(false, false, instance);
344
+ };
345
+
346
+ const switchView = (view: MenuView, instance = 0) => {
347
+ if (view === 'month') return dynCmpRef.value?.toggleMonthPicker(false, true, instance);
348
+ if (view === 'year') return dynCmpRef.value?.toggleYearPicker(false, true, instance);
349
+ if (view === 'time') return dynCmpRef.value?.toggleTimePicker(true, false);
350
+ return closeOverlays(instance);
351
+ };
352
+
353
+ const callChildFn = (fn: MenuExposedFn, ...args: any[]) => {
354
+ if (dynCmpRef.value?.[fn]) {
355
+ dynCmpRef.value?.[fn](...args);
356
+ }
357
+ };
358
+
359
+ const selectCurrentDate = () => {
360
+ callChildFn('selectCurrentDate');
361
+ };
362
+
363
+ const presetDate = (value: Date[] | string[] | string | Date, noTz?: boolean) => {
364
+ callChildFn('presetDate', value, noTz);
365
+ };
366
+
367
+ const clearHoverDate = () => {
368
+ callChildFn('clearHoverDate');
369
+ };
370
+
371
+ const updateMonthYear = (instance: number, value: MonthModel) => {
372
+ callChildFn('updateMonthYear', instance, value);
373
+ };
374
+
375
+ const onArrowKey = (ev: KeyboardEvent, arrow: ArrowDirection) => {
376
+ ev.preventDefault();
377
+ handleArrowKey(arrow);
378
+ };
379
+
380
+ const onKeyDown = (ev: KeyboardEvent) => {
381
+ checkShiftKey(ev);
382
+
383
+ if (ev.key === EventKey.home || ev.key === EventKey.end) {
384
+ return callChildFn(
385
+ 'selectWeekDate',
386
+ ev.key === EventKey.home,
387
+ (ev.target as HTMLElement).getAttribute('id'),
388
+ );
389
+ }
390
+ if (ev.key === EventKey.pageUp || ev.key === EventKey.pageDown) {
391
+ if (ev.shiftKey) {
392
+ callChildFn('changeYear', ev.key === EventKey.pageUp);
393
+ getElWithin(dpMenuRef.value, 'overlay-year')?.focus();
394
+ } else {
395
+ callChildFn('changeMonth', ev.key === EventKey.pageUp);
396
+ getElWithin(dpMenuRef.value, ev.key === EventKey.pageUp ? 'action-prev' : 'action-next')?.focus();
397
+ }
398
+ if ((ev.target as HTMLElement).getAttribute('id')) {
399
+ dpMenuRef.value?.focus({ preventScroll: true });
400
+ }
401
+ }
402
+
403
+ switch (ev.key) {
404
+ case EventKey.esc:
405
+ return handleEsc();
406
+ case EventKey.arrowLeft:
407
+ return onArrowKey(ev, ArrowDirection.left);
408
+ case EventKey.arrowRight:
409
+ return onArrowKey(ev, ArrowDirection.right);
410
+ case EventKey.arrowUp:
411
+ return onArrowKey(ev, ArrowDirection.up);
412
+ case EventKey.arrowDown:
413
+ return onArrowKey(ev, ArrowDirection.down);
414
+ default:
415
+ return;
416
+ }
417
+ };
418
+
419
+ defineExpose({
420
+ updateMonthYear,
421
+ switchView,
422
+ handleFlow,
423
+ });
424
+ </script>
@@ -0,0 +1,40 @@
1
+ import { createElementBlock, createElementVNode, openBlock, useAttrs } from 'vue';
2
+
3
+ function render() {
4
+ const attrs = useAttrs();
5
+ return (
6
+ openBlock(),
7
+ createElementBlock(
8
+ 'svg',
9
+ {
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ viewBox: '0 0 32 32',
12
+ fill: 'currentColor',
13
+ 'aria-hidden': 'true',
14
+ class: 'dp__icon',
15
+ role: 'img 2',
16
+ ...attrs,
17
+ },
18
+ [
19
+ createElementVNode('path', {
20
+ d: 'M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z',
21
+ }),
22
+ createElementVNode('path', {
23
+ d: 'M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z',
24
+ }),
25
+ createElementVNode('path', {
26
+ d: 'M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z',
27
+ }),
28
+ createElementVNode('path', {
29
+ d: 'M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z',
30
+ }),
31
+ ],
32
+ )
33
+ );
34
+ }
35
+
36
+ render.compatConfig = {
37
+ MODE: 3,
38
+ };
39
+
40
+ export default render;
@@ -0,0 +1,32 @@
1
+ import { createElementBlock, createElementVNode, openBlock } from 'vue';
2
+
3
+ function render() {
4
+ return (
5
+ openBlock(),
6
+ createElementBlock(
7
+ 'svg',
8
+ {
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewBox: '0 0 32 32',
11
+ fill: 'currentColor',
12
+ 'aria-hidden': 'true',
13
+ class: 'dp__icon',
14
+ role: 'img',
15
+ },
16
+ [
17
+ createElementVNode('path', {
18
+ d: 'M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z',
19
+ }),
20
+ createElementVNode('path', {
21
+ d: 'M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z',
22
+ }),
23
+ ],
24
+ )
25
+ );
26
+ }
27
+
28
+ render.compatConfig = {
29
+ MODE: 3,
30
+ };
31
+
32
+ export default render;
@@ -0,0 +1,29 @@
1
+ import { createElementBlock, createElementVNode, openBlock } from 'vue';
2
+
3
+ function render() {
4
+ return (
5
+ openBlock(),
6
+ createElementBlock(
7
+ 'svg',
8
+ {
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewBox: '0 0 32 32',
11
+ fill: 'currentColor',
12
+ 'aria-hidden': 'true',
13
+ class: 'dp__icon',
14
+ role: 'img',
15
+ },
16
+ [
17
+ createElementVNode('path', {
18
+ d: 'M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z',
19
+ }),
20
+ ],
21
+ )
22
+ );
23
+ }
24
+
25
+ render.compatConfig = {
26
+ MODE: 3,
27
+ };
28
+
29
+ export default render;
@@ -0,0 +1,29 @@
1
+ import { createElementBlock, createElementVNode, openBlock } from 'vue';
2
+
3
+ function render() {
4
+ return (
5
+ openBlock(),
6
+ createElementBlock(
7
+ 'svg',
8
+ {
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewBox: '0 0 32 32',
11
+ fill: 'currentColor',
12
+ 'aria-hidden': 'true',
13
+ class: 'dp__icon',
14
+ role: 'img',
15
+ },
16
+ [
17
+ createElementVNode('path', {
18
+ d: 'M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z',
19
+ }),
20
+ ],
21
+ )
22
+ );
23
+ }
24
+
25
+ render.compatConfig = {
26
+ MODE: 3,
27
+ };
28
+
29
+ export default render;
@@ -0,0 +1,29 @@
1
+ import { createElementBlock, createElementVNode, openBlock } from 'vue';
2
+
3
+ function render() {
4
+ return (
5
+ openBlock(),
6
+ createElementBlock(
7
+ 'svg',
8
+ {
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewBox: '0 0 32 32',
11
+ fill: 'currentColor',
12
+ 'aria-hidden': 'true',
13
+ class: 'dp__icon',
14
+ role: 'img',
15
+ },
16
+ [
17
+ createElementVNode('path', {
18
+ d: 'M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z',
19
+ }),
20
+ ],
21
+ )
22
+ );
23
+ }
24
+
25
+ render.compatConfig = {
26
+ MODE: 3,
27
+ };
28
+
29
+ export default render;
@@ -0,0 +1,29 @@
1
+ import { createElementBlock, createElementVNode, openBlock } from 'vue';
2
+
3
+ function render() {
4
+ return (
5
+ openBlock(),
6
+ createElementBlock(
7
+ 'svg',
8
+ {
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewBox: '0 0 32 32',
11
+ fill: 'currentColor',
12
+ 'aria-hidden': 'true',
13
+ class: 'dp__icon',
14
+ role: 'img',
15
+ },
16
+ [
17
+ createElementVNode('path', {
18
+ d: 'M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z',
19
+ }),
20
+ ],
21
+ )
22
+ );
23
+ }
24
+
25
+ render.compatConfig = {
26
+ MODE: 3,
27
+ };
28
+
29
+ export default render;
@@ -0,0 +1,32 @@
1
+ import { createElementBlock, createElementVNode, openBlock } from 'vue';
2
+
3
+ function render() {
4
+ return (
5
+ openBlock(),
6
+ createElementBlock(
7
+ 'svg',
8
+ {
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewBox: '0 0 32 32',
11
+ fill: 'currentColor',
12
+ 'aria-hidden': 'true',
13
+ class: 'dp__icon',
14
+ role: 'img',
15
+ },
16
+ [
17
+ createElementVNode('path', {
18
+ d: 'M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z',
19
+ }),
20
+ createElementVNode('path', {
21
+ d: 'M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z',
22
+ }),
23
+ ],
24
+ )
25
+ );
26
+ }
27
+
28
+ render.compatConfig = {
29
+ MODE: 3,
30
+ };
31
+
32
+ export default render;
@@ -0,0 +1,8 @@
1
+ // The only reason this file exists is to appease Vite's optimizeDeps feature which requires a root-level import.
2
+ export { default as CalendarIcon } from './CalendarIcon';
3
+ export { default as CancelIcon } from './CancelIcon';
4
+ export { default as ChevronLeftIcon } from './ChevronLeftIcon';
5
+ export { default as ChevronRightIcon } from './ChevronRightIcon';
6
+ export { default as ClockIcon } from './ClockIcon';
7
+ export { default as ChevronUpIcon } from './ChevronUpIcon';
8
+ export { default as ChevronDownIcon } from './ChevronDownIcon';