UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

84 lines (83 loc) 1.89 kB
import { computed as c, defineComponent as r, createVNode as d } from "vue"; import { withInstall as m } from "../common/index.esm.js"; const f = { /** * 组件标识 */ id: String, /** * 设置按钮类型 */ type: { type: String, default: "primary" }, /** * 是否禁用 */ disabled: { type: Boolean, default: !1 }, /** * 按钮尺寸 */ size: { type: String, default: "middle" }, /** * 按钮图标 */ icon: { type: String }, /** * 自定义class */ customClass: { type: Object, default: {} } }; function b(t, n) { function l(e) { e.stopPropagation(), t.disabled || n.emit("click", e); } return { onClickButton: l }; } function C(t) { const n = c(() => { const e = { "f-icon": !0 }; if (t.icon) { const i = t.icon.trim().split(" "); i && i.length && i.reduce((o, s) => (o[s] = !0, o), e); } return e; }), l = c(() => !!(t.icon && t.icon.trim())); return { iconClass: n, shouldShowIcon: l }; } const g = /* @__PURE__ */ r({ name: "FButton", props: f, emits: ["click"], setup(t, n) { const { onClickButton: l } = b(t, n), { iconClass: e, shouldShowIcon: i } = C(t), o = c(() => { const s = { btn: !0, "btn-lg": t.size === "large", "btn-md": t.size !== "large" && t.size !== "small", "btn-sm": t.size === "small", "btn-icontext": i.value }; return s[`btn-${t.type}`] = !0, t.customClass && Object.keys(t.customClass).reduce((u, a) => (u[a] = t.customClass[a], u), s), s; }); return () => d("button", { class: o.value, disabled: t.disabled, onClick: (s) => l(s) }, [i.value && d("i", { class: e.value }, null), n.slots.default && n.slots.default()]); } }), k = m(g); export { g as FButton, f as buttonProps, k as default };