@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
113 lines (112 loc) • 3.35 kB
JavaScript
import { defineComponent as g, computed as $, createElementBlock as h, openBlock as B, unref as t, normalizeClass as r, renderSlot as c, createElementVNode as u, withKeys as v, withModifiers as m, toDisplayString as N } from "vue";
import { useNameHelper as D } from "@vexip-ui/config";
import { toAttrValue as b } from "@vexip-ui/utils";
const P = ["aria-selected", "aria-disabled"], R = ["aria-label", "aria-disabled"], C = /* @__PURE__ */ g({
__name: "calendar-cell",
props: {
date: {
type: Date,
required: !0
},
locale: {
type: Object,
required: !0
},
selected: {
type: Boolean,
default: !1
},
hovered: {
type: Boolean,
default: !1
},
isPrev: {
type: Boolean,
default: !1
},
isNext: {
type: Boolean,
default: !1
},
isToday: {
type: Boolean,
default: !1
},
disabled: {
type: Boolean,
default: !1
},
inRange: {
type: Boolean,
default: !1
}
},
emits: ["select", "hover"],
setup(e, { emit: f }) {
const l = e, s = f, a = D("calendar"), o = $(() => {
const i = l.locale.ariaLabel, d = l.date.getFullYear(), n = l.date.getMonth() + 1, y = l.date.getDate(), x = l.date.getDay() || 7;
return `${i[`week${x}`]}, ${i[`month${n}`]} ${y}, ${d}`;
});
return (i, d) => (B(), h("div", {
class: r(t(a).be("cell")),
role: "gridcell",
"aria-selected": t(b)(e.selected),
"aria-disabled": t(b)(e.disabled),
onMouseenter: d[3] || (d[3] = (n) => s("hover", e.date))
}, [
c(i.$slots, "item", {
date: e.date,
label: o.value,
selected: e.selected,
hovered: e.hovered,
isPrev: e.isPrev,
isNext: e.isNext,
isToday: e.isToday,
disabled: e.disabled,
inRange: e.inRange
}, () => [
u("div", {
class: r({
[t(a).be("index")]: !0,
[t(a).bem("index", "selected")]: e.selected,
[t(a).bem("index", "hovered")]: e.hovered,
[t(a).bem("index", "prev")]: e.isPrev,
[t(a).bem("index", "next")]: e.isNext,
[t(a).bem("index", "today")]: e.isToday,
[t(a).bem("index", "disabled")]: e.disabled,
[t(a).bem("index", "in-range")]: e.inRange
}),
tabindex: "0",
role: "button",
"aria-label": o.value,
"aria-disabled": t(b)(e.disabled),
onClick: d[0] || (d[0] = (n) => s("select", e.date)),
onKeydown: [
d[1] || (d[1] = v(m((n) => s("select", e.date), ["prevent"]), ["enter"])),
d[2] || (d[2] = v(m((n) => s("select", e.date), ["prevent"]), ["space"]))
]
}, [
c(i.$slots, "default", {
date: e.date,
label: o.value,
selected: e.selected,
hovered: e.hovered,
isPrev: e.isPrev,
isNext: e.isNext,
isToday: e.isToday,
disabled: e.disabled,
inRange: e.inRange
}, () => [
u("div", {
class: r(t(a).be("index-inner"))
}, N(e.date.getDate()), 3)
])
], 42, R)
])
], 42, P));
}
});
export {
C as default
};
//# sourceMappingURL=calendar-cell.vue2.mjs.map