imbric-theme 0.3.4 → 0.3.8
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.
- package/atoms/Checkbox/Checkbox.js +26 -9
- package/atoms/Checkbox/Checkbox.module.css +51 -0
- package/atoms/Checkbox/Checkbox.stories.js +4 -2
- package/atoms/Icon/constants.js +1 -1
- package/atoms/Input/Input.js +1 -0
- package/atoms/LinkItem/LinkItem.js +36 -0
- package/atoms/{Link/Link.module.css → LinkItem/LinkItem.module.css} +6 -1
- package/atoms/{Link/Link.stories.js → LinkItem/LinkItem.stories.js} +5 -5
- package/atoms/{Link → LinkItem}/__snapshots__/Link.stories.js.snap +0 -0
- package/atoms/{Link → LinkItem}/constants.js +0 -0
- package/atoms/LinkItem/index.js +3 -0
- package/atoms/Modal/Modal.js +9 -1
- package/atoms/Modal/Modal.module.css +6 -6
- package/hook/useAddColumn.js +40 -0
- package/hook/useStateDate.js +25 -0
- package/hook/useTable.js +45 -0
- package/index.js +4 -2
- package/layout/DynamicTable/DynamicTable.js +87 -122
- package/layout/DynamicTable/DynamicTable.module.css +2 -1
- package/layout/DynamicTable/DynamicTable.stories.js +49 -2
- package/layout/DynamicTable/constants.js +50 -567
- package/layout/Navbar/Navbar.js +1 -1
- package/molecules/ColumnTable/ColumnTable.js +78 -73
- package/molecules/ColumnTable/ColumnTable.module.css +13 -0
- package/molecules/ColumnTable/ColumnTable.stories.js +4 -7
- package/molecules/ColumnTable/constants.js +111 -1
- package/molecules/DatePicker/DatePicker.js +27 -14
- package/molecules/DatePicker/DatePicker.module.css +1 -1
- package/molecules/DynamicSelect/DynamicSelect.js +9 -0
- package/molecules/FooterTable/FooterTable.js +47 -0
- package/molecules/FooterTable/FooterTable.module.css +37 -0
- package/molecules/FooterTable/FooterTable.stories.js +23 -0
- package/molecules/FooterTable/constants.js +1 -0
- package/molecules/FooterTable/index.js +3 -0
- package/molecules/RowTable/RowTable.js +70 -4
- package/molecules/RowTable/RowTable.module.css +21 -2
- package/molecules/RowTable/RowTable.stories.js +7 -4
- package/molecules/RowTable/constants.js +318 -1
- package/package.json +1 -1
- package/atoms/Icon/file-download-svgrepo-com.svg +0 -13
- package/atoms/Link/Link.js +0 -33
- package/atoms/Link/index.js +0 -3
@@ -3,21 +3,29 @@ import { useEffect, useState } from 'react'
|
|
3
3
|
import PropTypes from 'prop-types'
|
4
4
|
import styles from './DynamicTable.module.css'
|
5
5
|
import withStyles from '../../hocs/withStyles'
|
6
|
-
import ColumnTable from '../../molecules/ColumnTable'
|
7
6
|
import DynamicSelect from '../../molecules/DynamicSelect'
|
8
7
|
import DatePicker from '../../molecules/DatePicker'
|
9
8
|
import Label from '../../atoms/Label'
|
10
9
|
import Icon from '../../atoms/Icon'
|
11
10
|
import { Horizontal, Vertical } from '../../layout/Spacer/components'
|
12
|
-
import
|
11
|
+
import LoadingError from '../../molecules/LoadingError'
|
12
|
+
// import ColumnTable from '../../molecules/ColumnTable'
|
13
|
+
// import RowTable from '../../molecules/RowTable'
|
14
|
+
// import FooterTable from '../../molecules/FooterTable'
|
15
|
+
// import useTable from '../../hook/useTable'
|
16
|
+
// import useStateDate from '../../hook/useStateDate';
|
13
17
|
|
14
18
|
|
15
|
-
export const DynamicTable = ({ getStyles, optionsData, opColumns, opAddColumns, isViewRange, isViewAddColumn, isViewDownloadDoc }) => {
|
19
|
+
export const DynamicTable = ({ getStyles, optionsData, opColumns, opAddColumns, isLayoutDate, isViewRange, isViewAddColumn, isViewDownloadDoc, handleAddColumn, handleSelectRange, handleDownloadExcel }) => {
|
16
20
|
|
17
21
|
const [tableData, setTableData] = useState(optionsData);
|
18
22
|
const [columnsData, setColumnsData] = useState(opColumns);
|
19
23
|
const [addColumsData, setAddColumsData] = useState(opAddColumns);
|
20
24
|
|
25
|
+
// const handleSelectRange = (item) => {
|
26
|
+
// setState([item.selection])
|
27
|
+
// }
|
28
|
+
|
21
29
|
useEffect(() => {
|
22
30
|
setColumnsData(opColumns);
|
23
31
|
})
|
@@ -38,153 +46,100 @@ export const DynamicTable = ({ getStyles, optionsData, opColumns, opAddColumns,
|
|
38
46
|
}
|
39
47
|
};
|
40
48
|
|
41
|
-
const handleAddColumn = (event) => {
|
42
|
-
|
43
|
-
let listKeyColumnOrder = []
|
49
|
+
// const handleAddColumn = (event) => {
|
44
50
|
|
45
|
-
|
46
|
-
listKeyColumnOrder[element.value] = true
|
47
|
-
});
|
51
|
+
// let listKeyColumnOrder = []
|
48
52
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
} else {
|
53
|
-
itemAddColumns.activeView = false
|
54
|
-
}
|
55
|
-
}
|
53
|
+
// event.forEach(element => {
|
54
|
+
// listKeyColumnOrder[element.value] = true
|
55
|
+
// });
|
56
56
|
|
57
|
+
// for (const itemAddColumns of addColumsData) {
|
58
|
+
// if (listKeyColumnOrder[itemAddColumns.value]) {
|
59
|
+
// itemAddColumns.activeView = true
|
60
|
+
// } else {
|
61
|
+
// itemAddColumns.activeView = false
|
62
|
+
// }
|
63
|
+
// }
|
57
64
|
|
58
|
-
|
65
|
+
// for (const itemEvent of addColumsData) {
|
59
66
|
|
60
|
-
|
67
|
+
// for (const itemColumns of columnsData) {
|
61
68
|
|
62
|
-
|
69
|
+
// if (itemColumns.accessor === itemEvent.value) {
|
63
70
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
71
|
+
// if (itemEvent.activeView) {
|
72
|
+
// itemColumns.activeView = true
|
73
|
+
// } else {
|
74
|
+
// itemColumns.activeView = false
|
75
|
+
// }
|
69
76
|
|
70
77
|
|
71
|
-
|
72
|
-
|
78
|
+
// }
|
79
|
+
// }
|
73
80
|
|
74
|
-
|
81
|
+
// }
|
75
82
|
|
76
|
-
|
83
|
+
// setColumnsData([])
|
77
84
|
|
78
|
-
}
|
85
|
+
// }
|
79
86
|
|
80
87
|
return (
|
81
88
|
|
82
|
-
|
89
|
+
|
83
90
|
<div className={getStyles('opFunction')}>
|
84
91
|
|
85
|
-
|
86
|
-
<
|
87
|
-
|
88
|
-
|
89
|
-
|
92
|
+
{isViewRange ? (
|
93
|
+
<div className={getStyles('opFunctionBox1')}>
|
94
|
+
<DatePicker
|
95
|
+
isLayoutDate={isLayoutDate}
|
96
|
+
onChangeRange={handleSelectRange}
|
97
|
+
/>
|
98
|
+
</div>
|
99
|
+
) : null}
|
90
100
|
|
91
101
|
<div className={getStyles('opFunctionBox2')}>
|
92
102
|
|
93
|
-
|
94
|
-
<
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
+
{isViewAddColumn ? (
|
104
|
+
<div className={getStyles('opFunctionBox3')}>
|
105
|
+
<Label>Mostrar u ocultar columnas</Label>
|
106
|
+
<DynamicSelect
|
107
|
+
isMulti
|
108
|
+
isInline
|
109
|
+
onChange={handleAddColumn}
|
110
|
+
optionsSelect={addColumsData}
|
111
|
+
placeholder='Seleccionar columnas'
|
112
|
+
/>
|
113
|
+
</div>
|
114
|
+
) : null}
|
103
115
|
<Horizontal size="md" />
|
104
|
-
|
105
|
-
<
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
116
|
+
{isViewDownloadDoc ? (
|
117
|
+
<div className={getStyles('opFunctionBox3')}>
|
118
|
+
<Icon
|
119
|
+
key="fileDownload"
|
120
|
+
background="inverted"
|
121
|
+
name="fileDownload"
|
122
|
+
onClick={handleDownloadExcel}
|
123
|
+
/>
|
124
|
+
</div>
|
125
|
+
) : null}
|
112
126
|
|
113
127
|
</div>
|
114
128
|
|
115
129
|
</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
130
|
|
147
|
-
|
131
|
+
// <ColumnTable
|
132
|
+
// handleSorting={handleSorting}
|
133
|
+
// onChangeInput={onChangeInput}
|
134
|
+
// columnsData={columnsData}
|
135
|
+
// >
|
136
|
+
// {item.title}
|
137
|
+
// </ColumnTable>
|
148
138
|
|
149
|
-
|
150
|
-
{columnsData.map((itemTd) => (
|
151
|
-
itemTd.activeView ?
|
139
|
+
// <RowTable slice={slice} columnsData={columnsData}></RowTable>
|
152
140
|
|
153
|
-
|
154
|
-
|
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
|
-
</>
|
141
|
+
// <FooterTable range={range} slice={slice} setPage={setPage} page={page} />
|
142
|
+
|
188
143
|
|
189
144
|
)
|
190
145
|
}
|
@@ -195,13 +150,23 @@ DynamicTable.propTypes = {
|
|
195
150
|
isViewRange: PropTypes.bool,
|
196
151
|
isViewAddColumn: PropTypes.bool,
|
197
152
|
isViewDownloadDoc: PropTypes.bool,
|
153
|
+
onChangeInput: PropTypes.func,
|
154
|
+
handleAddColumn: PropTypes.func,
|
155
|
+
isError: PropTypes.string,
|
156
|
+
isLayoutDate: PropTypes.string,
|
157
|
+
handleSelectRange: PropTypes.func,
|
158
|
+
handleDownloadExcel: PropTypes.func,
|
198
159
|
}
|
199
160
|
|
200
161
|
DynamicTable.defaultProps = {
|
201
162
|
getStyles: () => { },
|
163
|
+
handleAddColumn: () => { },
|
202
164
|
isViewRange: true,
|
203
165
|
isViewAddColumn: true,
|
204
166
|
isViewDownloadDoc: true,
|
167
|
+
isLayoutDate: 'Calendar',
|
168
|
+
handleSelectRange: () => { },
|
169
|
+
handleDownloadExcel: () => { },
|
205
170
|
}
|
206
171
|
|
207
172
|
export default withStyles(styles)(DynamicTable)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
display: flex;
|
3
3
|
align-items: center;
|
4
4
|
justify-content: space-between;
|
5
|
+
width: 100%;
|
5
6
|
}
|
6
7
|
|
7
8
|
/* .opFunctionBox1 {
|
@@ -31,7 +32,7 @@
|
|
31
32
|
}
|
32
33
|
|
33
34
|
.tbl-content {
|
34
|
-
height:
|
35
|
+
height: max-content;
|
35
36
|
overflow-x: auto;
|
36
37
|
margin-top: 0px;
|
37
38
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
@@ -5,10 +5,18 @@ import {
|
|
5
5
|
getListTemplate,
|
6
6
|
getOptionsArgTypes,
|
7
7
|
} from '../../helpers/storybook'
|
8
|
+
import ColumnTable from '../../molecules/ColumnTable'
|
9
|
+
import Heading from '../../atoms/Heading';
|
10
|
+
import { Vertical } from '../Spacer/components';
|
11
|
+
import RowTable from '../../molecules/RowTable';
|
12
|
+
import FooterTable from '../../molecules/FooterTable';
|
13
|
+
|
8
14
|
|
9
15
|
const Template = getTemplate(DynamicTable, styles)
|
10
16
|
const ListTemplate = getListTemplate(DynamicTable, styles)
|
11
17
|
|
18
|
+
|
19
|
+
|
12
20
|
export default {
|
13
21
|
title: 'Layout/DynamicTable',
|
14
22
|
component: DynamicTable,
|
@@ -26,5 +34,44 @@ export default {
|
|
26
34
|
}
|
27
35
|
|
28
36
|
export const Default = Template.bind({})
|
29
|
-
|
30
|
-
|
37
|
+
|
38
|
+
|
39
|
+
export const TableTotal = () =>
|
40
|
+
<div>
|
41
|
+
|
42
|
+
{/* Title - Optional */}
|
43
|
+
<Heading color='black' size='lg' weight='normal'>
|
44
|
+
Servicios de traslados
|
45
|
+
</Heading>
|
46
|
+
|
47
|
+
<Vertical size='sm' />
|
48
|
+
|
49
|
+
{/* Dynamic Table */}
|
50
|
+
<Default></Default>
|
51
|
+
|
52
|
+
<Vertical size='sm' />
|
53
|
+
|
54
|
+
{/* Column Table */}
|
55
|
+
<ColumnTable columnsData={options.columns}> </ColumnTable>
|
56
|
+
|
57
|
+
<Vertical size='sm' />
|
58
|
+
|
59
|
+
{/* Row Table */}
|
60
|
+
<RowTable slice={options.bookings} columnsData={options.columns}></RowTable>
|
61
|
+
|
62
|
+
{/* Footer Table */}
|
63
|
+
<FooterTable range={[]} slice={options.bookings} setPage={4} page={1} />
|
64
|
+
|
65
|
+
</div>
|
66
|
+
|
67
|
+
|
68
|
+
// TableTotal.args = { isInline: true }
|
69
|
+
|
70
|
+
|
71
|
+
{/* <Canvas>
|
72
|
+
<Story name="Basic">
|
73
|
+
</Story>
|
74
|
+
</Canvas> */}
|
75
|
+
|
76
|
+
|
77
|
+
|