UNPKG

tdesign-mobile-vue

Version:
1 lines 21.7 kB
{"version":3,"file":"input.mjs","sources":["../../src/input/input.tsx"],"sourcesContent":["import { PropType, ref, toRefs, computed, defineComponent, nextTick, watch, inject } from 'vue';\nimport {\n BrowseIcon as TBrowseIcon,\n BrowseOffIcon as TBrowseOffIcon,\n CloseCircleFilledIcon as TCloseCircleFilledIcon,\n} from 'tdesign-icons-vue-next';\nimport { isFunction } from 'lodash-es';\nimport config from '../config';\nimport InputProps from './props';\nimport { InputValue, TdInputProps } from './type';\nimport { extendAPI } from '../shared';\nimport { FormItemInjectionKey } from '../form/const';\nimport { useFormDisabled } from '../form/hooks';\nimport useVModel from '../hooks/useVModel';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useLengthLimit from '../hooks/useLengthLimit';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-input`,\n props: {\n ...InputProps,\n labelAlign: {\n type: String,\n default: 'top',\n },\n pattern: {\n type: String,\n },\n inputmode: {\n type: String as PropType<'search' | 'text' | 'none' | 'url' | 'tel' | 'email' | 'numeric' | 'decimal'>,\n validator(val: string): boolean {\n if (!val) return true;\n return ['search', 'text', 'none', 'url', 'tel', 'email', 'numeric', 'decimal'].includes(val);\n },\n },\n },\n setup(props, context) {\n const renderTNodeJSX = useTNodeJSX();\n const inputClass = usePrefixClass('input');\n const isDisabled = useFormDisabled();\n\n const inputRef = ref();\n\n const { value, modelValue } = toRefs(props);\n const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const status = props.status || 'default';\n const renderType = ref(props.type);\n const focused = ref(false);\n const formItem = inject(FormItemInjectionKey, undefined);\n\n const inputClasses = computed(() => [\n `${inputClass.value}__control`,\n {\n [`${inputClass.value}--${props.align}`]: props.align !== 'left',\n [`${inputClass.value}--${status}`]: status,\n [`${inputClass.value}__control--disabled`]: isDisabled.value,\n },\n ]);\n\n const rootClasses = computed(() => [\n inputClass.value,\n {\n [`${inputClass.value}--layout-${props.layout}`]: props.layout,\n [`${inputClass.value}--center`]: props.labelAlign === 'center',\n [`${inputClass.value}--border`]: !props.borderless,\n },\n ]);\n const showClear = computed(() => {\n if (isDisabled.value || props.readonly === true) return false;\n\n if (props.clearable && innerValue.value && String(innerValue.value).length > 0) {\n return props.clearTrigger === 'always' || (props.clearTrigger === 'focus' && focused.value);\n }\n return false;\n });\n\n const limitParams = computed(() => ({\n value: [undefined, null].includes(innerValue.value) ? undefined : String(innerValue.value),\n maxlength: Number(props.maxlength),\n maxcharacter: props.maxcharacter,\n allowInputOverMax: props.allowInputOverMax,\n status: props.status,\n onValidate: props.onValidate,\n }));\n\n const { getValueByLimitNumber } = useLengthLimit(limitParams);\n\n const setInputValue = (v: InputValue = '') => {\n const input = inputRef.value as HTMLInputElement;\n const sV = String(v);\n if (!input) {\n return;\n }\n if (input.value !== sV) {\n input.value = sV;\n }\n };\n\n const handleInput = (e: Event) => {\n // 中文输入的时候inputType是insertCompositionText所以中文输入的时候禁止触发。\n if (e instanceof InputEvent) {\n const checkInputType = e.inputType && e.inputType === 'insertCompositionText';\n if (e.isComposing || checkInputType) return;\n }\n inputValueChangeHandle(e);\n };\n\n const inputValueChangeHandle = (e: Event) => {\n const { value } = e.target as HTMLInputElement;\n setInnerValue(getValueByLimitNumber(value));\n nextTick(() => setInputValue(innerValue.value));\n };\n\n const focus = () => {\n focused.value = true;\n inputRef.value?.focus();\n };\n\n const blur = () => {\n focused.value = false;\n inputRef.value?.blur();\n };\n\n extendAPI({ focus, blur });\n\n const handleClear = (e: TouchEvent) => {\n e.preventDefault();\n const val = props.type === 'number' ? undefined : '';\n setInnerValue(val);\n focus();\n props.onClear?.({ e });\n };\n\n const handleFocus = (e: FocusEvent) => {\n focused.value = true;\n props.onFocus?.(innerValue.value, { e });\n };\n\n const handleBlur = (e: FocusEvent) => {\n focused.value = false;\n // 失焦时处理 format\n if (isFunction(props.format)) {\n setInnerValue(props.format(innerValue.value));\n nextTick(() => {\n setInputValue(innerValue.value);\n props.onBlur?.(innerValue.value, { e });\n formItem?.handleBlur();\n });\n return;\n }\n\n props.onBlur?.(innerValue.value, { e });\n formItem?.handleBlur();\n };\n\n const handleCompositionend = (e: CompositionEvent) => {\n inputValueChangeHandle(e);\n };\n\n const handlePwdIconClick = () => {\n if (isDisabled.value) return;\n\n renderType.value = renderType.value === 'password' ? 'text' : 'password';\n };\n\n watch(\n () => props.autofocus,\n (v) => {\n if (v === true) {\n nextTick(() => {\n focus();\n });\n }\n },\n { immediate: true },\n );\n\n watch(\n () => props.type,\n (v) => {\n renderType.value = v;\n },\n { immediate: true },\n );\n\n return () => {\n const renderPrefix = () => {\n const prefixIcon = renderTNodeJSX('prefixIcon');\n const label = renderTNodeJSX('label');\n\n return (\n <div class={`${inputClass.value}__wrap--prefix`}>\n {prefixIcon && <div class={`${inputClass.value}__icon--prefix`}>{prefixIcon}</div>}\n <div class={`${inputClass.value}__label`}>{label}</div>\n </div>\n );\n };\n const renderClearable = () => {\n if (showClear.value) {\n return (\n <div class={`${inputClass.value}__wrap--clearable-icon`} onTouchend={handleClear}>\n <TCloseCircleFilledIcon />\n </div>\n );\n }\n\n return null;\n };\n const renderSuffix = () => {\n const suffix = renderTNodeJSX('suffix');\n if (!suffix) {\n return null;\n }\n return <div class={`${inputClass.value}__wrap--suffix`}>{suffix}</div>;\n };\n\n const renderSuffixIcon = () => {\n let suffixIcon = renderTNodeJSX('suffixIcon');\n if (props.type === 'password') {\n if (renderType.value === 'password') {\n suffixIcon = <TBrowseOffIcon onClick={handlePwdIconClick} />;\n } else if (renderType.value === 'text') {\n suffixIcon = <TBrowseIcon onClick={handlePwdIconClick} />;\n }\n }\n\n if (!suffixIcon) {\n return null;\n }\n return <div class={`${inputClass.value}__wrap--suffix-icon`}>{suffixIcon}</div>;\n };\n\n const renderExtra = () => {\n return renderTNodeJSX('extra');\n };\n\n const renderTips = () => {\n const tips = renderTNodeJSX('tips');\n if (!tips) {\n return null;\n }\n return <div class={`${inputClass.value}__tips ${inputClass.value}--${props.align}`}>{tips}</div>;\n };\n\n // 参考: https://github.com/Tencent/tdesign-vue-next/issues/4413\n // 不传给 input 原生元素 maxlength,浏览器默认行为会按照 unicode 进行限制,与 maxLength API 违背\n const inputAttrs = {\n ref: inputRef,\n class: inputClasses.value,\n value: innerValue.value,\n name: props.name,\n type: renderType.value,\n disabled: isDisabled.value,\n autocomplete: props.autocomplete ? 'On' : 'Off',\n placeholder: props.placeholder,\n readonly: props.readonly,\n // maxlength: props.maxlength,\n pattern: props.pattern,\n inputmode: props.inputmode,\n spellcheck: props.spellCheck,\n enterkeyhint: props.enterkeyhint,\n style: { '--td-input-cursor-color': props.cursorColor },\n onFocus: handleFocus,\n onBlur: handleBlur,\n onInput: handleInput,\n onCompositionend: handleCompositionend,\n };\n\n return (\n <div class={rootClasses.value}>\n {renderPrefix()}\n <div class={`${inputClass.value}__wrap`}>\n <div class={`${inputClass.value}__content ${inputClass.value}--${status || 'default'}`}>\n <input {...inputAttrs} />\n {renderClearable()}\n {renderSuffix()}\n {renderSuffixIcon()}\n </div>\n {renderTips()}\n </div>\n {renderExtra()}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","_objectSpread","InputProps","labelAlign","type","String","default","pattern","inputmode","validator","val","includes","setup","context","renderTNodeJSX","useTNodeJSX","inputClass","usePrefixClass","isDisabled","useFormDisabled","inputRef","ref","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","status","renderType","focused","formItem","inject","FormItemInjectionKey","inputClasses","computed","concat","_defineProperty","align","rootClasses","layout","borderless","showClear","readonly","clearable","length","clearTrigger","limitParams","maxlength","Number","maxcharacter","allowInputOverMax","onValidate","_useLengthLimit","useLengthLimit","getValueByLimitNumber","setInputValue","v","arguments","undefined","input","sV","handleInput","e","InputEvent","checkInputType","inputType","isComposing","inputValueChangeHandle","target","nextTick","focus","_inputRef$value","blur","_inputRef$value2","extendAPI","handleClear","_props$onClear","preventDefault","onClear","call","handleFocus","_props$onFocus","onFocus","handleBlur","_props$onBlur2","isFunction","format","_props$onBlur","onBlur","handleCompositionend","handlePwdIconClick","watch","autofocus","immediate","renderPrefix","prefixIcon","label","_createVNode","renderClearable","TCloseCircleFilledIcon","renderSuffix","suffix","renderSuffixIcon","suffixIcon","TBrowseOffIcon","TBrowseIcon","renderExtra","renderTips","tips","inputAttrs","class","disabled","autocomplete","placeholder","spellcheck","spellCheck","enterkeyhint","style","cursorColor","onInput","onCompositionend"],"mappings":"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"}