UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.79 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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"}