Skip to content

Commit a45001e

Browse files
authored
Merge pull request #6 from Lemoncode/feature/Implement_employee_layout
Feature/implement employee layout
2 parents 0cc0413 + 56daed3 commit a45001e

57 files changed

Lines changed: 1102 additions & 92 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,15 @@
4141
"dependencies": {
4242
"@lemoncode/fonk": "^1.3.0",
4343
"@lemoncode/fonk-final-form": "^2.3.1",
44+
"@lemoncode/fonk-formik": "^4.0.1",
4445
"@lemoncode/fonk-match-field-validator": "^1.0.1",
4546
"@material-ui/core": "4.9.11",
4647
"@material-ui/icons": "^4.9.1",
4748
"@material-ui/lab": "4.0.0-alpha.47",
4849
"axios": "^0.19.0",
4950
"emotion": "^10.0.23",
5051
"final-form": "^4.18.6",
52+
"formik": "^2.1.4",
5153
"graphql-request": "^1.8.2",
5254
"lodash.flowright": "^3.5.0",
5355
"lodash.get": "^4.4.2",
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import * as React from 'react';
2+
import { cx } from 'emotion';
3+
import Button from '@material-ui/core/Button';
4+
import * as classes from './command-footer.style';
5+
6+
interface LabelProps {
7+
cancelButton?: string;
8+
saveButton?: string;
9+
}
10+
11+
interface Props {
12+
onCancel: () => void;
13+
onSave?: () => void;
14+
labels?: LabelProps;
15+
className?: string;
16+
}
17+
18+
export const CommandFooterComponent: React.FunctionComponent<Props> = props => {
19+
const { onCancel, onSave, className } = props;
20+
const labels: LabelProps = {
21+
cancelButton: 'Cancelar',
22+
saveButton: 'Guardar',
23+
...props.labels,
24+
};
25+
26+
return (
27+
<div className={cx(classes.footerButtonsContainer, className)}>
28+
<Button variant="contained" color="primary" onClick={onCancel}>
29+
{labels.cancelButton}
30+
</Button>
31+
<Button
32+
type="submit"
33+
variant="contained"
34+
color="primary"
35+
onClick={() => {
36+
if (onSave) onSave();
37+
}}
38+
>
39+
{labels.saveButton}
40+
</Button>
41+
</div>
42+
);
43+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { css } from 'emotion';
2+
3+
export const footerButtonsContainer = css`
4+
display: flex;
5+
flex-direction: row;
6+
justify-content: space-between;
7+
margin-top: 1rem;
8+
`;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './command-footer.component';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { keys } from './keys';
2+
3+
export const en = {
4+
[keys.buttons.cancel]: 'Cancel',
5+
[keys.buttons.save]: 'Save',
6+
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { keys } from './keys';
2+
3+
export const es = {
4+
[keys.buttons.cancel]: 'Atrás',
5+
[keys.buttons.save]: 'Guardar',
6+
};
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './keys';
2+
export * from './en';
3+
export * from './es';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const keys = {
2+
buttons: {
3+
cancel: 'buttons.cancel',
4+
save: 'buttons.save',
5+
},
6+
};
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import React from 'react';
2+
import { useField } from 'formik';
3+
import Checkbox, { CheckboxProps } from '@material-ui/core/Checkbox';
4+
import FormControlLabel from '@material-ui/core/FormControlLabel';
5+
import FormControl from '@material-ui/core/FormControl';
6+
import FormHelperText from '@material-ui/core/FormHelperText';
7+
import * as classes from './checkbox.styles';
8+
9+
interface Props extends CheckboxProps {
10+
label?: string;
11+
labelPlacement?: 'end' | 'start' | 'top' | 'bottom';
12+
error?: boolean;
13+
helperText?: string;
14+
}
15+
16+
export const CheckboxComponent: React.FunctionComponent<Props> = props => {
17+
const {
18+
label,
19+
labelPlacement,
20+
error,
21+
name,
22+
checked,
23+
onChange,
24+
onBlur,
25+
...checkboxProps
26+
} = props;
27+
const [field, meta] = Boolean(name) ? useField(name) : [];
28+
const hasError = error || Boolean(meta && meta.touched && meta.error);
29+
const helperText = Boolean(field) ? meta?.error : props.helperText;
30+
31+
return (
32+
<FormControl
33+
className={classes.root}
34+
error={hasError}
35+
fullWidth={true}
36+
margin="normal"
37+
>
38+
<FormControlLabel
39+
control={
40+
<Checkbox
41+
{...checkboxProps}
42+
name={name}
43+
checked={checked || field?.value}
44+
onChange={onChange || field?.onChange}
45+
onBlur={onBlur || field?.onBlur}
46+
/>
47+
}
48+
label={label}
49+
labelPlacement={labelPlacement}
50+
/>
51+
52+
{hasError && <FormHelperText>{helperText}</FormHelperText>}
53+
</FormControl>
54+
);
55+
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { css } from 'emotion';
2+
import { theme } from 'core/theme';
3+
4+
export const root = css`
5+
justify-content: flex-end;
6+
`;

0 commit comments

Comments
 (0)