tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 5.35 kB
Source Map (JSON)
{"version":3,"file":"useLengthLimit.mjs","sources":["../../src/hooks/useLengthLimit.tsx"],"sourcesContent":["import { computed, ComputedRef, onMounted, watch } from 'vue';\nimport { isNumber, isObject } from 'lodash-es';\nimport log from '../_common/js/log';\nimport { getCharacterLength, getUnicodeLength, limitUnicodeMaxLength } from '../_common/js/utils/helper';\nimport { TdInputProps } from '@/components';\n\nexport interface UseLengthLimitParams {\n value: string;\n maxlength: number;\n maxcharacter: number;\n allowInputOverMax: boolean;\n onValidate?: TdInputProps['onValidate'];\n}\n\nexport default function useLengthLimit(params: ComputedRef<UseLengthLimitParams>) {\n // 文本超出数量限制时,是否允许继续输入\n const getValueByLimitNumber = (inputValue: string) => {\n const { allowInputOverMax, maxlength, maxcharacter } = params.value;\n if (!(maxlength || maxcharacter) || allowInputOverMax || !inputValue) return inputValue;\n if (maxlength) {\n // input value could be unicode 😊\n return limitUnicodeMaxLength(inputValue, maxlength);\n }\n if (maxcharacter) {\n const r = getCharacterLength(inputValue, maxcharacter);\n if (isObject(r)) {\n return r.characters;\n }\n }\n };\n\n const limitNumber = computed(() => {\n const { maxlength, maxcharacter, value } = params.value;\n if (isNumber(value)) return String(value);\n if (maxlength && maxcharacter) {\n log.warn('Input', 'Pick one of maxlength and maxcharacter please.');\n }\n if (maxlength) {\n const length = value?.length ? getUnicodeLength(value) : 0;\n return `${length}/${maxlength}`;\n }\n if (maxcharacter) {\n return `${getCharacterLength(value || '')}/${maxcharacter}`;\n }\n return '';\n });\n\n const innerStatus = computed(() => {\n if (limitNumber.value) {\n const [current, total] = limitNumber.value.split('/');\n return Number(current) > Number(total) ? 'error' : '';\n }\n return '';\n });\n\n const onValidateChange = () => {\n params.value.onValidate?.({\n error: innerStatus.value ? 'exceed-maximum' : undefined,\n });\n };\n\n watch(innerStatus, onValidateChange);\n\n onMounted(() => {\n innerStatus.value && onValidateChange();\n });\n return {\n limitNumber,\n getValueByLimitNumber,\n };\n}\n"],"names":["useLengthLimit","params","getValueByLimitNumber","inputValue","_params$value","value","allowInputOverMax","maxlength","maxcharacter","limitUnicodeMaxLength","r","getCharacterLength","isObject","characters","limitNumber","computed","_params$value2","isNumber","String","log","warn","length","getUnicodeLength","concat","innerStatus","_limitNumber$value$sp","split","_limitNumber$value$sp2","_slicedToArray","current","total","Number","onValidateChange","_params$value$onValid","_params$value3","onValidate","call","error","watch","onMounted"],"mappings":"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"}