Files
twenty/packages/twenty-front/src/modules/settings/page-layout/components/WidgetRenderer.tsx
T

33 lines
866 B
TypeScript

import { IframeWidget } from '@/dashboards/widgets/iframe/components/IframeWidget';
import { isString } from '@sniptt/guards';
import { WidgetType } from '../mocks/mockWidgets';
import { type PageLayoutWidget } from '../states/savedPageLayoutsState';
import { GraphWidgetRenderer } from './GraphWidgetRenderer';
type WidgetRendererProps = {
widget: PageLayoutWidget;
};
export const WidgetRenderer = ({ widget }: WidgetRendererProps) => {
switch (widget.type) {
case WidgetType.GRAPH:
return <GraphWidgetRenderer widget={widget} />;
case WidgetType.IFRAME: {
const url = widget.configuration?.url;
return (
<IframeWidget url={isString(url) ? url : ''} title={widget.title} />
);
}
case WidgetType.VIEW:
return null;
case WidgetType.FIELDS:
return null;
default:
return null;
}
};