imbric-theme 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/.storybook/main.js +1 -1
  2. package/atoms/AlertModal/AlertModal.js +77 -0
  3. package/atoms/AlertModal/AlertModal.module.css +3 -0
  4. package/atoms/AlertModal/AlertModal.stories.js +30 -0
  5. package/atoms/AlertModal/constants.js +4 -0
  6. package/atoms/AlertModal/index.js +3 -0
  7. package/atoms/Button/Button.js +5 -2
  8. package/atoms/Button/Button.module.css +6 -3
  9. package/atoms/Checkbox/Checkbox.js +49 -0
  10. package/atoms/Checkbox/Checkbox.module.css +3 -0
  11. package/atoms/Checkbox/Checkbox.stories.js +28 -0
  12. package/atoms/Checkbox/constants.js +1 -0
  13. package/atoms/Checkbox/index.js +3 -0
  14. package/atoms/Heading/Heading.js +1 -1
  15. package/atoms/Heading/Heading.module.css +4 -0
  16. package/atoms/Heading/constants.js +1 -1
  17. package/atoms/Icon/constants.js +30 -6
  18. package/atoms/Icon/file-download-svgrepo-com.svg +13 -0
  19. package/atoms/Input/Input.js +21 -5
  20. package/atoms/Input/Input.module.css +26 -6
  21. package/atoms/Input/Input.stories.js +8 -2
  22. package/atoms/Input/__snapshots__/Input.stories.js.snap +5 -5
  23. package/atoms/Input/constants.js +1 -1
  24. package/atoms/Label/Label.js +31 -0
  25. package/atoms/Label/Label.module.css +38 -0
  26. package/atoms/Label/Label.stories.js +26 -0
  27. package/atoms/Label/constants.js +1 -0
  28. package/atoms/Label/index.js +3 -0
  29. package/atoms/Paragraph/Paragraph.module.css +4 -0
  30. package/index.js +20 -1
  31. package/jest.config.js +1 -1
  32. package/layout/DynamicTable/DynamicTable.js +207 -0
  33. package/layout/DynamicTable/DynamicTable.module.css +62 -0
  34. package/layout/DynamicTable/DynamicTable.stories.js +30 -0
  35. package/layout/DynamicTable/constants.js +840 -0
  36. package/layout/DynamicTable/index.js +3 -0
  37. package/layout/Navbar/Navbar.js +19 -11
  38. package/layout/Navbar/Navbar.module.css +4 -2
  39. package/layout/Navbar/Navbar.stories.js +2 -1
  40. package/layout/Sidebar/Sidebar.module.css +1 -0
  41. package/molecules/CheckList/CheckList.js +135 -0
  42. package/molecules/CheckList/CheckList.module.css +94 -0
  43. package/molecules/CheckList/CheckList.stories.js +25 -0
  44. package/molecules/CheckList/constants.js +23 -0
  45. package/molecules/CheckList/index.js +3 -0
  46. package/molecules/ColumnTable/ColumnTable.js +123 -0
  47. package/molecules/ColumnTable/ColumnTable.module.css +9 -0
  48. package/molecules/ColumnTable/ColumnTable.stories.js +29 -0
  49. package/molecules/ColumnTable/constants.js +1 -0
  50. package/molecules/ColumnTable/index.js +3 -0
  51. package/molecules/DatePicker/DatePicker.js +223 -0
  52. package/molecules/DatePicker/DatePicker.module.css +38 -0
  53. package/molecules/DatePicker/DatePicker.stories.js +23 -0
  54. package/molecules/DatePicker/constants.js +3 -0
  55. package/molecules/DatePicker/index.js +3 -0
  56. package/molecules/Dropdown/Dropdown.js +25 -22
  57. package/molecules/Dropdown/Dropdown.module.css +21 -3
  58. package/molecules/DynamicSelect/DynamicSelect.js +109 -0
  59. package/molecules/DynamicSelect/DynamicSelect.module.css +10 -0
  60. package/molecules/DynamicSelect/DynamicSelect.stories.js +32 -0
  61. package/molecules/DynamicSelect/constants.js +7 -0
  62. package/molecules/DynamicSelect/index.js +3 -0
  63. package/molecules/Error/Error.js +2 -2
  64. package/molecules/Error/Error.module.css +3 -2
  65. package/molecules/RowTable/RowTable.js +22 -0
  66. package/molecules/RowTable/RowTable.module.css +3 -0
  67. package/molecules/RowTable/RowTable.stories.js +23 -0
  68. package/molecules/RowTable/constants.js +1 -0
  69. package/molecules/RowTable/index.js +3 -0
  70. package/package.json +8 -1
  71. package/pages/Login/Login.js +102 -0
  72. package/pages/Login/Login.module.css +5 -0
  73. package/pages/Login/Login.stories.js +23 -0
  74. package/pages/Login/constants.js +1 -0
  75. package/pages/Login/index.js +3 -0
  76. package/pages/Login/validation/loginSchema.js +5 -0
  77. package/public/static/logologin.svg +16 -0
  78. package/scripts/create-component.js +2 -1
  79. package/storybook-static/0.263f852f.iframe.bundle.js +1 -0
  80. package/storybook-static/0.91dbd3f3aa2099d25061.manager.bundle.js +1 -0
  81. package/storybook-static/1.17e9ac7e.iframe.bundle.js +3 -0
  82. package/storybook-static/1.17e9ac7e.iframe.bundle.js.LICENSE.txt +8 -0
  83. package/storybook-static/1.17e9ac7e.iframe.bundle.js.map +1 -0
  84. package/storybook-static/2.cc4000c2.iframe.bundle.js +1 -0
  85. package/storybook-static/3.e9f95d01.iframe.bundle.js +1 -0
  86. package/storybook-static/4.be0a752c9f5176d6eec1.manager.bundle.js +2 -0
  87. package/storybook-static/4.be0a752c9f5176d6eec1.manager.bundle.js.LICENSE.txt +8 -0
  88. package/storybook-static/5.8efdde123acaf8fbb100.manager.bundle.js +1 -0
  89. package/storybook-static/6.2f82294ae0b087aecb24.manager.bundle.js +2 -0
  90. package/storybook-static/6.2f82294ae0b087aecb24.manager.bundle.js.LICENSE.txt +12 -0
  91. package/storybook-static/7.97068037.iframe.bundle.js +1 -0
  92. package/storybook-static/7.fa9452d2609e8a00f314.manager.bundle.js +1 -0
  93. package/storybook-static/8.66f5ef1c66fc4628f127.manager.bundle.js +1 -0
  94. package/storybook-static/8.b545d602.iframe.bundle.js +3 -0
  95. package/storybook-static/8.b545d602.iframe.bundle.js.LICENSE.txt +12 -0
  96. package/storybook-static/8.b545d602.iframe.bundle.js.map +1 -0
  97. package/storybook-static/9.269ed917.iframe.bundle.js +1 -0
  98. package/storybook-static/favicon.ico +0 -0
  99. package/storybook-static/iframe.html +348 -0
  100. package/storybook-static/index.html +59 -0
  101. package/storybook-static/main.157061c9.iframe.bundle.js +1 -0
  102. package/storybook-static/main.5a07347846ccf2d7e5dc.manager.bundle.js +1 -0
  103. package/storybook-static/runtime~main.a14e6e62.iframe.bundle.js +1 -0
  104. package/storybook-static/runtime~main.f78c3fae275fc212c109.manager.bundle.js +1 -0
  105. package/storybook-static/static/logo.svg +19 -0
  106. package/storybook-static/static/logologin.svg +16 -0
  107. package/storybook-static/static/logotipo.svg +50 -0
  108. package/storybook-static/static/logotipoS.svg +26 -0
  109. package/storybook-static/vendors~main.720e76f4.iframe.bundle.js +3 -0
  110. package/storybook-static/vendors~main.720e76f4.iframe.bundle.js.LICENSE.txt +110 -0
  111. package/storybook-static/vendors~main.720e76f4.iframe.bundle.js.map +1 -0
  112. package/storybook-static/vendors~main.fcd0b2a3431ddf75f5f7.manager.bundle.js +2 -0
  113. package/storybook-static/vendors~main.fcd0b2a3431ddf75f5f7.manager.bundle.js.LICENSE.txt +101 -0
  114. package/styles/globals.css +592 -0
  115. package/styles/tokens.css +2 -1
  116. package/tokens/index.js +2 -1
