webstudio/ui/src/features/create_trigger/presentation/create_trigger_screen.tsx

76 lines
2.7 KiB
TypeScript
Raw Normal View History

2023-11-01 18:24:43 +03:00
import * as React from "react";
2023-11-10 12:06:40 +03:00
import { Button, Col, Row, Switch, Typography, Input } from "antd";
2023-11-01 18:24:43 +03:00
import { CodeTriggerForm } from "./components/code_trigger_form";
import { observer } from "mobx-react-lite";
import { FileTriggerForm } from "./components/file_trigger_form";
2023-11-16 00:40:35 +03:00
import { ReactComponent as DeleteIcon } from "../../../core/assets/icons/delete.svg";
2023-11-10 12:06:40 +03:00
import { Loader } from "../../../core/ui/loader/loader";
2023-12-28 17:18:12 +03:00
import { TriggerRepository } from "../data/trigger_repository";
import { TriggerStore } from "./trigger_store";
import { TriggerViewModel } from "../model/trigger_form_view_model";
import { CallBackStringVoidFunction } from "../../../core/extensions/extensions";
2023-11-01 18:24:43 +03:00
const { Title } = Typography;
2023-12-28 17:18:12 +03:00
const Bottom = observer((props: { triggers: TriggerViewModel[]; callBack: CallBackStringVoidFunction }) => {
2023-11-01 18:24:43 +03:00
return (
<Col>
2023-12-28 17:18:12 +03:00
{props.triggers.map((el) => {
2023-11-01 18:24:43 +03:00
return (
<Row
style={{
justifyContent: "center",
}}
>
{el.value}
2023-12-28 17:18:12 +03:00
<DeleteIcon onClick={() => props.callBack(el.id)} />
2023-11-01 18:24:43 +03:00
</Row>
);
})}
</Col>
);
});
2023-12-28 17:18:12 +03:00
export const CreateTriggerScreenPath = "/create/trigger";
2023-11-01 18:24:43 +03:00
export const TriggerScreen: React.FunctionComponent = observer(() => {
2023-12-28 17:18:12 +03:00
const [triggerStore] = React.useState(() => new TriggerStore(new TriggerRepository()));
2023-11-01 18:24:43 +03:00
return (
<>
2023-11-10 12:06:40 +03:00
<main>
{!triggerStore.isLoading ? (
2023-11-01 18:24:43 +03:00
<>
2023-12-28 17:18:12 +03:00
<Row style={{ justifyItems: "center", alignItems: "center" }}>
<div style={{ height: "37px" }}>
<Switch checked={triggerStore.getTriggerType()} onChange={() => triggerStore.setTriggerType()} />
</div>
<Title level={2}>Trigger editor: {triggerStore.getTriggerDescription()}</Title>
<div style={{ width: "10px" }}></div>
<Button onClick={() => triggerStore.saveResult()}>Save result</Button>
</Row>
<Input placeholder="trigger description" onChange={() => triggerStore.changeTriggerDescription} />
2023-11-10 12:06:40 +03:00
{triggerStore.getTriggerType() ? (
<>
2023-12-28 17:18:12 +03:00
<FileTriggerForm pushTrigger={triggerStore.pushTrigger} />
2023-11-10 12:06:40 +03:00
</>
) : (
<>
2023-12-28 17:18:12 +03:00
<CodeTriggerForm
codeTriggerValue={triggerStore.codeTriggerValue}
clearTriggerCode={triggerStore.clearTriggerCode}
saveCode={triggerStore.saveCode}
writeNewTrigger={triggerStore.writeNewTrigger}
/>
2023-11-10 12:06:40 +03:00
</>
)}
2023-12-28 17:18:12 +03:00
<Bottom triggers={triggerStore.triggers} callBack={triggerStore.deleteItem} />
2023-11-01 18:24:43 +03:00
</>
) : (
<>
2023-12-28 17:18:12 +03:00
<Loader />
2023-11-01 18:24:43 +03:00
</>
)}
</main>
</>
);
});