UNPKG

@extclp/vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

113 lines (112 loc) 3.35 kB
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