UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.27 kB
{"version":3,"file":"use-form-item.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form-item.ts"],"sourcesContent":["import {\n computed,\n getCurrentInstance,\n inject,\n onMounted,\n onUnmounted,\n ref,\n toRef,\n watch,\n} from 'vue'\nimport { useId } from '@element-plus/hooks/use-id'\nimport { formContextKey, formItemContextKey } from '../constants'\n\nimport type { ComputedRef, Ref, WatchStopHandle } from 'vue'\nimport type { FormItemContext } from '../types'\n\nexport const useFormItem = () => {\n const form = inject(formContextKey, undefined)\n const formItem = inject(formItemContextKey, undefined)\n return {\n form,\n formItem,\n }\n}\n\nexport type IUseFormItemInputCommonProps = {\n id?: string\n label?: string | number | boolean | Record<string, any>\n ariaLabel?: string | number | boolean | Record<string, any>\n}\n\nexport const useFormItemInputId = (\n props: Partial<IUseFormItemInputCommonProps>,\n {\n formItemContext,\n disableIdGeneration,\n disableIdManagement,\n }: {\n formItemContext?: FormItemContext\n disableIdGeneration?: ComputedRef<boolean> | Ref<boolean>\n disableIdManagement?: ComputedRef<boolean> | Ref<boolean>\n }\n) => {\n if (!disableIdGeneration) {\n disableIdGeneration = ref<boolean>(false)\n }\n if (!disableIdManagement) {\n disableIdManagement = ref<boolean>(false)\n }\n\n const instance = getCurrentInstance()\n\n const inLabel = () => {\n let parent = instance?.parent\n while (parent) {\n if (parent.type.name === 'ElFormItem') {\n return false\n }\n if (parent.type.name === 'ElLabelWrap') {\n return true\n }\n parent = parent.parent\n }\n return false\n }\n\n const inputId = ref<string>()\n let idUnwatch: WatchStopHandle | undefined = undefined\n\n const isLabeledByFormItem = computed<boolean>(() => {\n return !!(\n !(props.label || props.ariaLabel) &&\n formItemContext &&\n formItemContext.inputIds &&\n formItemContext.inputIds?.length <= 1\n )\n })\n\n // Generate id for ElFormItem label if not provided as prop\n onMounted(() => {\n idUnwatch = watch(\n [toRef(props, 'id'), disableIdGeneration] as any,\n ([id, disableIdGeneration]: [string, boolean]) => {\n const newId = id ?? (!disableIdGeneration ? useId().value : undefined)\n if (newId !== inputId.value) {\n if (formItemContext?.removeInputId && !inLabel()) {\n inputId.value && formItemContext.removeInputId(inputId.value)\n if (!disableIdManagement?.value && !disableIdGeneration && newId) {\n formItemContext.addInputId(newId)\n }\n }\n inputId.value = newId\n }\n },\n { immediate: true }\n )\n })\n\n onUnmounted(() => {\n idUnwatch && idUnwatch()\n if (formItemContext?.removeInputId) {\n inputId.value && formItemContext.removeInputId(inputId.value)\n }\n })\n\n return {\n isLabeledByFormItem,\n inputId,\n }\n}\n"],"names":["disableIdGeneration"],"mappings":"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"}