{"version":3,"file":"radio.mjs","sources":["../../../components/radio/radio.tsx"],"sourcesContent":["import { defineComponent, inject, toRefs, computed, ref, ComputedRef } from 'vue';\nimport {\n  useVModel,\n  useContent,\n  useDisabled,\n  useReadonly,\n  usePrefixClass,\n  useCommonClassName,\n} from '@tdesign/shared-hooks';\nimport { omit, isString } from 'lodash-es';\nimport props from './props';\nimport { RadioGroupInjectionKey, RadioButtonInjectionKey } from './constants';\n\n// hooks\n\nimport { getValidAttrs } from '@tdesign/common-js/utils/helper';\n\nexport default defineComponent({\n  name: 'TRadio',\n  inheritAttrs: false,\n  props,\n  setup(props, { attrs }) {\n    const inputRef = ref();\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\n    const radioChecked = computed(() => (radioGroup ? props.value === radioGroup.value : innerChecked.value));\n\n    const radioGroup = inject(RadioGroupInjectionKey, undefined);\n\n    const allowUncheck = computed(() => Boolean(props.allowUncheck || radioGroup?.allowUncheck));\n\n    const handleClick = (e: MouseEvent) => {\n      e.stopPropagation();\n    };\n\n    const onLabelClick = (e: MouseEvent) => {\n      if (isDisabled.value || isReadonly.value) return;\n      props.onClick?.({ e });\n\n      if (radioChecked.value && !allowUncheck.value) return;\n\n      if (radioGroup) {\n        const value = radioChecked.value && allowUncheck.value ? undefined : props.value;\n        radioGroup.setValue(value, { e, name: radioGroup.name });\n      } else {\n        const value = allowUncheck.value ? !radioChecked.value : true;\n        setInnerChecked(value, { e });\n      }\n    };\n\n    const inputEvents = computed(() =>\n      getValidAttrs({\n        focus: attrs.onFocus,\n        blur: attrs.onBlur,\n        keydown: attrs.onKeydown,\n        keyup: attrs.onKeyup,\n        keypresss: attrs.onKeypresss,\n      }),\n    );\n    const wrapperAttrs = computed(() => {\n      const events = [...Object.keys(inputEvents.value), 'input', 'change'].map(\n        (str) => `on${str[0].toUpperCase()}${str.slice(1)}`,\n      );\n      return omit(attrs, events);\n    });\n    /** Event END */\n\n    // extend radioGroup disabled props\n    const groupDisabled = computed(() => radioGroup?.disabled);\n    const groupReadonly = computed(() => radioGroup?.readonly);\n    const isDisabled = useDisabled({ afterDisabled: groupDisabled }) as ComputedRef<boolean>;\n    const isReadonly = useReadonly({ afterReadonly: groupReadonly });\n\n    // attribute\n    const inputProps = computed(() => ({\n      name: radioGroup ? radioGroup.name : props.name,\n      checked: radioChecked.value,\n      disabled: isDisabled.value,\n      readonly: isReadonly.value,\n      value: props.value,\n    }));\n\n    /** Style */\n    const { STATUS } = useCommonClassName();\n    const radioButton = inject(RadioButtonInjectionKey, undefined);\n    const radioBtnName = usePrefixClass('radio-button');\n    const COMPONENT_NAME = usePrefixClass('radio');\n    const prefixCls = computed(() => (radioButton ? radioBtnName.value : COMPONENT_NAME.value));\n    const inputClass = computed(() => [\n      `${prefixCls.value}`,\n      {\n        [STATUS.value.checked]: inputProps.value.checked,\n        [STATUS.value.disabled]: inputProps.value.disabled,\n      },\n    ]);\n    /** Style END */\n\n    const renderContent = useContent();\n\n    return () => (\n      <label\n        ref={inputRef}\n        class={inputClass.value}\n        {...wrapperAttrs.value}\n        tabindex={isDisabled.value ? undefined : '0'}\n        onClick={onLabelClick}\n      >\n        <input\n          type=\"radio\"\n          class={`${prefixCls.value}__former`}\n          {...inputEvents.value}\n          {...inputProps.value}\n          onClick={handleClick}\n          tabindex=\"-1\"\n          data-value={isString(props.value) ? `'${props.value}'` : props.value}\n          data-allow-uncheck={allowUncheck.value || undefined}\n        />\n        <span class={`${prefixCls.value}__input`}></span>\n        <span class={`${prefixCls.value}__label`}>{renderContent('default', 'label')}</span>\n      </label>\n    );\n  },\n});\n"],"names":["defineComponent","name","inheritAttrs","props","setup","attrs","_ref","inputRef","ref","_toRefs","toRefs","checked","modelValue","_useVModel","useVModel","defaultChecked","onChange","_useVModel2","_slicedToArray","innerChecked","setInnerChecked","radioChecked","computed","radioGroup","value","inject","RadioGroupInjectionKey","allowUncheck","Boolean","handleClick","e","stopPropagation","onLabelClick","_props2$onClick","isDisabled","isReadonly","onClick","setValue","inputEvents","getValidAttrs","focus","onFocus","blur","onBlur","keydown","onKeydown","keyup","onKeyup","keypresss","onKeypresss","wrapperAttrs","events","concat","_toConsumableArray","Object","keys","map","str","toUpperCase","slice","omit","groupDisabled","disabled","groupReadonly","readonly","useDisabled","afterDisabled","useReadonly","afterReadonly","inputProps","_useCommonClassName","useCommonClassName","STATUS","radioButton","RadioButtonInjectionKey","radioBtnName","usePrefixClass","COMPONENT_NAME","prefixCls","inputClass","_defineProperty","renderContent","useContent","_createVNode","_mergeProps","isString"],"mappings":"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"}