imbric-theme 0.3.4 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. package/atoms/Checkbox/Checkbox.js +26 -9
  2. package/atoms/Checkbox/Checkbox.module.css +51 -0
  3. package/atoms/Checkbox/Checkbox.stories.js +4 -2
  4. package/atoms/Icon/constants.js +1 -1
  5. package/atoms/Input/Input.js +1 -0
  6. package/atoms/LinkItem/LinkItem.js +36 -0
  7. package/atoms/{Link/Link.module.css → LinkItem/LinkItem.module.css} +6 -1
  8. package/atoms/{Link/Link.stories.js → LinkItem/LinkItem.stories.js} +5 -5
  9. package/atoms/{Link → LinkItem}/__snapshots__/Link.stories.js.snap +0 -0
  10. package/atoms/{Link → LinkItem}/constants.js +0 -0
  11. package/atoms/LinkItem/index.js +3 -0
  12. package/atoms/Modal/Modal.js +9 -1
  13. package/atoms/Modal/Modal.module.css +6 -6
  14. package/hook/useAddColumn.js +40 -0
  15. package/hook/useStateDate.js +25 -0
  16. package/hook/useTable.js +45 -0
  17. package/index.js +4 -2
  18. package/layout/DynamicTable/DynamicTable.js +87 -122
  19. package/layout/DynamicTable/DynamicTable.module.css +2 -1
  20. package/layout/DynamicTable/DynamicTable.stories.js +49 -2
  21. package/layout/DynamicTable/constants.js +50 -567
  22. package/layout/Navbar/Navbar.js +1 -1
  23. package/molecules/ColumnTable/ColumnTable.js +78 -73
  24. package/molecules/ColumnTable/ColumnTable.module.css +13 -0
  25. package/molecules/ColumnTable/ColumnTable.stories.js +4 -7
  26. package/molecules/ColumnTable/constants.js +111 -1
  27. package/molecules/DatePicker/DatePicker.js +27 -14
  28. package/molecules/DatePicker/DatePicker.module.css +1 -1
  29. package/molecules/DynamicSelect/DynamicSelect.js +9 -0
  30. package/molecules/FooterTable/FooterTable.js +47 -0
  31. package/molecules/FooterTable/FooterTable.module.css +37 -0
  32. package/molecules/FooterTable/FooterTable.stories.js +23 -0
  33. package/molecules/FooterTable/constants.js +1 -0
  34. package/molecules/FooterTable/index.js +3 -0
  35. package/molecules/RowTable/RowTable.js +70 -4
  36. package/molecules/RowTable/RowTable.module.css +21 -2
  37. package/molecules/RowTable/RowTable.stories.js +7 -4
  38. package/molecules/RowTable/constants.js +318 -1
  39. package/package.json +1 -1
  40. package/atoms/Icon/file-download-svgrepo-com.svg +0 -13
  41. package/atoms/Link/Link.js +0 -33
  42. package/atoms/Link/index.js +0 -3
@@ -5,7 +5,8 @@ import styles from './Checkbox.module.css'
5
5
  import { options } from './constants'
6
6
  import withStyles from '../../hocs/withStyles'
7
7
 
