UNPKG

tdesign-mobile-vue

Version:
218 lines (210 loc) 9.74 kB
/** * tdesign v1.15.1 * (c) 2026 TDesign Group * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); var Vue = require('vue'); var tdesignIconsVueNext = require('tdesign-icons-vue-next'); var config = require('../config.js'); var radio_props = require('./props.js'); var hooks_useVModel = require('../hooks/useVModel.js'); var form_hooks = require('../form/hooks.js'); var hooks_useClass = require('../hooks/useClass.js'); var hooks_tnode = require('../hooks/tnode.js'); require('../_chunks/dep-be2ba39b.js'); require('../_chunks/dep-ecc3beb1.js'); require('../_chunks/dep-9a01670c.js'); require('../_chunks/dep-71520daa.js'); require('@babel/runtime/helpers/typeof'); require('../_chunks/dep-76eac73f.js'); require('../_chunks/dep-e226a2cc.js'); require('../_chunks/dep-146a40bf.js'); require('../_chunks/dep-bc41faad.js'); require('../_chunks/dep-371291a8.js'); require('../_chunks/dep-09992ee7.js'); require('../_chunks/dep-04074889.js'); require('../_common/js/global-config/mobile/default-config.js'); require('../_common/js/global-config/mobile/locale/zh_CN.js'); require('../_chunks/dep-ac2bdb13.js'); require('../_chunks/dep-bf0cedd0.js'); require('dayjs'); require('../_chunks/dep-0cb0d120.js'); require('../_chunks/dep-817cf1a8.js'); require('../_chunks/dep-0a0e6b4d.js'); require('../_chunks/dep-f9b6dcd1.js'); require('../_chunks/dep-e28f0dcb.js'); require('../_chunks/dep-ba2813cd.js'); require('../_chunks/dep-772fd498.js'); require('../_chunks/dep-8c519715.js'); require('../_chunks/dep-4f98961a.js'); require('../_chunks/dep-6e0e44f2.js'); require('../_chunks/dep-5308384a.js'); require('../_chunks/dep-a15962f8.js'); require('../_chunks/dep-7e453771.js'); require('../_chunks/dep-1c49e2c0.js'); require('../_chunks/dep-09a08779.js'); require('../_chunks/dep-693e1092.js'); require('../_chunks/dep-8fb16430.js'); require('../_chunks/dep-23180529.js'); require('../_chunks/dep-77bb683d.js'); require('../_chunks/dep-f281ba06.js'); require('../hooks/render-tnode.js'); require('../_chunks/dep-a1ac6b3b.js'); require('../_chunks/dep-b59ce588.js'); require('../_chunks/dep-cca86cd8.js'); require('../_common/js/utils/general.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray); var prefix = config["default"].prefix; var _Radio = Vue.defineComponent({ name: "".concat(prefix, "-radio"), props: radio_props["default"], emits: ["update:checked", "update:modelValue", "change"], setup: function setup(props2, context) { var renderTNodeContent = hooks_tnode.useContent(); var renderTNodeJSX = hooks_tnode.useTNodeJSX(); var radioClass = hooks_useClass.usePrefixClass("radio"); var _toRefs = Vue.toRefs(props2), checked = _toRefs.checked, modelValue = _toRefs.modelValue; var _useVModel = hooks_useVModel["default"](checked, modelValue, props2.defaultChecked, props2.onChange, "checked"), _useVModel2 = _slicedToArray__default["default"](_useVModel, 2), innerChecked = _useVModel2[0], setInnerChecked = _useVModel2[1]; var rootGroupProps = Vue.inject("rootGroupProps", {}); var rootGroupValue = Vue.inject("rootGroupValue", {}); var rootGroupChange = Vue.inject("rootGroupChange", void 0); var groupDisabled = Vue.computed(function () { return rootGroupProps === null || rootGroupProps === void 0 ? void 0 : rootGroupProps.disabled; }); var isDisabled = form_hooks.useFormDisabled(groupDisabled); var radioChecked = Vue.computed(function () { return (rootGroupValue === null || rootGroupValue === void 0 ? void 0 : rootGroupValue.value) !== void 0 ? props2.value === (rootGroupValue === null || rootGroupValue === void 0 ? void 0 : rootGroupValue.value) : innerChecked.value; }); var finalBorderless = Vue.computed(function () { if (props2.borderless == null && "borderless" in rootGroupProps) return rootGroupProps.borderless; return props2.borderless; }); var finalPlacement = Vue.computed(function () { if (props2.placement == null && "placement" in rootGroupProps) return rootGroupProps.placement; return props2.placement || "left"; }); var finalAllowUncheck = Vue.computed(function () { return Boolean(props2.allowUncheck || (rootGroupProps === null || rootGroupProps === void 0 ? void 0 : rootGroupProps.allowUncheck)); }); var finalReadonly = Vue.computed(function () { return Boolean(props2.readonly || (rootGroupProps === null || rootGroupProps === void 0 ? void 0 : rootGroupProps.readonly)); }); var inputProps = Vue.computed(function () { return { name: rootGroupProps.name || props2.name, checked: radioChecked.value, disabled: isDisabled.value, readonly: finalReadonly.value, value: props2.value }; }); var iconContent = Vue.computed(function () { var _props2$icon; if (((_props2$icon = props2.icon) === null || _props2$icon === void 0 ? void 0 : _props2$icon.length) === 2) { var iconIndex = radioChecked.value ? 0 : 1; return props2.icon[iconIndex]; } return null; }); var radioClasses = Vue.computed(function () { return ["".concat(radioClass.value), "".concat(radioClass.value, "--").concat(finalPlacement.value), _defineProperty__default["default"]({}, "".concat(radioClass.value, "--block"), props2.block)]; }); var titleClasses = Vue.computed(function () { return ["".concat(radioClass.value, "__title"), _defineProperty__default["default"]({}, "".concat(radioClass.value, "__title--disabled"), isDisabled.value)]; }); var iconClass = Vue.computed(function () { return ["".concat(radioClass.value, "__icon"), "".concat(radioClass.value, "__icon--").concat(finalPlacement.value), _defineProperty__default["default"](_defineProperty__default["default"]({}, "".concat(radioClass.value, "__icon--checked"), radioChecked.value), "".concat(radioClass.value, "__icon--disabled"), isDisabled.value)]; }); var radioContentChange = function radioContentChange(e) { e.stopPropagation(); if (props2.contentDisabled) { return; } radioOrgChange(e); }; var radioOrgChange = function radioOrgChange(e) { if (isDisabled.value || finalReadonly.value) { return; } if (rootGroupChange) { var value = finalAllowUncheck.value && radioChecked.value ? void 0 : props2.value; rootGroupChange(value, { e: e, name: props2.name }); } else { var _value = finalAllowUncheck.value ? !radioChecked.value : true; setInnerChecked(_value, { e: e }); } }; var readerIcon = function readerIcon() { if (radioChecked.value) { if (props2.icon === "circle") { return Vue.createVNode(tdesignIconsVueNext.CheckCircleFilledIcon, { "class": "".concat(radioClass.value, "__icon-wrap") }, null); } if (props2.icon === "line") { return Vue.createVNode(tdesignIconsVueNext.CheckIcon, { "class": "".concat(radioClass.value, "__icon-wrap") }, null); } if (props2.icon === "dot") { return Vue.createVNode("div", { "class": ["".concat(radioClass.value, "__icon-").concat(props2.icon), _defineProperty__default["default"]({}, "".concat(radioClass.value, "__icon-").concat(props2.icon, "--disabled"), isDisabled.value)] }, null); } } else { if (props2.icon === "circle" || props2.icon === "dot") { return Vue.createVNode("div", { "class": ["".concat(radioClass.value, "__icon-circle"), _defineProperty__default["default"]({}, "".concat(radioClass.value, "__icon-circle--disabled"), isDisabled.value)] }, null); } if (props2.icon === "line") { return Vue.createVNode("div", { "class": "placeholder" }, null); } } }; return function () { var label = renderTNodeContent("default", "label"); var content = renderTNodeJSX("content"); return Vue.createVNode("div", { "class": radioClasses.value, "onClick": radioOrgChange }, [Vue.createVNode("input", Vue.mergeProps({ "type": "radio", "class": "".concat(radioClass.value, "__original") }, inputProps.value), null), Vue.createVNode("div", { "class": iconClass.value }, [readerIcon(), iconContent.value]), Vue.createVNode("div", { "class": "".concat(radioClass.value, "__content"), "onClick": radioContentChange }, [label && Vue.createVNode("span", { "class": titleClasses.value, "style": "-webkit-line-clamp: ".concat(props2.maxLabelRow) }, [label]), content && Vue.createVNode("div", { "class": ["".concat(radioClass.value, "__description"), _defineProperty__default["default"]({}, "".concat(radioClass.value, "__description"), isDisabled.value)], "style": "-webkit-line-clamp: ".concat(props2.maxContentRow) }, [content])]), !finalBorderless.value && Vue.createVNode("div", { "class": "".concat(radioClass.value, "__border ").concat(radioClass.value, "__border--").concat(finalPlacement.value) }, null)]); }; } }); exports["default"] = _Radio; //# sourceMappingURL=radio.js.map