xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 17 kB
Source Map (JSON)
{"version":3,"file":"textarea.mjs","sources":["../../src/textarea/textarea.tsx"],"sourcesContent":["import {\n defineComponent,\n computed,\n watch,\n ref,\n nextTick,\n onMounted,\n toRefs,\n inject,\n StyleValue,\n CSSProperties,\n} from 'vue';\nimport merge from 'lodash/merge';\nimport isUndefined from 'lodash/isUndefined';\n\nimport { getCharacterLength, omit } from '../utils/helper';\nimport calcTextareaHeight from './calcTextareaHeight';\nimport { FormItemInjectionKey } from '../form/const';\nimport setStyle from '../_common/js/utils/set-style';\n\n// hooks\nimport useVModel from '../hooks/useVModel';\nimport { useFormDisabled } from '../form/hooks';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\n\nimport props from './props';\nimport type { TextareaValue, TdTextareaProps } from './type';\n\nfunction getValidAttrs(obj: object): object {\n const newObj = {};\n Object.keys(obj).forEach((key) => {\n if (!isUndefined(obj[key])) {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n}\n\nexport default defineComponent({\n name: 'XTextarea',\n inheritAttrs: false,\n props: { ...props },\n\n setup(props: TdTextareaProps, { attrs, expose }) {\n const prefix = usePrefixClass();\n const name = usePrefixClass('textarea');\n const TEXTAREA_TIPS_CLASS = computed(() => `${name.value}__tips`);\n const TEXTAREA_LIMIT = computed(() => `${name.value}__limit`);\n\n const { value, modelValue } = toRefs(props);\n const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const disabled = useFormDisabled();\n const textareaStyle = ref<CSSProperties>({});\n\n const refTextareaElem = ref<HTMLTextAreaElement>();\n const focused = ref(false);\n const isComposing = ref(false);\n\n const focus = () => refTextareaElem.value?.focus();\n const blur = () => refTextareaElem.value?.blur();\n\n // methods\n const adjustTextareaHeight = () => {\n if (props.autosize === true) {\n textareaStyle.value = calcTextareaHeight(refTextareaElem.value);\n } else if (props.autosize && typeof props.autosize === 'object') {\n const { minRows, maxRows } = props.autosize;\n textareaStyle.value = calcTextareaHeight(refTextareaElem.value, minRows, maxRows);\n } else if (attrs.rows) {\n textareaStyle.value = { height: 'auto', minHeight: 'auto' };\n } else if (attrs.style && refTextareaElem.value?.style?.height) {\n textareaStyle.value = { height: refTextareaElem.value.style.height };\n }\n };\n\n const setInputValue = (v: TextareaValue = '') => {\n const textareaElem = refTextareaElem.value;\n const sV = String(v);\n if (!textareaElem) {\n return;\n }\n\n if (textareaElem.value !== sV) {\n textareaElem.value = sV;\n innerValue.value = sV;\n }\n };\n const inputValueChangeHandle = (e: InputEvent) => {\n const { target } = e;\n let val = (target as HTMLInputElement).value;\n if (props.maxcharacter && props.maxcharacter >= 0) {\n const stringInfo = getCharacterLength(val, props.maxcharacter);\n val = typeof stringInfo === 'object' && stringInfo.characters;\n }\n !isComposing.value && setInnerValue(val, { e });\n nextTick(() => setInputValue(val));\n adjustTextareaHeight();\n };\n\n const handleInput = (e: InputEvent) => {\n inputValueChangeHandle(e);\n };\n\n const onCompositionstart = () => {\n isComposing.value = true;\n };\n\n const onCompositionend = (e: InputEvent | CompositionEvent) => {\n isComposing.value = false;\n inputValueChangeHandle(e as InputEvent);\n };\n\n const eventDeal = (name: 'keydown' | 'keyup' | 'keypress' | 'change', e: KeyboardEvent | FocusEvent) => {\n if (disabled.value) return;\n const _name = `on${name[0].toUpperCase()}${name.slice(1)}`;\n props[_name]?.(innerValue.value, { e });\n };\n\n const emitKeyDown = (e: KeyboardEvent) => {\n eventDeal('keydown', e);\n };\n const emitKeyUp = (e: KeyboardEvent) => {\n eventDeal('keyup', e);\n };\n const emitKeypress = (e: KeyboardEvent) => {\n eventDeal('keypress', e);\n };\n\n const emitFocus = (e: FocusEvent) => {\n adjustTextareaHeight();\n if (disabled.value) return;\n focused.value = true;\n props.onFocus?.(innerValue.value, { e });\n };\n\n const formItem = inject(FormItemInjectionKey, undefined);\n const emitBlur = (e: FocusEvent) => {\n adjustTextareaHeight();\n focused.value = false;\n props.onBlur?.(innerValue.value, { e });\n formItem?.handleBlur();\n };\n\n // computed\n const textareaClasses = computed(() => {\n return [\n name.value,\n {\n [`${prefix.value}-is-disabled`]: disabled.value,\n [`${prefix.value}-is-readonly`]: props.readonly,\n },\n ];\n });\n const inputAttrs = computed<Record<string, any>>(() => {\n return getValidAttrs({\n autofocus: props.autofocus,\n disabled: disabled.value,\n readonly: props.readonly,\n placeholder: props.placeholder,\n maxlength: props.maxlength || undefined,\n name: props.name || undefined,\n });\n });\n const characterNumber = computed(() => {\n const characterInfo = getCharacterLength(String(innerValue.value || ''));\n if (typeof characterInfo === 'object') {\n return characterInfo.length;\n }\n return characterInfo;\n });\n\n // watch\n watch(\n () => innerValue.value,\n () => adjustTextareaHeight(),\n );\n\n watch(refTextareaElem, (el) => {\n if (!el) return;\n adjustTextareaHeight();\n });\n\n watch(\n () => props.autofocus,\n (val) => {\n if (val) {\n refTextareaElem.value.focus();\n }\n },\n );\n\n watch(textareaStyle, (val) => {\n const { style } = attrs as { style: StyleValue };\n setStyle(refTextareaElem.value, merge(style, val));\n });\n\n watch(innerValue, () => {\n nextTick(() => adjustTextareaHeight());\n });\n\n watch(() => props.autosize, adjustTextareaHeight, { deep: true });\n\n expose({\n focus,\n blur,\n });\n\n onMounted(() => {\n adjustTextareaHeight();\n });\n\n const renderTNodeJSX = useTNodeJSX();\n return () => {\n const inputEvents = getValidAttrs({\n onFocus: emitFocus,\n onBlur: emitBlur,\n onKeydown: emitKeyDown,\n onKeyup: emitKeyUp,\n onKeypress: emitKeypress,\n });\n const { STATUS } = useCommonClassName();\n const classes = computed(() => [\n `${name.value}__inner`,\n {\n [`${prefix.value}-is-${props.status}`]: props.status,\n [STATUS.value.disabled]: disabled.value,\n [STATUS.value.focused]: focused.value,\n [`${prefix.value}-resize-none`]: typeof props.autosize === 'object',\n },\n 'narrow-scrollbar',\n ]);\n\n const tips = renderTNodeJSX('tips');\n\n const textTips = tips && (\n <div class={`${TEXTAREA_TIPS_CLASS.value} ${name.value}__tips--${props.status || 'normal'}`}>{tips}</div>\n );\n\n const limitText =\n (props.maxcharacter && (\n <span class={TEXTAREA_LIMIT.value}>{`${characterNumber.value}/${props.maxcharacter}`}</span>\n )) ||\n (!props.maxcharacter && props.maxlength && (\n <span class={TEXTAREA_LIMIT.value}>{`${innerValue.value ? String(innerValue.value)?.length : 0}/${\n props.maxlength\n }`}</span>\n ));\n\n return (\n <div class={textareaClasses.value} {...omit(attrs, ['style'])}>\n <textarea\n onInput={handleInput}\n onCompositionstart={onCompositionstart}\n onCompositionend={onCompositionend}\n ref={refTextareaElem}\n value={innerValue.value}\n class={classes.value}\n {...inputEvents}\n {...inputAttrs.value}\n ></textarea>\n {textTips || limitText ? (\n <div\n class={[\n `${name.value}__info_wrapper`,\n {\n [`${name.value}__info_wrapper_align`]: !textTips,\n },\n ]}\n >\n {textTips}\n {limitText}\n </div>\n ) : null}\n </div>\n );\n };\n },\n});\n"],"names":["newObj","name","inheritAttrs","props","setup","innerValue","setInnerValue","textareaStyle","height","minHeight","e","nextTick","adjustTextareaHeight","eventDeal","formItem","maxlength","watch","refTextareaElem","deep","expose","focus","blur","onMounted","onFocus","onBlur","onKeydown","onKeyup","onKeypress","_createVNode"],"mappings":"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"}