@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
54 lines (53 loc) • 1.57 kB
JavaScript
import { defineComponent as d, ref as f, watch as m, createVNode as e, Fragment as b } from "vue";
import { withInstall as g } from "../common/index.esm.js";
const p = {
/**
* 单选组枚举数组
*/
enumData: { type: Array, default: [{ text: "1", active: !0 }] },
/**
* 后缀
*/
suffixValue: { type: String, default: "" },
/**
* 返回值
*/
onSelectedValueChanged: { type: Function, default: () => {
} }
}, v = /* @__PURE__ */ d({
name: "FRadioButton",
props: p,
emits: ["selectedValueChanged"],
setup(a, s) {
const o = f(a.enumData);
function u(t, n) {
if (t.currentTarget.classList.value = "btn btn-secondary active", t.currentTarget.tagName.toLowerCase() === "label") {
const {
currentTarget: r
} = t, c = r.parentElement;
Array.from(c.querySelectorAll("label")).filter((l) => l !== r).forEach((l) => l.classList.remove("active"));
}
s.emit("selectedValueChanged", n);
}
function i(t) {
return `${t.text}${a.suffixValue}`;
}
return m(() => a.enumData, (t, n) => {
t !== n && (o.value = a.enumData);
}), () => e("div", {
class: "f-radio-button"
}, [e("div", {
class: ["farris-input-wrap"]
}, [o.value.map((t, n) => e(b, null, [e("label", {
class: t.active ? "btn btn-secondary active" : "btn btn-secondary",
onClick: (r) => u(r, t)
}, [e("span", {
class: "f-radio-button-text"
}, [i(t)])])]))])]);
}
}), C = g(v);
export {
v as RadioButton,
C as default,
p as radioButtonProps
};