imbric-theme 0.4.0 → 0.4.2

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 (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
  }