{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/form-item/src/index.ts"],"sourcesContent":["/* eslint-disable indent */\nimport { ref, defineComponent, Ref, onBeforeUnmount, watch, provide, h } from \"vue\";\nimport { isVoidField } from \"@formily/core\";\nimport { connect, mapProps } from \"@formily/vue\";\n\nimport { InfoFilled, CircleClose, CircleCheck, Warning } from \"@element-plus/icons-vue\";\nimport { useFormLayout, FormLayoutShallowContext } from \"../../form-layout\";\nimport { composeExport, resolveComponent, stylePrefix, getStyleNumber } from \"../../__builtins__\";\nimport { Component } from \"vue\";\nimport { ElTooltip, ElIcon, ElPopover } from \"element-plus\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport { useGridColumn } from \"../../form-grid\";\n\nexport type FormItemProps = {\n  className?: string;\n  required?: boolean;\n  label?: string | Component;\n  colon?: boolean;\n  tooltip?: string | Component;\n  layout?: \"vertical\" | \"horizontal\" | \"inline\";\n  labelStyle?: Record<string, any>;\n  labelAlign?: \"left\" | \"right\";\n  labelWrap?: boolean;\n  labelWidth?: number;\n  wrapperWidth?: number;\n  labelCol?: number;\n  wrapperCol?: number;\n  wrapperAlign?: \"left\" | \"right\";\n  wrapperWrap?: boolean;\n  wrapperStyle?: Record<string, any>;\n  fullness?: boolean;\n  addonBefore?: string | Component;\n  addonAfter?: string | Component;\n  size?: \"small\" | \"default\" | \"large\";\n  extra?: string;\n  feedbackText?: string | Component;\n  feedbackLayout?: \"loose\" | \"terse\" | \"popover\" | \"none\" | (string & {});\n  feedbackStatus?: \"error\" | \"warning\" | \"success\" | \"pending\" | (string & {});\n  tooltipLayout?: \"icon\" | \"text\";\n  feedbackIcon?: string | Component;\n  hasIcon?: boolean;\n  asterisk?: boolean;\n  gridSpan?: number | string;\n  bordered?: boolean;\n  inset?: boolean;\n};\n\nconst useOverflow = (containerRef: Ref<HTMLElement | undefined>) => {\n  const overflow = ref(false);\n  let resizeObserver: ResizeObserver | undefined | null;\n\n  const cleanup = () => {\n    if (resizeObserver && containerRef.value) {\n      resizeObserver.unobserve(containerRef.value);\n      resizeObserver = null;\n    }\n  };\n\n  const observer = () => {\n    if (!containerRef.value) return;\n    const container = containerRef.value;\n    const content = container.querySelector(\"label\");\n    const containerWidth = container.getBoundingClientRect().width;\n    const contentWidth = content?.getBoundingClientRect().width || 0;\n\n    if (containerWidth !== 0) {\n      if (contentWidth > containerWidth) {\n        overflow.value = true;\n      } else {\n        overflow.value = false;\n      }\n    }\n  };\n\n  const stopWatch = watch(\n    () => containerRef.value,\n    (el) => {\n      cleanup();\n\n      if (el) {\n        resizeObserver = new ResizeObserver(observer);\n        resizeObserver.observe(el);\n      }\n    },\n    { immediate: true, flush: \"post\" }\n  );\n\n  onBeforeUnmount(() => {\n    cleanup();\n    stopWatch();\n  });\n\n  return overflow;\n};\n\nconst ICON_MAP = {\n  info: () => h(ElIcon, {}, { default: () => h(InfoFilled, {}, {}) }),\n  error: () => h(ElIcon, {}, { default: () => h(CircleClose, {}, {}) }),\n  success: () => h(ElIcon, {}, { default: () => h(CircleCheck, {}, {}) }),\n  warning: () => h(ElIcon, {}, { default: () => h(Warning, {}, {}) })\n};\n\nexport const FormBaseItem = defineComponent({\n  name: \"FormItem\",\n  inheritAttrs: false,\n  props: {\n    className: {},\n    required: {},\n    label: {},\n    colon: {},\n    layout: {},\n    tooltip: {},\n    labelStyle: {},\n    labelAlign: {},\n    labelWrap: {},\n    labelWidth: {},\n    wrapperWidth: {},\n    labelCol: {},\n    wrapperCol: {},\n    wrapperAlign: {},\n    wrapperWrap: {},\n    wrapperStyle: {},\n    fullness: {},\n    addonBefore: {},\n    addonAfter: {},\n    size: {},\n    extra: {},\n    feedbackText: {},\n    feedbackLayout: {},\n    tooltipLayout: {},\n    feedbackStatus: {},\n    feedbackIcon: {},\n    hasIcon: {},\n    asterisk: {},\n    gridSpan: {},\n    bordered: { default: true },\n    inset: { default: false }\n  },\n  setup(props, { slots }) {\n    const active = ref(false);\n    const deepLayoutRef = useFormLayout();\n    const prefixCls = `${stylePrefix}-form-item`;\n\n    const containerRef = ref<HTMLElement>();\n    const overflow = useOverflow(containerRef);\n\n    // @ts-ignore\n    provide(FormLayoutShallowContext, ref({}));\n\n    return () => {\n      const gridColumn = useGridColumn(props.gridSpan as string);\n      const gridStyles: Record<string, any> = {};\n\n      if (gridColumn) {\n        gridStyles.gridColumn = gridColumn;\n      }\n      const deepLayout = deepLayoutRef.value;\n      const {\n        label,\n        colon = deepLayout.colon ?? true,\n        layout = deepLayout.layout ?? \"horizontal\",\n        // TODO 拿不到 x-decorator-props 属性\n        tooltip,\n        labelStyle = {},\n        labelWrap = deepLayout.labelWrap ?? false,\n        labelWidth = deepLayout.labelWidth,\n        wrapperWidth = deepLayout.wrapperWidth,\n        labelCol = deepLayout.labelCol,\n        wrapperCol = deepLayout.wrapperCol,\n        wrapperAlign = deepLayout.wrapperAlign ?? \"left\",\n        wrapperWrap = deepLayout.wrapperWrap,\n        wrapperStyle = {},\n        fullness = deepLayout.fullness,\n        addonBefore,\n        addonAfter,\n        size = deepLayout.size,\n        extra,\n        feedbackText,\n        feedbackLayout = deepLayout.feedbackLayout ?? \"loose\",\n        tooltipLayout = deepLayout.tooltipLayout ?? \"icon\",\n        feedbackStatus,\n        feedbackIcon,\n        hasIcon,\n        asterisk,\n        bordered = deepLayout.bordered,\n        inset = deepLayout.inset\n      } = props as any;\n      const labelAlign =\n        deepLayout.layout === \"vertical\"\n          ? props.labelAlign ?? deepLayout.labelAlign ?? \"left\"\n          : props.labelAlign ?? deepLayout.labelAlign ?? \"right\";\n\n      // 固定宽度\n      let enableCol = false;\n      if (labelWidth || wrapperWidth) {\n        if (labelWidth) {\n          labelStyle.width = labelWidth === \"auto\" ? undefined : getStyleNumber(labelWidth);\n          labelStyle.maxWidth = labelWidth === \"auto\" ? undefined : getStyleNumber(labelWidth);\n        }\n        if (wrapperWidth) {\n          wrapperStyle.width = wrapperWidth === \"auto\" ? undefined : getStyleNumber(wrapperWidth);\n          wrapperStyle.maxWidth =\n            wrapperWidth === \"auto\" ? undefined : getStyleNumber(wrapperWidth);\n        }\n        // 栅格模式\n      } else if (labelCol || wrapperCol) {\n        enableCol = true;\n      }\n      const formatChildren =\n        feedbackLayout === \"popover\"\n          ? h(\n              ElPopover,\n              {\n                disabled: !feedbackText,\n                placement: \"top\",\n                popperStyle: { width: \"auto\", maxWidth: \"80%\" }\n              },\n              {\n                reference: () => h(\"div\", {}, { default: () => slots.default?.() }),\n                default: () => [\n                  h(\n                    \"div\",\n                    {\n                      class: {\n                        [`${prefixCls}-${feedbackStatus}-help`]: !!feedbackStatus,\n                        [`${prefixCls}-help`]: true\n                      }\n                    },\n                    {\n                      default: () => [\n                        feedbackStatus &&\n                        [\"error\", \"success\", \"warning\"].includes(feedbackStatus as string)\n                          ? ICON_MAP[feedbackStatus as \"error\" | \"success\" | \"warning\"]()\n                          : \"\",\n                        resolveComponent(feedbackText)\n                      ]\n                    }\n                  )\n                ]\n              }\n            )\n          : slots.default?.();\n\n      const renderLabelText = () => {\n        const labelChildren = h(\n          \"div\",\n          {\n            class: `${prefixCls}-label-content`,\n            ref: containerRef\n          },\n          {\n            default: () => [\n              asterisk && h(\"span\", { class: `${prefixCls}-asterisk` }, { default: () => [\"*\"] }),\n              h(\"label\", {}, { default: () => [resolveComponent(label)] })\n            ]\n          }\n        );\n        const isTextTooltip = tooltip && tooltipLayout === \"text\";\n        if (isTextTooltip || overflow.value) {\n          return h(\n            ElTooltip,\n            {\n              placement: \"top\"\n            },\n            {\n              default: () => [labelChildren],\n              content: () =>\n                h(\n                  \"div\",\n                  {},\n                  {\n                    default: () => [\n                      overflow.value && resolveComponent(label),\n                      isTextTooltip && resolveComponent(tooltip)\n                    ]\n                  }\n                )\n            }\n          );\n        } else {\n          return labelChildren;\n        }\n      };\n      const renderTooltipIcon = () => {\n        if (tooltip && tooltipLayout === \"icon\") {\n          return h(\n            \"span\",\n            {\n              class: `${prefixCls}-label-tooltip`\n            },\n            {\n              default: () => [\n                h(\n                  ElTooltip,\n                  {\n                    props: {\n                      placement: \"top\"\n                    }\n                  },\n                  {\n                    default: ICON_MAP.info,\n                    content: () =>\n                      h(\n                        \"div\",\n                        {\n                          class: `${prefixCls}-label-tooltip-content`\n                        },\n                        {\n                          default: () => [resolveComponent(tooltip)]\n                        }\n                      )\n                  }\n                )\n              ]\n            }\n          );\n        }\n      };\n      const renderLabel =\n        label &&\n        h(\n          \"div\",\n          {\n            class: {\n              [`${prefixCls}-label`]: true,\n              [`${prefixCls}-label-tooltip`]:\n                (tooltip && tooltipLayout === \"text\") || overflow.value,\n              [`${prefixCls}-item-col-${labelCol}`]: enableCol && !!labelCol\n            },\n            style: labelStyle\n          },\n          {\n            default: () => [\n              // label content\n              renderLabelText(),\n              // label tooltip\n              renderTooltipIcon(),\n              // label colon\n              label &&\n                h(\n                  \"span\",\n                  {\n                    class: `${prefixCls}-colon`\n                  },\n                  { default: () => [colon ? \":\" : \"\"] }\n                )\n            ]\n          }\n        );\n\n      const renderFeedback =\n        !!feedbackText &&\n        feedbackLayout !== \"popover\" &&\n        feedbackLayout !== \"none\" &&\n        h(\n          \"div\",\n          {\n            class: {\n              [`${prefixCls}-${feedbackStatus}-help`]: !!feedbackStatus,\n              [`${prefixCls}-help`]: true,\n              [`${prefixCls}-help-enter`]: true,\n              [`${prefixCls}-help-enter-active`]: true\n            }\n          },\n          { default: () => [resolveComponent(feedbackText)] }\n        );\n\n      const renderExtra =\n        extra && h(\"div\", { class: `${prefixCls}-extra` }, { default: () => [extra] });\n      const renderContent = h(\n        \"div\",\n        {\n          class: {\n            [`${prefixCls}-control`]: true,\n            [`${prefixCls}-item-col-${wrapperCol}`]: enableCol && !!wrapperCol\n          }\n        },\n        {\n          default: () => [\n            h(\n              \"div\",\n              { class: `${prefixCls}-control-content` },\n              {\n                default: () => [\n                  addonBefore &&\n                    h(\n                      \"div\",\n                      { class: `${prefixCls}-addon-before` },\n                      {\n                        default: () => [resolveComponent(addonBefore)]\n                      }\n                    ),\n                  h(\n                    \"div\",\n                    {\n                      class: {\n                        [`${prefixCls}-control-content-component`]: true,\n                        [`${prefixCls}-control-content-component-has-feedback-icon`]:\n                          !!feedbackIcon,\n                        [`${prefixCls}-control-content-component-has-icon`]: !!hasIcon\n                      },\n                      style: wrapperStyle\n                    },\n                    {\n                      default: () => [\n                        formatChildren,\n                        feedbackIcon &&\n                          h(\n                            \"div\",\n                            { class: `${prefixCls}-feedback-icon` },\n                            {\n                              default: () => [\n                                typeof feedbackIcon === \"string\"\n                                  ? h(\"i\", { class: feedbackIcon }, {})\n                                  : resolveComponent(feedbackIcon)\n                              ]\n                            }\n                          )\n                      ]\n                    }\n                  ),\n                  addonAfter &&\n                    h(\n                      \"div\",\n                      { class: `${prefixCls}-addon-after` },\n                      {\n                        default: () => [resolveComponent(addonAfter)]\n                      }\n                    )\n                ]\n              }\n            ),\n            renderFeedback,\n            renderExtra\n          ]\n        }\n      );\n      return h(\n        \"div\",\n        {\n          style: {\n            ...gridStyles\n          },\n          class: {\n            [`${prefixCls}`]: true,\n            [`${prefixCls}-layout-${layout}`]: true,\n            [`${prefixCls}-${feedbackStatus}`]: !!feedbackStatus,\n            [`${prefixCls}-feedback-has-text`]: !!feedbackText,\n            [`${prefixCls}-size-${size}`]: !!size,\n            [`${prefixCls}-feedback-layout-${feedbackLayout}`]: !!feedbackLayout,\n            [`${prefixCls}-fullness`]: !!fullness || !!inset || !!feedbackIcon,\n            [`${prefixCls}-inset`]: !!inset,\n            [`${prefixCls}-active`]: active.value,\n            [`${prefixCls}-inset-active`]: !!inset && active.value,\n            [`${prefixCls}-label-align-${labelAlign}`]: true,\n            [`${prefixCls}-control-align-${wrapperAlign}`]: true,\n            [`${prefixCls}-label-wrap`]: !!labelWrap,\n            [`${prefixCls}-control-wrap`]: !!wrapperWrap,\n            [`${prefixCls}-bordered-none`]: bordered === false || !!inset || !!feedbackIcon,\n            [`${props.className}`]: !!props.className\n          },\n          on: {\n            \"!focus\": () => {\n              if (feedbackIcon || inset) {\n                active.value = true;\n              }\n            },\n            \"!blur\": () => {\n              if (feedbackIcon || inset) {\n                active.value = false;\n              }\n            }\n          }\n        },\n        {\n          default: () => [renderLabel, renderContent]\n        }\n      );\n    };\n  }\n});\n\nconst Item = connect(\n  FormBaseItem,\n  mapProps(\n    { validateStatus: true, title: \"label\", required: true },\n    (props, field) => {\n      if (isVoidField(field)) return props;\n      if (!field) return props;\n      const takeMessage = () => {\n        const split = (messages: any[]) => {\n          return messages.reduce((buf, text, index) => {\n            if (!text) return buf;\n            return index < messages.length - 1 ? buf.concat([text, \", \"]) : buf.concat([text]);\n          }, []);\n        };\n        if (field.validating) return;\n        if (props.feedbackText) return props.feedbackText;\n        if (field.selfErrors.length) return split(field.selfErrors);\n        if (field.selfWarnings.length) return split(field.selfWarnings);\n        if (field.selfSuccesses.length) return split(field.selfSuccesses);\n      };\n      const errorMessages = takeMessage();\n      return {\n        feedbackText: Array.isArray(errorMessages) ? errorMessages.join(\", \") : errorMessages,\n        extra: props.extra || field.description\n      };\n    },\n    (props, field) => {\n      if (isVoidField(field)) return props;\n      if (!field) return props;\n      return {\n        feedbackStatus:\n          field.validateStatus === \"validating\"\n            ? \"pending\"\n            : (Array.isArray(field.decorator) && field.decorator[1]?.feedbackStatus) ||\n              field.validateStatus\n      };\n    },\n    (props, field) => {\n      if (isVoidField(field)) return props;\n\n      if (!field) return props;\n      let asterisk = false;\n      if (field.required && field.pattern !== \"readPretty\") {\n        asterisk = true;\n      }\n      if (\"asterisk\" in props) {\n        asterisk = props.asterisk;\n      }\n      return {\n        asterisk\n      };\n    }\n  )\n);\n\nexport const FormItem = composeExport(Item, {\n  BaseItem: FormBaseItem\n});\n\nexport default FormItem;\n"],"names":["_a"],"mappings":"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"}