UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

66 lines (63 loc) 2.02 kB
import { inject, ref, computed, onMounted, watch, toRef, onUnmounted } from 'vue'; import { useId } from '../use-id/index.mjs'; import { FormContextKey } from '../../components/ivue-form/types/form.mjs'; import { FormItemContextKey } from '../../components/ivue-form/types/form-item.mjs'; const useFormItem = () => { const form = inject(FormContextKey, void 0); const formItem = inject(FormItemContextKey, void 0); return { form, formItem }; }; const useFormItemInputId = (props, { formItemContext, disableIdGeneration, disableIdManagement }, slots) => { if (!disableIdGeneration) { disableIdGeneration = ref(false); } if (!disableIdManagement) { disableIdManagement = ref(false); } let idUnwatch = void 0; const inputId = ref(); const isLabeledByFormItem = computed(() => { var _a; return !!(!props.label && formItemContext && formItemContext.inputIds && ((_a = formItemContext.inputIds) == null ? void 0 : _a.length) <= 1); }); onMounted(() => { if (slots && slots.input && slots.input()) { return; } idUnwatch = watch( [toRef(props, "id")], ([id]) => { const newId = id != null ? id : !disableIdGeneration.value ? useId().value : void 0; if (formItemContext == null ? void 0 : formItemContext.removeInputId) { inputId.value && formItemContext.removeInputId(inputId.value); if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration.value && newId) { formItemContext.addInputId(newId); } } inputId.value = newId; }, { immediate: true } ); }); onUnmounted(() => { idUnwatch && idUnwatch(); if (formItemContext == null ? void 0 : formItemContext.removeInputId) { inputId.value && formItemContext.removeInputId(inputId.value); } }); return { isLabeledByFormItem, inputId }; }; export { useFormItem, useFormItemInputId }; //# sourceMappingURL=index.mjs.map