import type { PropType } from 'vue'; import { Tooltip } from 'ant-design-vue'; import { InfoCircleOutlined } from '@ant-design/icons-vue'; import { defineComponent, computed, unref } from 'vue'; import { getPopupContainer } from '/@/utils'; import { isString, isArray } from '/@/utils/is'; import { getSlot } from '/@/utils/helper/tsxHelper'; import './BasicHelp.less'; export default defineComponent({ name: 'BaseHelp', props: { // max-width maxWidth: { type: String as PropType, default: '600px', }, // Whether to display the serial number showIndex: { type: Boolean as PropType, default: false, }, // Text list text: { type: [Array, String] as PropType, }, // color color: { type: String as PropType, default: '#ffffff', }, fontSize: { type: String as PropType, default: '14px', }, absolute: { type: Boolean as PropType, default: false, }, // 定位 position: { type: [Object] as PropType, default: () => ({ position: 'absolute', left: 0, bottom: 0, }), }, }, setup(props, { slots }) { const getOverlayStyleRef = computed(() => { return { maxWidth: props.maxWidth, }; }); const getWrapStyleRef = computed(() => { return { color: props.color, fontSize: props.fontSize, }; }); const getMainStyleRef = computed(() => { return props.absolute ? props.position : {}; }); /** * @description: 渲染内容 */ const renderTitle = () => { const list = props.text; if (isString(list)) { return

{list}

; } if (isArray(list)) { return list.map((item, index) => { return (

{props.showIndex ? `${index + 1}. ` : ''} {item}

); }); } return null; }; return () => ( {renderTitle()}) as any} placement="right" overlayStyle={unref(getOverlayStyleRef)} autoAdjustOverflow={true} overlayClassName="base-help__wrap" getPopupContainer={() => getPopupContainer()} > {{ default: () => ( {getSlot(slots) || } ), }} ); }, });