diff --git a/src/components/Dashboard/common/TemplateEditor.jsx b/src/components/Dashboard/common/TemplateEditor.jsx index c02b8e69..29681fb5 100644 --- a/src/components/Dashboard/common/TemplateEditor.jsx +++ b/src/components/Dashboard/common/TemplateEditor.jsx @@ -110,6 +110,7 @@ const TemplateEditor = ({ const [previewError, setPreviewError] = useState(false) const [errorLines, setErrorLines] = useState([]) const [formatLoading, setFormatLoading] = useState(false) + //const isMobile = useMediaQuery({ maxWidth: 768 }) const handlePreviewMessage = useCallback((message, isError) => { @@ -256,7 +257,8 @@ const TemplateEditor = ({ width: '100%', height: '100%', flex: '1 1 auto', - minHeight: 0 + minHeight: 0, + minWidth: 0 }} useFormItem={false} name={'content'} diff --git a/src/components/Dashboard/common/TemplatePreview.jsx b/src/components/Dashboard/common/TemplatePreview.jsx index 6f0aff15..c0778633 100644 --- a/src/components/Dashboard/common/TemplatePreview.jsx +++ b/src/components/Dashboard/common/TemplatePreview.jsx @@ -7,7 +7,7 @@ import { useCallback } from 'react' import PropTypes from 'prop-types' -import { Flex, Button, Input, Select, Card } from 'antd' +import { Flex, Button, Input, Select, Card, Popover } from 'antd' import PlusIcon from '../../Icons/PlusIcon.jsx' import MinusIcon from '../../Icons/MinusIcon.jsx' import InfoCircleIcon from '../../Icons/InfoCircleIcon.jsx' @@ -18,7 +18,7 @@ import PDFViewer from './PDFViewer.jsx' import ScrollBox from './ScrollBox.jsx' import { ApiServerContext } from '../context/ApiServerContext.jsx' import ProgressDisplay from './ProgressDisplay.jsx' - +import { CaretDownFilled } from '@ant-design/icons' const noop = () => {} const TemplatePreview = ({ @@ -56,6 +56,27 @@ const TemplatePreview = ({ height: 'auto' }) + const toolbarRef = useRef(null) + const [usePopoverSettings, setUsePopoverSettings] = useState(false) + + useLayoutEffect(() => { + const toolbar = toolbarRef.current + if (!toolbar) return undefined + + const updateLayout = () => { + const { width, height } = toolbar.getBoundingClientRect() + console.log('Preview card size', { width, height }) + setUsePopoverSettings(width < 620) + } + + updateLayout() + + const observer = new ResizeObserver(updateLayout) + observer.observe(toolbar) + + return () => observer.disconnect() + }, []) + const applyIframeContentSize = useCallback(() => { const iframe = iframeRef.current const doc = iframe?.contentDocument @@ -474,9 +495,70 @@ const TemplatePreview = ({ const showProgressOverlay = previewType != 'HTML' && downloadProgress != null + const toolbarContent = ( + <> + +