8
- export const Checkbox = ({ getStyles, onChange, label, id, value, name }) => {
8
+
9
+ export const Checkbox = ({ getStyles, onChange, label, id, value, name, linkCheck, nameLinkCheck }) => {
9
10
 
10
11
  const [checked, setChecked] = React.useState(false);
11
12
 
@@ -14,17 +15,29 @@ export const Checkbox = ({ getStyles, onChange, label, id, value, name }) => {
14
15
 
15
16
  <div className={getStyles('checkbox')}>
16
17
 
17
- <input
18
- type="checkbox"
18
+ {/* <input
19
+ type="checkbox"
19
20
  id={id}
20
21
  name={name}
21
22
  label={label}
22
23
  value={value}
23
24
  onChange={onChange}
24
25
  />
25
- {label}
26
+ &nbsp;{label} */}
27
+
28
+ <input className={getStyles('checkbox-custom')}
29
+ type="checkbox"
30
+ id={id}
31
+ name={name}
32
+ label={label}
33
+ value={value}
34
+ onChange={onChange}
35
+ />
36
+ <label htmlFor={name} className={getStyles('checkbox-custom-label')}>{label}<a className={getStyles('checkbox-custom-link')} href={linkCheck} target="_black"> {nameLinkCheck}</a> </label>
37
+
38
+
26
39
  </div>
27
-
40
+
28
41
  )
29
42
  }
30
43
 
@@ -33,17 +46,21 @@ Checkbox.propTypes = {
33
46
  onChange: PropTypes.func.isRequired,
34
47
  id: PropTypes.string.isRequired,
35
48
  name: PropTypes.string.isRequired,
36
- value: PropTypes.string.isRequired,
37
- label: PropTypes.string
49
+ value: PropTypes.bool.isRequired,
50
+ label: PropTypes.string,
51
+ nameLinkCheck: PropTypes.string,
52
+ linkCheck: PropTypes.string,
38
53
  }
39
54
 
40
55
  Checkbox.defaultProps = {
41
56
  getStyles: () => { },
42
57
  onChange: () => { },
43
- id: '1',
44
- name: '1',
58
+ id: 'hola',
59
+ name: 'hola',
45
60
  value: true,
46
61
  label: 'Hola',
62
+ nameLinkCheck: '',
63
+ linkCheck: '',
47
64
  }
48
65
 
49
66
  export default withStyles(styles)(Checkbox)
@@ -1,3 +1,54 @@
1
1
  .checkbox {
2
2
  display: flex;
3
3
  }
4
+
5
+ /* ////////////////////// */
6
+
7
+
8
+ .checkbox-custom {
9
+ opacity: 0;
10
+ position: absolute;
11
+ }
12
+
13
+ .checkbox-custom, .checkbox-custom-label {
14
+ display: inline-block;
15
+ vertical-align: middle;
16
+ margin: 5px;
17
+ cursor: pointer;
18
+ color: var(--color-brand-regent-gray);
19
+ font-weight: var(--font-weight-light);
20
+ }
21
+
22
+ .checkbox-custom + .checkbox-custom-label:before {
23
+ content: '';
24
+ background: #fff;
25
+ border-radius: 5px;
26
+ border: 2px solid #ddd;
27
+ display: inline-block;
28
+ vertical-align: middle;
29
+ width: 10px;
30
+ height: 10px;
31
+ padding: 2px;
32
+ margin-right: 10px;
33
+ text-align: center;
34
+ }
35
+
36
+ .checkbox-custom:checked + .checkbox-custom-label:before {
37
+ content: "";
38
+ display: inline-block;
39
+ width: 1px;
40
+ height: 5px;
41
+ border: solid var(--color-brand-smalt);
42
+ border-width: 0 3px 3px 0;
43
+ transform: rotate(45deg);
44
+ -webkit-transform: rotate(45deg);
45
+ -ms-transform: rotate(45deg);
46
+ border-radius: 0px;
47
+ margin: 0px 15px 5px 5px;
48
+ }
49
+
50
+ .checkbox-custom, .checkbox-custom-link {
51
+ font-weight: var(--font-weight-normal);
52
+ color: var(--color-primary);
53
+ text-decoration: underline;
54
+ }
@@ -13,10 +13,12 @@ export default {
13
13
  title: 'Atoms/Checkbox',
14
14
  component: Checkbox,
15
15
  args: {
16
- id: '1',
17
- name: '1',
16
+ id: 'hola',
17
+ name: 'hola',
18
18
  value: true,
19
19
  label: 'Hola',
20
+ nameLinkCheck: '',
21
+ linkCheck: '',
20
22
  },
21
23
  argTypes: {
22
24
  // types: getOptionsArgTypes(options.types),
@@ -88,7 +88,7 @@ export const iconsMap = {
88
88
  angleUpDown: {
89
89
  viewBox: '0 0 15 15',
90
90
  svg: (
91
- <path class="st0" d="M3.6,4.3c-0.3,0.3-0.3,0.7,0,1c0.3,0.3,0.7,0.3,1,0l2.9-2.9l2.9,2.9c0.3,0.3,0.7,0.3,1,0c0.3-0.3,0.3-0.7,0-1
91
+ <path d="M3.6,4.3c-0.3,0.3-0.3,0.7,0,1c0.3,0.3,0.7,0.3,1,0l2.9-2.9l2.9,2.9c0.3,0.3,0.7,0.3,1,0c0.3-0.3,0.3-0.7,0-1
92
92
  L8,0.9C7.9,0.8,7.7,0.7,7.5,0.7C7.3,0.7,7.1,0.8,7,0.9L3.6,4.3z M11.4,10.7c0.3-0.3,0.3-0.7,0-1c-0.3-0.3-0.7-0.3-1,0l-2.9,2.9
93
93
  L4.6,9.7c-0.3-0.3-0.7-0.3-1,0c-0.3,0.3-0.3,0.7,0,1L7,14.1c0.3,0.3,0.7,0.3,1,0L11.4,10.7z"/>
94
94
  ),
@@ -20,6 +20,7 @@ export const Input = ({
20
20
  onChange,
21
21
  onClick,
22
22
  placeholder,
23
+ pattern,
23
24
  }) => (
24
25
  <input
25
26
  className={getStyles('input', {
@@ -0,0 +1,36 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import Link from 'next/link'
4
+
5
+ import styles from './LinkItem.module.css'
6
+ import { options } from './constants'
7
+ import withStyles from '../../hocs/withStyles'
8
+ import Paragraph from '../Paragraph'
9
+
10
+ export const LinkItem = ({ children, size, color, getStyles, isHref }) => {
11
+ return (
12
+ <Link href={isHref} passHref>
13
+ <a className={getStyles('link', ['color'])}>
14
+ <Paragraph size={size} color={color} weight="semibold" isInline>
15
+ {children}
16
+ </Paragraph>
17
+ </a>
18
+ </Link>
19
+ )
20
+ }
21
+
22
+ LinkItem.propTypes = {
23
+ children: PropTypes.node.isRequired,
24
+ getStyles: PropTypes.func.isRequired,
25
+ color: PropTypes.oneOf(options.colors),
26
+ size: PropTypes.oneOf(options.sizes),
27
+ }
28
+
29
+ LinkItem.defaultProps = {
30
+ getStyles: () => { },
31
+ color: 'primary',
32
+ size: 'md',
33
+ isHref: '/',
34
+ }
35
+
36
+ export default withStyles(styles)(LinkItem)
@@ -1,7 +1,7 @@
1
1
  .link {
2
2
  display: inline;
3
3
  max-width: max-content;
4
- border-bottom: 1px solid currentColor;
4
+ /* border-bottom: 1px solid currentColor; */
5
5
  cursor: pointer;
6
6
  }
7
7
 
@@ -12,3 +12,8 @@
12
12
  .color-tertiary {
13
13
  color: var(--color-tertiary);
14
14
  }
15
+
16
+ .link p {
17
+ font-weight: var(--font-weight-normal);
18
+ text-decoration: underline;
19
+ }
@@ -1,4 +1,4 @@
1
- import { Link, styles, options } from '.'
1
+ import { LinkItem, styles, options } from '.'
2
2
 
3
3
  import {
4
4
  getTemplate,
@@ -6,12 +6,12 @@ import {
6
6
  getOptionsArgTypes,
7
7
  } from '../../helpers/storybook'
8
8
 
9
- const Template = getTemplate(Link, styles)
10
- const ListTemplate = getListTemplate(Link, styles)
9
+ const Template = getTemplate(LinkItem, styles)
10
+ const ListTemplate = getListTemplate(LinkItem, styles)
11
11
 
12
12
  export default {
13
- title: 'Atoms/Link',
14
- component: Link,
13
+ title: 'Atoms/LinkItem',
14
+ component: LinkItem,
15
15
  args: {
16
16
  children: 'Mouths Muil',
17
17
  },
File without changes
@@ -0,0 +1,3 @@
1
+ export { default, LinkItem } from './LinkItem'
2
+ export { options } from './constants'
3
+ export { default as styles } from './LinkItem.module.css'
@@ -8,7 +8,9 @@ import Icon from '../Icon'
8
8
  import Container from '../../layout/Container'
9
9
  import isEmpty from '../../utils/isEmpty'
10
10
 
11
+
11
12
  import useMedia from '../../hook/useMedia'
13
+ import Heading from '../Heading'
12
14
 
13
15
  // Sync with ./Modal.module.css#L13-L17
14
16
  const FADE_OUT_ANIMATION_TIME = 400
@@ -33,6 +35,7 @@ export const Modal = ({
33
35
  getStyles,
34
36
  type,
35
37
  isPlayground,
38
+ titleModal,
36
39
  }) => {
37
40
  const isDesktop = useMedia(['(min-width: 992px)'], [true])
38
41
  const [onFadeOut, setOnFadeOut] = useState(false)
@@ -54,7 +57,7 @@ export const Modal = ({
54
57
  <div className={getStyles('heading')}>
55
58
  {!!onClose && (
56
59
  <Icon
57
- color={isDesktop && type === 'secondary' ? 'primary' : 'inverted'}
60
+ color={isDesktop && type === 'secondary' ? 'primary' : 'primary'}
58
61
  name={isDesktop ? 'cross' : 'angleLeft'}
59
62
  background={isDesktop ? 'transparent' : 'muted'}
60
63
  onClick={handleClose}
@@ -71,6 +74,9 @@ export const Modal = ({
71
74
  })}
72
75
  />
73
76
  )}
77
+ <Heading color='black' size='lg' weight='light'>
78
+ {titleModal}
79
+ </Heading>
74
80
  </div>
75
81
  <Container>{children}</Container>
76
82
  </div>
@@ -88,11 +94,13 @@ Modal.propTypes = {
88
94
  }),
89
95
  type: PropTypes.oneOf(options.types),
90
96
  isPlayground: PropTypes.bool,
97
+ titleModal: PropTypes.string,
91
98
  }
92
99
 
93
100
  Modal.defaultProps = {
94
101
  getStyles: () => {},
95
102
  type: 'primary',
103
+ titleModal: 'Ejemplo titulo'
96
104
  }
97
105
 
98
106
  export default withStyles(styles)(Modal)
@@ -4,7 +4,7 @@
4
4
  display: flex;
5
5
  align-items: center;
6
6
  justify-content: center;
7
- background: var(--modal-backdrop-color);
7
+ background: rgb(0 0 0 / 50%);
8
8
  inset: 0;
9
9
  }
10
10
 
@@ -24,7 +24,7 @@
24
24
  padding: 16px 32px;
25
25
  }
26
26
 
27
- :not(.is-playground) > .modal {
27
+ :not(.is-playground)>.modal {
28
28
  animation: fadeInModal 0.4s ease-in forwards;
29
29
  opacity: 0;
30
30
  }
@@ -45,7 +45,7 @@
45
45
  }
46
46
 
47
47
  .type-primary {
48
- background-color: var(--color-primary);
48
+ background-color: var(--color-primary-inverted);
49
49
  }
50
50
 
51
51
  .type-secondary {
@@ -54,8 +54,8 @@
54
54
 
55
55
  @media (min-width: 992px) {
56
56
  .modal {
57
- max-width: var(--modal-desktop-max-width);
58
- height: var(--modal-desktop-height);
57
+ max-width: 465px;
58
+ height: auto;
59
59
  border-radius: var(--border-radius-sm);
60
60
  }
61
61
 
@@ -82,4 +82,4 @@
82
82
  to {
83
83
  opacity: 0;
84
84
  }
85
- }
85
+ }
@@ -0,0 +1,40 @@
1
+ const useAddColumn = (event) => {
2
+
3
+ let listKeyColumnOrder = []
4
+
5
+ event.forEach(element => {
6
+ listKeyColumnOrder[element.value] = true
7
+ });
8
+
9
+ for (const itemAddColumns of addColumsData) {
10
+ if (listKeyColumnOrder[itemAddColumns.value]) {
11
+ itemAddColumns.activeView = true
12
+ } else {
13
+ itemAddColumns.activeView = false
14
+ }
15
+ }
16
+
17
+
18
+ for (const itemEvent of addColumsData) {
19
+
20
+ for (const itemColumns of columnsData) {
21
+
22
+ if (itemColumns.accessor === itemEvent.value) {
23
+
24
+ if (itemEvent.activeView) {
25
+ itemColumns.activeView = true
26
+ } else {
27
+ itemColumns.activeView = false
28
+ }
29
+
30
+
31
+ }
32
+ }
33
+
34
+ }
35
+
36
+ setColumnsData([])
37
+
38
+ }
39
+
40
+ export default useAddColumn
@@ -0,0 +1,25 @@
1
+ import { useEffect, useState } from 'react'
2
+ import {
3
+ addDays,
4
+ } from "date-fns";
5
+
6
+ const useStateDate = () => {
7
+
8
+ const [state, setState] = useState([
9
+ {
10
+ startDate: addDays(new Date(), -59),
11
+ endDate: new Date(),
12
+ key: 'selection',
13
+ }
14
+ ]);
15
+
16
+
17
+ useEffect(() => {
18
+
19
+ }, [state]);
20
+
21
+
22
+ return { state, setState }
23
+ }
24
+
25
+ export default useStateDate
@@ -0,0 +1,45 @@
1
+ import { useState, useEffect } from "react";
2
+
3
+ const calculateRange = (data, rowsPerPage) => {
4
+ const range = []
5
+ if (!data) {
6
+ var num = Math.ceil(1);
7
+ } else {
8
+ num = Math.ceil(data.length / rowsPerPage);
9
+
10
+ }
11
+
12
+ // const num = Math.ceil(data.length / rowsPerPage);
13
+
14
+ // let i = 1;
15
+ for (let i = 1; i <= num; i++) {
16
+ range.push(i);
17
+ }
18
+ return range;
19
+ };
20
+
21
+ const sliceData = (data, page, rowsPerPage) => {
22
+
23
+ if (!data) {
24
+ return data = [];
25
+ } else {
26
+ return data.slice((page - 1) * rowsPerPage, page * rowsPerPage);
27
+ }
28
+ };
29
+
30
+ const useTable = (data, page, rowsPerPage) => {
31
+ const [tableRange, setTableRange] = useState([]);
32
+ const [slice, setSlice] = useState([]);
33
+
34
+ useEffect(() => {
35
+ const range = calculateRange(data, rowsPerPage);
36
+ setTableRange([...range]);
37
+
38
+ const slice = sliceData(data, page, rowsPerPage);
39
+ setSlice([...slice]);
40
+ }, [data, setTableRange, page, setSlice, rowsPerPage]);
41
+
42
+ return { slice, range: tableRange };
43
+ };
44
+
45
+ export default useTable;
package/index.js CHANGED
@@ -24,7 +24,7 @@ export { default as Heading } from './atoms/Heading'
24
24
  export { default as Icon } from './atoms/Icon'
25
25
  export { default as Input } from './atoms/Input'
26
26
  export { default as Label } from './atoms/Label'
27
- export { default as Link } from './atoms/Link'
27
+ export { default as LinkItem } from './atoms/LinkItem'
28
28
  export { default as Modal } from './atoms/Modal'
29
29
  export { default as Paragraph } from './atoms/Paragraph'
30
30
  export { default as Picture } from './atoms/Picture'
@@ -32,7 +32,6 @@ export { default as Textarea } from './atoms/Textarea'
32
32
  export { default as Tab } from './atoms/Tab'
33
33
 
34
34
 
35
-
36
35
  // Molecules
37
36
  export { default as Accordion } from './molecules/Accordion'
38
37
  export { default as AddButton } from './molecules/AddButton'
@@ -47,9 +46,12 @@ export { default as ItemMenu } from './molecules/ItemMenu'
47
46
  export { default as CheckList } from './molecules/CheckList'
48
47
  export { default as ColumnTable } from './molecules/ColumnTable'
49
48
  export { default as RowTable } from './molecules/RowTable'
49
+ export { default as FooterTable } from './molecules/FooterTable'
50
50
  export { default as DynamicSelect } from './molecules/DynamicSelect'
51
51
  export { default as DatePicker } from './molecules/DynamicSelect'
52
52
 
53
+ export { default as useTable } from './hook/useTable'
54
+ export { default as useStateDate } from './hook/useStateDate'
53
55
 
54
56
 
55
57