@dialpad/dialtone-vue 2.124.0 → 2.125.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/_plugin-vue2_normalizer-u6G_3nkj.js +33 -0
- package/dist/chunks/_plugin-vue2_normalizer-u6G_3nkj.js.map +1 -0
- package/dist/chunks/dropdown-SMWaTWyF.js +357 -0
- package/dist/chunks/dropdown-SMWaTWyF.js.map +1 -0
- package/dist/chunks/dropdown_constants-EUcDxBrX.js +9 -0
- package/dist/chunks/dropdown_constants-EUcDxBrX.js.map +1 -0
- package/dist/chunks/icon_constants-OpYAAKwF.js +16 -0
- package/dist/chunks/icon_constants-OpYAAKwF.js.map +1 -0
- package/dist/chunks/index-nIyl_PL6.js +372 -0
- package/dist/chunks/index-nIyl_PL6.js.map +1 -0
- package/dist/chunks/index-o4OMWMuv.js +244 -0
- package/dist/chunks/index-o4OMWMuv.js.map +1 -0
- package/dist/chunks/input-1tm09l_-.js +273 -0
- package/dist/chunks/input-1tm09l_-.js.map +1 -0
- package/dist/chunks/input_group-zcAq3DQl.js +141 -0
- package/dist/chunks/input_group-zcAq3DQl.js.map +1 -0
- package/dist/chunks/keyboard_list_navigation-F0O8nht0.js +197 -0
- package/dist/chunks/keyboard_list_navigation-F0O8nht0.js.map +1 -0
- package/dist/chunks/link_constants-vIUB92L4.js +16 -0
- package/dist/chunks/link_constants-vIUB92L4.js.map +1 -0
- package/dist/chunks/list_item_constants-LTUc74pD.js +13 -0
- package/dist/chunks/list_item_constants-LTUc74pD.js.map +1 -0
- package/dist/chunks/modal-VuMFkZFH.js +82 -0
- package/dist/chunks/modal-VuMFkZFH.js.map +1 -0
- package/dist/chunks/notice_action-9NmtQRai.js +182 -0
- package/dist/chunks/notice_action-9NmtQRai.js.map +1 -0
- package/dist/chunks/notice_constants-c--hBFQw.js +6 -0
- package/dist/chunks/notice_constants-c--hBFQw.js.map +1 -0
- package/dist/chunks/popover_constants-qjlEkroB.js +114 -0
- package/dist/chunks/popover_constants-qjlEkroB.js.map +1 -0
- package/dist/chunks/sr_only_close_button-JGole5Xi.js +86 -0
- package/dist/chunks/sr_only_close_button-JGole5Xi.js.map +1 -0
- package/dist/chunks/stack_constants-u7tNqGtc.js +13 -0
- package/dist/chunks/stack_constants-u7tNqGtc.js.map +1 -0
- package/dist/chunks/tab-Qm9LVkYj.js +346 -0
- package/dist/chunks/tab-Qm9LVkYj.js.map +1 -0
- package/dist/component-documentation.json +1 -1
- package/dist/dialtone-vue.js +356 -10364
- package/dist/dialtone-vue.js.map +1 -0
- package/dist/lib/attachment-carousel.js +250 -0
- package/dist/lib/attachment-carousel.js.map +1 -0
- package/dist/lib/avatar.js +369 -0
- package/dist/lib/avatar.js.map +1 -0
- package/dist/lib/badge.js +169 -0
- package/dist/lib/badge.js.map +1 -0
- package/dist/lib/banner.js +200 -0
- package/dist/lib/banner.js.map +1 -0
- package/dist/lib/breadcrumbs.js +138 -0
- package/dist/lib/breadcrumbs.js.map +1 -0
- package/dist/lib/button-group.js +45 -0
- package/dist/lib/button-group.js.map +1 -0
- package/dist/lib/button.js +328 -0
- package/dist/lib/button.js.map +1 -0
- package/dist/lib/callbar-button-with-popover.js +235 -0
- package/dist/lib/callbar-button-with-popover.js.map +1 -0
- package/dist/lib/callbar-button.js +175 -0
- package/dist/lib/callbar-button.js.map +1 -0
- package/dist/lib/callbox.js +142 -0
- package/dist/lib/callbox.js.map +1 -0
- package/dist/lib/card.js +72 -0
- package/dist/lib/card.js.map +1 -0
- package/dist/lib/checkbox-group.js +117 -0
- package/dist/lib/checkbox-group.js.map +1 -0
- package/dist/lib/checkbox.js +117 -0
- package/dist/lib/checkbox.js.map +1 -0
- package/dist/lib/chip.js +186 -0
- package/dist/lib/chip.js.map +1 -0
- package/dist/lib/codeblock.js +29 -0
- package/dist/lib/codeblock.js.map +1 -0
- package/dist/lib/collapsible.js +313 -0
- package/dist/lib/collapsible.js.map +1 -0
- package/dist/lib/combobox-multi-select.js +433 -0
- package/dist/lib/combobox-multi-select.js.map +1 -0
- package/dist/lib/combobox-with-popover.js +341 -0
- package/dist/lib/combobox-with-popover.js.map +1 -0
- package/dist/lib/combobox.js +19 -0
- package/dist/lib/combobox.js.map +1 -0
- package/dist/lib/constants.js +53 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/contact-info.js +145 -0
- package/dist/lib/contact-info.js.map +1 -0
- package/dist/lib/contact-row.js +203 -0
- package/dist/lib/contact-row.js.map +1 -0
- package/dist/lib/datepicker.js +552 -0
- package/dist/lib/datepicker.js.map +1 -0
- package/dist/lib/dates.js +57 -0
- package/dist/lib/dates.js.map +1 -0
- package/dist/lib/description-list.js +83 -0
- package/dist/lib/description-list.js.map +1 -0
- package/dist/lib/dropdown.js +45 -0
- package/dist/lib/dropdown.js.map +1 -0
- package/dist/lib/editor.js +527 -0
- package/dist/lib/editor.js.map +1 -0
- package/dist/{emoji_picker-kiTOKaq8.js → lib/emoji-picker.js} +30 -11
- package/dist/lib/emoji-picker.js.map +1 -0
- package/dist/lib/emoji-row.js +83 -0
- package/dist/lib/emoji-row.js.map +1 -0
- package/dist/{emoji_text_wrapper-48ClwKvf.js → lib/emoji-text-wrapper.js} +19 -13
- package/dist/lib/emoji-text-wrapper.js.map +1 -0
- package/dist/lib/emoji.js +11 -0
- package/dist/lib/emoji.js.map +1 -0
- package/dist/lib/feed-item-row.js +207 -0
- package/dist/lib/feed-item-row.js.map +1 -0
- package/dist/lib/feed-pill.js +142 -0
- package/dist/lib/feed-pill.js.map +1 -0
- package/dist/lib/general-row.js +379 -0
- package/dist/lib/general-row.js.map +1 -0
- package/dist/lib/group-row.js +115 -0
- package/dist/lib/group-row.js.map +1 -0
- package/dist/lib/grouped-chip.js +45 -0
- package/dist/lib/grouped-chip.js.map +1 -0
- package/dist/lib/hovercard.js +194 -0
- package/dist/lib/hovercard.js.map +1 -0
- package/dist/lib/icon.js +82 -0
- package/dist/lib/icon.js.map +1 -0
- package/dist/lib/image-viewer.js +171 -0
- package/dist/lib/image-viewer.js.map +1 -0
- package/dist/lib/input-group.js +90 -0
- package/dist/lib/input-group.js.map +1 -0
- package/dist/lib/input.js +455 -0
- package/dist/lib/input.js.map +1 -0
- package/dist/lib/item-layout.js +39 -0
- package/dist/lib/item-layout.js.map +1 -0
- package/dist/lib/ivr-node.js +195 -0
- package/dist/lib/ivr-node.js.map +1 -0
- package/dist/lib/keyboard-shortcut.js +100 -0
- package/dist/lib/keyboard-shortcut.js.map +1 -0
- package/dist/lib/lazy-show.js +77 -0
- package/dist/lib/lazy-show.js.map +1 -0
- package/dist/lib/link.js +69 -0
- package/dist/lib/link.js.map +1 -0
- package/dist/lib/list-item-group.js +59 -0
- package/dist/lib/list-item-group.js.map +1 -0
- package/dist/lib/list-item.js +195 -0
- package/dist/lib/list-item.js.map +1 -0
- package/dist/{message_input.js → lib/message-input.js} +107 -55
- package/dist/lib/message-input.js.map +1 -0
- package/dist/lib/mixins.js +17 -0
- package/dist/lib/mixins.js.map +1 -0
- package/dist/lib/modal.js +324 -0
- package/dist/lib/modal.js.map +1 -0
- package/dist/lib/notice.js +158 -0
- package/dist/lib/notice.js.map +1 -0
- package/dist/lib/pagination.js +142 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/popover.js +779 -0
- package/dist/lib/popover.js.map +1 -0
- package/dist/lib/presence.js +60 -0
- package/dist/lib/presence.js.map +1 -0
- package/dist/lib/radio-group.js +97 -0
- package/dist/lib/radio-group.js.map +1 -0
- package/dist/lib/radio.js +111 -0
- package/dist/lib/radio.js.map +1 -0
- package/dist/lib/rich-text-editor.js +920 -0
- package/dist/lib/rich-text-editor.js.map +1 -0
- package/dist/lib/root-layout.js +127 -0
- package/dist/lib/root-layout.js.map +1 -0
- package/dist/lib/select-menu.js +243 -0
- package/dist/lib/select-menu.js.map +1 -0
- package/dist/lib/settings-menu-button.js +65 -0
- package/dist/lib/settings-menu-button.js.map +1 -0
- package/dist/lib/skeleton.js +574 -0
- package/dist/lib/skeleton.js.map +1 -0
- package/dist/lib/stack.js +118 -0
- package/dist/lib/stack.js.map +1 -0
- package/dist/lib/tabs.js +93 -0
- package/dist/lib/tabs.js.map +1 -0
- package/dist/lib/time-pill.js +43 -0
- package/dist/lib/time-pill.js.map +1 -0
- package/dist/lib/toast.js +226 -0
- package/dist/lib/toast.js.map +1 -0
- package/dist/lib/toggle.js +169 -0
- package/dist/lib/toggle.js.map +1 -0
- package/dist/{directives.js → lib/tooltip-directive.js} +24 -17
- package/dist/lib/tooltip-directive.js.map +1 -0
- package/dist/lib/tooltip.js +376 -0
- package/dist/lib/tooltip.js.map +1 -0
- package/dist/lib/top-banner-info.js +60 -0
- package/dist/lib/top-banner-info.js.map +1 -0
- package/dist/lib/unread-pill.js +61 -0
- package/dist/lib/unread-pill.js.map +1 -0
- package/dist/lib/utils.js +175 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/validation-messages.js +83 -0
- package/dist/lib/validation-messages.js.map +1 -0
- package/dist/lib/validators.js +12 -0
- package/dist/lib/validators.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/types/common/{constants.d.ts → constants/index.d.ts} +1 -1
- package/dist/types/common/constants/index.d.ts.map +1 -0
- package/dist/types/common/{dates.d.ts → dates/index.d.ts} +1 -1
- package/dist/types/common/dates/index.d.ts.map +1 -0
- package/dist/types/common/{emoji.d.ts → emoji/index.d.ts} +1 -1
- package/dist/types/common/{emoji.d.ts.map → emoji/index.d.ts.map} +1 -1
- package/dist/types/common/{utils.d.ts → utils/index.d.ts} +1 -1
- package/dist/types/common/utils/index.d.ts.map +1 -0
- package/dist/types/common/{validators.d.ts → validators/index.d.ts} +1 -1
- package/dist/types/common/validators/index.d.ts.map +1 -0
- package/dist/types/components/avatar/avatar.vue.d.ts +1 -1
- package/dist/types/components/button/button.vue.d.ts +2 -2
- package/dist/types/components/card/card.vue.d.ts +1 -1
- package/dist/types/components/checkbox/checkbox.vue.d.ts +7 -7
- package/dist/types/components/checkbox/checkbox.vue.d.ts.map +1 -1
- package/dist/types/components/chip/chip.vue.d.ts +2 -2
- package/dist/types/components/collapsible/collapsible.vue.d.ts +3 -3
- package/dist/types/components/combobox/combobox.vue.d.ts +7 -8
- package/dist/types/components/combobox/combobox.vue.d.ts.map +1 -1
- package/dist/types/components/dropdown/dropdown.vue.d.ts +1 -1
- package/dist/types/components/emoji/emoji.vue.d.ts +1 -1
- package/dist/types/components/emoji_picker/modules/emoji_selector.vue.d.ts +1 -219
- package/dist/types/components/icon/icon.vue.d.ts +20 -16
- package/dist/types/components/icon/icon.vue.d.ts.map +1 -1
- package/dist/types/components/icon/icon_constants.d.ts +2 -0
- package/dist/types/components/icon/icon_constants.d.ts.map +1 -1
- package/dist/types/components/icon/index.d.ts +1 -1
- package/dist/types/components/input_group/input_group.vue.d.ts +15 -6
- package/dist/types/components/input_group/input_group.vue.d.ts.map +1 -1
- package/dist/types/components/list_item_group/list_item_group.vue.d.ts +1 -1
- package/dist/types/components/modal/modal.vue.d.ts +7 -2
- package/dist/types/components/modal/modal.vue.d.ts.map +1 -1
- package/dist/types/components/notice/notice_action.vue.d.ts +3 -1
- package/dist/types/components/notice/notice_action.vue.d.ts.map +1 -1
- package/dist/types/components/popover/popover_header_footer.vue.d.ts +1 -1
- package/dist/types/components/radio/radio.vue.d.ts +2 -12
- package/dist/types/components/radio/radio.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +1 -1
- package/dist/types/components/skeleton/skeleton-list-item.vue.d.ts +1 -1
- package/dist/types/components/skeleton/skeleton-paragraph.vue.d.ts +3 -3
- package/dist/types/components/skeleton/skeleton-shape.vue.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton-text.vue.d.ts +8 -3
- package/dist/types/components/skeleton/skeleton-text.vue.d.ts.map +1 -1
- package/dist/types/components/skeleton/skeleton.vue.d.ts +1 -1
- package/dist/types/components/toggle/toggle.vue.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.vue.d.ts +2 -2
- package/dist/types/index.d.ts +36 -29
- package/dist/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +1 -1
- package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +2 -2
- package/dist/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts +1 -1
- package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +2 -2
- package/dist/types/recipes/conversation_view/editor/editor.vue.d.ts +9 -0
- package/dist/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
- package/package.json +19 -59
- package/CHANGELOG.json +0 -1
- package/CHANGELOG.md +0 -2890
- package/dist/dialtone-vue.cjs +0 -5
- package/dist/directives.cjs +0 -1
- package/dist/emoji.cjs +0 -1
- package/dist/emoji.js +0 -35
- package/dist/emoji_picker-njWWAm6V.cjs +0 -1
- package/dist/emoji_text_wrapper-ZlynvHnd.cjs +0 -1
- package/dist/index-OF94C6nQ.js +0 -142833
- package/dist/index-Wx7Jagcr.cjs +0 -1
- package/dist/message_input.cjs +0 -1
- package/dist/rich_text_editor-9sMob7ck.js +0 -16478
- package/dist/rich_text_editor-Eh5kYokw.cjs +0 -97
- package/dist/tooltip-88U5vFMA.js +0 -2516
- package/dist/tooltip-i2wxFIIi.cjs +0 -21
- package/dist/types/common/constants.d.ts.map +0 -1
- package/dist/types/common/dates.d.ts.map +0 -1
- package/dist/types/common/utils.d.ts.map +0 -1
- package/dist/types/common/validators.d.ts.map +0 -1
- package/dist/types/components/emoji_picker/emojis/index.d.ts +0 -50
- package/dist/types/components/emoji_picker/emojis/index.d.ts.map +0 -1
- package/dist/types/directives.d.ts +0 -2
- package/dist/types/directives.d.ts.map +0 -1
- package/dist/types/emoji.d.ts +0 -5
- package/dist/types/emoji.d.ts.map +0 -1
- package/dist/types/message_input.d.ts +0 -3
- package/dist/types/message_input.d.ts.map +0 -1
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
import { startOfWeek as M, getDay as l, addMonths as k, startOfMonth as w, addDays as u, getDate as y, endOfMonth as x, subMonths as _, getMonth as i, isEqual as R, getYear as d, set as L, format as Y } from "date-fns";
|
|
2
|
+
import { DtStack as g } from "./stack.js";
|
|
3
|
+
import { DtTooltip as T } from "./tooltip.js";
|
|
4
|
+
import { DtButton as b } from "./button.js";
|
|
5
|
+
import { n as m } from "../chunks/_plugin-vue2_normalizer-u6G_3nkj.js";
|
|
6
|
+
import { DtIcon as S } from "./icon.js";
|
|
7
|
+
import "../chunks/stack_constants-u7tNqGtc.js";
|
|
8
|
+
import "../chunks/popover_constants-qjlEkroB.js";
|
|
9
|
+
import "tippy.js";
|
|
10
|
+
import "./utils.js";
|
|
11
|
+
import "./constants.js";
|
|
12
|
+
import "vue";
|
|
13
|
+
import "./lazy-show.js";
|
|
14
|
+
import "../chunks/link_constants-vIUB92L4.js";
|
|
15
|
+
import "@dialpad/dialtone-icons/vue2";
|
|
16
|
+
import "../chunks/icon_constants-OpYAAKwF.js";
|
|
17
|
+
import "@dialpad/dialtone-icons/icons.json";
|
|
18
|
+
import "./skeleton.js";
|
|
19
|
+
const $ = 0, P = "MMMM", C = "long", f = (t) => t ? new Date(t) : /* @__PURE__ */ new Date(), F = (t, e, a) => {
|
|
20
|
+
const r = f(JSON.parse(JSON.stringify(t))), n = [];
|
|
21
|
+
for (let s = 0; s < 7; s++) {
|
|
22
|
+
const o = u(r, s), c = i(o) !== e;
|
|
23
|
+
n.push({
|
|
24
|
+
text: o.getDate(),
|
|
25
|
+
value: o,
|
|
26
|
+
currentMonth: !c,
|
|
27
|
+
isFirstDayOfMonth: o.getDate() === 1 && !c,
|
|
28
|
+
// will be selected if the date is the same as the selected day and is from the current month
|
|
29
|
+
selected: a ? o.getDate() === a && !c : !1
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return n;
|
|
33
|
+
}, q = (t, e) => !t || !e ? !1 : R(t, e), N = (t, e, a) => {
|
|
34
|
+
const r = [], n = f(new Date(e, t)), s = f(new Date(e, t + 1, 0)), c = M(n, { weekStartsOn: $ }), p = (D) => {
|
|
35
|
+
const v = F(D, t, a);
|
|
36
|
+
if (r.push({ days: v }), !r[r.length - 1].days.some(
|
|
37
|
+
(h) => q(h.value, s)
|
|
38
|
+
)) {
|
|
39
|
+
const h = u(D, 7);
|
|
40
|
+
p(h);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return p(c), r;
|
|
44
|
+
}, O = (t, e) => {
|
|
45
|
+
const a = [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 = a.slice(0, e), n = a.slice(e + 1, a.length);
|
|
46
|
+
return [a[e]].concat(...n).concat(...r);
|
|
47
|
+
}, A = (t, e, a) => new Intl.DateTimeFormat(a, { month: e }).format(new Date(2e3, t, 1)), B = (t) => {
|
|
48
|
+
const e = new Date(t), a = l(e), r = k(e, 1), n = w(r), s = l(n), o = (a - s + 7) % 7, c = u(n, o);
|
|
49
|
+
return y(c);
|
|
50
|
+
}, I = (t) => {
|
|
51
|
+
const e = new Date(t), a = l(e);
|
|
52
|
+
let n = x(_(e, 1));
|
|
53
|
+
for (; l(n) !== a; )
|
|
54
|
+
n = u(n, -1);
|
|
55
|
+
return y(n);
|
|
56
|
+
}, z = {
|
|
57
|
+
name: "DtDatepickerMonthYearPicker",
|
|
58
|
+
components: { DtButton: b, DtTooltip: T, DtStack: g, DtIcon: S },
|
|
59
|
+
props: {
|
|
60
|
+
locale: {
|
|
61
|
+
type: String,
|
|
62
|
+
required: !0
|
|
63
|
+
},
|
|
64
|
+
prevMonthLabel: {
|
|
65
|
+
type: String,
|
|
66
|
+
required: !0
|
|
67
|
+
},
|
|
68
|
+
nextMonthLabel: {
|
|
69
|
+
type: String,
|
|
70
|
+
required: !0
|
|
71
|
+
},
|
|
72
|
+
prevYearLabel: {
|
|
73
|
+
type: String,
|
|
74
|
+
required: !0
|
|
75
|
+
},
|
|
76
|
+
nextYearLabel: {
|
|
77
|
+
type: String,
|
|
78
|
+
required: !0
|
|
79
|
+
},
|
|
80
|
+
changeToLabel: {
|
|
81
|
+
type: String,
|
|
82
|
+
required: !0
|
|
83
|
+
},
|
|
84
|
+
selectedDate: {
|
|
85
|
+
type: Date,
|
|
86
|
+
required: !0
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
emits: [
|
|
90
|
+
/**
|
|
91
|
+
* Will retrieve the calendar days of the given date
|
|
92
|
+
*
|
|
93
|
+
* @event calendar-days
|
|
94
|
+
* @type {Array}
|
|
95
|
+
*/
|
|
96
|
+
"calendar-days",
|
|
97
|
+
/**
|
|
98
|
+
* Will focus first day in calendar
|
|
99
|
+
*
|
|
100
|
+
* @event focus-first-day
|
|
101
|
+
*/
|
|
102
|
+
"focus-first-day",
|
|
103
|
+
/**
|
|
104
|
+
* Will focus last day in calendar
|
|
105
|
+
*
|
|
106
|
+
* @event focus-last-day
|
|
107
|
+
*/
|
|
108
|
+
"focus-last-day",
|
|
109
|
+
/**
|
|
110
|
+
* Will close the datepicker
|
|
111
|
+
*
|
|
112
|
+
* @event close-datepicker
|
|
113
|
+
*/
|
|
114
|
+
"close-datepicker"
|
|
115
|
+
],
|
|
116
|
+
data() {
|
|
117
|
+
return {
|
|
118
|
+
selectMonth: i(this.selectedDate),
|
|
119
|
+
selectYear: d(this.selectedDate),
|
|
120
|
+
highlightedDay: null,
|
|
121
|
+
focusPicker: 0,
|
|
122
|
+
focusRefs: [],
|
|
123
|
+
refNames: ["prevYearButtonRef", "prevMonthButtonRef", "nextMonthButtonRef", "nextYearButtonRef"]
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
computed: {
|
|
127
|
+
// Get days for the currently selected month and year and highlight the selected day
|
|
128
|
+
calendarDays() {
|
|
129
|
+
return N(this.selectMonth, this.selectYear, this.highlightedDay);
|
|
130
|
+
},
|
|
131
|
+
formattedMonth() {
|
|
132
|
+
return (t) => A(t, C, this.locale);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
watch: {
|
|
136
|
+
selectMonth: {
|
|
137
|
+
handler() {
|
|
138
|
+
this.highlightDay(), this.$emit("calendar-days", this.calendarDays);
|
|
139
|
+
},
|
|
140
|
+
immediate: !0
|
|
141
|
+
},
|
|
142
|
+
selectYear: {
|
|
143
|
+
handler() {
|
|
144
|
+
this.highlightDay(), this.$emit("calendar-days", this.calendarDays);
|
|
145
|
+
},
|
|
146
|
+
immediate: !0
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
mounted() {
|
|
150
|
+
this.setButtonsRef(), this.focusMonthYearPicker();
|
|
151
|
+
},
|
|
152
|
+
methods: {
|
|
153
|
+
setButtonsRef() {
|
|
154
|
+
this.focusRefs = this.refNames.map((t) => this.$refs[t]);
|
|
155
|
+
},
|
|
156
|
+
focusMonthYearPicker() {
|
|
157
|
+
this.focusPicker = 0, this.focusRefs[0].$el.focus();
|
|
158
|
+
},
|
|
159
|
+
handleKeyDown(t) {
|
|
160
|
+
switch (t.key) {
|
|
161
|
+
case "ArrowLeft":
|
|
162
|
+
t.preventDefault(), this.focusPicker === 0 ? (this.focusPicker = 3, this.focusRefs[this.focusPicker].$el.focus()) : (this.focusPicker--, this.focusRefs[this.focusPicker].$el.focus());
|
|
163
|
+
break;
|
|
164
|
+
case "ArrowRight":
|
|
165
|
+
t.preventDefault(), this.focusPicker === 3 ? (this.focusPicker = 0, this.focusRefs[this.focusPicker].$el.focus()) : (this.focusPicker++, this.focusRefs[this.focusPicker].$el.focus());
|
|
166
|
+
break;
|
|
167
|
+
case "ArrowDown":
|
|
168
|
+
t.preventDefault(), this.$emit("focus-first-day");
|
|
169
|
+
break;
|
|
170
|
+
case "Tab":
|
|
171
|
+
t.preventDefault(), this.$emit("focus-first-day");
|
|
172
|
+
break;
|
|
173
|
+
case "Escape":
|
|
174
|
+
this.$emit("close-datepicker");
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
highlightDay() {
|
|
179
|
+
const t = d(this.selectedDate), e = i(this.selectedDate);
|
|
180
|
+
t !== this.selectYear || e !== this.selectMonth ? this.highlightedDay = null : this.highlightedDay = y(this.selectedDate);
|
|
181
|
+
},
|
|
182
|
+
changeMonth(t) {
|
|
183
|
+
(this.selectMonth === 0 && t === -1 || this.selectMonth === 11 && t === 1) && (this.selectYear += t);
|
|
184
|
+
const e = L(this.selectedDate, { month: this.selectMonth, year: this.selectYear }), a = t === 1 ? k(e, 1) : _(e, 1);
|
|
185
|
+
this.selectMonth = i(a);
|
|
186
|
+
},
|
|
187
|
+
changeYear(t) {
|
|
188
|
+
this.selectYear = this.selectYear + t;
|
|
189
|
+
},
|
|
190
|
+
goToNextMonth() {
|
|
191
|
+
this.changeMonth(1);
|
|
192
|
+
},
|
|
193
|
+
goToPrevMonth() {
|
|
194
|
+
this.changeMonth(-1);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
var K = function() {
|
|
199
|
+
var e = this, a = e._self._c;
|
|
200
|
+
return a("dt-stack", { staticClass: "d-datepicker__month-year", attrs: { direction: "row", gap: "300" } }, [a("dt-stack", { staticClass: "d-datepicker__nav", attrs: { as: "nav", direction: "row", gap: "200" } }, [a("dt-tooltip", { attrs: { message: e.prevYearLabel, placement: "top" }, scopedSlots: e._u([{ key: "anchor", fn: function() {
|
|
201
|
+
return [a("dt-button", { ref: e.refNames[0], staticClass: "d-datepicker__nav-btn", attrs: { id: "prevYearButton", size: "xs", importance: "clear", kind: "muted", circle: !0, type: "button", "aria-label": `${e.changeToLabel} ${e.prevYearLabel} ${e.selectYear - 1}` }, on: { click: function(r) {
|
|
202
|
+
return e.changeYear(-1);
|
|
203
|
+
}, keydown: function(r) {
|
|
204
|
+
return e.handleKeyDown(r);
|
|
205
|
+
} } }, [a("dt-icon", { attrs: { name: "chevrons-left", size: "200" } })], 1)];
|
|
206
|
+
}, proxy: !0 }]) }), a("dt-tooltip", { attrs: { message: e.prevMonthLabel, placement: "top" }, scopedSlots: e._u([{ key: "anchor", fn: function() {
|
|
207
|
+
return [a("dt-button", { ref: e.refNames[1], staticClass: "d-datepicker__nav-btn", attrs: { id: "prevMonthButton", size: "xs", importance: "clear", kind: "muted", circle: !0, type: "button", "aria-label": `${e.changeToLabel} ${e.prevMonthLabel} ${e.formattedMonth(e.selectMonth - 1)}` }, on: { click: function(r) {
|
|
208
|
+
return e.changeMonth(-1);
|
|
209
|
+
}, keydown: function(r) {
|
|
210
|
+
return e.handleKeyDown(r);
|
|
211
|
+
} } }, [a("dt-icon", { attrs: { name: "chevron-left", size: "200" } })], 1)];
|
|
212
|
+
}, proxy: !0 }]) })], 1), a("div", { staticClass: "d-datepicker__month-year-title", attrs: { id: "calendar-heading" } }, [e._v(" " + e._s(e.formattedMonth(e.selectMonth)) + " " + e._s(e.selectYear) + " ")]), a("dt-stack", { staticClass: "d-datepicker__nav", attrs: { as: "nav", direction: "row", gap: "200" } }, [a("dt-tooltip", { attrs: { message: e.nextMonthLabel, placement: "top" }, scopedSlots: e._u([{ key: "anchor", fn: function() {
|
|
213
|
+
return [a("dt-button", { ref: e.refNames[2], staticClass: "d-datepicker__nav-btn", attrs: { id: "nextMonthButton", size: "xs", importance: "clear", circle: !0, kind: "muted", type: "button", "aria-label": `${e.changeToLabel} ${e.nextMonthLabel} ${e.formattedMonth(e.selectMonth + 1)}` }, on: { click: function(r) {
|
|
214
|
+
return e.changeMonth(1);
|
|
215
|
+
}, keydown: function(r) {
|
|
216
|
+
return e.handleKeyDown(r);
|
|
217
|
+
} } }, [a("dt-icon", { attrs: { name: "chevron-right", size: "200" } })], 1)];
|
|
218
|
+
}, proxy: !0 }]) }), a("dt-tooltip", { attrs: { message: e.nextYearLabel, placement: "top" }, scopedSlots: e._u([{ key: "anchor", fn: function() {
|
|
219
|
+
return [a("dt-button", { ref: e.refNames[3], staticClass: "d-datepicker__nav-btn", attrs: { id: "nextYearButton", size: "xs", kind: "muted", circle: !0, importance: "clear", type: "button", "aria-label": `${e.changeToLabel} ${e.nextYearLabel} ${e.selectYear + 1}` }, on: { click: function(r) {
|
|
220
|
+
return e.changeYear(1);
|
|
221
|
+
}, keydown: function(r) {
|
|
222
|
+
return e.handleKeyDown(r);
|
|
223
|
+
} } }, [a("dt-icon", { attrs: { name: "chevrons-right", size: "200" } })], 1)];
|
|
224
|
+
}, proxy: !0 }]) })], 1)], 1);
|
|
225
|
+
}, E = [], W = /* @__PURE__ */ m(
|
|
226
|
+
z,
|
|
227
|
+
K,
|
|
228
|
+
E,
|
|
229
|
+
!1,
|
|
230
|
+
null,
|
|
231
|
+
null,
|
|
232
|
+
null,
|
|
233
|
+
null
|
|
234
|
+
);
|
|
235
|
+
const U = W.exports, H = {
|
|
236
|
+
name: "DtDatepickerCalendar",
|
|
237
|
+
components: { DtButton: b },
|
|
238
|
+
props: {
|
|
239
|
+
calendarDays: {
|
|
240
|
+
type: Array,
|
|
241
|
+
required: !0
|
|
242
|
+
},
|
|
243
|
+
locale: {
|
|
244
|
+
type: String,
|
|
245
|
+
required: !0
|
|
246
|
+
},
|
|
247
|
+
selectDayLabel: {
|
|
248
|
+
type: String,
|
|
249
|
+
required: !0
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
emits: [
|
|
253
|
+
/**
|
|
254
|
+
* Event fired when a date is selected
|
|
255
|
+
*
|
|
256
|
+
* @event select-date
|
|
257
|
+
* @type {Date}
|
|
258
|
+
*/
|
|
259
|
+
"select-date",
|
|
260
|
+
/**
|
|
261
|
+
* Will focus the month and year picker
|
|
262
|
+
*
|
|
263
|
+
* @event focus-month-year-picker
|
|
264
|
+
*/
|
|
265
|
+
"focus-month-year-picker",
|
|
266
|
+
/**
|
|
267
|
+
* Will close the datepicker
|
|
268
|
+
*
|
|
269
|
+
* @event close-datepicker
|
|
270
|
+
*/
|
|
271
|
+
"close-datepicker"
|
|
272
|
+
],
|
|
273
|
+
data() {
|
|
274
|
+
return {
|
|
275
|
+
// local selectedDay to override the received by props calendarDays
|
|
276
|
+
selectedDay: null,
|
|
277
|
+
focusDay: 0,
|
|
278
|
+
daysRef: []
|
|
279
|
+
};
|
|
280
|
+
},
|
|
281
|
+
computed: {
|
|
282
|
+
weekDays() {
|
|
283
|
+
return O(this.locale, $);
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
watch: {
|
|
287
|
+
calendarDays() {
|
|
288
|
+
this.focusDay = 0, this.selectedDay = null, this.daysRef = [], this.$nextTick(() => {
|
|
289
|
+
this.daysRef = [], this.setDayRef();
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
methods: {
|
|
294
|
+
dayAriaLabel(t) {
|
|
295
|
+
return `${this.selectDayLabel} ${t.text} ${Y(t.value, P)} ${d(t.value)}`;
|
|
296
|
+
},
|
|
297
|
+
setDayRef(t, e) {
|
|
298
|
+
this.calendarDays.forEach((a, r) => {
|
|
299
|
+
a.days.forEach((n, s) => {
|
|
300
|
+
const o = `buttonRef_${r}_${s}`, c = this.$refs[o];
|
|
301
|
+
c && n.currentMonth && this.daysRef.push({ el: c[0], day: n });
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
},
|
|
305
|
+
handleKeyDown(t) {
|
|
306
|
+
switch (t.key) {
|
|
307
|
+
case "ArrowUp":
|
|
308
|
+
t.preventDefault(), this.focusDay -= 7;
|
|
309
|
+
try {
|
|
310
|
+
this.daysRef[this.focusDay].el.$el.focus();
|
|
311
|
+
} catch {
|
|
312
|
+
const a = I(this.daysRef[this.focusDay + 7].day.value);
|
|
313
|
+
this.$emit("go-to-prev-month"), this.$nextTick(() => {
|
|
314
|
+
this.setDayRef(), this.daysRef[a - 1].el.$el.focus(), this.focusDay += a - 1;
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
break;
|
|
318
|
+
case "ArrowDown":
|
|
319
|
+
t.preventDefault(), this.focusDay += 7;
|
|
320
|
+
try {
|
|
321
|
+
this.daysRef[this.focusDay].el.$el.focus();
|
|
322
|
+
} catch {
|
|
323
|
+
const a = B(this.daysRef[this.focusDay - 7].day.value);
|
|
324
|
+
this.$emit("go-to-next-month"), this.$nextTick(() => {
|
|
325
|
+
this.setDayRef(), this.daysRef[a - 1].el.$el.focus(), this.focusDay += a - 1;
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
case "ArrowLeft":
|
|
330
|
+
t.preventDefault(), this.focusDay > 0 ? (this.focusDay -= 1, this.daysRef[this.focusDay].el.$el.focus()) : (this.$emit("go-to-prev-month"), this.$nextTick(() => {
|
|
331
|
+
this.focusLastDay();
|
|
332
|
+
}));
|
|
333
|
+
break;
|
|
334
|
+
case "ArrowRight":
|
|
335
|
+
t.preventDefault(), this.focusDay < this.daysRef.length - 1 ? (this.focusDay += 1, this.daysRef[this.focusDay].el.$el.focus()) : (this.$emit("go-to-next-month"), this.$nextTick(() => {
|
|
336
|
+
this.focusFirstDay();
|
|
337
|
+
}));
|
|
338
|
+
break;
|
|
339
|
+
case "Tab":
|
|
340
|
+
t.preventDefault(), this.$emit("focus-month-year-picker");
|
|
341
|
+
break;
|
|
342
|
+
case "Escape":
|
|
343
|
+
this.$emit("close-datepicker");
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
focusFirstDay() {
|
|
348
|
+
this.focusDay = 0, this.$nextTick(() => {
|
|
349
|
+
this.daysRef[this.focusDay].el.$el.focus();
|
|
350
|
+
});
|
|
351
|
+
},
|
|
352
|
+
focusLastDay() {
|
|
353
|
+
this.$nextTick(() => {
|
|
354
|
+
this.focusDay = this.daysRef.length - 1, this.daysRef[this.focusDay].el.$el.focus();
|
|
355
|
+
});
|
|
356
|
+
},
|
|
357
|
+
selectDay(t) {
|
|
358
|
+
t.currentMonth && (this.selectedDay = t.text, this.$emit("select-date", t.value));
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
var J = function() {
|
|
363
|
+
var e = this, a = e._self._c;
|
|
364
|
+
return a("table", { staticClass: "d-datepicker__calendar", attrs: { "aria-labelledby": "calendar-heading" } }, [a("thead", [a("tr", e._l(e.weekDays, function(r) {
|
|
365
|
+
return a("th", { key: r, staticClass: "d-datepicker__cell d-datepicker__cell--header", attrs: { scope: "col" } }, [a("span", { staticClass: "d-datepicker__weekday", attrs: { title: r, "aria-label": r } }, [e._v(" " + e._s(r))])]);
|
|
366
|
+
}), 0)]), a("tbody", e._l(e.calendarDays, function(r, n) {
|
|
367
|
+
return a("tr", { key: n }, e._l(r.days, function(s, o) {
|
|
368
|
+
return a("td", { key: n + o, staticClass: "d-datepicker__cell", attrs: { role: "listbox" } }, [a("dt-button", { ref: `buttonRef_${n}_${o}`, refInFor: !0, staticClass: "d-datepicker__day", class: {
|
|
369
|
+
"d-datepicker__day--disabled": !s.currentMonth,
|
|
370
|
+
"d-datepicker__day--selected": e.selectedDay ? s.text === e.selectedDay && s.currentMonth : s.selected
|
|
371
|
+
}, attrs: { circle: !0, size: "sm", importance: "clear", disabled: !s.currentMonth, type: "button", "aria-selected": e.selectedDay ? s.text === e.selectedDay && s.currentMonth : s.selected, "aria-label": e.dayAriaLabel(s), role: "option" }, on: { click: function(c) {
|
|
372
|
+
return e.selectDay(s);
|
|
373
|
+
}, keydown: function(c) {
|
|
374
|
+
return e.handleKeyDown(c);
|
|
375
|
+
} } }, [e._v(" " + e._s(s.text) + " ")])], 1);
|
|
376
|
+
}), 0);
|
|
377
|
+
}), 0)]);
|
|
378
|
+
}, G = [], Z = /* @__PURE__ */ m(
|
|
379
|
+
H,
|
|
380
|
+
J,
|
|
381
|
+
G,
|
|
382
|
+
!1,
|
|
383
|
+
null,
|
|
384
|
+
null,
|
|
385
|
+
null,
|
|
386
|
+
null
|
|
387
|
+
);
|
|
388
|
+
const j = Z.exports, Q = {
|
|
389
|
+
name: "DtDatepicker",
|
|
390
|
+
components: { DtStack: g, MonthYearPicker: U, Calendar: j },
|
|
391
|
+
props: {
|
|
392
|
+
/**
|
|
393
|
+
* Label for the previous month button
|
|
394
|
+
*
|
|
395
|
+
* @type {String}
|
|
396
|
+
* @example 'Previous month'
|
|
397
|
+
*/
|
|
398
|
+
prevMonthLabel: {
|
|
399
|
+
type: String,
|
|
400
|
+
required: !0
|
|
401
|
+
},
|
|
402
|
+
/**
|
|
403
|
+
* Label for the next month button
|
|
404
|
+
*
|
|
405
|
+
* @type {String}
|
|
406
|
+
* @example 'Next month'
|
|
407
|
+
*/
|
|
408
|
+
nextMonthLabel: {
|
|
409
|
+
type: String,
|
|
410
|
+
required: !0
|
|
411
|
+
},
|
|
412
|
+
/**
|
|
413
|
+
* Label for the previous year button
|
|
414
|
+
*
|
|
415
|
+
* @type {String}
|
|
416
|
+
* @example 'Previous year'
|
|
417
|
+
*/
|
|
418
|
+
prevYearLabel: {
|
|
419
|
+
type: String,
|
|
420
|
+
required: !0
|
|
421
|
+
},
|
|
422
|
+
/**
|
|
423
|
+
* Label for the next year button
|
|
424
|
+
*
|
|
425
|
+
* @type {String}
|
|
426
|
+
* @example 'Next year'
|
|
427
|
+
*/
|
|
428
|
+
nextYearLabel: {
|
|
429
|
+
type: String,
|
|
430
|
+
required: !0
|
|
431
|
+
},
|
|
432
|
+
/**
|
|
433
|
+
* Label for the select day button
|
|
434
|
+
*
|
|
435
|
+
* @type {String}
|
|
436
|
+
* @example 'Select day'
|
|
437
|
+
*/
|
|
438
|
+
selectDayLabel: {
|
|
439
|
+
type: String,
|
|
440
|
+
required: !0
|
|
441
|
+
},
|
|
442
|
+
/**
|
|
443
|
+
* Label for the change to button
|
|
444
|
+
*
|
|
445
|
+
* @type {String}
|
|
446
|
+
* @example 'Change to'
|
|
447
|
+
*/
|
|
448
|
+
changeToLabel: {
|
|
449
|
+
type: String,
|
|
450
|
+
required: !0
|
|
451
|
+
},
|
|
452
|
+
/**
|
|
453
|
+
* Locale for the calendar
|
|
454
|
+
*
|
|
455
|
+
* @type {String}
|
|
456
|
+
*/
|
|
457
|
+
locale: {
|
|
458
|
+
type: String,
|
|
459
|
+
default: "en-US"
|
|
460
|
+
},
|
|
461
|
+
/**
|
|
462
|
+
* Selected date
|
|
463
|
+
*
|
|
464
|
+
* @type {Date}
|
|
465
|
+
*/
|
|
466
|
+
selectedDate: {
|
|
467
|
+
type: Date,
|
|
468
|
+
default: () => /* @__PURE__ */ new Date()
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
emits: [
|
|
472
|
+
/**
|
|
473
|
+
* Event fired when a date is selected
|
|
474
|
+
*
|
|
475
|
+
* @event selected-date
|
|
476
|
+
* @type {Date}
|
|
477
|
+
*/
|
|
478
|
+
"selected-date",
|
|
479
|
+
/**
|
|
480
|
+
* Event fired when user presses the esc key
|
|
481
|
+
*
|
|
482
|
+
* @event close-datepicker
|
|
483
|
+
*/
|
|
484
|
+
"close-datepicker"
|
|
485
|
+
],
|
|
486
|
+
data() {
|
|
487
|
+
return {
|
|
488
|
+
calendarDays: []
|
|
489
|
+
};
|
|
490
|
+
},
|
|
491
|
+
methods: {
|
|
492
|
+
updateCalendarDays(t) {
|
|
493
|
+
this.calendarDays = t;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
var V = function() {
|
|
498
|
+
var e = this, a = e._self._c;
|
|
499
|
+
return a("dt-stack", { staticClass: "d-datepicker", attrs: { gap: "400" } }, [a("div", { staticClass: "d-datepicker__hd" }, [a("month-year-picker", { ref: "monthYearPicker", attrs: { locale: e.locale, "prev-month-label": e.prevMonthLabel, "next-month-label": e.nextMonthLabel, "prev-year-label": e.prevYearLabel, "next-year-label": e.nextYearLabel, "change-to-label": e.changeToLabel, "selected-date": e.selectedDate }, on: { "calendar-days": e.updateCalendarDays, "focus-first-day": function(r) {
|
|
500
|
+
return e.$refs.calendar.focusFirstDay();
|
|
501
|
+
}, "focus-last-day": function(r) {
|
|
502
|
+
return e.$refs.calendar.focusLastDay();
|
|
503
|
+
}, "close-datepicker": function(r) {
|
|
504
|
+
return e.$emit("close-datepicker");
|
|
505
|
+
} } })], 1), a("div", { staticClass: "d-datepicker__bd" }, [a("calendar", { ref: "calendar", attrs: { locale: e.locale, "calendar-days": e.calendarDays, "select-day-label": e.selectDayLabel }, on: { "select-date": function(r) {
|
|
506
|
+
return e.$emit("selected-date", r);
|
|
507
|
+
}, "focus-month-year-picker": function(r) {
|
|
508
|
+
return e.$refs.monthYearPicker.focusMonthYearPicker();
|
|
509
|
+
}, "close-datepicker": function(r) {
|
|
510
|
+
return e.$emit("close-datepicker");
|
|
511
|
+
}, "go-to-next-month": function(r) {
|
|
512
|
+
return e.$refs.monthYearPicker.goToNextMonth();
|
|
513
|
+
}, "go-to-prev-month": function(r) {
|
|
514
|
+
return e.$refs.monthYearPicker.goToPrevMonth();
|
|
515
|
+
} } })], 1)]);
|
|
516
|
+
}, X = [], ee = /* @__PURE__ */ m(
|
|
517
|
+
Q,
|
|
518
|
+
V,
|
|
519
|
+
X,
|
|
520
|
+
!1,
|
|
521
|
+
null,
|
|
522
|
+
null,
|
|
523
|
+
null,
|
|
524
|
+
null
|
|
525
|
+
);
|
|
526
|
+
const _e = ee.exports;
|
|
527
|
+
function ge(t, e = "default") {
|
|
528
|
+
return new Intl.DateTimeFormat(e, { weekday: "long", year: "numeric", month: "long", day: "numeric" }).format(t);
|
|
529
|
+
}
|
|
530
|
+
function be(t, e = "default") {
|
|
531
|
+
return new Intl.DateTimeFormat(e, { year: "numeric", month: "long", day: "numeric" }).format(t);
|
|
532
|
+
}
|
|
533
|
+
function $e(t, e = "default", a = !0) {
|
|
534
|
+
const r = a ? { weekday: "short", year: "numeric", month: "short", day: "numeric" } : { year: "numeric", month: "short", day: "numeric" };
|
|
535
|
+
return new Intl.DateTimeFormat(e, r).format(t);
|
|
536
|
+
}
|
|
537
|
+
function ve(t, e = "default", a = !1) {
|
|
538
|
+
const r = a ? "short" : "long";
|
|
539
|
+
return new Intl.DateTimeFormat(e, { month: r, day: "numeric" }).format(t);
|
|
540
|
+
}
|
|
541
|
+
function Me(t, e = "default") {
|
|
542
|
+
return new Intl.DateTimeFormat(e, { year: "2-digit", month: "2-digit", day: "2-digit" }).format(t);
|
|
543
|
+
}
|
|
544
|
+
export {
|
|
545
|
+
_e as DtDatepicker,
|
|
546
|
+
ge as formatLong,
|
|
547
|
+
be as formatMedium,
|
|
548
|
+
ve as formatNoYear,
|
|
549
|
+
Me as formatNumerical,
|
|
550
|
+
$e as formatShort
|
|
551
|
+
};
|
|
552
|
+
//# sourceMappingURL=datepicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datepicker.js","sources":["../../components/datepicker/datepicker_constants.js","../../components/datepicker/utils.js","../../components/datepicker/modules/month-year-picker.vue","../../components/datepicker/modules/calendar.vue","../../components/datepicker/datepicker.vue","../../components/datepicker/formatUtils.js"],"sourcesContent":["/**\n * Week start day\n * 0 - Sunday\n * 1 - Monday\n */\nexport const WEEK_START = 0;\n\nexport const MONTH_FORMAT = 'MMMM';\n\nexport const INTL_MONTH_FORMAT = 'long';\n","import {\n startOfWeek, 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) => {\n const startDate = _parsedGetDate(JSON.parse(JSON.stringify(startDay)));\n const dates = [];\n for (let i = 0; i < 7; i++) {\n const next = addDays(startDate, i);\n const isNext = getMonth(next) !== month;\n dates.push({\n text: next.getDate(),\n value: next,\n currentMonth: !isNext,\n isFirstDayOfMonth: next.getDate() === 1 && !isNext,\n // will be selected if the date is the same as the selected day and is from the current month\n selected: selectedDay ? (next.getDate() === selectedDay && !isNext) : 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) => {\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);\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 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","<template>\n <dt-stack\n direction=\"row\"\n class=\"d-datepicker__month-year\"\n gap=\"300\"\n >\n <dt-stack\n as=\"nav\"\n direction=\"row\"\n gap=\"200\"\n class=\"d-datepicker__nav\"\n >\n <dt-tooltip\n :message=\"prevYearLabel\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevYearButton\"\n :ref=\"refNames[0]\"\n size=\"xs\"\n importance=\"clear\"\n kind=\"muted\"\n :circle=\"true\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${prevYearLabel} ${selectYear - 1}`\"\n @click=\"changeYear(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon\n name=\"chevrons-left\"\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :message=\"prevMonthLabel\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"prevMonthButton\"\n :ref=\"refNames[1]\"\n size=\"xs\"\n importance=\"clear\"\n kind=\"muted\"\n :circle=\"true\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${prevMonthLabel} ${formattedMonth(selectMonth - 1)}`\"\n @click=\"changeMonth(-1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon\n name=\"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 direction=\"row\"\n gap=\"200\"\n class=\"d-datepicker__nav\"\n >\n <dt-tooltip\n :message=\"nextMonthLabel\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextMonthButton\"\n :ref=\"refNames[2]\"\n size=\"xs\"\n importance=\"clear\"\n :circle=\"true\"\n kind=\"muted\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${nextMonthLabel} ${formattedMonth(selectMonth + 1)}`\"\n @click=\"changeMonth(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon\n name=\"chevron-right\"\n size=\"200\"\n />\n </dt-button>\n </template>\n </dt-tooltip>\n <dt-tooltip\n :message=\"nextYearLabel\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n id=\"nextYearButton\"\n :ref=\"refNames[3]\"\n size=\"xs\"\n kind=\"muted\"\n :circle=\"true\"\n importance=\"clear\"\n class=\"d-datepicker__nav-btn\"\n type=\"button\"\n :aria-label=\"`${changeToLabel} ${nextYearLabel} ${selectYear + 1}`\"\n @click=\"changeYear(1)\"\n @keydown=\"handleKeyDown($event)\"\n >\n <dt-icon\n name=\"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>\nimport { DtIcon } from '@/components/icon';\nimport { getYear, addMonths, getMonth, set, subMonths, getDate } from 'date-fns';\nimport { getCalendarDays, formatMonth } from '../utils';\nimport { INTL_MONTH_FORMAT } from '../datepicker_constants';\nimport DtStack from '@/components/stack/stack.vue';\nimport DtTooltip from '@/components/tooltip/tooltip.vue';\nimport DtButton from '@/components/button/button.vue';\n\nexport default {\n name: 'DtDatepickerMonthYearPicker',\n\n components: { DtButton, DtTooltip, DtStack, DtIcon },\n\n props: {\n locale: {\n type: String,\n required: true,\n },\n\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n changeToLabel: {\n type: String,\n required: true,\n },\n\n selectedDate: {\n type: Date,\n required: true,\n },\n },\n\n emits: [\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\n data () {\n return {\n selectMonth: getMonth(this.selectedDate),\n selectYear: getYear(this.selectedDate),\n highlightedDay: null,\n focusPicker: 0,\n focusRefs: [],\n refNames: ['prevYearButtonRef', 'prevMonthButtonRef', 'nextMonthButtonRef', 'nextYearButtonRef'],\n };\n },\n\n computed: {\n // Get days for the currently selected month and year and highlight the selected day\n calendarDays () {\n return getCalendarDays(this.selectMonth, this.selectYear, this.highlightedDay);\n },\n\n formattedMonth () {\n return (month) => formatMonth(month, INTL_MONTH_FORMAT, this.locale);\n },\n },\n\n watch: {\n selectMonth: {\n handler () {\n this.highlightDay();\n this.$emit('calendar-days', this.calendarDays);\n },\n\n immediate: true,\n },\n\n selectYear: {\n handler () {\n this.highlightDay();\n this.$emit('calendar-days', this.calendarDays);\n },\n\n immediate: true,\n },\n\n },\n\n mounted () {\n this.setButtonsRef();\n this.focusMonthYearPicker();\n },\n\n methods: {\n setButtonsRef () {\n this.focusRefs = this.refNames.map(refName => this.$refs[refName]);\n },\n\n focusMonthYearPicker () {\n this.focusPicker = 0;\n this.focusRefs[0].$el.focus();\n },\n\n handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (this.focusPicker === 0) {\n this.focusPicker = 3;\n this.focusRefs[this.focusPicker].$el.focus();\n } else {\n this.focusPicker--;\n this.focusRefs[this.focusPicker].$el.focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (this.focusPicker === 3) {\n this.focusPicker = 0;\n this.focusRefs[this.focusPicker].$el.focus();\n } else {\n this.focusPicker++;\n this.focusRefs[this.focusPicker].$el.focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.$emit('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n this.$emit('focus-first-day');\n break;\n\n case 'Escape':\n this.$emit('close-datepicker');\n break;\n }\n },\n\n highlightDay () {\n const year = getYear(this.selectedDate);\n const month = getMonth(this.selectedDate);\n\n if (year !== this.selectYear || month !== this.selectMonth) {\n this.highlightedDay = null;\n } else {\n this.highlightedDay = getDate(this.selectedDate);\n }\n },\n\n changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((this.selectMonth === 0 && value === -1) || (this.selectMonth === 11 && value === 1)) {\n this.selectYear += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(this.selectedDate, { month: this.selectMonth, year: this.selectYear });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n this.selectMonth = getMonth(newDate);\n },\n\n changeYear (value) {\n this.selectYear = this.selectYear + value;\n },\n\n goToNextMonth () {\n this.changeMonth(1);\n },\n\n goToPrevMonth () {\n this.changeMonth(-1);\n },\n },\n};\n</script>\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=\"`buttonRef_${indexWeek}_${indexDays}`\"\n class=\"d-datepicker__day\"\n :circle=\"true\"\n size=\"sm\"\n importance=\"clear\"\n :disabled=\"!day.currentMonth\"\n :class=\"{\n 'd-datepicker__day--disabled': !day.currentMonth,\n 'd-datepicker__day--selected': selectedDay\n ? ((day.text === selectedDay) && day.currentMonth)\n : day.selected,\n }\"\n type=\"button\"\n :aria-selected=\"!!selectedDay ? ((day.text === selectedDay) && day.currentMonth) : 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>\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from '@/components/datepicker/utils';\nimport { WEEK_START, MONTH_FORMAT } from '@/components/datepicker/datepicker_constants.js';\nimport { format, getYear } from 'date-fns';\nimport DtButton from '@/components/button/button.vue';\n\nexport default {\n name: 'DtDatepickerCalendar',\n components: { DtButton },\n\n props: {\n calendarDays: {\n type: Array,\n required: true,\n },\n\n locale: {\n type: String,\n required: true,\n },\n\n selectDayLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\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 data () {\n return {\n // local selectedDay to override the received by props calendarDays\n selectedDay: null,\n focusDay: 0,\n daysRef: [],\n };\n },\n\n computed: {\n weekDays () {\n return getWeekDayNames(this.locale, WEEK_START);\n },\n },\n\n watch: {\n calendarDays () {\n // on calendarDays update, reset our local variables\n this.focusDay = 0;\n this.selectedDay = null;\n\n this.daysRef = [];\n\n this.$nextTick(() => {\n this.daysRef = [];\n this.setDayRef();\n });\n },\n },\n\n methods: {\n dayAriaLabel (day) {\n return `${this.selectDayLabel} ${day.text} ${format(day.value, MONTH_FORMAT)} ${getYear(day.value)}`;\n },\n\n setDayRef (el, day) {\n this.calendarDays.forEach((week, weekIndex) => {\n week.days.forEach((day, dayIndex) => {\n const refKey = `buttonRef_${weekIndex}_${dayIndex}`;\n const dayButton = this.$refs[refKey];\n if (dayButton && day.currentMonth) {\n this.daysRef.push({ el: dayButton[0], day });\n }\n });\n });\n },\n\n handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.focusDay -= 7;\n try {\n this.daysRef[this.focusDay].el.$el.focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(this.daysRef[this.focusDay + 7].day.value);\n this.$emit('go-to-prev-month');\n this.$nextTick(() => {\n this.setDayRef();\n this.daysRef[prevFocusDate - 1].el.$el.focus();\n this.focusDay += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusDay += 7;\n try {\n this.daysRef[this.focusDay].el.$el.focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(this.daysRef[this.focusDay - 7].day.value);\n this.$emit('go-to-next-month');\n this.$nextTick(() => {\n this.setDayRef();\n this.daysRef[nextFocusDate - 1].el.$el.focus();\n this.focusDay += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (this.focusDay > 0) {\n this.focusDay -= 1;\n this.daysRef[this.focusDay].el.$el.focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n this.$emit('go-to-prev-month');\n this.$nextTick(() => {\n this.focusLastDay();\n });\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (this.focusDay < this.daysRef.length - 1) {\n this.focusDay += 1;\n this.daysRef[this.focusDay].el.$el.focus();\n } else {\n // if we are on month last day, jump to first day of next month\n this.$emit('go-to-next-month');\n this.$nextTick(() => {\n this.focusFirstDay();\n });\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n this.$emit('focus-month-year-picker');\n break;\n\n case 'Escape':\n this.$emit('close-datepicker');\n break;\n }\n },\n\n focusFirstDay () {\n this.focusDay = 0;\n this.$nextTick(() => {\n this.daysRef[this.focusDay].el.$el.focus();\n });\n },\n\n focusLastDay () {\n this.$nextTick(() => {\n this.focusDay = this.daysRef.length - 1;\n this.daysRef[this.focusDay].el.$el.focus();\n });\n },\n\n selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n this.selectedDay = day.text;\n this.$emit('select-date', day.value);\n },\n },\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 :locale=\"locale\"\n :prev-month-label=\"prevMonthLabel\"\n :next-month-label=\"nextMonthLabel\"\n :prev-year-label=\"prevYearLabel\"\n :next-year-label=\"nextYearLabel\"\n :change-to-label=\"changeToLabel\"\n :selected-date=\"selectedDate\"\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 :locale=\"locale\"\n :calendar-days=\"calendarDays\"\n :select-day-label=\"selectDayLabel\"\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>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport DtStack from '@/components/stack/stack.vue';\n\nexport default {\n name: 'DtDatepicker',\n\n components: { DtStack, MonthYearPicker, Calendar },\n\n props: {\n /**\n * Label for the previous month button\n *\n * @type {String}\n * @example 'Previous month'\n */\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next month button\n *\n * @type {String}\n * @example 'Next month'\n */\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the previous year button\n *\n * @type {String}\n * @example 'Previous year'\n */\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next year button\n *\n * @type {String}\n * @example 'Next year'\n */\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the select day button\n *\n * @type {String}\n * @example 'Select day'\n */\n selectDayLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the change to button\n *\n * @type {String}\n * @example 'Change to'\n */\n changeToLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Locale for the calendar\n *\n * @type {String}\n */\n locale: {\n type: String,\n default: 'en-US',\n },\n\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n },\n\n emits: [\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\n data () {\n return {\n calendarDays: [],\n };\n },\n\n methods: {\n updateCalendarDays (days) {\n this.calendarDays = days;\n },\n },\n};\n</script>\n","export function formatLong (date, locale = 'default') {\n return new Intl.DateTimeFormat(locale, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }).format(date);\n}\n\nexport function formatMedium (date, locale = 'default') {\n return new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'long', day: 'numeric' }).format(date);\n}\n\nexport function formatShort (date, locale = 'default', showWeekday = true) {\n const options = showWeekday ? { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' } : { year: 'numeric', month: 'short', day: 'numeric' };\n return new Intl.DateTimeFormat(locale, options).format(date);\n}\n\nexport function formatNoYear (date, locale = 'default', abbreviated = false) {\n const monthFormat = abbreviated ? 'short' : 'long';\n return new Intl.DateTimeFormat(locale, { month: monthFormat, day: 'numeric' }).format(date);\n}\n\nexport function formatNumerical (date, locale = 'default') {\n return new Intl.DateTimeFormat(locale, { year: '2-digit', month: '2-digit', day: '2-digit' }).format(date);\n}\n\nexport default {\n formatLong,\n formatMedium,\n formatShort,\n formatNoYear,\n formatNumerical,\n};\n"],"names":["WEEK_START","MONTH_FORMAT","INTL_MONTH_FORMAT","_parsedGetDate","value","getWeekDays","startDay","month","selectedDay","startDate","dates","i","next","addDays","isNext","getMonth","isDateEqual","date","dateToCompare","isEqual","getCalendarDays","year","weeks","firstDate","lastDate","firstDateInCalendar","startOfWeek","addDaysToWeek","days","day","nextDate","getWeekDayNames","locale","weekStart","beforeWeekStart","afterWeekStart","formatMonth","monthFormat","calculateNextFocusDate","currentDate","currentWeekday","getDay","nextMonthDate","addMonths","nextMonthStart","startOfMonth","nextMonthStartWeekday","dayDifference","focusDate","getDate","calculatePrevFocusDate","endOfMonth","subMonths","_sfc_main","DtButton","DtTooltip","DtStack","DtIcon","getYear","refName","event","initialDate","set","newDate","format","el","week","weekIndex","dayIndex","refKey","dayButton","prevFocusDate","nextFocusDate","MonthYearPicker","Calendar","formatLong","formatMedium","formatShort","showWeekday","options","formatNoYear","abbreviated","formatNumerical"],"mappings":"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"}
|