imbric-theme 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  ),
@@ -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
@@ -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
 
@@ -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 Moment from 'react-moment'
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
- event.forEach(element => {
46
- listKeyColumnOrder[element.value] = true
47
- });
51
+ // let listKeyColumnOrder = []
48
52
 
49
- for (const itemAddColumns of addColumsData) {
50
- if (listKeyColumnOrder[itemAddColumns.value]) {
51
- itemAddColumns.activeView = true
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
- for (const itemEvent of addColumsData) {
65
+ // for (const itemEvent of addColumsData) {
59
66
 
60
- for (const itemColumns of columnsData) {
67
+ // for (const itemColumns of columnsData) {
61
68
 
62
- if (itemColumns.accessor === itemEvent.value) {
69
+ // if (itemColumns.accessor === itemEvent.value) {
63
70
 
64
- if (itemEvent.activeView) {
65
- itemColumns.activeView = true
66
- } else {
67
- itemColumns.activeView = false
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
- setColumnsData([])
83
+ // setColumnsData([])
77
84
 
78
- }
85
+ // }
79
86
 
80
87
  return (
81
88
 
82
- <>
89
+
83
90
  <div className={getStyles('opFunction')}>
84
91
 
85
- <div className={getStyles('opFunctionBox1')}>
86
- <DatePicker
87
- isLayoutDate="DateRangePicker"
88
- />
89
- </div>
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
- <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
+ {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
- <div className={getStyles('opFunctionBox3')}>
105
- <Icon
106
- key="3"
107
- background="inverted"
108
- name="fileDownload"
109
- onClick={function noRefCheck() { }}
110
- />
111
- </div>
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
- {tableData.map((item, index) => (
131
+ // <ColumnTable
132
+ // handleSorting={handleSorting}
133
+ // onChangeInput={onChangeInput}
134
+ // columnsData={columnsData}
135
+ // >
136
+ // {item.title}
137
+ // </ColumnTable>
148
138
 
149
- <tr key={index}>
150
- {columnsData.map((itemTd) => (
151
- itemTd.activeView ?
139
+ // <RowTable slice={slice} columnsData={columnsData}></RowTable>
152
140
 
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
- </>
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: 'DateRangePicker',
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: 300px;
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
- // export const List = ListTemplate.bind({})
30
- // List.args = { items: options.types.map((type) => ({ type })) }
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
+