UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

121 lines (120 loc) 2.84 kB
import { radioCheckboxCommonProps as y, RADIOGROUP_CONTEXT as b, withInstall as h } from "../common/index.esm.js"; import { computed as m, defineComponent as V, ref as g, provide as C, watch as p, createVNode as u } from "vue"; const x = { ...y, /** * 组件标识 */ id: String, /** * 禁用组件,不允许切换单选值 */ disabled: { type: Boolean, default: !1 }, /** * 功能同disabled */ readonly: { type: Boolean, default: !1 }, /** * 单选组枚举数组----废弃 */ enumData: { type: Array, default: [] }, /** * 单选组枚举数组 */ data: { type: Array, default: [] }, /** * 组件值 */ modelValue: { type: String, default: "" }, /** * 组件名称 */ name: { type: String, default: "" }, /** * 输入框Tab键索引 */ tabIndex: { type: Number, default: -1 }, /** * 枚举数组中展示文本的key值。 */ textField: { type: String, default: "name" }, /** * 枚举数组中枚举值的key值。 */ valueField: { type: String, default: "value" } }; function R(e, t, n) { const i = m(() => !e.disabled), r = m(() => e.data || e.enumData || e.options || []); function o(l) { return l[e.valueField]; } function c(l) { return l[e.textField]; } function s(l, a) { if (i.value) { const d = o(l); n.value !== d && (n.value = d, t.emit("changeValue", d), t.emit("update:modelValue", d)); } a.stopPropagation(); } return { enumData: r, getValue: o, getText: c, onClickRadio: s }; } const F = /* @__PURE__ */ V({ name: "FRadioGroup", props: x, emits: ["changeValue", "update:modelValue"], setup(e, t) { const n = g(e.modelValue), { enumData: i, onClickRadio: r, getValue: o, getText: c } = R(e, t, n), s = m(() => ({ "farris-checkradio-hor": e.direction === "horizontal" })), l = g([]); return C(b, { radios: l, parentProps: e, parentContext: t }), p(() => e.modelValue, (a) => { n.value = a; }), () => u("div", { class: ["farris-input-wrap", "btn-group", s.value] }, [t.slots.default ? t.slots.default() : i.value.map((a, d) => { const f = "radio_" + e.id + e.name + a[e.valueField]; return u("div", { class: "custom-control custom-radio" }, [u("input", { type: "radio", class: "custom-control-input", name: f, id: f, value: o(a), checked: o(a) === n.value, disabled: e.readonly || e.disabled, tabindex: e.tabIndex, onClick: (v) => r(a, v) }, null), u("label", { class: "custom-control-label", for: f }, [c(a)])]); })]); } }), P = h(F); export { F as FRadioGroup, P as default, x as radioGroupProps };