groundfloor-react-ui 1.0.10 → 1.0.13
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/README.md +6 -1
- package/assets/icons/default.svg +1 -0
- package/components/Form/FormComponent.js +6 -1
- package/components/Form/HeaderComponent.js +3 -3
- package/components/GroupButtons/ButtonPopup.js +0 -1
- package/components/Icon/Icon.js +2 -0
- package/components/Inputs/CheckBoxInput.js +27 -7
- package/components/Inputs/DateSelect.js +212 -213
- package/components/Inputs/DropdownSelect.js +2 -0
- package/components/Inputs/PasswordInput.js +6 -3
- package/components/Inputs/TextInput.js +12 -0
- package/components/Overlay/Overlay.js +0 -1
- package/components/Tooltip/Tooltip.js +0 -1
- package/dist/index.es.js +76 -70
- package/dist/index.js +68 -62
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,10 +11,15 @@ npm install groundfloor-react-ui --save
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
```
|
|
14
|
-
Add this default theme
|
|
14
|
+
Add this default theme color and styles if needed.
|
|
15
15
|
|
|
16
16
|
import defaultStyles from 'groundfloor-react-ui/components/constants/defaultStyle';
|
|
17
17
|
import defaultThemeColor from 'groundfloor-react-ui/components/constants/defaultThemeColor';
|
|
18
|
+
|
|
19
|
+
For use DateSelect add the below css file to your root
|
|
20
|
+
import 'react-datepicker/dist/react-datepicker.css';
|
|
21
|
+
For use Overlay, Tooltip and ButtonPopup add the below css file to your root
|
|
22
|
+
import 'react-popper-tooltip/dist/styles.css';
|
|
18
23
|
```
|
|
19
24
|
|
|
20
25
|
## Pre-requisites
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="f46636c4-9d90-4c06-8f72-5c02d35ff376" data-name="a9011979-1776-4746-bb61-6eae84c3e8ab" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20.6 24"><defs><style>.b78a75cf-ef1e-49e2-8d45-bd32a83f2ff9{fill:#2e56f4;}</style></defs><path class="b78a75cf-ef1e-49e2-8d45-bd32a83f2ff9" d="M15.4,0H0V24H20.6V5.1Zm3.5,22.3H1.7V1.7H14.4l4.5,4.6Z"/><rect class="b78a75cf-ef1e-49e2-8d45-bd32a83f2ff9" x="3.6" y="3.5" width="7.6" height="1.59"/><rect class="b78a75cf-ef1e-49e2-8d45-bd32a83f2ff9" x="3.6" y="6.5" width="10.6" height="1.59"/><path class="b78a75cf-ef1e-49e2-8d45-bd32a83f2ff9" d="M13.7,16.8v-.5a4.3,4.3,0,0,0,0-1.6v-.5l1.4-.7A6.2,6.2,0,0,0,14,11.8l-1.3.7-.4-.3-1.4-.8h-.5V9.8a7.4,7.4,0,0,0-2.1,0v1.5H7.8l-1.4.8-.4.3-1.3-.7a6.2,6.2,0,0,0-1.1,1.7l1.4.7v.5a4.3,4.3,0,0,0,0,1.6v.5l-1.4.7a6.2,6.2,0,0,0,1.1,1.7L6,18.5l.4.3,1.4.8.5.2v1.4a7.4,7.4,0,0,0,2.1,0V19.8l.5-.2a3.9,3.9,0,0,0,1.4-.8l.4-.3,1.3.7a6.2,6.2,0,0,0,1.1-1.7ZM9.4,18.3a2.9,2.9,0,0,1-2.9-2.8,2.9,2.9,0,1,1,2.9,2.8Z"/></svg>
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
MultiColumnDiv,
|
|
26
26
|
} from '../DesignComponent';
|
|
27
27
|
import { Table } from '../Tables';
|
|
28
|
+
import { HeaderComponent } from './HeaderComponent';
|
|
28
29
|
|
|
29
30
|
export const FormComponent = ({ formData, ...props }) => {
|
|
30
31
|
const header = (item) => {
|
|
@@ -150,7 +151,9 @@ export const FormComponent = ({ formData, ...props }) => {
|
|
|
150
151
|
const passwordInput = (item) => {
|
|
151
152
|
return <PasswordInput {...item} {...props} />;
|
|
152
153
|
};
|
|
153
|
-
|
|
154
|
+
const headerComponentInput = (item) => {
|
|
155
|
+
return <HeaderComponent {...item} {...props} />;
|
|
156
|
+
};
|
|
154
157
|
const handleSubmit = () => {
|
|
155
158
|
console.log('form submit');
|
|
156
159
|
};
|
|
@@ -201,6 +204,8 @@ export const FormComponent = ({ formData, ...props }) => {
|
|
|
201
204
|
return tableInput(item);
|
|
202
205
|
case 'passwordInput':
|
|
203
206
|
return passwordInput(item);
|
|
207
|
+
case 'headerComponent':
|
|
208
|
+
return headerComponentInput(item);
|
|
204
209
|
default:
|
|
205
210
|
break;
|
|
206
211
|
}
|
|
@@ -2,7 +2,7 @@ import React from 'react'
|
|
|
2
2
|
import defaultThemeColor from '../constants/defaultThemeColor'
|
|
3
3
|
import userIcon from "../../assets/icons/users.svg";
|
|
4
4
|
|
|
5
|
-
export const HeaderComponent = ({ title, subtitle, wrapperstyle }) => {
|
|
5
|
+
export const HeaderComponent = ({ title, subtitle, wrapperstyle, imgLink, imgStyle }) => {
|
|
6
6
|
|
|
7
7
|
const titleStyle = {
|
|
8
8
|
'fontSize': '26px',
|
|
@@ -24,11 +24,11 @@ export const HeaderComponent = ({ title, subtitle, wrapperstyle }) => {
|
|
|
24
24
|
|
|
25
25
|
return <div style={wrapperstyle}>
|
|
26
26
|
<div style={titleStyle}>
|
|
27
|
-
<img src={userIcon} alt="userIcon" srcset="" />
|
|
27
|
+
<img src={imgLink || userIcon} alt="userIcon" srcset="" style={imgStyle} />
|
|
28
28
|
<h4>{title}</h4>
|
|
29
29
|
</div>
|
|
30
30
|
<div style={subtitleStyle}>
|
|
31
31
|
<p>{subtitle}</p>
|
|
32
32
|
</div>
|
|
33
33
|
</div>
|
|
34
|
-
}
|
|
34
|
+
}
|
|
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import styled, { useTheme } from 'styled-components';
|
|
4
4
|
import defaultThemeColor from '../constants/defaultThemeColor';
|
|
5
5
|
import { usePopperTooltip } from 'react-popper-tooltip';
|
|
6
|
-
import 'react-popper-tooltip/dist/styles.css';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Primary UI component for user interaction
|
package/components/Icon/Icon.js
CHANGED
|
@@ -49,6 +49,7 @@ import fileUpload from '../../assets/icons/file-upload.svg'
|
|
|
49
49
|
import eyeHide from '../../assets/icons/eye-hide.svg'
|
|
50
50
|
import eyeView from '../../assets/icons/eye-hide-view.svg'
|
|
51
51
|
import fileIcon from '../../assets/icons/file-icon.svg'
|
|
52
|
+
import defaultIcon from '../../assets/icons/default.svg'
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
/** icon name should be kebab-case, e.g "plus-outline" */
|
|
@@ -97,6 +98,7 @@ const iconObj = {
|
|
|
97
98
|
'eye-hide': eyeHide,
|
|
98
99
|
'eye-show': eyeView,
|
|
99
100
|
'file-icon': fileIcon,
|
|
101
|
+
'default-icon': defaultIcon,
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
const StyledSVGIcon = styled(ReactSVG)`
|
|
@@ -92,6 +92,7 @@ export const CheckBoxInput = ({
|
|
|
92
92
|
setOptions,
|
|
93
93
|
inline,
|
|
94
94
|
wrapperStyle,
|
|
95
|
+
isRequired,
|
|
95
96
|
...props
|
|
96
97
|
}) => {
|
|
97
98
|
useEffect(() => {
|
|
@@ -121,13 +122,27 @@ export const CheckBoxInput = ({
|
|
|
121
122
|
|
|
122
123
|
return (
|
|
123
124
|
<div style={returnedTarget} {...props}>
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
|
|
126
|
+
<div style={{ display: 'flex' }}>
|
|
127
|
+
<Label
|
|
128
|
+
themeColor={defaultThemeColor}
|
|
129
|
+
customStyles={labelStyle}
|
|
130
|
+
type={'check-label'}
|
|
131
|
+
text={label}
|
|
132
|
+
{...props}
|
|
133
|
+
/>
|
|
134
|
+
|
|
135
|
+
{isRequired && (
|
|
136
|
+
<div
|
|
137
|
+
style={{
|
|
138
|
+
marginLeft: '4px',
|
|
139
|
+
color: `${defaultThemeColor.variant['error']}`,
|
|
140
|
+
}}
|
|
141
|
+
>
|
|
142
|
+
*
|
|
143
|
+
</div>
|
|
144
|
+
)}
|
|
145
|
+
</div>
|
|
131
146
|
<ParentDiv
|
|
132
147
|
style={{ display: 'flex', flexWrap: 'wrap' }}
|
|
133
148
|
inline={inline}
|
|
@@ -250,6 +265,10 @@ CheckBoxInput.propTypes = {
|
|
|
250
265
|
* CheckBox checked value changeHandler
|
|
251
266
|
*/
|
|
252
267
|
getCheckedArr: PropTypes.func,
|
|
268
|
+
/**
|
|
269
|
+
* mandatory field or not
|
|
270
|
+
*/
|
|
271
|
+
isRequired: PropTypes.bool,
|
|
253
272
|
};
|
|
254
273
|
|
|
255
274
|
CheckBoxInput.defaultProps = {
|
|
@@ -265,4 +284,5 @@ CheckBoxInput.defaultProps = {
|
|
|
265
284
|
checkedTextColor: `${defaultThemeColor.neutral['neutral-1']}`,
|
|
266
285
|
defaultBorderColor: '#D4D7E3',
|
|
267
286
|
checkedCheckBoxColor: `${defaultThemeColor.primary['primary-1']}`,
|
|
287
|
+
isRequired: true
|
|
268
288
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef } from 'react';
|
|
2
2
|
import DatePicker from 'react-datepicker';
|
|
3
|
-
import 'react-datepicker/dist/react-datepicker.css';
|
|
4
3
|
import PropTypes from 'prop-types';
|
|
5
4
|
import styled from 'styled-components';
|
|
6
5
|
import defaultThemeColor from '../constants/defaultThemeColor';
|
|
@@ -149,7 +148,7 @@ const Wrapper = styled.div`
|
|
|
149
148
|
`;
|
|
150
149
|
|
|
151
150
|
Wrapper.defaultProps = {
|
|
152
|
-
|
|
151
|
+
theme: defaultThemeColor,
|
|
153
152
|
};
|
|
154
153
|
|
|
155
154
|
const CalendarHeaderDiv = styled.div`
|
|
@@ -219,7 +218,7 @@ const DropDownList = styled('ul')`
|
|
|
219
218
|
}
|
|
220
219
|
`;
|
|
221
220
|
DropDownList.defaultProps = {
|
|
222
|
-
|
|
221
|
+
theme: defaultThemeColor,
|
|
223
222
|
};
|
|
224
223
|
|
|
225
224
|
const ListItem = styled('li')`
|
|
@@ -234,224 +233,224 @@ const ListItem = styled('li')`
|
|
|
234
233
|
`;
|
|
235
234
|
|
|
236
235
|
export const DateSelect = ({ startDate, setStartDate, disabled, ...props }) => {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
236
|
+
const theme = defaultThemeColor;
|
|
237
|
+
|
|
238
|
+
const months = [
|
|
239
|
+
'January',
|
|
240
|
+
'February',
|
|
241
|
+
'March',
|
|
242
|
+
'April',
|
|
243
|
+
'May',
|
|
244
|
+
'June',
|
|
245
|
+
'July',
|
|
246
|
+
'August',
|
|
247
|
+
'September',
|
|
248
|
+
'October',
|
|
249
|
+
'November',
|
|
250
|
+
'December',
|
|
251
|
+
];
|
|
252
|
+
var years = [];
|
|
253
|
+
for (var i = 2010; i <= new Date().getFullYear() + 10; i++) {
|
|
254
|
+
years.push(i);
|
|
255
|
+
}
|
|
257
256
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
};
|
|
280
|
-
}, []);
|
|
281
|
-
|
|
282
|
-
const handleClickOutsideMonth = (event) => {
|
|
283
|
-
if (refMonth.current && !refMonth.current.contains(event.target)) {
|
|
284
|
-
setIsOpen(false);
|
|
285
|
-
}
|
|
257
|
+
const refMonth = useRef(null);
|
|
258
|
+
const refYear = useRef(null);
|
|
259
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
260
|
+
const [isOpenYear, setIsOpenYear] = useState(false);
|
|
261
|
+
const [hover, setHover] = useState(false);
|
|
262
|
+
const [hoverYear, setHoverYear] = useState(false);
|
|
263
|
+
const [selectedYear, setSelectedYear] = useState(startDate.getFullYear());
|
|
264
|
+
const [selectedMonth, setSelectedMonth] = useState(
|
|
265
|
+
months[startDate.getMonth()]
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
useEffect(() => {
|
|
269
|
+
setSelectedMonth(months[startDate.getMonth()]);
|
|
270
|
+
setSelectedYear(startDate.getFullYear());
|
|
271
|
+
}, [startDate]);
|
|
272
|
+
|
|
273
|
+
useEffect(() => {
|
|
274
|
+
document.addEventListener('click', handleClickOutsideMonth, true);
|
|
275
|
+
|
|
276
|
+
return () => {
|
|
277
|
+
document.removeEventListener('click', handleClickOutsideMonth, true);
|
|
286
278
|
};
|
|
279
|
+
}, []);
|
|
287
280
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
281
|
+
const handleClickOutsideMonth = (event) => {
|
|
282
|
+
if (refMonth.current && !refMonth.current.contains(event.target)) {
|
|
283
|
+
setIsOpen(false);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
293
286
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
287
|
+
const handleClickOutsideYear = (event) => {
|
|
288
|
+
if (refYear.current && !refYear.current.contains(event.target)) {
|
|
289
|
+
setIsOpenYear(false);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
useEffect(() => {
|
|
294
|
+
document.addEventListener('click', handleClickOutsideYear, true);
|
|
295
|
+
|
|
296
|
+
return () => {
|
|
297
|
+
document.removeEventListener('click', handleClickOutsideYear, true);
|
|
298
|
+
};
|
|
299
|
+
}, []);
|
|
300
|
+
|
|
301
|
+
return (
|
|
302
|
+
<Wrapper disabled={disabled} {...props}>
|
|
303
|
+
<DatePicker
|
|
304
|
+
selected={startDate}
|
|
305
|
+
dateFormat='dd/MM/yyyy'
|
|
306
|
+
useWeekdaysShort={true}
|
|
307
|
+
onChange={(date) => setStartDate(date)}
|
|
308
|
+
placeholderText={'select date'}
|
|
309
|
+
adjustDateOnChange
|
|
310
|
+
disabled={disabled}
|
|
311
|
+
dropdownMode='select'
|
|
312
|
+
renderCustomHeader={({ date, changeYear, changeMonth }) => {
|
|
313
|
+
return (
|
|
314
|
+
<CalendarHeaderDiv>
|
|
315
|
+
<div style={{ display: 'flex' }}>
|
|
316
|
+
<DropDownContainer ref={refMonth}>
|
|
317
|
+
<DropDownHeader
|
|
318
|
+
onClick={() => {
|
|
319
|
+
setIsOpen(!isOpen);
|
|
320
|
+
setIsOpenYear(false);
|
|
321
|
+
}}
|
|
322
|
+
>
|
|
323
|
+
<span
|
|
324
|
+
onMouseEnter={() => setHover(true)}
|
|
325
|
+
onMouseLeave={() => setHover(false)}
|
|
326
|
+
style={{
|
|
327
|
+
color: `${hover ? theme.variant['primary-1'] : theme.textColor
|
|
328
|
+
}`,
|
|
329
|
+
}}
|
|
330
|
+
>
|
|
331
|
+
{months[date.getMonth()]}
|
|
332
|
+
</span>
|
|
333
|
+
<IconDiv>
|
|
334
|
+
<Icon
|
|
335
|
+
icon='triangle-down'
|
|
336
|
+
color={hover ? 'blue' : 'black'}
|
|
337
|
+
size={7}
|
|
338
|
+
/>
|
|
339
|
+
</IconDiv>
|
|
340
|
+
</DropDownHeader>
|
|
341
|
+
{isOpen && (
|
|
342
|
+
<DropDownListContainer>
|
|
343
|
+
<DropDownList onMouseEnter={() => setHover(true)}>
|
|
344
|
+
{months.map((option, index) => (
|
|
345
|
+
<ListItem
|
|
346
|
+
selectedMonth={selectedMonth}
|
|
347
|
+
onClick={() => {
|
|
348
|
+
setHover(false);
|
|
349
|
+
changeMonth(index);
|
|
350
|
+
setIsOpen(false);
|
|
351
|
+
setSelectedMonth(months[index]);
|
|
352
|
+
}}
|
|
353
|
+
key={Math.random()}
|
|
354
|
+
>
|
|
355
|
+
<span
|
|
356
|
+
style={{
|
|
357
|
+
color: `${selectedMonth === option
|
|
358
|
+
? theme.variant['primary-1']
|
|
359
|
+
: theme.textColor
|
|
360
|
+
}`,
|
|
361
|
+
}}
|
|
362
|
+
>
|
|
363
|
+
{option}
|
|
364
|
+
</span>
|
|
365
|
+
</ListItem>
|
|
366
|
+
))}
|
|
367
|
+
</DropDownList>
|
|
368
|
+
</DropDownListContainer>
|
|
369
|
+
)}
|
|
370
|
+
</DropDownContainer>
|
|
371
|
+
<DropDownContainer ref={refYear}>
|
|
372
|
+
<DropDownHeader
|
|
373
|
+
style={{ marginLeft: '28px' }}
|
|
374
|
+
onClick={() => {
|
|
375
|
+
setIsOpenYear(!isOpenYear);
|
|
376
|
+
setIsOpen(false);
|
|
377
|
+
}}
|
|
378
|
+
>
|
|
379
|
+
<span
|
|
380
|
+
onMouseEnter={() => setHoverYear(true)}
|
|
381
|
+
onMouseLeave={() => setHoverYear(false)}
|
|
382
|
+
style={{
|
|
383
|
+
color: `${hoverYear
|
|
384
|
+
? theme.variant['primary-1']
|
|
385
|
+
: theme.textColor
|
|
386
|
+
}`,
|
|
387
|
+
}}
|
|
388
|
+
>
|
|
389
|
+
{date.getFullYear()}
|
|
390
|
+
</span>
|
|
391
|
+
<IconDiv>
|
|
392
|
+
<Icon
|
|
393
|
+
icon='triangle-down'
|
|
394
|
+
color={hoverYear ? 'blue' : 'black'}
|
|
395
|
+
size={7}
|
|
396
|
+
/>
|
|
397
|
+
</IconDiv>
|
|
398
|
+
</DropDownHeader>
|
|
399
|
+
{isOpenYear && (
|
|
400
|
+
<DropDownListContainer>
|
|
401
|
+
<DropDownList onMouseEnter={() => setHoverYear(true)}>
|
|
402
|
+
{years.map((option, index) => (
|
|
403
|
+
<ListItem
|
|
404
|
+
onClick={() => {
|
|
405
|
+
setHoverYear(false);
|
|
406
|
+
changeYear(option);
|
|
407
|
+
setSelectedYear(option);
|
|
408
|
+
setIsOpenYear(false);
|
|
409
|
+
}}
|
|
410
|
+
key={Math.random()}
|
|
411
|
+
>
|
|
412
|
+
<span
|
|
413
|
+
style={{
|
|
414
|
+
color: `${selectedYear === option
|
|
415
|
+
? theme.variant['primary-1']
|
|
416
|
+
: theme.textColor
|
|
417
|
+
}`,
|
|
418
|
+
}}
|
|
419
|
+
>
|
|
420
|
+
{option}
|
|
421
|
+
</span>
|
|
422
|
+
</ListItem>
|
|
423
|
+
))}
|
|
424
|
+
</DropDownList>
|
|
425
|
+
</DropDownListContainer>
|
|
426
|
+
)}
|
|
427
|
+
</DropDownContainer>
|
|
428
|
+
</div>
|
|
429
|
+
</CalendarHeaderDiv>
|
|
430
|
+
);
|
|
431
|
+
}}
|
|
432
|
+
/>
|
|
433
|
+
</Wrapper>
|
|
434
|
+
);
|
|
436
435
|
};
|
|
437
436
|
|
|
438
437
|
DateSelect.propTypes = {
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
438
|
+
/**
|
|
439
|
+
* Date Props in GMT Format
|
|
440
|
+
*/
|
|
441
|
+
startDate: PropTypes.any,
|
|
442
|
+
/**
|
|
443
|
+
* Date onChange Function
|
|
444
|
+
*/
|
|
445
|
+
setStartDate: PropTypes.func,
|
|
446
|
+
/**
|
|
447
|
+
* Disable property of DateSelect
|
|
448
|
+
*/
|
|
449
|
+
disabled: PropTypes.bool,
|
|
451
450
|
};
|
|
452
451
|
|
|
453
452
|
DateSelect.defaultProps = {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
453
|
+
startDate: '',
|
|
454
|
+
setStartDate: () => { },
|
|
455
|
+
disabled: false,
|
|
457
456
|
};
|
|
@@ -396,6 +396,7 @@ export const DropdownSelect = ({
|
|
|
396
396
|
placeholder={placeHolder}
|
|
397
397
|
onChange={setSelectedValue}
|
|
398
398
|
isLoading={isLoading}
|
|
399
|
+
isDisabled={isDisabled}
|
|
399
400
|
{...props}
|
|
400
401
|
/>
|
|
401
402
|
) : dropdownType === 'asyncMultiSelect' ? (
|
|
@@ -415,6 +416,7 @@ export const DropdownSelect = ({
|
|
|
415
416
|
placeholder={placeHolder}
|
|
416
417
|
styles={stylesComp}
|
|
417
418
|
isMulti={true}
|
|
419
|
+
isDisabled={isDisabled}
|
|
418
420
|
hideSelectedOptions={false}
|
|
419
421
|
closeMenuOnSelect={false}
|
|
420
422
|
isSearchable={true}
|