Skip to content

Commit

Permalink
🚸(app-impress) add warning when body tag not in template
Browse files Browse the repository at this point in the history
In order to work with the pad, the body tag
must be in the template.
This commit adds a warning to the template editor
when the body tag is not in the template.
  • Loading branch information
AntoLC committed Apr 17, 2024
1 parent ff281c6 commit 3bc79fb
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ test.describe('Template Editor', () => {
page,
browserName,
}) => {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(
browserName !== 'chromium',
'This test failed with safary because of the dragNdrop',
);

const randomTemplate = await createTemplate(
page,
'template-editor',
Expand Down Expand Up @@ -64,6 +70,12 @@ test.describe('Template Editor', () => {
page,
browserName,
}) => {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(
browserName !== 'chromium',
'This test failed with safary because of the dragNdrop',
);

const randomTemplate = await createTemplate(
page,
'template-html',
Expand All @@ -86,4 +98,42 @@ test.describe('Template Editor', () => {
await page.getByText('Save template').click();
await expect(page.getByText('Template save successfully')).toBeVisible();
});

test('it shows a warning if body tag not present', async ({
page,
browserName,
}) => {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(
browserName !== 'chromium',
'This test failed with safary because of the dragNdrop',
);

const randomTemplate = await createTemplate(
page,
'template-html',
browserName,
1,
);

await expect(page.locator('h2').getByText(randomTemplate[0])).toBeVisible();

await expect(
page.getByText('The {{body}} tag is necessary to works with the pads.'),
).toBeVisible();

const iframe = page.frameLocator('iFrame.gjs-frame');

await page.getByTitle('Open Blocks').click();
await page
.locator('.gjs-editor .gjs-block[title="Text"]')
.dragTo(iframe.locator('body.gjs-dashed'));

await iframe.getByText('Insert your text here').fill('{{body}}');
await iframe.locator('body.gjs-dashed').click();

await expect(
page.getByText('The {{body}} tag is necessary to works with the pads.'),
).toBeHidden();
});
});
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import GjsEditor from '@grapesjs/react';
import {
Alert,
Button,
VariantType,
useToastProvider,
Expand Down Expand Up @@ -30,6 +31,17 @@ export const TemplateEditor = ({ template }: TemplateEditorProps) => {
},
});
const [editor, setEditor] = useState<Editor>();
const [showWarning, setShowWarning] = useState(false);

const html = editor?.getHtml();

useEffect(() => {
if (showWarning || !html) {
return;
}

setShowWarning(html.includes('{{body}}') === false);
}, [html, showWarning]);

useEffect(() => {
if (!editor?.loadProjectData) {
Expand Down Expand Up @@ -84,14 +96,26 @@ export const TemplateEditor = ({ template }: TemplateEditorProps) => {
updateTemplate({
id: template.id,
css: editor.getCss(),
html: editor.getHtml(),
html,
});
}
}}
>
{t('Save template')}
</Button>
</Box>
{showWarning && html && (
<Box
className="m-b"
$css="margin-top:0;"
$effect={html.includes('{{body}}') ? 'hide' : 'show'}
>
<Alert
type={VariantType.WARNING}
>{`The {{body}} tag is necessary to works with the pads.`}</Alert>
</Box>
)}

<Box className="m-b" $css="margin-top:0;flex:1;" $overflow="auto">
<GjsEditor
grapesjs={grapesjs}
Expand Down

0 comments on commit 3bc79fb

Please sign in to comment.