imbric-theme 0.4.0 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. package/atoms/Icon/constants.js +228 -142
  2. package/hook/useTable.js +54 -45
  3. package/index.js +2 -0
  4. package/layout/DynamicTable/DynamicTable.js +48 -42
  5. package/molecules/CardProductTypesBooking/CardProductTypesBooking.js +57 -0
  6. package/molecules/CardProductTypesBooking/CardProductTypesBooking.module.css +71 -0
  7. package/molecules/CardProductTypesBooking/CardProductTypesBooking.stories.js +25 -0
  8. package/molecules/CardProductTypesBooking/constants.js +1 -0
  9. package/molecules/CardProductTypesBooking/index.js +3 -0
  10. package/molecules/CardServices/CardServices.js +287 -0
  11. package/molecules/CardServices/CardServices.module.css +93 -0
  12. package/molecules/CardServices/CardServices.stories.js +41 -0
  13. package/molecules/CardServices/constants.js +5 -0
  14. package/molecules/CardServices/index.js +3 -0
  15. package/molecules/ColumnTable/ColumnTable.js +44 -27
  16. package/molecules/ColumnTable/ColumnTable.module.css +2 -0
  17. package/molecules/ColumnTable/constants.js +6 -0
  18. package/molecules/FooterTable/FooterTable.js +36 -9
  19. package/molecules/FooterTable/FooterTable.module.css +5 -5
  20. package/molecules/FooterTable/constants.js +9 -1
  21. package/molecules/ItemMenu/ItemMenu.js +2 -0
  22. package/molecules/RowTable/RowTable.js +92 -38
  23. package/molecules/RowTable/constants.js +72 -17
  24. package/package.json +1 -1
  25. package/public/static/images/user-svgrepo-com (1).svg +27 -0
  26. package/public/static/images/user-svgrepo-com (2).svg +24 -0
  27. package/public/static/images/user-svgrepo-com (3).svg +24 -0
  28. package/public/static/images/user-svgrepo-com.svg +31 -0
