UNPKG

tdesign-vue-next

Version:
1 lines 3.24 kB
{"version":3,"file":"useInputWidth.mjs","sources":["../../../../components/input/hooks/useInputWidth.ts"],"sourcesContent":["import { onMounted, Ref, ref, watch, nextTick, onBeforeUnmount, toRefs } from 'vue';\nimport { useResizeObserver } from '@tdesign/shared-hooks';\nimport { InputValue, TdInputProps } from './../type';\n\nconst ANIMATION_TIME = 100;\n\nexport function useInputWidth(props: TdInputProps, inputRef: Ref<HTMLInputElement>, innerValue: Ref<InputValue>) {\n const { autoWidth, placeholder } = toRefs(props);\n const inputPreRef = ref<HTMLSpanElement>(null);\n const observerTimer = ref(null);\n\n const updateInputWidth = () => {\n if (!inputPreRef.value || !inputRef.value) return;\n // 使用 getComputedStyle 规避 transform 带来的影响\n inputRef.value.style.width = getComputedStyle(inputPreRef.value).width;\n };\n\n useResizeObserver(inputPreRef, () => {\n if (autoWidth.value) {\n observerTimer.value = setTimeout(() => {\n updateInputWidth();\n clearTimeout(observerTimer.value);\n }, ANIMATION_TIME);\n }\n });\n\n onBeforeUnmount(() => {\n clearTimeout(observerTimer.value);\n });\n\n const addListeners = () => {\n watch(\n [innerValue, placeholder],\n () => {\n if (!autoWidth.value) return;\n nextTick(() => {\n updateInputWidth();\n });\n },\n { immediate: true },\n );\n };\n\n onMounted(() => {\n if (autoWidth.value) {\n addListeners();\n }\n });\n\n return {\n inputPreRef,\n };\n}\n"],"names":["ANIMATION_TIME","useInputWidth","props","inputRef","innerValue","_toRefs","toRefs","autoWidth","placeholder","inputPreRef","ref","observerTimer","updateInputWidth","value","style","width","getComputedStyle","useResizeObserver","setTimeout","clearTimeout","onBeforeUnmount","addListeners","watch","nextTick","immediate","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,cAAiB,GAAA,GAAA,CAAA;AAEP,SAAAC,aAAAA,CAAcC,KAAqB,EAAAC,QAAA,EAAiCC,UAA6B,EAAA;AAC/G,EAAA,IAAAC,OAAA,GAAmCC,OAAOJ,KAAK,CAAA;IAAvCK,SAAA,GAAAF,OAAA,CAAAE,SAAA;IAAWC,WAAY,GAAAH,OAAA,CAAZG,WAAY,CAAA;AACzB,EAAA,IAAAC,WAAA,GAAcC,IAAqB,IAAI,CAAA,CAAA;AACvC,EAAA,IAAAC,aAAA,GAAgBD,IAAI,IAAI,CAAA,CAAA;AAE9B,EAAA,IAAME,mBAAmB,SAAnBA,mBAAyB;IAC7B,IAAI,CAACH,WAAA,CAAYI,KAAS,IAAA,CAACV,QAAS,CAAAU,KAAA,EAAO,OAAA;AAE3CV,IAAAA,QAAA,CAASU,MAAMC,KAAM,CAAAC,KAAA,GAAQC,gBAAiB,CAAAP,WAAA,CAAYI,KAAK,CAAE,CAAAE,KAAA,CAAA;GACnE,CAAA;EAEAE,iBAAA,CAAkBR,aAAa,YAAM;IACnC,IAAIF,UAAUM,KAAO,EAAA;AACLF,MAAAA,aAAA,CAAAE,KAAA,GAAQK,WAAW,YAAM;AACpBN,QAAAA,gBAAA,EAAA,CAAA;AACjBO,QAAAA,YAAA,CAAaR,cAAcE,KAAK,CAAA,CAAA;SAC/Bb,cAAc,CAAA,CAAA;AACnB,KAAA;AACF,GAAC,CAAA,CAAA;AAEDoB,EAAAA,eAAA,CAAgB,YAAM;AACpBD,IAAAA,YAAA,CAAaR,cAAcE,KAAK,CAAA,CAAA;AAClC,GAAC,CAAA,CAAA;AAED,EAAA,IAAMQ,eAAe,SAAfA,eAAqB;AACzBC,IAAAA,KAAA,CACE,CAAClB,YAAYI,WAAW,CAAA,EACxB,YAAM;AACJ,MAAA,IAAI,CAACD,SAAU,CAAAM,KAAA,EAAO,OAAA;AACtBU,MAAAA,QAAA,CAAS,YAAM;AACIX,QAAAA,gBAAA,EAAA,CAAA;AACnB,OAAC,CAAA,CAAA;AACH,KAAA,EACA;AAAEY,MAAAA,WAAW,IAAA;AAAK,KACpB,CAAA,CAAA;GACF,CAAA;AAEAC,EAAAA,SAAA,CAAU,YAAM;IACd,IAAIlB,UAAUM,KAAO,EAAA;AACNQ,MAAAA,YAAA,EAAA,CAAA;AACf,KAAA;AACF,GAAC,CAAA,CAAA;EAEM,OAAA;AACLZ,IAAAA,WAAA,EAAAA,WAAAA;GACF,CAAA;AACF;;;;"}