{"version":3,"file":"use-form-item.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form-item.tsx"],"sourcesContent":["import { h, resolveComponent, useAttrs, ref } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormItemRule } from 'element-plus'\nimport { ElTooltip } from 'element-plus'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nexport const useFormItem = () => {\n  return {}\n}\nexport const useFormItemSlots = (props: FormItemProps,emit) => {\n  const attrs = useAttrs()\n  const { render, labelRender } = props\n  const prop = props.tableProp || props.prop\n  const events: Record<string, (...args: any[]) => void> = {}\n  for (const key in attrs) {\n    if (key.startsWith('on')) {\n      // 包装事件处理函数，确保在事件触发时使用最新的 scope\n      // fix: table筛选后，点击事件触发时，scope.row仍为筛选前的行数据\n      events[key] = (...args: any[]) => {\n        const tableScope = attrs['table-scope']\n        const eventFn = attrs[key] as (...args: any[]) => void\n        return eventFn(...args, tableScope)\n      }\n    }\n  }\n  const isTipDisabled = ref(true) // 默认禁用提示\n  const checkOverflow = (e: MouseEvent) => {\n    const el = e.currentTarget as HTMLElement\n    isTipDisabled.value = el.scrollWidth <= el.clientWidth\n  }\n  const scopedSlots = {\n    default: () => {\n      const formData = attrs['form-data'] as Record<string, unknown>\n      const { scopedSlots: renderScopedSlots, ...renderProps } =\n        props.props || {}\n      let disabled = props.disabled\n      if (typeof props.disabled === 'function') {\n        disabled = props.disabled(formData)\n      }\n      return props.type\n        ? h(\n            resolveComponent(props.type),\n            {\n              modelValue: formData[prop as string],\n              'onUpdate:modelValue': (value: unknown) => {\n                formData[prop as string] = value\n              },\n              disabled,\n              clearable: true,\n              ...renderProps,\n              ...events,\n              ref: (el: any) => {\n                if (el) {\n                  emit('registerFormItemRenderRef', el)\n                }\n              },\n            },\n            renderScopedSlots,\n          )\n        : formData[prop as string]\n    },\n    label: () => {\n      return (\n        <ElTooltip\n          placement=\"top\"\n          effect=\"dark\"\n          content={props.label}\n          disabled={!props.isShowLabel || isTipDisabled.value}\n        >\n          <span\n            onMouseenter={checkOverflow}\n            style=\"display: block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\"\n          >\n            {!props.hideRequiredAsterisk && props.required ? (\n              <span style=\"color: var(--el-color-danger);\">*</span>\n            ) : null}\n            {props.isShowLabel ? <span>{props.label}</span> : ''}\n          </span>\n        </ElTooltip>\n      )\n    },\n  }\n\n  if (labelRender) {\n    scopedSlots.label = () => labelRender({ label: props.label })\n  }\n  if (render) {\n    scopedSlots.default = () => {\n      return render(attrs['table-scope'])\n    }\n  }\n  return {\n    scopedSlots,\n  }\n}\nexport const useFormItemRules = (props: FormItemProps) => {\n  const { t } = useLocale()\n  const { required, rules, label } = props\n  let mergeRules: FormItemRule[] = []\n  if (required) {\n    const requiredDefault = { required: true }\n    mergeRules.push(requiredDefault)\n  }\n  if (rules) {\n    if (Array.isArray(rules)) {\n      mergeRules = mergeRules.concat(rules)\n    }\n\n    if (Object.prototype.toString.call(rules) === '[object Object]') {\n      mergeRules.push(rules as FormItemRule)\n    }\n  }\n\n  if (mergeRules) {\n    mergeRules.forEach((r) => {\n      if (r.required && typeof r.message === 'undefined') {\n        r.message = `${label || ''}${t('ep.formItem.required')}`\n      }\n    })\n  }\n  return { rules: mergeRules }\n}\n"],"names":["useFormItem","useFormItemSlots","props","emit","attrs","useAttrs","render","labelRender","prop","tableProp","events","key","startsWith","args","tableScope","eventFn","isTipDisabled","ref","checkOverflow","e","el","currentTarget","value","scrollWidth","clientWidth","scopedSlots","default","formData","renderScopedSlots","renderProps","disabled","type","h","resolveComponent","modelValue","clearable","label","_createVNode","ElTooltip","isShowLabel","hideRequiredAsterisk","required","_createTextVNode","useFormItemRules","t","useLocale","rules","mergeRules","requiredDefault","push","Array","isArray","concat","Object","prototype","toString","call","forEach","r","message"],"mappings":"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"}