{"version":3,"file":"formItem.vue.cjs","sources":["../../../../../packages/components/form/src/formItem.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m('size', controlSize),\n      ns.is('required', isRequired),\n      ns.m('label', textAlign),\n    ]\"\n  >\n    <div :class=\"[ns.e('label')]\" :style=\"[width]\" v-if=\"label\">\n      <label\n        :class=\"[ns.e('label-inner'), ns.is('colon', isColon)]\"\n        :style=\"[textAlign]\"\n        >{{ label }}</label\n      >\n    </div>\n    <div :class=\"[ns.e('control')]\">\n      <div :class=\"[ns.e('control-inner')]\"><slot /></div>\n      <transition :name=\"`${ns.namespace}-form-message`\">\n        <div v-if=\"validateMessage\" :class=\"[ns.e('message')]\">\n          {{ validateMessage }}\n        </div>\n      </transition>\n    </div>\n  </div>\n</template>\n<script>\nexport default { name: \"x-form-item\" };\n</script>\n<script setup>\nimport { ref, reactive, toRefs, computed, provide, onMounted } from \"vue\";\nimport { useNamespace, useStyle } from \"@ui-library/hook\";\nimport { FORM_ITEM_KEY } from \"./constant\";\nimport { useFormItem } from \"./composables\";\nimport AsyncValidator from \"async-validator\";\nconst ns = useNamespace(\"form-item\");\nconst uStyle = useStyle();\nconst { formContent } = useFormItem();\n\nconst props = defineProps({\n  label: {\n    type: String,\n    default: \"\",\n  },\n  labelWidth: {\n    type: String,\n    default: \"\",\n  },\n  align: {\n    type: String,\n    default: \"right\",\n  },\n  prop: {\n    type: String,\n    default: \"\",\n  },\n  rules: {\n    type: [Object, Array],\n    default: () => [],\n  },\n  required: Boolean,\n});\n\n// 初始值\nlet initValue = null;\n\n// 校验结果message\nconst validateMessage = ref(\"\");\n\nconst width = computed(() =>\n  uStyle.width(formContent.labelWidth.value || props.labelWidth)\n);\nconst textAlign = computed(() => formContent.align.value || props.align);\nconst isRequired = computed(() =>\n  initRules.value.some((rule) => rule.required)\n);\nconst controlSize = computed(() => formContent.size.value);\nconst isColon = computed(() => formContent.colon.value);\n/** 转换为数组 */\nconst convertArray = (rules) => {\n  return rules ? (Array.isArray(rules) ? rules : [rules]) : [];\n};\n/** 校验规则集合 */\nconst initRules = computed(() => {\n  const _rules = convertArray(props.rules);\n  const formRules = formContent?.rules?.value;\n  if (formRules && props.prop) {\n    const propRules = formRules[props.prop];\n    propRules && _rules.push(...convertArray(propRules));\n  }\n  return _rules;\n});\n/** 根据触发类型过滤规则 */\nconst filterRules = (trigger) => {\n  const rules = initRules.value;\n  return rules.filter((rule) => {\n    if (!rule.trigger || !trigger) return true;\n    if (Array.isArray(rule.trigger)) {\n      return rule.trigger.includes(trigger);\n    } else {\n      return rule.trigger === trigger;\n    }\n  });\n};\n\nconst validate = (trigger) => {\n  const rules = filterRules(trigger);\n  // 获取key\n  const propName = props.prop;\n  // 根据key获取校验规则\n  const formModel = formContent?.model?.value;\n  // 实例化\n  const validator = new AsyncValidator({\n    [propName]: rules,\n  });\n  // 开始校验\n  return validator\n    .validate({ [propName]: formModel[propName] }, { firstFields: true })\n    .then(() => {\n      onalidateSuccess();\n      return Promise.resolve();\n    })\n    .catch(({ errors, fields }) => {\n      validateFailed(errors);\n      return Promise.reject(errors);\n    });\n};\n\nconst onalidateSuccess = () => {\n  validateMessage.value = \"\";\n};\n\nconst validateFailed = (errors) => {\n  validateMessage.value = errors?.[0].message;\n};\n\nconst resetField = () => {\n  props.prop && (formContent.model.value[props.prop] = initValue);\n};\n\nconst context = reactive({\n  ...toRefs(props),\n  validate,\n  resetField,\n});\nprovide(FORM_ITEM_KEY, context);\n\nonMounted(() => {\n  if (props.prop) {\n    formContent.pushField(context);\n    initValue = formContent?.model?.value?.[props.prop];\n  }\n});\n</script>\n"],"names":["useNamespace","useStyle","useFormItem","ref","computed","reactive","toRefs","provide","FORM_ITEM_KEY","onMounted"],"mappings":";;;;;;;;;;;AA2BA,MAAe,WAAA,GAAA,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQtC,MAAM,EAAE,GAAGA,oBAAY,CAAC,WAAW,CAAC,CAAA;AACpC,MAAM,MAAM,GAAGC,cAAQ,EAAE,CAAA;AACzB,MAAM,EAAE,WAAW,EAAE,GAAGC,uBAAW,EAAE,CAAA;;AAErC,MAAM,KAAK,GAAG,OAsBZ,CAAA;;AAEF;AACA,IAAI,SAAS,GAAG,IAAI,CAAA;;AAEpB;AACA,MAAM,eAAe,GAAGC,OAAG,CAAC,EAAE,CAAC,CAAA;;AAE/B,MAAM,KAAK,GAAGC,YAAQ,CAAC;AACvB,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAA;AAC/D,CAAC,CAAA;AACD,MAAM,SAAS,GAAGA,YAAQ,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;AACxE,MAAM,UAAU,GAAGA,YAAQ,CAAC;AAC5B,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAA;AAC9C,CAAC,CAAA;AACD,MAAM,WAAW,GAAGA,YAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1D,MAAM,OAAO,GAAGA,YAAQ,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACvD;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK;AAChC,EAAE,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AAC9D,CAAC,CAAA;AACD;AACA,MAAM,SAAS,GAAGA,YAAQ,CAAC,MAAM;AACjC,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC1C,EAAE,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAA;AAC7C,EAAE,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;AAC/B,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC3C,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;AACxD,GAAE;AACF,EAAE,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA;AACF;AACA,MAAM,WAAW,GAAG,CAAC,OAAO,KAAK;AACjC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAA;AAC/B,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AAChC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAA;AAC9C,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACrC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC3C,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO,CAAA;AACrC,KAAI;AACJ,GAAG,CAAC,CAAA;AACJ,CAAC,CAAA;;AAED,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK;AAC9B,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AACpC;AACA,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAA;AAC7B;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAA;AAC7C;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC;AACvC,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,GAAG,CAAC,CAAA;AACJ;AACA,EAAE,OAAO,SAAQ;AACjB,KAAK,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACxE,KAAK,IAAI,CAAC,MAAM;AAChB,MAAM,gBAAgB,EAAE,CAAA;AACxB,MAAM,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;AAC9B,KAAK,CAAA;AACL,KAAK,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AACnC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACnC,KAAK,CAAC,CAAA;AACN,CAAC,CAAA;;AAED,MAAM,gBAAgB,GAAG,MAAM;AAC/B,EAAE,eAAe,CAAC,KAAK,GAAG,EAAE,CAAA;AAC5B,CAAC,CAAA;;AAED,MAAM,cAAc,GAAG,CAAC,MAAM,KAAK;AACnC,EAAE,eAAe,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAA;AAC7C,CAAC,CAAA;;AAED,MAAM,UAAU,GAAG,MAAM;AACzB,EAAE,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;AACjE,CAAC,CAAA;;AAED,MAAM,OAAO,GAAGC,YAAQ,CAAC;AACzB,EAAE,GAAGC,UAAM,CAAC,KAAK,CAAC;AAClB,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,CAAC,CAAC,CAAA;AACFC,WAAO,CAACC,sBAAa,EAAE,OAAO,CAAC,CAAA;;AAE/BC,aAAS,CAAC,MAAM;AAChB,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;AAClB,IAAI,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAClC,IAAI,SAAS,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AACvD,GAAE;AACF,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}