diff --git a/src/qqq/components/widgets/CompositeWidget.tsx b/src/qqq/components/widgets/CompositeWidget.tsx index b345487..0834268 100644 --- a/src/qqq/components/widgets/CompositeWidget.tsx +++ b/src/qqq/components/widgets/CompositeWidget.tsx @@ -27,7 +27,7 @@ import WidgetBlock from "qqq/components/widgets/WidgetBlock"; import React from "react"; -interface CompositeData +export interface CompositeData { blocks: BlockData[]; styleOverrides?: any; diff --git a/src/qqq/components/widgets/blocks/BlockElementWrapper.tsx b/src/qqq/components/widgets/blocks/BlockElementWrapper.tsx index dbfcce2..4ae8d7d 100644 --- a/src/qqq/components/widgets/blocks/BlockElementWrapper.tsx +++ b/src/qqq/components/widgets/blocks/BlockElementWrapper.tsx @@ -21,18 +21,19 @@ import {QWidgetMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QWidgetMetaData"; -import {Tooltip} from "@mui/material"; -import React, {ReactElement, useContext} from "react"; -import {Link} from "react-router-dom"; +import {Box, Tooltip} from "@mui/material"; import QContext from "QContext"; import HelpContent, {hasHelpContent} from "qqq/components/misc/HelpContent"; import {BlockData, BlockLink, BlockTooltip} from "qqq/components/widgets/blocks/BlockModels"; +import CompositeWidget from "qqq/components/widgets/CompositeWidget"; +import React, {ReactElement, useContext} from "react"; +import {Link} from "react-router-dom"; interface BlockElementWrapperProps { data: BlockData; metaData: QWidgetMetaData; - slot: string + slot: string; linkProps?: any; children: ReactElement; } @@ -47,16 +48,16 @@ export default function BlockElementWrapper({data, metaData, slot, linkProps, ch let link: BlockLink; let tooltip: BlockTooltip; - if(slot) + if (slot) { link = data.linkMap && data.linkMap[slot.toUpperCase()]; - if(!link) + if (!link) { link = data.link; } tooltip = data.tooltipMap && data.tooltipMap[slot.toUpperCase()]; - if(!tooltip) + if (!tooltip) { tooltip = data.tooltip; } @@ -67,9 +68,9 @@ export default function BlockElementWrapper({data, metaData, slot, linkProps, ch tooltip = data.tooltip; } - if(!tooltip) + if (!tooltip) { - const helpRoles = ["ALL_SCREENS"] + const helpRoles = ["ALL_SCREENS"]; /////////////////////////////////////////////////////////////////////////////////////////////// // the full keys in the helpContent table will look like: // @@ -80,26 +81,39 @@ export default function BlockElementWrapper({data, metaData, slot, linkProps, ch const key = data.blockId ? `${data.blockId},${slot}` : slot; const showHelp = helpHelpActive || hasHelpContent(metaData?.helpContent?.get(key), helpRoles); - if(showHelp) + if (showHelp) { const formattedHelpContent = ; - tooltip = {title: formattedHelpContent, placement: "bottom"} + tooltip = {title: formattedHelpContent, placement: "bottom"}; } } let rs = children; - if(link) + if (link) { - rs = {rs} + rs = {rs}; } - if(tooltip) + if (tooltip) { - let placement = tooltip.placement ? tooltip.placement.toLowerCase() : "bottom" + let placement = tooltip.placement ? tooltip.placement.toLowerCase() : "bottom"; // @ts-ignore - placement possible values - rs = {rs} + if (tooltip.blockData) + { + // @ts-ignore - special case for composite type block... + rs = + + + }>{rs}; + } + else + { + // @ts-ignore - placement possible values + rs = {rs}; + } } return (rs); diff --git a/src/qqq/components/widgets/blocks/BlockModels.ts b/src/qqq/components/widgets/blocks/BlockModels.ts index 22a7c1e..c29f77c 100644 --- a/src/qqq/components/widgets/blocks/BlockModels.ts +++ b/src/qqq/components/widgets/blocks/BlockModels.ts @@ -20,6 +20,7 @@ */ import {QWidgetMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QWidgetMetaData"; +import {CompositeData} from "qqq/components/widgets/CompositeWidget"; export interface BlockData @@ -29,8 +30,8 @@ export interface BlockData tooltip?: BlockTooltip; link?: BlockLink; - tooltipMap?: {[slot: string]: BlockTooltip}; - linkMap?: {[slot: string]: BlockLink}; + tooltipMap?: { [slot: string]: BlockTooltip }; + linkMap?: { [slot: string]: BlockLink }; values: any; styles?: any; @@ -39,6 +40,7 @@ export interface BlockData export interface BlockTooltip { + blockData?: CompositeData; title: string | JSX.Element; placement: string; }