vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 32.2 kB
Source Map (JSON)
{"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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"}