wms-antdvue/.svn/pristine/01/012b9cac42c09622400d4ad2710fae38e71c0054.svn-base
2024-11-07 16:33:03 +08:00

37 lines
917 B
Plaintext

import type { FunctionalComponent, defineComponent } from 'vue';
import type { ComponentType } from '../../types/componentType';
import { componentMap } from '@/components/Table/src/componentMap';
import { h } from 'vue';
import { Popover } from 'ant-design-vue';
export interface ComponentProps {
component: ComponentType;
rule: boolean;
popoverVisible: boolean;
ruleMessage: string;
}
export const CellComponent: FunctionalComponent = (
{ component = 'Input', rule = true, ruleMessage, popoverVisible }: ComponentProps,
{ attrs },
) => {
const Comp = componentMap.get(component) as typeof defineComponent;
const DefaultComp = h(Comp, attrs);
if (!rule) {
return DefaultComp;
}
return h(
Popover,
{
overlayClassName: 'edit-cell-rule-popover',
visible: !!popoverVisible,
},
{
default: () => DefaultComp,
content: () => ruleMessage,
},
);
};