1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-13 11:17:26 +02:00
unleash.unleash/frontend/src/component/segments/SegmentForm/SegmentForm.tsx
olav 24c11332b5 chore: update MUI to v5 (#923)
* refactor: update mui packages

* refactor: run mui codemods

* refactor: format files after codemods

* refactor: fix broken types

* refactor: clean up theme

* refactor: fix broken tests

* refactor: replace @mui/styles with tss-react

* refactor: move breakpoints into classes for tss

* refactor: fix crash on missing feature description

* refactor: remove void classNames

* refactor: adjust styles to new defaults

* refactor: remove broken rollout slider e2e test

* refactor: fix duplicate e2e testid

* refactor: update makeStyles after rebase

* refactor: add missing snapshot after rebase

* refactor: fix TableCellSortable focus styles

* refactor: use 1.4 as the default line-height

* refactor: hide webkit search field icons

* refactor: fix select box label

* refactor: make AutocompleteBox smaller

* refactor: make heading smaller

* refactor: fix toast close icon color

* refactor: update snapshots

* refactor: add missing test event awaits

* refactor: fix default button line-height
2022-05-02 15:52:41 +02:00

77 lines
2.6 KiB
TypeScript

import { IConstraint } from 'interfaces/strategy';
import { useStyles } from './SegmentForm.styles';
import { SegmentFormStepOne } from '../SegmentFormStepOne/SegmentFormStepOne';
import { SegmentFormStepTwo } from '../SegmentFormStepTwo/SegmentFormStepTwo';
import React, { useState } from 'react';
import { SegmentFormStepList } from 'component/segments/SegmentFormStepList/SegmentFormStepList';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
export type SegmentFormStep = 1 | 2;
export type SegmentFormMode = 'create' | 'edit';
interface ISegmentProps {
name: string;
description: string;
constraints: IConstraint[];
setName: React.Dispatch<React.SetStateAction<string>>;
setDescription: React.Dispatch<React.SetStateAction<string>>;
setConstraints: React.Dispatch<React.SetStateAction<IConstraint[]>>;
handleSubmit: (e: any) => void;
errors: { [key: string]: string };
clearErrors: () => void;
mode: SegmentFormMode;
}
export const SegmentForm: React.FC<ISegmentProps> = ({
children,
name,
description,
constraints,
setName,
setDescription,
setConstraints,
handleSubmit,
errors,
clearErrors,
mode,
}) => {
const { classes: styles } = useStyles();
const totalSteps = 2;
const [currentStep, setCurrentStep] = useState<SegmentFormStep>(1);
return (
<>
<SegmentFormStepList total={totalSteps} current={currentStep} />
<form onSubmit={handleSubmit} className={styles.form}>
<ConditionallyRender
condition={currentStep === 1}
show={
<SegmentFormStepOne
name={name}
description={description}
setName={setName}
setDescription={setDescription}
errors={errors}
clearErrors={clearErrors}
setCurrentStep={setCurrentStep}
/>
}
/>
<ConditionallyRender
condition={currentStep === 2}
show={
<SegmentFormStepTwo
constraints={constraints}
setConstraints={setConstraints}
setCurrentStep={setCurrentStep}
mode={mode}
>
{children}
</SegmentFormStepTwo>
}
/>
</form>
</>
);
};