|
@@ -3,11 +3,11 @@ import { connect } from 'react-redux';
|
|
|
import { addApp, updateApp } from '../../../store/actions';
|
|
|
import { App, NewApp } from '../../../interfaces/App';
|
|
|
|
|
|
-import classes from './AppForm.module.css';
|
|
|
-import Icon from '../../UI/Icons/Icon/Icon';
|
|
|
+import ModalForm from '../../UI/Forms/ModalForm/ModalForm';
|
|
|
+import InputGroup from '../../UI/Forms/InputGroup/InputGroup';
|
|
|
|
|
|
interface ComponentProps {
|
|
|
- modalHandler: Function;
|
|
|
+ modalHandler: () => void;
|
|
|
addApp: (formData: NewApp) => any;
|
|
|
updateApp: (id: number, formData: NewApp) => any;
|
|
|
app?: App;
|
|
@@ -30,7 +30,6 @@ const AppForm = (props: ComponentProps): JSX.Element => {
|
|
|
|
|
|
useEffect(() => {
|
|
|
if (props.app) {
|
|
|
- console.log('app');
|
|
|
setFormData({
|
|
|
name: props.app.name,
|
|
|
url: props.app.url,
|
|
@@ -39,10 +38,6 @@ const AppForm = (props: ComponentProps): JSX.Element => {
|
|
|
}
|
|
|
}, [props.app])
|
|
|
|
|
|
- const _modalHandler = () => {
|
|
|
- props.modalHandler();
|
|
|
- }
|
|
|
-
|
|
|
const inputChangeHandler = (e: ChangeEvent<HTMLInputElement>): void => {
|
|
|
setFormData({
|
|
|
...formData,
|
|
@@ -50,7 +45,7 @@ const AppForm = (props: ComponentProps): JSX.Element => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- const formSubmitHandler = (e: SyntheticEvent): void => {
|
|
|
+ const formSubmitHandler = (e: SyntheticEvent<HTMLFormElement>): void => {
|
|
|
e.preventDefault();
|
|
|
|
|
|
if (!props.app) {
|
|
@@ -68,63 +63,61 @@ const AppForm = (props: ComponentProps): JSX.Element => {
|
|
|
}
|
|
|
|
|
|
return (
|
|
|
- <div className={classes.AppForm}>
|
|
|
- <div className={classes.AppFormIcon} onClick={_modalHandler}>
|
|
|
- <Icon icon='mdiClose' />
|
|
|
- </div>
|
|
|
- <form onSubmit={(e) => formSubmitHandler(e)}>
|
|
|
- <div className={classes.InputGroup}>
|
|
|
- <label htmlFor='name'>App Name</label>
|
|
|
- <input
|
|
|
- type='text'
|
|
|
- name='name'
|
|
|
- id='name'
|
|
|
- placeholder='Bookstack'
|
|
|
- required
|
|
|
- value={formData.name}
|
|
|
- onChange={(e) => inputChangeHandler(e)}
|
|
|
- ref={inputRef}
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div className={classes.InputGroup}>
|
|
|
- <label htmlFor='url'>App URL</label>
|
|
|
- <input
|
|
|
- type='text'
|
|
|
- name='url'
|
|
|
- id='url'
|
|
|
- placeholder='bookstack.example.com'
|
|
|
- required
|
|
|
- value={formData.url}
|
|
|
- onChange={(e) => inputChangeHandler(e)}
|
|
|
- />
|
|
|
- <span>Use URL without protocol</span>
|
|
|
- </div>
|
|
|
- <div className={classes.InputGroup}>
|
|
|
- <label htmlFor='icon'>App Icon</label>
|
|
|
- <input
|
|
|
- type='text'
|
|
|
- name='icon'
|
|
|
- id='icon'
|
|
|
- placeholder='book-open-outline'
|
|
|
- required
|
|
|
- value={formData.icon}
|
|
|
- onChange={(e) => inputChangeHandler(e)}
|
|
|
- />
|
|
|
- <span>
|
|
|
- Use icon name from MDI.
|
|
|
- <a
|
|
|
- href='https://materialdesignicons.com/'
|
|
|
- target='blank'>
|
|
|
- {' '}Click here for reference
|
|
|
- </a>
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- {!props.app
|
|
|
- ? <button type="submit">add</button>
|
|
|
- : <button type="submit">update</button>
|
|
|
- }
|
|
|
- </form>
|
|
|
- </div>
|
|
|
+ <ModalForm
|
|
|
+ modalHandler={props.modalHandler}
|
|
|
+ formHandler={formSubmitHandler}
|
|
|
+ >
|
|
|
+ <InputGroup>
|
|
|
+ <label htmlFor='name'>App Name</label>
|
|
|
+ <input
|
|
|
+ type='text'
|
|
|
+ name='name'
|
|
|
+ id='name'
|
|
|
+ placeholder='Bookstack'
|
|
|
+ required
|
|
|
+ value={formData.name}
|
|
|
+ onChange={(e) => inputChangeHandler(e)}
|
|
|
+ ref={inputRef}
|
|
|
+ />
|
|
|
+ </InputGroup>
|
|
|
+ <InputGroup>
|
|
|
+ <label htmlFor='url'>App URL</label>
|
|
|
+ <input
|
|
|
+ type='text'
|
|
|
+ name='url'
|
|
|
+ id='url'
|
|
|
+ placeholder='bookstack.example.com'
|
|
|
+ required
|
|
|
+ value={formData.url}
|
|
|
+ onChange={(e) => inputChangeHandler(e)}
|
|
|
+ />
|
|
|
+ <span>Use URL without protocol</span>
|
|
|
+ </InputGroup>
|
|
|
+ <InputGroup>
|
|
|
+ <label htmlFor='icon'>App Icon</label>
|
|
|
+ <input
|
|
|
+ type='text'
|
|
|
+ name='icon'
|
|
|
+ id='icon'
|
|
|
+ placeholder='book-open-outline'
|
|
|
+ required
|
|
|
+ value={formData.icon}
|
|
|
+ onChange={(e) => inputChangeHandler(e)}
|
|
|
+ />
|
|
|
+ <span>
|
|
|
+ Use icon name from MDI.
|
|
|
+ <a
|
|
|
+ href='https://materialdesignicons.com/'
|
|
|
+ target='blank'>
|
|
|
+ {' '}Click here for reference
|
|
|
+ </a>
|
|
|
+ </span>
|
|
|
+ </InputGroup>
|
|
|
+ {!props.app
|
|
|
+ ? <button type="submit">add</button>
|
|
|
+ : <button type="submit">update</button>
|
|
|
+ }
|
|
|
+ </ModalForm>
|
|
|
)
|
|
|
}
|
|
|
|