winbox-ui-next
Version:
We Design Vue 2.0: A Vue.js 3 UI Library
77 lines (76 loc) • 2.1 kB
JavaScript
import { inject, provide, computed, onBeforeUnmount } from "vue";
import { createInjectionKey } from "../_utils/vue/create-injection-key.js";
import "../_utils/vue/wrapper.js";
import "../_utils/cssr/index.js";
import "../_utils/composable/use-adjusted-to.js";
import "vueuc";
import "../_utils/composable/use-lock-html-scroll.js";
import "../_utils/composable/use-is-composing.js";
const formItemInjectionKey = createInjectionKey("n-form-item");
function useFormItem(props, {
defaultSize = "default",
mergedSize,
mergedDisabled
} = {}) {
const NFormItem = inject(formItemInjectionKey, null);
provide(formItemInjectionKey, null);
const mergedSizeRef = computed(mergedSize ? () => mergedSize(NFormItem) : () => {
const { size } = props;
if (size)
return size;
if (NFormItem) {
const { mergedSize: mergedSize2 } = NFormItem;
if (mergedSize2.value !== void 0) {
return mergedSize2.value;
}
}
return defaultSize;
});
const mergedDisabledRef = computed(mergedDisabled ? () => mergedDisabled(NFormItem) : () => {
const { disabled } = props;
if (disabled !== void 0) {
return disabled;
}
if (NFormItem) {
return NFormItem.disabled.value;
}
return false;
});
const mergedStatusRef = computed(() => {
const { status } = props;
if (status)
return status;
return NFormItem == null ? void 0 : NFormItem.mergedValidationStatus.value;
});
onBeforeUnmount(() => {
if (NFormItem) {
NFormItem.restoreValidation();
}
});
return {
mergedSizeRef,
mergedDisabledRef,
mergedStatusRef,
nTriggerFormBlur() {
if (NFormItem) {
NFormItem.handleContentBlur();
}
},
nTriggerFormChange() {
if (NFormItem) {
NFormItem.handleContentChange();
}
},
nTriggerFormFocus() {
if (NFormItem) {
NFormItem.handleContentFocus();
}
},
nTriggerFormInput() {
if (NFormItem) {
NFormItem.handleContentInput();
}
}
};
}
export { useFormItem as default, formItemInjectionKey };