@@ -0,0 +1,71 @@
1
+ .card-product-types-booking {
2
+ width: 100%;
3
+ align-items: center;
4
+ padding: 10px;
5
+ border: var(--border-width-thin) solid var(--color-base-transparent);
6
+ border-radius: var(--card-border-radius);
7
+ box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);
8
+ color: var(--color-font-base);
9
+ transition: box-shadow .28s cubic-bezier(.4, 0, .2, 1);
10
+ background-color: #fff;
11
+ margin: 0;
12
+ cursor: auto;
13
+ max-width: 330px;
14
+ min-width: 330px;
15
+ margin-right: 10px;
16
+ }
17
+
18
+ .labelNotification {
19
+ font-size: 12px;
20
+ color: #fff;
21
+ top: 0;
22
+ left: 0;
23
+ padding: 8px 8px 4px;
24
+ line-height: 13px;
25
+ border-radius: 10px;
26
+ margin-bottom: 6px;
27
+ background-color: rgb(245, 166, 35);
28
+ }
29
+
30
+ .card-product-content {
31
+ flex-direction: row;
32
+ box-sizing: border-box;
33
+ display: flex;
34
+ place-content: center start;
35
+ align-items: center;
36
+ }
37
+
38
+ .titleCardProductTypes {
39
+ color: rgba(0,0,0,.87);
40
+ font-size: 13px;
41
+ }
42
+
43
+ .etaCardProductTypesSub {
44
+ color: #777;
45
+ font-size: 12px;
46
+ line-height: 1rem;
47
+ }
48
+
49
+ .titleCardProductTypesSub {
50
+ color: #9f9f9f;
51
+ font-size: 12px;
52
+ line-height: 1rem;
53
+ }
54
+
55
+ .contentPrice {
56
+ min-width: 70px;
57
+ }
58
+
59
+ .priceCardProductTypes {
60
+ color: #00205b;
61
+ font-size: 14px;
62
+ text-align: right;
63
+ line-height: .9rem;
64
+ }
65
+
66
+ .priceCardProductTypesSub {
67
+ color: #9f9f9f;
68
+ font-size: 11px;
69
+ text-align: right;
70
+ line-height: .9rem;
71
+ }
@@ -0,0 +1,25 @@
1
+ import { CardProductTypesBooking, styles, options } from '.'
2
+
3
+ import {
4
+ getTemplate,
5
+ getListTemplate,
6
+ getOptionsArgTypes,
7
+ } from '../../helpers/storybook'
8
+
9
+ const Template = getTemplate(CardProductTypesBooking, styles)
10
+ const ListTemplate = getListTemplate(CardProductTypesBooking, styles)
11
+
12
+ export default {
13
+ title: 'Molecules/CardProductTypesBooking',
14
+ component: CardProductTypesBooking,
15
+ args: {
16
+ srcImg: 'https://resources.callcenter.cab/img/products/imbric_Taxi_White Block.png',
17
+ },
18
+ argTypes: {
19
+ types: getOptionsArgTypes(options.types),
20
+ },
21
+ }
22
+
23
+ export const Default = Template.bind({})
24
+ export const List = ListTemplate.bind({})
25
+ List.args = { items: options.types.map((type) => ({ type })) }
@@ -0,0 +1 @@
1
+ export const options = { types: [] }
@@ -0,0 +1,3 @@
1
+ export { default, CardProductTypesBooking } from './CardProductTypesBooking'
2
+ export { options } from './constants'
3
+ export { default as styles } from './CardProductTypesBooking.module.css'
@@ -0,0 +1,287 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import { Horizontal, Vertical } from '../../layout/Spacer/components'
4
+ import Label from '../../atoms/Label'
5
+ import Icon from '../../atoms/Icon'
6
+
7
+ import styles from './CardServices.module.css'
8
+ import { options } from './constants'
9
+ import withStyles from '../../hocs/withStyles'
10
+
11
+
12
+ export const handleClick = ({ onClick }) => (event) => {
13
+ onClick(event)
14
+ }
15
+
16
+ export const CardServices = ({
17
+ getStyles,
18
+ onClick,
19
+ isClickable,
20
+ txtDateService,
21
+ txtOriginService,
22
+ txtDestinationService,
23
+ txtServiceService,
24
+ txtUserService,
25
+ txtRefService,
26
+ txtUserNumberService,
27
+
28
+ }) => {
29
+ return (
30
+ <div
31
+ onClick={onClick && handleClick({ onClick })}
32
+ className={getStyles('card-services', {
33
+ 'is-clickable': isClickable,
34
+ })}
35
+ >
36
+
37
+ <div>
38
+
39
+ <p className={getStyles('card-content-p')}>
40
+ <Icon
41
+ name="clock"
42
+ size="xs"
43
+ />
44
+ &nbsp;
45
+ {txtDateService}
46
+ </p>
47
+ <Vertical size="xs" />
48
+
49
+ <div className={getStyles('card-content')}>
50
+
51
+ <div className={getStyles('card-subcontent')}>
52
+
53
+ <Vertical size="xs" />
54
+
55
+ <Label >
56
+ <Icon
57
+ name="originOrder"
58
+ size="xs"
59
+ color="highlight"
60
+ />
61
+ &nbsp;
62
+ Origen
63
+ </Label>
64
+
65
+ <p className={getStyles('card-content-p')}>{txtOriginService}</p>
66
+
67
+ </div>
68
+
69
+ <Horizontal size="sm" />
70
+
71
+ <div className={getStyles('card-subcontent')}>
72
+
73
+ <Vertical size="xs" />
74
+
75
+ <Label >
76
+ <Icon
77
+ name="destinationOrder"
78
+ size="xs"
79
+ color="highlight"
80
+ />
81
+ &nbsp;
82
+ Destino
83
+ </Label>
84
+
85
+ <p className={getStyles('card-content-p')}>{txtDestinationService}</p>
86
+
87
+ </div>
88
+
89
+ </div>
90
+
91
+ <Vertical size="xs" />
92
+
93
+ <div className={getStyles('card-content')}>
94
+
95
+ <div className={getStyles('card-subcontent')}>
96
+
97
+ <Vertical size="xs" />
98
+
99
+ <Label >
100
+ <Icon
101
+ name="travelPrograms"
102
+ size="xs"
103
+ color="highlight"
104
+ />
105
+ &nbsp;
106
+ Servicio
107
+ </Label>
108
+
109
+ <p className={getStyles('card-content-p')}>{txtServiceService}</p>
110
+
111
+ </div>
112
+
113
+ <Horizontal size="sm" />
114
+
115
+ <div className={getStyles('card-subcontent')}>
116
+
117
+ <Vertical size="xs" />
118
+
119
+ <Label >
120
+ <Icon
121
+ name="user"
122
+ size="xs"
123
+ color="highlight"
124
+ />
125
+ &nbsp;
126
+ Pasajero
127
+ </Label>
128
+
129
+ <p className={getStyles('card-content-p')}>{txtUserService}</p>
130
+
131
+ </div>
132
+
133
+ </div>
134
+
135
+ <Vertical size="xs" />
136
+
137
+ <div className={getStyles('card-content')}>
138
+
139
+ <div className={getStyles('card-subcontent')}>
140
+
141
+ <Vertical size="xs" />
142
+
143
+ <Label >
144
+ <Icon
145
+ name="reference"
146
+ size="xs"
147
+ color="highlight"
148
+ />
149
+ &nbsp;
150
+ REF
151
+ </Label>
152
+
153
+ <p className={getStyles('card-content-p')}>{txtRefService}</p>
154
+
155
+ </div>
156
+
157
+ <Horizontal size="sm" />
158
+
159
+ <div className={getStyles('card-subcontent')}>
160
+
161
+ <Vertical size="xs" />
162
+
163
+ <Label >
164
+ <Icon
165
+ name="userNumber"
166
+ size="xs"
167
+ color="highlight"
168
+ />
169
+ &nbsp;
170
+ Usuario
171
+ </Label>
172
+
173
+ <p className={getStyles('card-content-p')}>{txtUserNumberService}</p>
174
+
175
+ </div>
176
+
177
+ </div>
178
+
179
+ </div>
180
+ {/* <Vertical size="xs" /> */}
181
+
182
+ <div className={getStyles('card-content-action')}>
183
+
184
+ <div className={getStyles('card-subcontent-action')}>
185
+
186
+ <Icon
187
+ name="userView"
188
+ onClick={function noRefCheck() { }}
189
+ size="sm"
190
+ />
191
+
192
+ </div>
193
+
194
+
195
+
196
+ <div className={getStyles('card-subcontent-action')}>
197
+
198
+ <Icon
199
+ name="returnOrder"
200
+ onClick={function noRefCheck() { }}
201
+ size="sm"
202
+ />
203
+
204
+ </div>
205
+
206
+
207
+
208
+ <div className={getStyles('card-subcontent-action')}>
209
+
210
+ <Icon
211
+ name="repeatOrder"
212
+ onClick={function noRefCheck() { }}
213
+ size="sm"
214
+ />
215
+
216
+ </div>
217
+
218
+
219
+
220
+ <div className={getStyles('card-subcontent-action')}>
221
+
222
+ <Icon
223
+ name="edit"
224
+ onClick={function noRefCheck() { }}
225
+ size="sm"
226
+ />
227
+
228
+ </div>
229
+
230
+
231
+
232
+ <div className={getStyles('card-subcontent-action')}>
233
+
234
+ <Icon
235
+ name="trash"
236
+ onClick={function noRefCheck() { }}
237
+ size="sm"
238
+ />
239
+
240
+ </div>
241
+
242
+
243
+
244
+ <div className={getStyles('card-subcontent-action')}>
245
+
246
+ <Icon
247
+ name="circleStatus"
248
+ onClick={function noRefCheck() { }}
249
+ size="sm"
250
+ />
251
+
252
+ </div>
253
+
254
+
255
+
256
+ </div>
257
+
258
+ {/* {children} */}
259
+ </div>
260
+ )
261
+ }
262
+
263
+ CardServices.propTypes = {
264
+ getStyles: PropTypes.func.isRequired,
265
+ onClick: PropTypes.func,
266
+ isClickable: PropTypes.bool,
267
+ txtDateService: PropTypes.any,
268
+ txtOriginService: PropTypes.string,
269
+ txtDestinationService: PropTypes.string,
270
+ txtServiceService: PropTypes.string,
271
+ txtUserService: PropTypes.string,
272
+ txtRefService: PropTypes.string,
273
+ txtUserNumberService: PropTypes.string,
274
+ }
275
+
276
+ CardServices.defaultProps = {
277
+ getStyles: () => { },
278
+ txtDateService: '31/08/2022 13:21',
279
+ txtOriginService: 'Aeropuerto Barajas T4, Madrid, España',
280
+ txtDestinationService: 'Estación de Chamartín, Madrid, España',
281
+ txtServiceService: 'ECO (Tarifa máxima)',
282
+ txtUserService: 'Alberto Alvarez',
283
+ txtRefService: '1946980768',
284
+ txtUserNumberService: 'WF3941',
285
+ }
286
+
287
+ export default withStyles(styles)(CardServices)
@@ -0,0 +1,93 @@
1
+ .card-services {
2
+ /* display: flex; */
3
+ width: 100%;
4
+ align-items: center;
5
+ padding: 10px;
6
+ border: var(--border-width-thin) solid var(--color-base-transparent);
7
+ border-radius: var(--card-border-radius);
8
+ box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);
9
+ color: var(--color-font-base);
10
+ transition: box-shadow .28s cubic-bezier(.4, 0, .2, 1);
11
+ background-color: #fff;
12
+ margin: 0;
13
+ cursor: auto;
14
+ max-width: 450px;
15
+ min-width: 450px;
16
+
17
+ align-items: center;
18
+ align-content: center;
19
+ justify-content: space-around;
20
+ margin-right: 10px;
21
+ display: flex;
22
+
23
+ }
24
+
25
+ .card-content {
26
+ display: flex;
27
+ align-items: flex-start;
28
+ align-content: space-between;
29
+ border-top: 1px solid #dfe8f2;
30
+ }
31
+
32
+ .card-content-action {
33
+ padding-left: 10px;
34
+ border-left: 1px solid #dfe8f2;
35
+ }
36
+
37
+ .card-content-p {
38
+ margin: 0;
39
+ padding: 0;
40
+ font-size: var(--font-size-mini);
41
+ font-weight: var(--font-weight-normal);
42
+ line-height: var(--line-height-tight);
43
+ }
44
+
45
+ .card-subcontent {
46
+ width: 100%;
47
+ }
48
+
49
+ .card-subcontent-action {
50
+ display: flex;
51
+ align-items: center;
52
+ }
53
+
54
+ .size-sm {
55
+ min-height: 45px;
56
+ }
57
+
58
+ .size-md {
59
+ min-height: 80px;
60
+ }
61
+
62
+ .size-lg {
63
+ min-height: 115px;
64
+ }
65
+
66
+ .color-primary {
67
+ background: var(--color-primary);
68
+ color: var(--color-primary-inverted);
69
+ }
70
+
71
+ .color-secondary {
72
+ background: var(--color-secondary);
73
+ color: var(--color-secondary-inverted);
74
+ }
75
+
76
+ .color-base {
77
+ border: var(--border-width-thin) solid var(--color-gray-400);
78
+ background: var(--background-color-primary-highlight);
79
+ }
80
+
81
+ .is-clickable {
82
+ cursor: pointer;
83
+ }
84
+
85
+ .is-draggable {
86
+ cursor: grab;
87
+ user-select: none;
88
+ }
89
+
90
+ .card-services.is-clickable:active,
91
+ .card-services.is-draggable:active {
92
+ box-shadow: var(--box-shadow-xs);
93
+ }
@@ -0,0 +1,41 @@
1
+ import { CardServices, options, styles } from '.'
2
+ import {
3
+ getTemplate,
4
+ getListTemplate,
5
+ getOptionsArgTypes,
6
+ } from '../../helpers/storybook'
7
+
8
+ const Template = getTemplate(CardServices, styles)
9
+ const ListTemplate = getListTemplate(CardServices, styles)
10
+
11
+ export default {
12
+ title: 'Molecules/CardServices',
13
+ component: CardServices,
14
+ args: {
15
+ // children:
16
+ // 'Lacerations coaster sort comings windlance happily EIf-witch handful unbefitting? Decide rising startled Aragorn invitations midnight deserves fortunes innards. You cannot hide. I see you. There is no life in the void. Only death. Mirror Emyn dreamed!',
17
+ },
18
+ argTypes: {
19
+ // color: getOptionsArgTypes(options.colors),
20
+ // size: getOptionsArgTypes(options.sizes),
21
+ // children: { control: 'text' },
22
+ },
23
+ }
24
+
25
+ export const Default = Template.bind({})
26
+
27
+ // export const Clickable = Template.bind({})
28
+ // Clickable.args = {
29
+ // isClickable: true,
30
+ // }
31
+
32
+ // export const Dragabble = Template.bind({})
33
+ // Dragabble.args = {
34
+ // isDraggable: true,
35
+ // }
36
+
37
+ // export const Colors = ListTemplate.bind({})
38
+ // Colors.args = { items: options.colors.map((color) => ({ color })) }
39
+
40
+ // export const Sizes = ListTemplate.bind({})
41
+ // Sizes.args = { items: options.sizes.map((size) => ({ size })) }
@@ -0,0 +1,5 @@
1
+ export const options = {
2
+ colors: ['base', 'primary', 'secondary'],
3
+ sizes: ['sm', 'md', 'lg'],
4
+ }
5
+
@@ -0,0 +1,3 @@
1
+ export { default, CardServices } from './CardServices'
2
+ export { options } from './constants'
3
+ export { default as styles } from './CardServices.module.css'
@@ -7,16 +7,20 @@ import withStyles from '../../hocs/withStyles'
7
7
  import Paragraph from '../../atoms/Paragraph'
