{"version":3,"file":"use-form.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form.ts"],"sourcesContent":["import { ref, reactive, computed, useTemplateRef, type SetupContext, onBeforeUpdate } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormProps, FormEmits } from '../form'\nimport type { FormInstance, FormItemProp } from 'element-plus'\n\ninterface UseCollapseParams {\n  isShowFold: boolean\n  showFieldCount: number\n  filterFormItemList: { value: FormItemProps[] }\n}\nexport const useCollapse = (\n  { isShowFold, showFieldCount, filterFormItemList }: UseCollapseParams,\n  emit: SetupContext<FormEmits>['emit'],\n) => {\n  const open = ref(false)\n  const toggleStatus = () => {\n    open.value = !open.value\n    emit('toggleStatus', open.value)\n  }\n  // 是否显示折叠按钮\n  const isShowFoldBtn = computed(() => {\n    return isShowFold && filterFormItemList.value.length > showFieldCount\n  })\n  //   展开收起隐藏formItem逻辑\n  const isShowFormItem = (index: number) => {\n    return index < showFieldCount || open.value || !isShowFoldBtn.value\n  }\n  return {\n    open,\n    toggleStatus,\n    isShowFoldBtn,\n    isShowFormItem,\n  }\n}\n\nexport const useForm = (props: FormProps) => {\n  const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n  const filterFormItemList = computed(() => {\n    return (props.formItemList || []).filter((item: FormItemProps) => {\n      if ('show' in item) {\n        return typeof item.show === 'function' ? item.show(item) : item.show\n      } else if ('hide' in item) {\n        return typeof item.hide === 'function' ? !item.hide(item) : !item.hide\n      }\n      return true\n    })\n  })\n  // 校验\n  const validate = () => {\n    return elFormRef.value!.validate()\n  }\n  // 重置校验\n  const resetFields = (props: FormItemProp) => {\n    return elFormRef.value!.resetFields(props)\n  }\n  // 清理某个字段的表单验证信息\n  const clearValidate = (props: FormItemProp) => {\n    return elFormRef.value!.clearValidate(props)\n  }\n  // 存储form-item的ref\n  const formItemRenderRefs = reactive(new Map())\n  // 每次更新前清空，防止内存泄漏或引用过时\n  onBeforeUpdate(() => {\n    formItemRenderRefs.clear();\n  });\n  // 获取form-item渲染render的ref\n  const getFormItemRenderRef = (refName: string) => {\n    return formItemRenderRefs.get(refName)\n  }\n  // 注册form-item的ref\n  const registerFormItemRenderRef = (refName: string, ref: any) => {\n    if (refName && ref) {\n      formItemRenderRefs.set(refName, ref)\n    }\n  }\n\n  return {\n    filterFormItemList,\n    elFormRef,\n    validate,\n    resetFields,\n    clearValidate,\n    getFormItemRenderRef,\n    registerFormItemRenderRef,\n  }\n}\n"],"names":["props","ref"],"mappings":";;AAUO,MAAM,cAAc,CACzB,EAAE,YAAY,cAAA,EAAgB,kBAAA,IAC9B,IAAA,KACG;AACH,EAAA,MAAM,IAAA,GAAO,IAAI,KAAK,CAAA;AACtB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA;AACnB,IAAA,IAAA,CAAK,cAAA,EAAgB,KAAK,KAAK,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAA,OAAO,UAAA,IAAc,kBAAA,CAAmB,KAAA,CAAM,MAAA,GAAS,cAAA;AAAA,EACzD,CAAC,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACxC,IAAA,OAAO,KAAA,GAAQ,cAAA,IAAkB,IAAA,CAAK,KAAA,IAAS,CAAC,aAAA,CAAc,KAAA;AAAA,EAChE,CAAA;AACA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,MAAM,OAAA,GAAU,CAAC,KAAA,KAAqB;AAC3C,EAAA,MAAM,SAAA,GAAY,eAA6B,WAAW,CAAA;AAC1D,EAAA,MAAM,kBAAA,GAAqB,SAAS,MAAM;AACxC,IAAA,OAAA,CAAQ,MAAM,YAAA,IAAgB,EAAC,EAAG,MAAA,CAAO,CAAC,IAAA,KAAwB;AAChE,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAO,OAAO,KAAK,IAAA,KAAS,UAAA,GAAa,KAAK,IAAA,CAAK,IAAI,IAAI,IAAA,CAAK,IAAA;AAAA,MAClE,CAAA,MAAA,IAAW,UAAU,IAAA,EAAM;AACzB,QAAA,OAAO,OAAO,IAAA,CAAK,IAAA,KAAS,UAAA,GAAa,CAAC,KAAK,IAAA,CAAK,IAAI,CAAA,GAAI,CAAC,IAAA,CAAK,IAAA;AAAA,MACpE;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,OAAO,SAAA,CAAU,MAAO,QAAA,EAAS;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAACA,MAAAA,KAAwB;AAC3C,IAAA,OAAO,SAAA,CAAU,KAAA,CAAO,WAAA,CAAYA,MAAK,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAACA,MAAAA,KAAwB;AAC7C,IAAA,OAAO,SAAA,CAAU,KAAA,CAAO,aAAA,CAAcA,MAAK,CAAA;AAAA,EAC7C,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,QAAA,iBAAS,IAAI,GAAA,EAAK,CAAA;AAE7C,EAAA,cAAA,CAAe,MAAM;AACnB,IAAA,kBAAA,CAAmB,KAAA,EAAM;AAAA,EAC3B,CAAC,CAAA;AAED,EAAA,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAAoB;AAChD,IAAA,OAAO,kBAAA,CAAmB,IAAI,OAAO,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,yBAAA,GAA4B,CAAC,OAAA,EAAiBC,IAAAA,KAAa;AAC/D,IAAA,IAAI,WAAWA,IAAAA,EAAK;AAClB,MAAA,kBAAA,CAAmB,GAAA,CAAI,SAASA,IAAG,CAAA;AAAA,IACrC;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,kBAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}