UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.99 kB
{"version":3,"file":"use-input-tag-dom.mjs","sources":["../../../../../../../packages/components/input-tag/src/composables/use-input-tag-dom.ts"],"sourcesContent":["import { computed, reactive, ref, useAttrs, useSlots } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { MINIMUM_INPUT_WIDTH } from '@element-plus/constants'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport type { ComputedRef, Ref, StyleValue } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { IconComponent } from '@element-plus/utils'\nimport type { InputTagProps } from '../input-tag'\n\ninterface UseInputTagDomOptions {\n props: InputTagProps\n isFocused: Ref<boolean>\n hovering: Ref<boolean>\n disabled: ComputedRef<boolean>\n inputValue: Ref<string | undefined>\n size: ComputedRef<ComponentSize>\n validateState: ComputedRef<string>\n validateIcon: ComputedRef<'' | IconComponent>\n needStatusIcon: ComputedRef<boolean>\n}\n\nexport function useInputTagDom({\n props,\n isFocused,\n hovering,\n disabled,\n inputValue,\n size,\n validateState,\n validateIcon,\n needStatusIcon,\n}: UseInputTagDomOptions) {\n const attrs = useAttrs()\n const slots = useSlots()\n const ns = useNamespace('input-tag')\n const nsInput = useNamespace('input')\n\n const collapseItemRef = ref<HTMLElement>()\n const innerRef = ref<HTMLElement>()\n\n const containerKls = computed(() => [\n ns.b(),\n ns.is('focused', isFocused.value),\n ns.is('hovering', hovering.value),\n ns.is('disabled', disabled.value),\n ns.m(size.value),\n ns.e('wrapper'),\n attrs.class,\n ])\n const containerStyle = computed<StyleValue>(() => [attrs.style as StyleValue])\n const innerKls = computed(() => [\n ns.e('inner'),\n ns.is('draggable', props.draggable),\n ns.is('left-space', !props.modelValue?.length && !slots.prefix),\n ns.is('right-space', !props.modelValue?.length && !showSuffix.value),\n ])\n const showClear = computed(() => {\n return (\n props.clearable &&\n !disabled.value &&\n !props.readonly &&\n (props.modelValue?.length || inputValue.value) &&\n (isFocused.value || hovering.value)\n )\n })\n const showSuffix = computed(() => {\n return (\n slots.suffix ||\n showClear.value ||\n (validateState.value && validateIcon.value && needStatusIcon.value)\n )\n })\n\n const states = reactive({\n innerWidth: 0,\n collapseItemWidth: 0,\n })\n\n const getGapWidth = () => {\n if (!innerRef.value) return 0\n const style = window.getComputedStyle(innerRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n const resetInnerWidth = () => {\n states.innerWidth = Number.parseFloat(\n window.getComputedStyle(innerRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const tagStyle = computed(() => {\n if (!props.collapseTags) return {}\n const gapWidth = getGapWidth()\n\n const inputSlotWidth = gapWidth + MINIMUM_INPUT_WIDTH\n\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.innerWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.innerWidth - inputSlotWidth\n\n return { maxWidth: `${Math.max(maxWidth, 0)}px` }\n })\n\n useResizeObserver(innerRef, resetInnerWidth)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n return {\n ns,\n nsInput,\n containerKls,\n containerStyle,\n innerKls,\n showClear,\n showSuffix,\n tagStyle,\n collapseItemRef,\n innerRef,\n }\n}\n"],"names":[],"mappings":"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"}