{"version":3,"file":"index.mjs","sources":["../../../../../packages/formily/form-item/index.ts"],"sourcesContent":["import {\n  Transition,\n  defineComponent,\n  h,\n  onBeforeUnmount,\n  provide,\n  ref,\n  watch,\n} from 'vue'\nimport { isVoidField } from '@formily/core'\nimport { connect, mapProps } from '@formily/vue'\nimport { ElIcon, ElPopover, ElTooltip, useNamespace } from 'element-plus'\nimport {\n  CircleCheck,\n  CircleClose,\n  InfoFilled,\n  Warning,\n} from '@element-plus/icons-vue'\nimport { FormLayoutShallowContext, useFormLayout } from '../form-layout'\nimport { composeExport, resolveComponent, stylePrefix } from '../__builtins__'\nimport type { Component, Ref } from 'vue'\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  prefix?: string | Component\n  suffix?: 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  asterisk?: boolean\n  gridSpan?: number | string\n  bordered?: boolean\n  inset?: boolean\n}\n\nconst useOverflow = (containerRef: Ref<HTMLElement>) => {\n  const overflow = ref(false)\n  let resizeObserver: ResizeObserver | null = null\n\n  const cleanup = () => {\n    if (resizeObserver) {\n      resizeObserver.unobserve(containerRef.value)\n      resizeObserver = null\n    }\n  }\n\n  const observer = () => {\n    const container = containerRef.value\n    const content: any = container.querySelector('label')\n    const containerWidth = container.getBoundingClientRect().width\n    const contentWidth = content.getBoundingClientRect().width\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<FormItemProps>({\n  name: 'FormItem',\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    asterisk: {},\n    gridSpan: {},\n    bordered: { default: true },\n    inset: { default: false },\n    prefix: {},\n    suffix: {},\n  },\n  setup(props, { slots }) {\n    const active = ref(false)\n    const deepLayoutRef = useFormLayout()\n    const prefixCls = `${stylePrefix}-form-item`\n\n    const ns = useNamespace('f-form-item')\n\n    const containerRef: Ref<any> = ref<HTMLElement>()\n    const overflow = useOverflow(containerRef)\n\n    // provide(FormLayoutShallowContext, ref(null))\n    provide(FormLayoutShallowContext, ref({}))\n\n    return () => {\n      const gridStyles: Record<string, any> = {}\n\n      const deepLayout = deepLayoutRef.value\n      const {\n        label,\n        colon = deepLayout.colon ?? true,\n        layout = deepLayout.layout ?? 'horizontal',\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        prefix, //  add\n        suffix, //  add\n        size = deepLayout.size,\n        extra,\n        feedbackText,\n        feedbackLayout = deepLayout.feedbackLayout,\n        tooltipLayout = deepLayout.tooltipLayout ?? 'icon',\n        feedbackStatus,\n        feedbackIcon,\n        asterisk,\n        bordered = deepLayout.bordered,\n        inset = deepLayout.inset,\n      } = props as any\n\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}px`\n          labelStyle.maxWidth = `${labelWidth}px`\n        }\n        if (wrapperWidth) {\n          wrapperStyle.width = `${wrapperWidth}px`\n          wrapperStyle.maxWidth = `${wrapperWidth}px`\n        }\n        // 栅格模式\n      } else if (labelCol || wrapperCol) {\n        enableCol = true\n      }\n\n      const formatChildren =\n        feedbackLayout === 'popover'\n          ? h(\n              ElPopover,\n              {\n                disabled: !feedbackText,\n                placement: 'top',\n                width: 'auto',\n              },\n              {\n                reference: () =>\n                  h('div', {}, { default: () => slots.default?.() }),\n                default: () => [\n                  h(\n                    'div',\n                    {\n                      class: {\n                        [`${prefixCls}-${feedbackStatus}-help`]:\n                          !!feedbackStatus,\n                      },\n                    },\n                    {\n                      default: () => [\n                        feedbackStatus &&\n                        ['error', 'success', 'warning'].includes(feedbackStatus)\n                          ? ICON_MAP[\n                              feedbackStatus as 'error' | 'success' | 'warning'\n                            ]()\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 &&\n                h(\n                  'span',\n                  { class: `${prefixCls}-asterisk` },\n                  { default: () => ['*'] }\n                ),\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                    placement: 'top',\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              prefix &&\n                h(\n                  'div',\n                  { class: `${prefixCls}-label-prefix` },\n                  {\n                    default: () => [resolveComponent(prefix)],\n                  }\n                ),\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              suffix &&\n                h(\n                  'div',\n                  { class: `${prefixCls}-label-suffix` },\n                  {\n                    default: () => [resolveComponent(suffix)],\n                  }\n                ),\n            ],\n          }\n        )\n\n      const shouldShowError =\n        !!feedbackText &&\n        feedbackLayout !== 'popover' &&\n        feedbackLayout !== 'none'\n\n      const renderFeedback = h(\n        Transition,\n        {\n          name: `${ns.namespace.value}-zoom-in-top`,\n        },\n        {\n          default: () =>\n            shouldShowError\n              ? h(\n                  'div',\n                  {\n                    class: {\n                      [`${prefixCls}-${feedbackStatus}-help`]: !!feedbackStatus,\n                      [`${prefixCls}-help`]: true,\n                    },\n                  },\n                  { default: () => [resolveComponent(feedbackText)] }\n                )\n              : '',\n        }\n      )\n\n      const renderExtra =\n        extra &&\n        h(\n          'div',\n          { class: `${prefixCls}-extra` },\n          { default: () => [resolveComponent(extra)] }\n        )\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                      },\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          'data-grid-span': props.gridSpan,\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}`]:\n              !!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`]:\n              bordered === false || !!inset || !!feedbackIcon,\n            [`${props.className}`]: !!props.className,\n          },\n          onFocus: () => {\n            if (feedbackIcon || inset) {\n              active.value = true\n            }\n          },\n          onBlur: () => {\n            if (feedbackIcon || inset) {\n              active.value = false\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        if (field.validating) return\n        if (props.feedbackText) return props.feedbackText\n        if (field.selfErrors.length) return field.selfErrors\n        if (field.selfWarnings.length) return field.selfWarnings\n        if (field.selfSuccesses.length) return field.selfSuccesses\n      }\n      const errorMessages = takeMessage()\n      return {\n        feedbackText: Array.isArray(errorMessages)\n          ? errorMessages.join(', ')\n          : 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) &&\n                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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"}