Implement add trigger placeholder & button

[PREMIUM-194]
[MAILPOET-4585]
This commit is contained in:
Jan Jakes
2022-08-25 13:51:08 +02:00
committed by Veljko V
parent 6dfe77001a
commit f2a207942d
5 changed files with 77 additions and 8 deletions

View File

@@ -0,0 +1,19 @@
.mailpoet-automation-workflow-add-trigger {
align-items: center;
border: 1px dashed #c3c4c7;
border-radius: 4px;
color: #757575;
cursor: pointer;
display: flex;
fill: #757575;
height: 73px;
justify-content: center;
margin: 4px auto;
padding: 20px 32px;
&:focus {
box-shadow:
0 0 0 1px #fbfbfb, // space
0 0 0 calc(var(--wp-admin-border-width-focus) + 1px) var(--wp-admin-theme-color), // focus ring
}
}

View File

@@ -4,6 +4,7 @@
@import '../../../node_modules/@wordpress/block-editor/build-style/style'; // for inserter styles @import '../../../node_modules/@wordpress/block-editor/build-style/style'; // for inserter styles
@import 'settings/colors'; @import 'settings/colors';
@import './components-automation-editor/add-step-button'; @import './components-automation-editor/add-step-button';
@import './components-automation-editor/add-trigger';
@import './components-automation-editor/block-icon'; @import './components-automation-editor/block-icon';
@import './components-automation-editor/dropdown'; @import './components-automation-editor/dropdown';
@import './components-automation-editor/empty-workflow'; @import './components-automation-editor/empty-workflow';

View File

@@ -0,0 +1,30 @@
import { useContext } from 'react';
import { __unstableCompositeItem as CompositeItem } from '@wordpress/components';
import { Icon, plus } from '@wordpress/icons';
import { __ } from '@wordpress/i18n';
import { useDispatch } from '@wordpress/data';
import { WorkflowCompositeContext } from './context';
import { store } from '../../store';
export function AddTrigger(): JSX.Element {
const compositeState = useContext(WorkflowCompositeContext);
const { setInserterPopoverAnchor } = useDispatch(store);
return (
<CompositeItem
state={compositeState}
role="treeitem"
className="mailpoet-automation-workflow-add-trigger"
focusable
onClick={(event) => {
event.stopPropagation();
setInserterPopoverAnchor(
(event.target as HTMLElement).closest('button'),
);
}}
>
<Icon icon={plus} size={16} />
{__('Add trigger', 'mailpoet')}
</CompositeItem>
);
}

View File

@@ -12,6 +12,7 @@ import { Separator } from './separator';
import { Step } from './step'; import { Step } from './step';
import { InserterPopover } from '../inserter-popover'; import { InserterPopover } from '../inserter-popover';
import { store } from '../../store'; import { store } from '../../store';
import { AddTrigger } from './add-trigger';
export function Workflow(): JSX.Element { export function Workflow(): JSX.Element {
const { workflowData, selectedStep } = useSelect( const { workflowData, selectedStep } = useSelect(
@@ -75,10 +76,14 @@ export function Workflow(): JSX.Element {
<div /> <div />
{steps.map((step) => ( {steps.map((step) => (
<Fragment key={step.id}> <Fragment key={step.id}>
{step.type === 'trigger' && step.key === 'core:empty' ? (
<AddTrigger />
) : (
<Step <Step
step={step} step={step}
isSelected={selectedStep && step.id === selectedStep.id} isSelected={selectedStep && step.id === selectedStep.id}
/> />
)}
<Separator /> <Separator />
</Fragment> </Fragment>
))} ))}

View File

@@ -1,10 +1,24 @@
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import { useMutation } from './api'; import { useMutation } from './api';
import { id } from './id';
const createWorkflow = () => ({ export const createEmptyTrigger = () =>
({
id: id(),
type: 'trigger',
key: 'core:empty',
args: {},
} as const);
const createWorkflow = () => {
const emptyTrigger = createEmptyTrigger();
return {
name: 'Empty workflow', name: 'Empty workflow',
steps: {}, steps: {
}); [emptyTrigger.id]: emptyTrigger,
},
};
};
export function CreateEmptyWorkflowButton(): JSX.Element { export function CreateEmptyWorkflowButton(): JSX.Element {
const [createSchema, { loading, error }] = useMutation('workflows', { const [createSchema, { loading, error }] = useMutation('workflows', {