@@ -1,5 +1,9 @@
1
1
  .paragraph {
2
2
  width: 100%;
3
+ margin-block-start: 0em;
4
+ margin-block-end: 0em;
5
+ margin-inline-start: 0px;
6
+ margin-inline-end: 0px;
3
7
  }
4
8
 
5
9
  .color-base {
package/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ // Pages
2
+ export { default as Login } from './pages/Login'
3
+
1
4
  // Layout
2
5
  export { default as CenteredContent } from './layout/CenteredContent'
3
6
  export { default as Container } from './layout/Container'
@@ -6,16 +9,21 @@ export { default as FlexColumnContent } from './layout/FlexColumnContent'
6
9
  export { default as Spacer } from './layout/Spacer'
7
10
  export { default as Sidebar } from './layout/Sidebar'
8
11
  export { default as Navbar } from './layout/Navbar'
12
+ export { default as DynamicTable } from './layout/DynamicTable'
13
+
9
14
 
10
15
  // Atoms
16
+ export { default as AlertModal } from './atoms/AlertModal'
11
17
  export { default as Avatar } from './atoms/Avatar'
12
18
  export { default as Button } from './atoms/Button'
13
19
  export { default as Card } from './atoms/Card'
14
20
  export { default as Check } from './atoms/Check'
21
+ export { default as Checkbox } from './atoms/Checkbox'
15
22
  export { default as Divider } from './atoms/Divider'
16
23
  export { default as Heading } from './atoms/Heading'
17
24
  export { default as Icon } from './atoms/Icon'
18
25
  export { default as Input } from './atoms/Input'
26
+ export { default as Label } from './atoms/Label'
19
27
  export { default as Link } from './atoms/Link'
20
28
  export { default as Modal } from './atoms/Modal'
21
29
  export { default as Paragraph } from './atoms/Paragraph'
@@ -23,6 +31,8 @@ export { default as Picture } from './atoms/Picture'
23
31
  export { default as Textarea } from './atoms/Textarea'
24
32
  export { default as Tab } from './atoms/Tab'
25
33
 
34
+
35
+
26
36
  // Molecules
27
37
  export { default as Accordion } from './molecules/Accordion'
28
38
  export { default as AddButton } from './molecules/AddButton'
@@ -33,4 +43,13 @@ export { default as Score } from './molecules/Score'
33
43
  export { default as Task } from './molecules/Task'
34
44
  export { default as TaskCounter } from './molecules/TaskCounter'
35
45
  export { default as IconLabel } from './molecules/IconLabel'
36
- export { default as ItemMenu } from './molecules/ItemMenu'
46
+ export { default as ItemMenu } from './molecules/ItemMenu'
47
+ export { default as CheckList } from './molecules/CheckList'
48
+ export { default as ColumnTable } from './molecules/ColumnTable'
49
+ export { default as RowTable } from './molecules/RowTable'
50
+ export { default as DynamicSelect } from './molecules/DynamicSelect'
51
+ export { default as DatePicker } from './molecules/DynamicSelect'
52
+
53
+
54
+
55
+
package/jest.config.js CHANGED
@@ -9,7 +9,7 @@ module.exports = {
9
9
  '^.+\\.jsx?$': 'babel-jest',
10
10
  },
11
11
  collectCoverageFrom: [
12
- '{atoms,molecules,layout}/**/!(index).js',
12
+ '{atoms,molecules,layout,pages}/**/!(index).js',
13
13
  '{hocs,helpers}/*.js',
14
14
  ],
15
15
  coverageThreshold: {
@@ -0,0 +1,207 @@
1
+ import React from 'react'
2
+ import { useEffect, useState } from 'react'
3
+ import PropTypes from 'prop-types'
4
+ import styles from './DynamicTable.module.css'
5
+ import withStyles from '../../hocs/withStyles'
6
+ import ColumnTable from '../../molecules/ColumnTable'
7
+ import DynamicSelect from '../../molecules/DynamicSelect'
8
+ import DatePicker from '../../molecules/DatePicker'
9
+ import Label from '../../atoms/Label'
10
+ import Icon from '../../atoms/Icon'
11
+ import { Horizontal, Vertical } from '../../layout/Spacer/components'
12
+ import Moment from 'react-moment'
13
+
14
+
15
+ export const DynamicTable = ({ getStyles, optionsData, opColumns, opAddColumns, isViewRange, isViewAddColumn, isViewDownloadDoc }) => {
16
+
17
+ const [tableData, setTableData] = useState(optionsData);
18
+ const [columnsData, setColumnsData] = useState(opColumns);
19
+ const [addColumsData, setAddColumsData] = useState(opAddColumns);
20
+
21
+ useEffect(() => {
22
+ setColumnsData(opColumns);
23
+ })
24
+
25
+ const handleSorting = (sortField, sortOrder) => {
26
+ if (sortField) {
27
+ const sorted = [...tableData].sort((a, b) => {
28
+ if (a[sortField] === null) return 1;
29
+ if (b[sortField] === null) return -1;
30
+ if (a[sortField] === null && b[sortField] === null) return 0;
31
+ return (
32
+ a[sortField].toString().localeCompare(b[sortField].toString(), "en", {
33
+ numeric: true,
34
+ }) * (sortOrder === "asc" ? 1 : -1)
35
+ );
36
+ });
37
+ setTableData(sorted);
38
+ }
39
+ };
40
+
41
+ const handleAddColumn = (event) => {
42
+
43
+ let listKeyColumnOrder = []
44
+
45
+ event.forEach(element => {
46
+ listKeyColumnOrder[element.value] = true
47
+ });
48
+
49
+ for (const itemAddColumns of addColumsData) {
50
+ if (listKeyColumnOrder[itemAddColumns.value]) {
51
+ itemAddColumns.activeView = true
52
+ } else {
53
+ itemAddColumns.activeView = false
54
+ }
55
+ }
56
+
57
+
58
+ for (const itemEvent of addColumsData) {
59
+
60
+ for (const itemColumns of columnsData) {
61
+
62
+ if (itemColumns.accessor === itemEvent.value) {
63
+
64
+ if (itemEvent.activeView) {
65
+ itemColumns.activeView = true
66
+ } else {
67
+ itemColumns.activeView = false
68
+ }
69
+
70
+
71
+ }
72
+ }
73
+
74
+ }
75
+
76
+ setColumnsData([])
77
+
78
+ }
79
+
80
+ return (
81
+
82
+ <>
83
+ <div className={getStyles('opFunction')}>
84
+
85
+ <div className={getStyles('opFunctionBox1')}>
86
+ <DatePicker
87
+ isLayoutDate="DateRangePicker"
88
+ />
89
+ </div>
90
+
91
+ <div className={getStyles('opFunctionBox2')}>
92
+
93
+ <div className={getStyles('opFunctionBox3')}>
94
+ <Label>Mostrar u ocultar columnas</Label>
95
+ <DynamicSelect
96
+ isMulti
97
+ isInline
98
+ onChange={handleAddColumn}
99
+ optionsSelect={addColumsData}
100
+ placeholder='Seleccionar columnas'
101
+ />
102
+ </div>
103
+ <Horizontal size="md" />
104
+ <div className={getStyles('opFunctionBox3')}>
105
+ <Icon
106
+ key="3"
107
+ background="inverted"
108
+ name="fileDownload"
109
+ onClick={function noRefCheck() { }}
110
+ />
111
+ </div>
112
+
113
+ </div>
114
+
115
+ </div>
116
+ <Vertical size="md" />
117
+ <div className={getStyles('dynamic-table')}>
118
+ <div className={getStyles('tbl-header')}>
119
+ <table className={getStyles('table')} cellPadding="0" cellSpacing="0" border="0">
120
+ <thead>
121
+ <tr>
122
+ {columnsData.map((item) => (
123
+ item.activeView ?
124
+ (<ColumnTable
125
+ key={item.accessor}
126
+ handleSorting={handleSorting}
127
+ sortable={item.sortable}
128
+ accessor={item.accessor}
129
+ isFilter={item.viewIsFilter}
130
+ typeInput={item.typeFilter}
131
+ idInput={item.idInput}
132
+ nameInput={item.nameInput}
133
+ placeholder={item.placeholder}
134
+ >
135
+ {item.title}
136
+ </ColumnTable>
137
+ ) : null
138
+ ))}
139
+ </tr>
140
+ </thead>
141
+ </table>
142
+ </div>
143
+ <div className={getStyles('tbl-content')}>
144
+ <table className={getStyles('table')} cellPadding="0" cellSpacing="0" border="0">
145
+ <tbody>
146
+
147
+ {tableData.map((item, index) => (
148
+
149
+ <tr key={index}>
150
+ {columnsData.map((itemTd) => (
151
+ itemTd.activeView ?
152
+
153
+ (
154
+ itemTd.typeFilter === 'date' ?
155
+
156
+ <td className={getStyles('td')} key={item[itemTd.accessor]}>
157
+ <Moment format="DD/MM/YYYY hh:mm:ss">
158
+ {item[itemTd.accessor]}
159
+ </Moment>
160
+ </td>
161
+
162
+ : itemTd.typeFilter === 'number' ?
163
+
164
+ itemTd.subTypeFilter ?
165
+
166
+ <td className={getStyles('td')} key={item[itemTd.accessor]}>{item[itemTd.accessor].toFixed(2).toString().replace(/\./g, ',')} €</td>
167
+ :
168
+ <td className={getStyles('td')} key={item[itemTd.accessor]}>{item[itemTd.accessor]}</td>
169
+ :
170
+ itemTd.subTypeFilter ?
171
+
172
+ <td className={getStyles('td')} key={item[itemTd.accessor]}>{item[itemTd.accessor].toString().replace(/\./g, ',').slice(0, 5)} €</td>
173
+ :
174
+ <td className={getStyles('td')} key={item[itemTd.accessor]}>{item[itemTd.accessor]}</td>
175
+
176
+
177
+ ) : null
178
+ ))}
179
+ </tr>
180
+
181
+ ))}
182
+
183
+ </tbody>
184
+ </table>
185
+ </div>
186
+ </div>
187
+ </>
188
+
189
+ )
190
+ }
191
+
192
+ DynamicTable.propTypes = {
193
+ // children: PropTypes.node.isRequired,
194
+ getStyles: PropTypes.func.isRequired,
195
+ isViewRange: PropTypes.bool,
196
+ isViewAddColumn: PropTypes.bool,
197
+ isViewDownloadDoc: PropTypes.bool,
198
+ }
199
+
200
+ DynamicTable.defaultProps = {
201
+ getStyles: () => { },
202
+ isViewRange: true,
203
+ isViewAddColumn: true,
204
+ isViewDownloadDoc: true,
205
+ }
206
+
207
+ export default withStyles(styles)(DynamicTable)
@@ -0,0 +1,62 @@
1
+ .opFunction {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: space-between;
5
+ }
6
+
7
+ /* .opFunctionBox1 {
8
+ display: inline-flex;
9
+ } */
10
+
11
+ .opFunctionBox2 {
12
+ display: inline-flex;
13
+ align-items: flex-end;
14
+ }
15
+
16
+ .dynamic-table {
17
+ box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 7%), 0px 2px 2px 0px rgb(0 0 0 / 7%), 0px 1px 5px 0px rgb(0 0 0 / 6%);
18
+ }
19
+
20
+ .table {
21
+ width: 100%;
22
+ table-layout: fixed;
23
+
24
+ }
25
+
26
+ .tbl-header {
27
+ /* background-color: rgba(255, 255, 255, 0.3); */
28
+ /* background-color: -webkit-linear-gradient(left, #25c481, #25b7c4);
29
+ background-color: linear-gradient(to right, #25c481, #25b7c4); */
30
+ border: 1px solid rgba(0, 0, 0, 0.1);
31
+ }
32
+
33
+ .tbl-content {
34
+ height: 300px;
35
+ overflow-x: auto;
36
+ margin-top: 0px;
37
+ border: 1px solid rgba(0, 0, 0, 0.1);
38
+ }
39
+
40
+ .td {
41
+ padding: 15px;
42
+ text-align: left;
43
+ vertical-align: middle;
44
+ font-weight: 300;
45
+ font-size: 12px;
46
+ color: var(--color-font-base);
47
+ border-bottom: solid 1px rgba(0, 0, 0, 0.1);
48
+ }
49
+
50
+ /* for custom scrollbar for webkit browser*/
51
+
52
+ /* ::-webkit-scrollbar {
53
+ width: 6px;
54
+ }
55
+
56
+ ::-webkit-scrollbar-track {
57
+ -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
58
+ }
59
+
60
+ ::-webkit-scrollbar-thumb {
61
+ -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
62
+ } */
@@ -0,0 +1,30 @@
1
+ import { DynamicTable, styles, options } from '.'
2
+
3
+ import {
4
+ getTemplate,
5
+ getListTemplate,
6
+ getOptionsArgTypes,
7
+ } from '../../helpers/storybook'
8
+
9
+ const Template = getTemplate(DynamicTable, styles)
10
+ const ListTemplate = getListTemplate(DynamicTable, styles)
11
+
12
+ export default {
13
+ title: 'Layout/DynamicTable',
14
+ component: DynamicTable,
15
+ args: {
16
+ optionsData: options.bookings,
17
+ opColumns: options.columns,
18
+ opAddColumns: options.opAddColumns,
19
+ isViewRange: true,
20
+ isViewAddColumn: true,
21
+ isViewDownloadDoc: true,
22
+ },
23
+ argTypes: {
24
+ // types: getOptionsArgTypes(options.types),
25
+ },
26
+ }
27
+
28
+ export const Default = Template.bind({})
29
+ // export const List = ListTemplate.bind({})
30
+ // List.args = { items: options.types.map((type) => ({ type })) }