UNPKG

vue-devui

Version:

DevUI components based on Vite and Vue3

90 lines (89 loc) 2.75 kB
import { defineComponent, toRefs, computed, createVNode } from "vue"; const cardProps = { align: { type: String, default: "start" }, src: { type: String, default: "" }, shadow: { type: String, default: "hover" } }; function createBem(namespace, element, modifier) { let cls = namespace; if (element) { cls += `__${element}`; } if (modifier) { cls += `--${modifier}`; } return cls; } function useNamespace(block, needDot = false) { const namespace = needDot ? `.devui-${block}` : `devui-${block}`; const b = () => createBem(namespace); const e = (element) => element ? createBem(namespace, element) : ""; const m = (modifier) => modifier ? createBem(namespace, "", modifier) : ""; const em = (element, modifier) => element && modifier ? createBem(namespace, element, modifier) : ""; return { b, e, m, em }; } var card = ""; var Card = defineComponent({ name: "DCard", props: cardProps, setup(props, { slots }) { const { align, src } = toRefs(props); const ns = useNamespace("card"); const alignClass = computed(() => { return { [ns.e("actions")]: true, [ns.em("actions", `align-${align.value}`)]: align.value !== "start" }; }); return () => { var _a, _b, _c, _d, _e, _f, _g; return createVNode("div", { "class": ["card-container", ns.b(), ns.em("shadow", props.shadow)] }, [(_a = slots.default) == null ? void 0 : _a.call(slots), (slots.avatar || slots.title || slots.subtitle) && createVNode("div", { "class": ns.e("header") }, [((_b = slots.avatar) == null ? void 0 : _b.call(slots)) ? createVNode("div", { "class": ns.e("avatar") }, [(_c = slots.avatar) == null ? void 0 : _c.call(slots)]) : "", createVNode("div", null, [createVNode("div", { "class": ns.e("title") }, [(_d = slots.title) == null ? void 0 : _d.call(slots)]), createVNode("div", { "class": ns.e("subtitle") }, [(_e = slots.subtitle) == null ? void 0 : _e.call(slots)])])]), src.value !== "" ? createVNode("img", { "src": src.value, "alt": "", "class": ns.e("meta") }, null) : "", slots.content && createVNode("div", { "class": ns.e("content") }, [(_f = slots.content) == null ? void 0 : _f.call(slots)]), slots.actions && createVNode("div", { "class": alignClass.value }, [slots.actions ? (_g = slots.actions) == null ? void 0 : _g.call(slots) : ""])]); }; } }); var index = { title: "Card \u5361\u7247", category: "\u6570\u636E\u5C55\u793A", status: "100%", install(app) { app.component(Card.name, Card); } }; export { Card, cardProps, index as default };