UNPKG

tdesign-mobile-vue

Version:
1 lines 14.6 kB
{"version":3,"file":"radio.mjs","sources":["../../src/radio/radio.tsx"],"sourcesContent":["import { inject, computed, defineComponent, Ref, toRefs } from 'vue';\nimport { CheckIcon, CheckCircleFilledIcon } from 'tdesign-icons-vue-next';\nimport config from '../config';\nimport props from './props';\nimport { TdRadioGroupProps, TdRadioProps } from './type';\nimport useVModel from '../hooks/useVModel';\nimport { useFormDisabled } from '../form/hooks';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-radio`,\n props,\n emits: ['update:checked', 'update:modelValue', 'change'],\n setup(props, context) {\n const renderTNodeContent = useContent();\n const renderTNodeJSX = useTNodeJSX();\n const radioClass = usePrefixClass('radio');\n\n const { checked, modelValue } = toRefs(props);\n const [innerChecked, setInnerChecked] = useVModel(\n checked,\n modelValue,\n props.defaultChecked,\n props.onChange,\n 'checked',\n );\n const rootGroupProps = inject('rootGroupProps', {}) as TdRadioGroupProps;\n const rootGroupValue = inject('rootGroupValue', {}) as Ref;\n const rootGroupChange = inject('rootGroupChange', undefined);\n\n // extend radioGroup disabled props\n const groupDisabled = computed(() => rootGroupProps?.disabled);\n const isDisabled = useFormDisabled(groupDisabled);\n\n const radioChecked = computed(() => (rootGroupValue ? props.value === rootGroupValue?.value : innerChecked.value));\n\n const finalBorderless = computed(() => {\n if (props.borderless == null && 'borderless' in rootGroupProps) return rootGroupProps.borderless;\n return props.borderless;\n });\n const finalPlacement = computed(() => {\n if (props.placement == null && 'placement' in rootGroupProps) return rootGroupProps.placement;\n return props.placement || 'left';\n });\n\n const finalAllowUncheck = computed(() => Boolean(props.allowUncheck || rootGroupProps?.allowUncheck));\n\n const finalReadonly = computed(() => Boolean(props.readonly || rootGroupProps?.readonly));\n\n // input props attribute\n const inputProps = computed(() => ({\n name: rootGroupProps.name || props.name,\n checked: radioChecked.value,\n disabled: isDisabled.value,\n readonly: finalReadonly.value,\n value: props.value,\n }));\n\n const iconContent = computed(() => {\n if (props.icon?.length === 2) {\n const iconIndex = radioChecked.value ? 0 : 1;\n return props.icon[iconIndex];\n }\n return null;\n });\n\n const radioClasses = computed(() => [\n `${radioClass.value}`,\n `${radioClass.value}--${finalPlacement.value}`,\n {\n [`${radioClass.value}--block`]: props.block,\n },\n ]);\n\n const titleClasses = computed(() => [\n `${radioClass.value}__title`,\n {\n [`${radioClass.value}__title--disabled`]: isDisabled.value,\n },\n ]);\n\n const iconClass = computed(() => [\n `${radioClass.value}__icon`,\n `${radioClass.value}__icon--${finalPlacement.value}`,\n {\n [`${radioClass.value}__icon--checked`]: radioChecked.value,\n [`${radioClass.value}__icon--disabled`]: isDisabled.value,\n },\n ]);\n\n const radioContentChange = (e: Event) => {\n e.stopPropagation();\n if (props.contentDisabled) {\n return;\n }\n radioOrgChange(e);\n };\n\n const radioOrgChange = (e: Event) => {\n if (isDisabled.value || finalReadonly.value) {\n return;\n }\n if (rootGroupChange) {\n const value = finalAllowUncheck.value && radioChecked.value ? undefined : props.value;\n rootGroupChange(value, { e, name: props.name });\n } else {\n const value = finalAllowUncheck.value ? !radioChecked.value : true;\n setInnerChecked(value, { e });\n }\n };\n\n const readerIcon = () => {\n if (radioChecked.value) {\n if (props.icon === 'circle') {\n return <CheckCircleFilledIcon class={`${radioClass.value}__icon-wrap`} />;\n }\n if (props.icon === 'line') {\n return <CheckIcon class={`${radioClass.value}__icon-wrap`} />;\n }\n if (props.icon === 'dot') {\n return (\n <div\n class={[\n `${radioClass.value}__icon-${props.icon}`,\n { [`${radioClass.value}__icon-${props.icon}--disabled`]: isDisabled.value },\n ]}\n />\n );\n }\n } else {\n if (props.icon === 'circle' || props.icon === 'dot') {\n return (\n <div\n class={[\n `${radioClass.value}__icon-circle`,\n { [`${radioClass.value}__icon-circle--disabled`]: isDisabled.value },\n ]}\n />\n );\n }\n if (props.icon === 'line') {\n return <div class=\"placeholder\" />;\n }\n }\n };\n\n return () => {\n const label = renderTNodeContent('default', 'label');\n const content = renderTNodeJSX('content');\n return (\n <div class={radioClasses.value} onClick={radioOrgChange}>\n <input type=\"radio\" class={`${radioClass.value}__original`} {...inputProps.value} />\n <div class={iconClass.value}>\n {readerIcon()}\n {iconContent.value}\n </div>\n <div class={`${radioClass.value}__content`} onClick={radioContentChange}>\n {label && (\n <span class={titleClasses.value} style={`-webkit-line-clamp: ${props.maxLabelRow}`}>\n {label}\n </span>\n )}\n {content && (\n <div\n class={[`${radioClass.value}__description`, { [`${radioClass.value}__description`]: isDisabled.value }]}\n style={`-webkit-line-clamp: ${props.maxContentRow}`}\n >\n {content}\n </div>\n )}\n </div>\n {!finalBorderless.value && (\n <div class={`${radioClass.value}__border ${radioClass.value}__border--${finalPlacement.value}`} />\n )}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","emits","setup","context","renderTNodeContent","useContent","renderTNodeJSX","useTNodeJSX","radioClass","usePrefixClass","_toRefs","toRefs","checked","modelValue","_useVModel","useVModel","defaultChecked","onChange","_useVModel2","_slicedToArray","innerChecked","setInnerChecked","rootGroupProps","inject","rootGroupValue","rootGroupChange","groupDisabled","computed","disabled","isDisabled","useFormDisabled","radioChecked","value","finalBorderless","borderless","finalPlacement","placement","finalAllowUncheck","Boolean","allowUncheck","finalReadonly","readonly","inputProps","iconContent","_props2$icon","icon","length","iconIndex","radioClasses","concat","_defineProperty","block","titleClasses","iconClass","radioContentChange","e","stopPropagation","contentDisabled","radioOrgChange","readerIcon","_createVNode","CheckCircleFilledIcon","CheckIcon","label","content","_mergeProps","maxLabelRow","maxContentRow"],"mappings":"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"}