|
@@ -19,10 +19,13 @@ interface Props {
|
|
|
|
|
|
export const ThemeCreator = ({ modalHandler }: Props): JSX.Element => {
|
|
export const ThemeCreator = ({ modalHandler }: Props): JSX.Element => {
|
|
const {
|
|
const {
|
|
- theme: { activeTheme },
|
|
|
|
|
|
+ theme: { activeTheme, themeInEdit },
|
|
} = useSelector((state: State) => state);
|
|
} = useSelector((state: State) => state);
|
|
|
|
|
|
- const { addTheme } = bindActionCreators(actionCreators, useDispatch());
|
|
|
|
|
|
+ const { addTheme, updateTheme } = bindActionCreators(
|
|
|
|
+ actionCreators,
|
|
|
|
+ useDispatch()
|
|
|
|
+ );
|
|
|
|
|
|
const [formData, setFormData] = useState<Theme>({
|
|
const [formData, setFormData] = useState<Theme>({
|
|
name: '',
|
|
name: '',
|
|
@@ -38,6 +41,12 @@ export const ThemeCreator = ({ modalHandler }: Props): JSX.Element => {
|
|
setFormData({ ...formData, colors: activeTheme.colors });
|
|
setFormData({ ...formData, colors: activeTheme.colors });
|
|
}, [activeTheme]);
|
|
}, [activeTheme]);
|
|
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ if (themeInEdit) {
|
|
|
|
+ setFormData(themeInEdit);
|
|
|
|
+ }
|
|
|
|
+ }, [themeInEdit]);
|
|
|
|
+
|
|
const inputChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {
|
|
const inputChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {
|
|
const { name, value } = e.target;
|
|
const { name, value } = e.target;
|
|
|
|
|
|
@@ -62,8 +71,11 @@ export const ThemeCreator = ({ modalHandler }: Props): JSX.Element => {
|
|
const formHandler = (e: FormEvent) => {
|
|
const formHandler = (e: FormEvent) => {
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
|
|
|
|
- // add new theme
|
|
|
|
- addTheme(formData);
|
|
|
|
|
|
+ if (!themeInEdit) {
|
|
|
|
+ addTheme(formData);
|
|
|
|
+ } else {
|
|
|
|
+ updateTheme(formData);
|
|
|
|
+ }
|
|
|
|
|
|
// close modal
|
|
// close modal
|
|
modalHandler();
|
|
modalHandler();
|
|
@@ -125,7 +137,11 @@ export const ThemeCreator = ({ modalHandler }: Props): JSX.Element => {
|
|
</InputGroup>
|
|
</InputGroup>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <Button>Add theme</Button>
|
|
|
|
|
|
+ {!themeInEdit ? (
|
|
|
|
+ <Button>Add theme</Button>
|
|
|
|
+ ) : (
|
|
|
|
+ <Button>Update theme</Button>
|
|
|
|
+ )}
|
|
</ModalForm>
|
|
</ModalForm>
|
|
);
|
|
);
|
|
};
|
|
};
|