tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 14.4 kB
Source Map (JSON)
{"version":3,"file":"radio.mjs","sources":["../../src/radio/radio.tsx"],"sourcesContent":["import { inject, computed, defineComponent, Ref } from 'vue';\nimport { CheckIcon, CheckCircleFilledIcon } from 'tdesign-icons-vue-next';\nimport { useDefault } from '../shared';\nimport config from '../config';\nimport props from './props';\nimport { TdRadioGroupProps, TdRadioProps } from './type';\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 [innerChecked, setInnerChecked] = useDefault<boolean, TdRadioProps>(props, context.emit, 'checked', 'change');\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(() => innerChecked.value || (props.value && props.value === rootGroupValue?.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","_useDefault","useDefault","emit","_useDefault2","_slicedToArray","innerChecked","setInnerChecked","rootGroupProps","inject","rootGroupValue","rootGroupChange","groupDisabled","computed","disabled","isDisabled","useFormDisabled","radioChecked","value","finalBorderless","borderless","finalPlacement","placement","finalAllowUncheck","Boolean","allowUncheck","finalReadonly","readonly","inputProps","checked","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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"}