UNPKG

@icreate/ics-mui

Version:

京东风格的轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)

133 lines (132 loc) 4.6 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); import { defineComponent, toRef, ref, computed, openBlock, createElementBlock, createVNode, unref, withCtx } from "vue"; import { X as v } from "../style_icon-C4_0S-Vm.js"; import "../input/Input.js"; import { u as useFormDisabled } from "../common-DXugw-he.js"; import { I as IcsPopup } from "../index-kY3YH8kV.js"; import NutPicker from "../picker/Picker.js"; import { _ as _sfc_main$1 } from "../input.vue_vue_type_script_setup_true_lang-CUVjcKoZ.js"; import { w as withInstall } from "../with-install-DWwOiZS3.js"; const _hoisted_1 = { class: "ics-input-picker" }; const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, { name: "IcsCellSelectRadio" }), { __name: "index", props: { modelValue: { type: [String, Number], default: "" }, title: { type: String, default: "意识" }, options: { type: Array, default: [] }, disabled: { type: Boolean, default: false }, formatter: { type: Function, default: null } }, emits: ["update:modelValue", "change", "confirm"], setup(__props, { emit: __emit }) { const props = __props; const disabled = useFormDisabled(toRef(props, "disabled")); const emits = __emit; const show = ref(false); const pickerValue = ref(); const selectName = computed(() => { return props.formatter ? props.formatter(selectVal.value) : getText(selectVal.value) || selectVal.value; }); const selectVal = computed({ get() { return props.modelValue; }, set(value) { emits("update:modelValue", value); } }); const confirm = ({ selectedOptions }) => { const { value } = selectedOptions[0]; selectVal.value = value; show.value = false; emits("update:modelValue", value); emits("confirm", { value, text: getText(value) }); }; const onPicker = () => { if (disabled.value) return; show.value = true; pickerValue.value = selectVal.value ? [selectVal.value] : []; }; const getText = (value) => { const selected = (props.options || []).find((ele) => ele.value === value); return selected ? selected.text.split("(")[0] : ""; }; return (_ctx, _cache) => { return openBlock(), createElementBlock("div", _hoisted_1, [ createVNode(unref(_sfc_main$1), { modelValue: selectName.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectName.value = $event), border: false, placeholder: "请选择", readonly: "", disabled: unref(disabled), onClick: onPicker }, { right: withCtx(() => [ createVNode(unref(v), { class: "arrow" }) ]), _: 1 }, 8, ["modelValue", "disabled"]), createVNode(IcsPopup, { visible: show.value, "onUpdate:visible": _cache[3] || (_cache[3] = ($event) => show.value = $event), position: "bottom", "pop-class": "nut-select-multiple-popup" }, { default: withCtx(() => [ createVNode(NutPicker, { modelValue: pickerValue.value, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => pickerValue.value = $event), columns: __props.options, title: __props.title + "选择", onConfirm: confirm, onCancel: _cache[2] || (_cache[2] = ($event) => show.value = false) }, null, 8, ["modelValue", "columns", "title"]) ]), _: 1 }, 8, ["visible"]) ]); }; } })); withInstall(_sfc_main); export { _sfc_main as CellSelectRadio, _sfc_main as default };