8
8
  import Input from '../../atoms/Input'
9
9
  import Icon from '../../atoms/Icon'
10
+ import DynamicSelect from '../../molecules/DynamicSelect'
10
11
  import { Horizontal, Vertical } from '../../layout/Spacer/components'
11
12
 
12
13
 
13
- export const ColumnTable = ({ getStyles, handleSorting, columnUppercase, onChangeInput, columnsData }) => {
14
+ export const ColumnTable = ({ getStyles, handleSorting, columnUppercase, onChangeInput, onChangeSelect, columnsData, opSelect }) => {
14
15
 
15
16
  const [sortable, setSortable] = useState(true);
16
17
  const [accessor, setAccessor] = useState("");
17
18
  const [sortField, setSortField] = useState("");
18
19
  const [order, setOrder] = useState("asc");
19
20
 
21
+ // const [optionsSelect, setOptionsSelect] = useState(opSelect);
22
+
23
+
20
24
  const handleSortingChange = (accessor) => {
21
25
  const sortOrder =
22
26
  accessor === sortField && order === "asc" ? "desc" : "asc";
@@ -63,24 +67,24 @@ export const ColumnTable = ({ getStyles, handleSorting, columnUppercase, onChang
63
67
 
64
68
  {item.sortable ?
65
69
 
66
- cl === "default" ?
67
- <Icon
68
- name="angleUpDown"
69
- size="xs"
70
- />
71
- : cl === "" ? null
72
-
73
- : cl === "angleDown"
74
- ? <Icon
75
- name="angleDown"
76
- size="xs"
77
- />
78
-
79
- : <Icon
80
- name="angleUp"
81
- size="xs"
82
- />
83
- : null
70
+ cl === "default" ?
71
+ <Icon
72
+ name="angleUpDown"
73
+ size="xs"
74
+ />
75
+ : cl === "" ? null
76
+
77
+ : cl === "angleDown"
78
+ ? <Icon
79
+ name="angleDown"
80
+ size="xs"
81
+ />
82
+
83
+ : <Icon
84
+ name="angleUp"
85
+ size="xs"
86
+ />
87
+ : null
84
88
  }
85
89
  </span>
86
90
 
@@ -89,14 +93,25 @@ export const ColumnTable = ({ getStyles, handleSorting, columnUppercase, onChang
89
93
 
90
94
  {item.viewIsFilter ? (
91
95
 
92
- <Input
93
- isInputFilter
94
- id={item.idInput}
95
- type={item.typeFilter}
96
- name={item.nameInput}
97
- onChange={onChangeInput}
98
- placeholder={item.placeholder}
99
- />) : null
96
+ item.typeFilter === 'select' ?
97
+ <DynamicSelect
98
+ isInline
99
+ onChange={onChangeSelect}
100
+ optionsSelect={opSelect}
101
+ placeholder={item.placeholder}
102
+ />
103
+ :
104
+ <Input
105
+ isInputFilter
106
+ id={item.idInput}
107
+ type={item.typeFilter}
108
+ name={item.nameInput}
109
+ onChange={onChangeInput}
110
+ placeholder={item.placeholder}
111
+ />
112
+ )
113
+
114
+ : null
100
115
  }
101
116
 
102
117
  </th>
@@ -116,6 +131,7 @@ ColumnTable.propTypes = {
116
131
  getStyles: PropTypes.func.isRequired,
117
132
  columnUppercase: PropTypes.bool,
118
133
  onChangeInput: PropTypes.func,
134
+ onChangeSelect: PropTypes.func,
119
135
  }
120
136
 
121
137
  ColumnTable.defaultProps = {
@@ -123,6 +139,7 @@ ColumnTable.defaultProps = {
123
139
  handleSorting: () => { },
124
140
  columnUppercase: false,
125
141
  onChangeInput: () => { },
142
+ onChangeSelect: () => { },
126
143
  }
127
144
 
128
145
  export default withStyles(styles)(ColumnTable)
@@ -2,6 +2,8 @@
2
2
  padding: 12px 15px;
3
3
  text-align: left;
4
4
  color: var(--color-font-base);
5
+ display: table-cell;
6
+ vertical-align: top;
5
7
  }
6
8
 
7
9
  .column-uppercase {
@@ -108,4 +108,10 @@ export const options = {
108
108
  },
109
109
  ],
110
110
 
111
+ opSelect: [
112
+ { value: 'chocolate', label: 'Chocolate' },
113
+ { value: 'strawberry', label: 'Strawberry' },
114
+ { value: 'vanilla', label: 'Vanilla' }
115
+ ]
116
+
111
117
  }