"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formItemRule = exports.formItemMisc = exports.formItemSize = void 0; const vue_1 = require("vue"); const lodash_1 = require("lodash"); const context_1 = require("./context"); const _utils_1 = require("../../_utils"); function formItemSize(props) { const NForm = (0, vue_1.inject)(context_1.formInjectionKey, null); return { mergedSize: (0, vue_1.computed)(() => { if (props.size !== undefined) return props.size; if ((NForm === null || NForm === void 0 ? void 0 : NForm.props.size) !== undefined) return NForm.props.size; return 'medium'; }) }; } exports.formItemSize = formItemSize; // eslint-disable-next-line @typescript-eslint/explicit-function-return-type function formItemMisc(props) { const NForm = (0, vue_1.inject)(context_1.formInjectionKey, null); const mergedLabelPlacementRef = (0, vue_1.computed)(() => { const { labelPlacement } = props; if (labelPlacement !== undefined) return labelPlacement; if (NForm === null || NForm === void 0 ? void 0 : NForm.props.labelPlacement) return NForm.props.labelPlacement; return 'top'; }); const isAutoLabelWidthRef = (0, vue_1.computed)(() => { return (mergedLabelPlacementRef.value === 'left' && (props.labelWidth === 'auto' || (NForm === null || NForm === void 0 ? void 0 : NForm.props.labelWidth) === 'auto')); }); const mergedLabelWidthRef = (0, vue_1.computed)(() => { if (mergedLabelPlacementRef.value === 'top') return; const { labelWidth } = props; if (labelWidth !== undefined && labelWidth !== 'auto') { return (0, _utils_1.formatLength)(labelWidth); } if (isAutoLabelWidthRef.value) { const autoComputedWidth = NForm === null || NForm === void 0 ? void 0 : NForm.maxChildLabelWidthRef.value; if (autoComputedWidth !== undefined) { return (0, _utils_1.formatLength)(autoComputedWidth); } else { return undefined; } } if ((NForm === null || NForm === void 0 ? void 0 : NForm.props.labelWidth) !== undefined) { return (0, _utils_1.formatLength)(NForm.props.labelWidth); } return undefined; }); const mergedLabelAlignRef = (0, vue_1.computed)(() => { const { labelAlign } = props; if (labelAlign) return labelAlign; if (NForm === null || NForm === void 0 ? void 0 : NForm.props.labelAlign) return NForm.props.labelAlign; return undefined; }); const mergedLabelStyleRef = (0, vue_1.computed)(() => { var _a; return [ (_a = props.labelProps) === null || _a === void 0 ? void 0 : _a.style, props.labelStyle, { width: mergedLabelWidthRef.value } ]; }); const mergedShowRequireMarkRef = (0, vue_1.computed)(() => { const { showRequireMark } = props; if (showRequireMark !== undefined) return showRequireMark; return NForm === null || NForm === void 0 ? void 0 : NForm.props.showRequireMark; }); const mergedRequireMarkPlacementRef = (0, vue_1.computed)(() => { const { requireMarkPlacement } = props; if (requireMarkPlacement !== undefined) return requireMarkPlacement; return (NForm === null || NForm === void 0 ? void 0 : NForm.props.requireMarkPlacement) || 'right'; }); const validationErroredRef = (0, vue_1.ref)(false); const validationWarnedRef = (0, vue_1.ref)(false); const mergedValidationStatusRef = (0, vue_1.computed)(() => { const { validationStatus } = props; if (validationStatus !== undefined) return validationStatus; if (validationErroredRef.value) return 'error'; if (validationWarnedRef.value) return 'warning'; return undefined; }); const mergedShowFeedbackRef = (0, vue_1.computed)(() => { const { showFeedback } = props; if (showFeedback !== undefined) return showFeedback; if ((NForm === null || NForm === void 0 ? void 0 : NForm.props.showFeedback) !== undefined) return NForm.props.showFeedback; return true; }); const mergedShowLabelRef = (0, vue_1.computed)(() => { const { showLabel } = props; if (showLabel !== undefined) return showLabel; if ((NForm === null || NForm === void 0 ? void 0 : NForm.props.showLabel) !== undefined) return NForm.props.showLabel; return true; }); return { validationErrored: validationErroredRef, validationWarned: validationWarnedRef, mergedLabelStyle: mergedLabelStyleRef, mergedLabelPlacement: mergedLabelPlacementRef, mergedLabelAlign: mergedLabelAlignRef, mergedShowRequireMark: mergedShowRequireMarkRef, mergedRequireMarkPlacement: mergedRequireMarkPlacementRef, mergedValidationStatus: mergedValidationStatusRef, mergedShowFeedback: mergedShowFeedbackRef, mergedShowLabel: mergedShowLabelRef, isAutoLabelWidth: isAutoLabelWidthRef }; } exports.formItemMisc = formItemMisc; // eslint-disable-next-line @typescript-eslint/explicit-function-return-type function formItemRule(props) { const NForm = (0, vue_1.inject)(context_1.formInjectionKey, null); const compatibleRulePathRef = (0, vue_1.computed)(() => { const { rulePath } = props; if (rulePath !== undefined) return rulePath; const { path } = props; if (path !== undefined) return path; return undefined; }); const mergedRulesRef = (0, vue_1.computed)(() => { const rules = []; const { rule } = props; if (rule !== undefined) { if (Array.isArray(rule)) rules.push(...rule); else rules.push(rule); } if (NForm) { const { rules: formRules } = NForm.props; const { value: rulePath } = compatibleRulePathRef; if (formRules !== undefined && rulePath !== undefined) { const formRule = (0, lodash_1.get)(formRules, rulePath); if (formRule !== undefined) { if (Array.isArray(formRule)) { rules.push(...formRule); } else { // terminate object must be a form item rule rules.push(formRule); } } } } return rules; }); const hasRequiredRuleRef = (0, vue_1.computed)(() => { return mergedRulesRef.value.some((rule) => rule.required); }); // deprecated const mergedRequiredRef = (0, vue_1.computed)(() => { return hasRequiredRuleRef.value || props.required; }); return { mergedRules: mergedRulesRef, mergedRequired: mergedRequiredRef }; } exports.formItemRule = formItemRule;