mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-17 21:00:45 +00:00
CE-1554: added ability to overlay html over a block widget
This commit is contained in:
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
import {QWidgetMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QWidgetMetaData";
|
import {QWidgetMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QWidgetMetaData";
|
||||||
import {Box, Skeleton} from "@mui/material";
|
import {Box, Skeleton} from "@mui/material";
|
||||||
|
import parse from "html-react-parser";
|
||||||
import {BlockData} from "qqq/components/widgets/blocks/BlockModels";
|
import {BlockData} from "qqq/components/widgets/blocks/BlockModels";
|
||||||
import WidgetBlock from "qqq/components/widgets/WidgetBlock";
|
import WidgetBlock from "qqq/components/widgets/WidgetBlock";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
@ -32,6 +33,8 @@ export interface CompositeData
|
|||||||
blocks: BlockData[];
|
blocks: BlockData[];
|
||||||
styleOverrides?: any;
|
styleOverrides?: any;
|
||||||
layout?: string;
|
layout?: string;
|
||||||
|
overlayHtml?: string;
|
||||||
|
overlayStyleOverrides?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -97,20 +100,34 @@ export default function CompositeWidget({widgetMetaData, data}: CompositeWidgetP
|
|||||||
boxStyle.borderRadius = "0.5rem";
|
boxStyle.borderRadius = "0.5rem";
|
||||||
boxStyle.background = "#FFFFFF";
|
boxStyle.background = "#FFFFFF";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data?.styleOverrides)
|
if (data?.styleOverrides)
|
||||||
{
|
{
|
||||||
boxStyle = {...boxStyle, ...data.styleOverrides};
|
boxStyle = {...boxStyle, ...data.styleOverrides};
|
||||||
}
|
}
|
||||||
|
|
||||||
return (<Box sx={boxStyle} className="compositeWidget">
|
let overlayStyle: any = {};
|
||||||
{
|
|
||||||
data.blocks.map((block: BlockData, index) => (
|
if (data?.overlayStyleOverrides)
|
||||||
<React.Fragment key={index}>
|
{
|
||||||
<WidgetBlock widgetMetaData={widgetMetaData} block={block} />
|
overlayStyle = {...overlayStyle, ...data.overlayStyleOverrides};
|
||||||
</React.Fragment>
|
}
|
||||||
))
|
|
||||||
}
|
return (
|
||||||
</Box>);
|
<>
|
||||||
|
{
|
||||||
|
data?.overlayHtml &&
|
||||||
|
<Box sx={overlayStyle} className="blockWidgetOverlay">{parse(data.overlayHtml)}</Box>
|
||||||
|
}
|
||||||
|
<Box sx={boxStyle} className="compositeWidget">
|
||||||
|
{
|
||||||
|
data.blocks.map((block: BlockData, index) => (
|
||||||
|
<React.Fragment key={index}>
|
||||||
|
<WidgetBlock widgetMetaData={widgetMetaData} block={block} />
|
||||||
|
</React.Fragment>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</Box>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -787,3 +787,20 @@ input[type="search"]::-webkit-search-results-decoration
|
|||||||
{
|
{
|
||||||
margin: 2rem 1rem;
|
margin: 2rem 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* default styles for a block widget overlay */
|
||||||
|
.blockWidgetOverlay
|
||||||
|
{
|
||||||
|
font-weight: 400;
|
||||||
|
position: relative;
|
||||||
|
top: 15px;
|
||||||
|
height: 0;
|
||||||
|
display: flex;
|
||||||
|
font-size: 14px;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.blockWidgetOverlay a
|
||||||
|
{
|
||||||
|
color: #0062FF !important;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user