{"version":3,"file":"form-item.vue2.mjs","sources":["../../../../../packages/components/form/src/form-item.vue"],"sourcesContent":["<template>\n  <div ref=\"formItemRef\" :class=\"formItemClass\">\n    <label\n      v-if=\"currentLabel\"\n      :for=\"field\"\n      :title=\"currentLabel\"\n      :class=\"ns.e('label')\"\n      :style=\"labelStyle\"\n    >\n      <span :class=\"ns.e('label-text')\">\n        <slot name=\"label\" :label=\"currentLabel\">\n          {{ currentLabel }}\n        </slot>\n      </span>\n\n      <ElTooltip v-if=\"tips\" :content=\"tips\" raw-content>\n        <ElIcon>\n          <InfoFilled />\n        </ElIcon>\n      </ElTooltip>\n    </label>\n\n    <div :class=\"ns.e('content')\">\n      <slot></slot>\n\n      <transition name=\"el-zoom-in-top\">\n        <div v-if=\"errorVisible\" :class=\"ns.e('error')\">\n          {{ validateMessage }}\n        </div>\n      </transition>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, nextTick, provide } from 'vue'\nimport { formItemKey, formKey } from '@element-ultra/tokens'\nimport { addUnit } from '@element-ultra/utils'\nimport { InfoFilled } from 'icon-ultra'\nimport type { CSSProperties } from 'vue'\nimport ElIcon from '@element-ultra/components/icon'\nimport ElTooltip from '@element-ultra/components/tooltip'\nimport { useNamespace, useSize } from '@element-ultra/hooks'\n\nexport default defineComponent({\n  name: 'ElFormItem',\n  componentName: 'ElFormItem',\n\n  components: {\n    InfoFilled,\n    ElIcon,\n    ElTooltip\n  },\n\n  props: {\n    label: String,\n    field: String,\n    tips: String,\n    required: {\n      type: Boolean\n    },\n    labelWidth: {\n      type: [String, Number],\n      default: ''\n    }\n  },\n  setup(props) {\n    const elForm = inject(formKey)\n    const ns = useNamespace('form-item')\n    const validateMessage = ref('')\n    const formItemRef = ref<HTMLDivElement>()\n\n    const labelStyle = computed(() => {\n      const ret: CSSProperties = {}\n\n      if (!elForm) return ret\n\n      const { props } = elForm\n      if (props.labelPosition === 'top') return ret\n      const labelWidth = addUnit(props.labelWidth)\n      if (labelWidth) {\n        ret.width = labelWidth\n      }\n      return ret\n    })\n\n    const isRequired = computed(() => {\n      if (!elForm || !props.field) return false\n      return props.required ?? elForm.formRules?.[props.field]?.required\n    })\n\n    const validate = async () => {\n      if (!props.field || !elForm) return null\n      const errMsg = await elForm?.validateField(props.field)\n      validateMessage.value = errMsg || ''\n      return !errMsg\n    }\n\n    const clearValidate = () => {\n      validateMessage.value = ''\n    }\n\n    // 重置字段值\n    const reset = () => {\n      if (!props.field) return\n\n      elForm?.resetField(props.field)\n\n      nextTick(() => clearValidate())\n    }\n\n    const formItem = {\n      reset,\n      clearValidate,\n      validate\n    }\n\n    provide(formItemKey, formItem)\n\n    const formItemSize = useSize({ props })\n\n    const formItemClass = computed(() => {\n      const ret = [ns.b(), ns.m(formItemSize.value)]\n\n      isRequired.value && ret.push('is-required')\n      errorVisible.value && ret.push('is-error')\n\n      return ret\n    })\n\n    const errorVisible = computed(() => !!validateMessage.value)\n\n    const currentLabel = computed(() =>\n      props.label ? props.label + (elForm?.props.labelSuffix || '') : ''\n    )\n\n    return {\n      formItemRef,\n      formItemClass,\n      errorVisible,\n      elForm,\n      labelStyle,\n      validate,\n      validateMessage,\n      reset,\n      clearValidate,\n      currentLabel,\n      ns,\n      isRequired\n    }\n  }\n})\n</script>\n"],"names":["props"],"mappings":";;;;;;;;;;;;;;AA4CA,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,YAAA;AAAA,EACN,aAAe,EAAA,YAAA;AAAA,EAEf,UAAY,EAAA;AAAA,IACV,UAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,GACF;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA;AAAA,MACR,IAAM,EAAA,OAAA;AAAA,KACR;AAAA,IACA,UAAY,EAAA;AAAA,MACV,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,MACrB,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,MAAM,KAAO,EAAA;AACX,IAAM,MAAA,MAAA,GAAS,OAAO,OAAO,CAAA,CAAA;AAC7B,IAAM,MAAA,EAAA,GAAK,aAAa,WAAW,CAAA,CAAA;AACnC,IAAM,MAAA,eAAA,GAAkB,IAAI,EAAE,CAAA,CAAA;AAC9B,IAAA,MAAM,cAAc,GAAoB,EAAA,CAAA;AAExC,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAA,MAAM,MAAqB,EAAC,CAAA;AAE5B,MAAA,IAAI,CAAC,MAAA;AAAQ,QAAO,OAAA,GAAA,CAAA;AAEpB,MAAM,MAAA,EAAE,KAAAA,EAAAA,MAAAA,EAAU,GAAA,MAAA,CAAA;AAClB,MAAA,IAAIA,OAAM,aAAkB,KAAA,KAAA;AAAO,QAAO,OAAA,GAAA,CAAA;AAC1C,MAAM,MAAA,UAAA,GAAa,OAAQA,CAAAA,MAAAA,CAAM,UAAU,CAAA,CAAA;AAC3C,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,GAAA,CAAI,KAAQ,GAAA,UAAA,CAAA;AAAA,OACd;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;;AAChC,MAAI,IAAA,CAAC,MAAU,IAAA,CAAC,KAAM,CAAA,KAAA;AAAO,QAAO,OAAA,KAAA,CAAA;AACpC,MAAO,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,aAAN,IAAkB,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAO,cAAP,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAM,WAAzB,IAAiC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAA;AAAA,KAC3D,CAAA,CAAA;AAED,IAAA,MAAM,WAAW,YAAY;AAC3B,MAAI,IAAA,CAAC,KAAM,CAAA,KAAA,IAAS,CAAC,MAAA;AAAQ,QAAO,OAAA,IAAA,CAAA;AACpC,MAAA,MAAM,MAAS,GAAA,OAAM,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,aAAA,CAAc,KAAM,CAAA,KAAA,CAAA,CAAA,CAAA;AACjD,MAAA,eAAA,CAAgB,QAAQ,MAAU,IAAA,EAAA,CAAA;AAClC,MAAA,OAAO,CAAC,MAAA,CAAA;AAAA,KACV,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,eAAA,CAAgB,KAAQ,GAAA,EAAA,CAAA;AAAA,KAC1B,CAAA;AAGA,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,IAAI,CAAC,KAAM,CAAA,KAAA;AAAO,QAAA,OAAA;AAElB,MAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,WAAW,KAAM,CAAA,KAAA,CAAA,CAAA;AAEzB,MAAS,QAAA,CAAA,MAAM,eAAe,CAAA,CAAA;AAAA,KAChC,CAAA;AAEA,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,KAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,KACF,CAAA;AAEA,IAAA,OAAA,CAAQ,aAAa,QAAQ,CAAA,CAAA;AAE7B,IAAA,MAAM,YAAe,GAAA,OAAA,CAAQ,EAAE,KAAA,EAAO,CAAA,CAAA;AAEtC,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAM,MAAA,GAAA,GAAM,CAAC,EAAG,CAAA,CAAA,IAAK,EAAG,CAAA,CAAA,CAAE,YAAa,CAAA,KAAK,CAAC,CAAA,CAAA;AAE7C,MAAW,UAAA,CAAA,KAAA,IAAS,GAAI,CAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAC1C,MAAa,YAAA,CAAA,KAAA,IAAS,GAAI,CAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AAEzC,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,eAAe,QAAS,CAAA,MAAM,CAAC,CAAC,gBAAgB,KAAK,CAAA,CAAA;AAE3D,IAAA,MAAM,YAAe,GAAA,QAAA;AAAA,MAAS,MAC5B,MAAM,KAAQ,GAAA,KAAA,CAAM,UAAS,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,CAAM,gBAAe,EAAM,CAAA,GAAA,EAAA;AAAA,KAClE,CAAA;AAEA,IAAO,OAAA;AAAA,MACL,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,EAAA;AAAA,MACA,UAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}