@zohodesk/components 1.2.11 → 1.2.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.
Files changed (73) hide show
  1. package/.cli/PropLessFiles.html +1 -1
  2. package/.cli/propValidation_report.html +1 -1
  3. package/README.md +9 -0
  4. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +1 -0
  5. package/assets/Appearance/light/mode/Component_LightMode.module.css +1 -0
  6. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +1 -0
  7. package/coverage/Button/Button.js.html +1 -1
  8. package/coverage/Button/css/Button.module.css.html +1 -1
  9. package/coverage/Button/css/cssJSLogic.js.html +1 -1
  10. package/coverage/Button/css/index.html +1 -1
  11. package/coverage/Button/index.html +1 -1
  12. package/coverage/Button/props/defaultProps.js.html +1 -1
  13. package/coverage/Button/props/index.html +1 -1
  14. package/coverage/Button/props/propTypes.js.html +1 -1
  15. package/coverage/Buttongroup/Buttongroup.js.html +1 -1
  16. package/coverage/Buttongroup/Buttongroup.module.css.html +1 -1
  17. package/coverage/Buttongroup/index.html +1 -1
  18. package/coverage/Buttongroup/props/defaultProps.js.html +1 -1
  19. package/coverage/Buttongroup/props/index.html +1 -1
  20. package/coverage/Buttongroup/props/propTypes.js.html +1 -1
  21. package/coverage/coverage-final.json +10 -10
  22. package/coverage/coverage-summary.json +10 -10
  23. package/coverage/index.html +1 -1
  24. package/coverage/utils/dummyFunction.js.html +1 -1
  25. package/coverage/utils/index.html +1 -1
  26. package/es/DateTime/DateTime.module.css +12 -1
  27. package/es/v1/Card/index.js +4 -0
  28. package/es/v1/DateTime/CalendarView.js +43 -10
  29. package/es/v1/DateTime/DateTime.js +8 -4
  30. package/es/v1/DateTime/DateTimePopupFooter.js +2 -2
  31. package/es/v1/DateTime/DateTimePopupHeader.js +1 -1
  32. package/es/v1/DateTime/DateWidget.js +8 -4
  33. package/es/v1/DateTime/DaysRow.js +1 -1
  34. package/es/v1/DateTime/Time.js +2 -2
  35. package/es/v1/DateTime/YearView.js +2 -2
  36. package/es/v1/DateTime/props/defaultProps.js +57 -0
  37. package/es/v1/DateTime/props/propTypes.js +195 -0
  38. package/es/v1/DropDown/DropDown.js +31 -52
  39. package/es/v1/DropDown/DropDownHeading.js +29 -37
  40. package/es/v1/DropDown/DropDownItem.js +38 -58
  41. package/es/v1/DropDown/DropDownSearch.js +41 -49
  42. package/es/v1/DropDown/DropDownSeparator.js +7 -10
  43. package/es/v1/Provider/CssProvider.js +1 -1
  44. package/es/v1/Typography/Typography.js +4 -4
  45. package/es/v1/Typography/css/Typography.module.css +33 -0
  46. package/es/v1/Typography/css/cssJSLogic.js +14 -8
  47. package/es/v1/Typography/props/defaultProps.js +4 -4
  48. package/es/v1/Typography/props/propTypes.js +8 -5
  49. package/lib/DateTime/DateTime.module.css +12 -1
  50. package/lib/v1/Card/index.js +37 -0
  51. package/lib/v1/DateTime/CalendarView.js +44 -10
  52. package/lib/v1/DateTime/DateTime.js +8 -4
  53. package/lib/v1/DateTime/DateTimePopupFooter.js +2 -2
  54. package/lib/v1/DateTime/DateTimePopupHeader.js +1 -1
  55. package/lib/v1/DateTime/DateWidget.js +8 -4
  56. package/lib/v1/DateTime/DaysRow.js +1 -1
  57. package/lib/v1/DateTime/Time.js +2 -2
  58. package/lib/v1/DateTime/YearView.js +2 -2
  59. package/lib/v1/DateTime/props/defaultProps.js +70 -0
  60. package/lib/v1/DateTime/props/propTypes.js +227 -0
  61. package/lib/v1/DropDown/DropDown.js +34 -130
  62. package/lib/v1/DropDown/DropDownHeading.js +29 -75
  63. package/lib/v1/DropDown/DropDownItem.js +50 -102
  64. package/lib/v1/DropDown/DropDownSearch.js +50 -89
  65. package/lib/v1/DropDown/DropDownSeparator.js +8 -48
  66. package/lib/v1/Provider/CssProvider.js +1 -1
  67. package/lib/v1/Typography/Typography.js +3 -3
  68. package/lib/v1/Typography/css/Typography.module.css +33 -0
  69. package/lib/v1/Typography/css/cssJSLogic.js +8 -5
  70. package/lib/v1/Typography/props/defaultProps.js +4 -4
  71. package/lib/v1/Typography/props/propTypes.js +8 -5
  72. package/package.json +6 -6
  73. package/result.json +1 -1
@@ -2,8 +2,8 @@
2
2
 
3
3
  /** ** Libraries *** */
4
4
  import React, { PureComponent } from 'react';
5
- import { Time_propTypes } from '../../DateTime/props/propTypes';
6
- import { Time_defaultProps } from '../../DateTime/props/defaultProps';
5
+ import { Time_propTypes } from './props/propTypes';
6
+ import { Time_defaultProps } from './props/defaultProps';
7
7
  /**** Components ****/
8
8
 
9
9
  import { Container, Box } from '../Layout';
@@ -1,7 +1,7 @@
1
1
  /**** Libraries ****/
2
2
  import React from 'react';
3
- import { YearView_propTypes } from '../../DateTime/props/propTypes';
4
- import { YearView_defaultProps } from '../../DateTime/props/defaultProps';
3
+ import { YearView_propTypes } from './props/propTypes';
4
+ import { YearView_defaultProps } from './props/defaultProps';
5
5
  /**** Components ****/
6
6
 
7
7
  import { Virtualizer } from '@zohodesk/virtualizer';
@@ -0,0 +1,57 @@
1
+ export const CalendarView_defaultProps = {
2
+ dataId: 'dateContainer',
3
+ needBorder: true
4
+ };
5
+ export const Span_defaultProps = {
6
+ dataId: 'calendar-view'
7
+ };
8
+ export const DateTime_defaultProps = {
9
+ isDateTimeField: true,
10
+ dataId: 'dateTime',
11
+ needDefaultTime: true,
12
+ isAbsolute: true,
13
+ isAnimate: true,
14
+ needAction: true,
15
+ boxSize: 'large',
16
+ className: '',
17
+ innerClass: '',
18
+ dateFormat: 'dd/MM/yyyy',
19
+ isPadding: false,
20
+ i18nKeys: {},
21
+ is24Hour: false,
22
+ isDefaultPosition: false,
23
+ customDateFormat: null
24
+ };
25
+ export const DateWidget_defaultProps = {
26
+ borderColor: 'default',
27
+ dataId: 'dateWidget',
28
+ dateFormat: 'MM/dd/yyyy',
29
+ isDateTime: false,
30
+ isDisabled: false,
31
+ isPopupOpenOnEnter: false,
32
+ isReadOnly: false,
33
+ needBorder: true,
34
+ needDefaultTime: true,
35
+ placeholder: '-None-',
36
+ textBoxSize: 'medium',
37
+ textBoxVariant: 'default',
38
+ timeZone: null,
39
+ isPopupOpenOnClick: true,
40
+ isPopupCloseOnClick: false,
41
+ cantEditOnPopupOpen: true,
42
+ i18nKeys: {},
43
+ needErrorOnBlur: false,
44
+ isEditable: false,
45
+ iconOnHover: false,
46
+ is24Hour: false
47
+ };
48
+ export const YearView_defaultProps = {
49
+ dataId: 'dateContainer',
50
+ needBorder: true
51
+ };
52
+ export const DateTimePopupFooter_defaultProps = {
53
+ dataId: 'DateTimePopupFooter'
54
+ };
55
+ export const Time_defaultProps = {
56
+ dataId: 'Time'
57
+ };
@@ -0,0 +1,195 @@
1
+ import PropTypes from 'prop-types';
2
+ import { dataFormatList } from '../../../DateTime/dateFormatUtils/dateFormats';
3
+ export const CalendarView_propTypes = {
4
+ dataId: PropTypes.string,
5
+ date: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
6
+ month: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
7
+ needBorder: PropTypes.bool,
8
+ onSelect: PropTypes.func,
9
+ year: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
10
+ dayNames: PropTypes.array,
11
+ dayNamesShort: PropTypes.array,
12
+ todayMonth: PropTypes.string,
13
+ todayDate: PropTypes.string,
14
+ todayYear: PropTypes.string,
15
+ startDate: PropTypes.string,
16
+ endDate: PropTypes.string
17
+ };
18
+ export const Span_propTypes = {
19
+ dataId: PropTypes.string,
20
+ handleSelect: PropTypes.func,
21
+ i: PropTypes.number,
22
+ incremday: PropTypes.number,
23
+ isActive: PropTypes.bool,
24
+ tdclass: PropTypes.string,
25
+ userSeeMonth: PropTypes.number,
26
+ userSeeYear: PropTypes.number,
27
+ isToday: PropTypes.bool,
28
+ startDate: PropTypes.string,
29
+ endDate: PropTypes.string
30
+ };
31
+ export const DateTime_propTypes = {
32
+ boxSize: PropTypes.string,
33
+ className: PropTypes.string,
34
+ dataId: PropTypes.string,
35
+ dateFormat: PropTypes.string,
36
+ // eslint-disable-next-line react/no-unused-prop-types
37
+ defaultTime: PropTypes.string,
38
+ getMethods: PropTypes.func,
39
+ getRef: PropTypes.func,
40
+ i18nKeys: PropTypes.shape({
41
+ timeText: PropTypes.string.isRequired,
42
+ submitText: PropTypes.string.isRequired,
43
+ cancelText: PropTypes.string.isRequired,
44
+ hourEmptyText: PropTypes.string.isRequired,
45
+ minuteEmptyText: PropTypes.string.isRequired,
46
+ nextMonthTitleText: PropTypes.string.isRequired,
47
+ prevMonthTitleText: PropTypes.string.isRequired
48
+ }),
49
+ innerClass: PropTypes.string,
50
+ isAbsolute: PropTypes.bool,
51
+ isActive: PropTypes.bool,
52
+ isAnimate: PropTypes.bool,
53
+ isDateTimeField: PropTypes.bool,
54
+ isPadding: PropTypes.bool,
55
+ isReady: PropTypes.bool,
56
+ max: PropTypes.string,
57
+ maxErrorText: PropTypes.string,
58
+ min: PropTypes.string,
59
+ minErrorText: PropTypes.string,
60
+ // eslint-disable-next-line react/no-unused-prop-types
61
+ needAction: PropTypes.bool,
62
+ needDefaultTime: PropTypes.bool,
63
+ needResponsive: PropTypes.bool,
64
+ onChange: PropTypes.func,
65
+ onClear: PropTypes.func,
66
+ onClick: PropTypes.func,
67
+ onDateSelect: PropTypes.func,
68
+ onError: PropTypes.func,
69
+ onSelect: PropTypes.func,
70
+ position: PropTypes.string,
71
+ timeZone: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
72
+ value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
73
+ is24Hour: PropTypes.bool,
74
+ isDefaultPosition: PropTypes.bool,
75
+ customDateFormat: PropTypes.string,
76
+ positionsOffset: PropTypes.array,
77
+ targetOffset: PropTypes.string,
78
+ isRestrictScroll: PropTypes.bool,
79
+ dropBoxPortalId: PropTypes.string,
80
+ startDate: PropTypes.string,
81
+ endDate: PropTypes.string
82
+ };
83
+ export const DateWidget_propTypes = {
84
+ borderColor: PropTypes.oneOf(['transparent', 'default']),
85
+ cantEditOnPopupOpen: PropTypes.bool,
86
+ children: PropTypes.object,
87
+ className: PropTypes.string,
88
+ closePopupOnly: PropTypes.func,
89
+ dataId: PropTypes.string,
90
+ dateFormat: PropTypes.oneOf([...dataFormatList]),
91
+ defaultPosition: PropTypes.oneOf(['top', 'bottom', 'right', 'left']),
92
+ defaultTime: PropTypes.string,
93
+ getContainerRef: PropTypes.func,
94
+ getMethods: PropTypes.func,
95
+ getRef: PropTypes.func,
96
+ getTargetRef: PropTypes.func,
97
+ i18nKeys: PropTypes.object,
98
+ id: PropTypes.string,
99
+ isDateTime: PropTypes.bool,
100
+ isDisabled: PropTypes.bool,
101
+ isEditable: PropTypes.bool,
102
+ isPopupCloseOnClick: PropTypes.bool,
103
+ isPopupOpen: PropTypes.bool,
104
+ isPopupOpenOnClick: PropTypes.bool,
105
+ isPopupOpenOnEnter: PropTypes.bool,
106
+ isPopupReady: PropTypes.bool,
107
+ isReadOnly: PropTypes.bool,
108
+ max: PropTypes.string,
109
+ maxErrorText: PropTypes.string,
110
+ min: PropTypes.string,
111
+ minErrorText: PropTypes.string,
112
+ needBorder: PropTypes.bool,
113
+ needDefaultTime: PropTypes.bool,
114
+ needErrorOnBlur: PropTypes.bool,
115
+ needResponsive: PropTypes.bool,
116
+ onFailValidation: PropTypes.func,
117
+ onKeyDown: PropTypes.func,
118
+ onPassValidation: PropTypes.func,
119
+ onSelect: PropTypes.func,
120
+ placeholder: PropTypes.string,
121
+ position: PropTypes.string,
122
+ removeClose: PropTypes.func,
123
+ textBoxSize: PropTypes.string,
124
+ textBoxVariant: PropTypes.string,
125
+ timeZone: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
126
+ togglePopup: PropTypes.func,
127
+ validation: PropTypes.shape({
128
+ validate: PropTypes.bool,
129
+ validateOn: PropTypes.string,
130
+ rulesOrder: PropTypes.arrayOf(PropTypes.string),
131
+ rules: PropTypes.object,
132
+ messages: PropTypes.object
133
+ }),
134
+ value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
135
+ htmlId: PropTypes.string,
136
+ iconOnHover: PropTypes.bool,
137
+ is24Hour: PropTypes.bool,
138
+ isHideCurrentYear: PropTypes.bool,
139
+ onFocus: PropTypes.func,
140
+ onBlur: PropTypes.func,
141
+ boxSize: PropTypes.string,
142
+ onError: PropTypes.func,
143
+ isAbsolutePositioningNeeded: PropTypes.bool,
144
+ positionsOffset: PropTypes.array,
145
+ targetOffset: PropTypes.array,
146
+ isRestrictScroll: PropTypes.bool,
147
+ dropBoxPortalId: PropTypes.string,
148
+ a11y: PropTypes.object,
149
+ startDate: PropTypes.string,
150
+ endDate: PropTypes.string
151
+ };
152
+ export const YearView_propTypes = {
153
+ onSelectMonth: PropTypes.func,
154
+ onSelectYear: PropTypes.func,
155
+ viewedYear: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
156
+ viewedMonth: PropTypes.string,
157
+ monthNamesShort: PropTypes.array,
158
+ isMonthOpen: PropTypes.bool
159
+ };
160
+ export const DateTimePopupFooter_propTypes = {
161
+ submitText: PropTypes.string,
162
+ onSubmit: PropTypes.func,
163
+ cancelText: PropTypes.string,
164
+ onCancel: PropTypes.func,
165
+ dataId: PropTypes.string
166
+ };
167
+ export const DateTimePopupHeader_propTypes = {
168
+ onOpenYearView: PropTypes.func,
169
+ showMonthTxt: PropTypes.string,
170
+ isYearView: PropTypes.bool,
171
+ prevMonthTitleText: PropTypes.string,
172
+ nextMonthTitleText: PropTypes.string,
173
+ onModifyCalendar: PropTypes.func
174
+ };
175
+ export const DaysRow_propTypes = {
176
+ dayNames: PropTypes.array,
177
+ dayNamesShort: PropTypes.object
178
+ };
179
+ export const Time_propTypes = {
180
+ timeText: PropTypes.string,
181
+ dataId: PropTypes.string,
182
+ hourSuggestions: PropTypes.array,
183
+ onHourSelect: PropTypes.func,
184
+ hours: PropTypes.string,
185
+ hourEmptyText: PropTypes.string,
186
+ needResponsive: PropTypes.bool,
187
+ minSuggestions: PropTypes.array,
188
+ onMinutesSelect: PropTypes.func,
189
+ mins: PropTypes.string,
190
+ minuteEmptyText: PropTypes.string,
191
+ ampmSuggestions: PropTypes.array,
192
+ onAmPmSelect: PropTypes.func,
193
+ amPm: PropTypes.string,
194
+ is24Hour: PropTypes.bool
195
+ };
@@ -3,71 +3,50 @@ import { DropDown_propTypes, DropDownTarget_propTypes, DropDownContainer_propTyp
3
3
  import { DropDownItemContainer_defaultProps } from '../../DropDown/props/defaultProps';
4
4
  import style from '../../DropDown/DropDown.module.css';
5
5
  import PopOver, { PopOverTarget, PopOverContainer } from '../PopOver/PopOver';
6
- export default class DropDown extends React.Component {
7
- render() {
8
- let {
9
- children
10
- } = this.props;
11
- return /*#__PURE__*/React.createElement(PopOver, this.props, /*#__PURE__*/React.createElement(PopOverTarget, null, children[0]), /*#__PURE__*/React.createElement(PopOverContainer, null, children[1]));
12
- }
13
-
6
+ export default function DropDown(props) {
7
+ let {
8
+ children
9
+ } = props;
10
+ return /*#__PURE__*/React.createElement(PopOver, props, /*#__PURE__*/React.createElement(PopOverTarget, null, children[0]), /*#__PURE__*/React.createElement(PopOverContainer, null, children[1]));
14
11
  }
15
12
  DropDown.propTypes = DropDown_propTypes;
16
- export class DropDownTarget extends React.Component {
17
- render() {
18
- let {
19
- children
20
- } = this.props;
21
- return /*#__PURE__*/React.createElement("div", null, children);
22
- }
23
-
13
+ export function DropDownTarget(props) {
14
+ let {
15
+ children
16
+ } = props;
17
+ return /*#__PURE__*/React.createElement("div", null, children);
24
18
  }
25
19
  DropDownTarget.propTypes = DropDownTarget_propTypes;
26
- export class DropDownContainer extends React.Component {
27
- render() {
28
- let {
29
- children
30
- } = this.props;
31
- return /*#__PURE__*/React.createElement("div", null, " ", children, " ");
32
- }
33
-
20
+ export function DropDownContainer(props) {
21
+ let {
22
+ children
23
+ } = props;
24
+ return /*#__PURE__*/React.createElement("div", null, " ", children, " ");
34
25
  }
35
26
  DropDownContainer.propTypes = DropDownContainer_propTypes;
36
- export class DropDownItemContainer extends React.Component {
37
- constructor(props) {
38
- super(props);
39
- this.getRef = this.getRef.bind(this);
40
- this.onScroll = this.onScroll.bind(this);
41
- }
27
+ export function DropDownItemContainer(props) {
28
+ let {
29
+ children,
30
+ dataId,
31
+ getRef,
32
+ onScroll
33
+ } = props;
42
34
 
43
- onScroll(e) {
44
- let {
45
- onScroll
46
- } = this.props;
35
+ function handleScroll(e) {
47
36
  onScroll && onScroll(e);
48
37
  }
49
38
 
50
- getRef(ele) {
51
- let {
52
- getRef
53
- } = this.props;
39
+ function getReference(ele) {
54
40
  getRef && getRef(ele);
55
41
  }
56
42
 
57
- render() {
58
- let {
59
- children,
60
- dataId
61
- } = this.props;
62
- return /*#__PURE__*/React.createElement("div", {
63
- className: style.listGroup,
64
- onScroll: this.onScroll,
65
- ref: this.getRef,
66
- "data-id": dataId,
67
- "data-test-id": dataId
68
- }, children);
69
- }
70
-
43
+ return /*#__PURE__*/React.createElement("div", {
44
+ className: style.listGroup,
45
+ onScroll: handleScroll,
46
+ ref: getReference,
47
+ "data-id": dataId,
48
+ "data-test-id": dataId
49
+ }, children);
71
50
  }
72
51
  DropDownItemContainer.propTypes = DropDownItemContainer_propTypes;
73
52
  DropDownItemContainer.defaultProps = DropDownItemContainer_defaultProps;
@@ -2,43 +2,35 @@ import React from 'react';
2
2
  import { DropDownHeading_propTypes } from '../../DropDown/props/propTypes';
3
3
  import { DropDownHeading_defaultProps } from '../../DropDown/props/defaultProps';
4
4
  import style from '../../DropDown/DropDownHeading.module.css';
5
- export default class DropDownHeading extends React.Component {
6
- render() {
7
- let {
8
- text,
9
- title = text,
10
- children,
11
- customClass,
12
- palette,
13
- htmlId,
14
- a11y,
15
- dataId,
16
- dataSelectorId
17
- } = this.props;
18
- let {
19
- role,
20
- ariaLabelledby,
21
- ariaLabel
22
- } = a11y;
23
- return /*#__PURE__*/React.createElement("div", {
24
- className: `${style[palette]} ${customClass}`,
25
- "data-title": title,
26
- role: role,
27
- "aria-labelledby": ariaLabelledby,
28
- "aria-label": ariaLabel,
29
- id: htmlId,
30
- "data-id": dataId,
31
- "data-test-id": dataId,
32
- "data-selector-id": dataSelectorId // tabindex='0'
33
-
34
- }, text, children);
35
- }
5
+ export default function DropDownHeading(props) {
6
+ let {
7
+ text,
8
+ title = text,
9
+ children,
10
+ customClass,
11
+ palette,
12
+ htmlId,
13
+ a11y,
14
+ dataId,
15
+ dataSelectorId
16
+ } = props;
17
+ let {
18
+ role,
19
+ ariaLabelledby,
20
+ ariaLabel
21
+ } = a11y;
22
+ return /*#__PURE__*/React.createElement("div", {
23
+ className: `${style[palette]} ${customClass}`,
24
+ "data-title": title,
25
+ role: role,
26
+ "aria-labelledby": ariaLabelledby,
27
+ "aria-label": ariaLabel,
28
+ id: htmlId,
29
+ "data-id": dataId,
30
+ "data-test-id": dataId,
31
+ "data-selector-id": dataSelectorId // tabindex='0'
36
32
 
33
+ }, text, children);
37
34
  }
38
35
  DropDownHeading.propTypes = DropDownHeading_propTypes;
39
- DropDownHeading.defaultProps = DropDownHeading_defaultProps; // if (__DOCS__) {
40
- // DropDownHeading.docs = {
41
- // componentGroup: 'Form Elements',
42
- // folderName: 'Style Guide'
43
- // };
44
- // }
36
+ DropDownHeading.defaultProps = DropDownHeading_defaultProps;
@@ -1,76 +1,56 @@
1
- import React from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import { DropDownItem_propTypes } from '../../DropDown/props/propTypes';
3
3
  import { DropDownItem_defaultProps } from '../../DropDown/props/defaultProps';
4
4
  import style from '../../DropDown/DropDownItem.module.css';
5
- export default class DropDownItem extends React.Component {
6
- constructor(props) {
7
- super(props);
8
- this.onClick = this.onClick.bind(this);
9
- this.getRef = this.getRef.bind(this);
10
- this.getSelectedElement = this.getSelectedElement.bind(this);
11
- this.onHover = this.onHover.bind(this);
12
- }
5
+ export default function DropDownItem(props) {
6
+ let {
7
+ value,
8
+ active,
9
+ children,
10
+ hightlight,
11
+ dataId,
12
+ customClass = '',
13
+ index,
14
+ getRef,
15
+ onClick,
16
+ id,
17
+ onHover
18
+ } = props;
19
+ const eleRef = useRef(null);
13
20
 
14
- getRef(ele) {
15
- this.ele = ele;
16
- let {
17
- index,
18
- getRef
19
- } = this.props;
21
+ function getReference(ele) {
22
+ eleRef.current = ele;
20
23
  getRef && getRef(ele, index);
21
24
  }
22
25
 
23
- getSelectedElement() {
24
- return this.ele ? this.ele : null;
26
+ function getSelectedElement() {
27
+ return eleRef.current ? eleRef.current : null;
25
28
  }
26
29
 
27
- onClick(e) {
28
- let {
29
- onClick,
30
- id,
31
- value,
32
- index
33
- } = this.props;
30
+ function handleClick(e) {
34
31
  onClick && onClick(id, value, index, e);
35
32
  }
36
33
 
37
- onHover(e) {
38
- let {
39
- onHover,
40
- id,
41
- value,
42
- index
43
- } = this.props;
34
+ function handleHover(e) {
44
35
  onHover && onHover(id, value, index, e);
45
36
  }
46
37
 
47
- render() {
48
- let {
49
- value,
50
- active,
51
- children,
52
- hightlight,
53
- dataId,
54
- customClass = ''
55
- } = this.props;
56
- return /*#__PURE__*/React.createElement("div", {
57
- className: `${style.list} ${customClass} ${active ? style.listActive : hightlight ? style.listHover : ''} ${children && children[1] ? style.padding : ''}`,
58
- onClick: this.onClick,
59
- onMouseOver: this.onHover,
60
- ref: this.getRef,
61
- "data-id": dataId,
62
- "data-test-id": dataId
63
- }, children && children[0] ? /*#__PURE__*/React.createElement("span", {
64
- className: style.children
65
- }, " ", children[0], " ") : children !== undefined ? /*#__PURE__*/React.createElement("span", {
66
- className: style.children
67
- }, " ", children, " ") : null, value ? /*#__PURE__*/React.createElement("span", {
68
- className: style.value
69
- }, value) : '', children && children[1] ? /*#__PURE__*/React.createElement("span", {
70
- className: style.user
71
- }, " ", children[1], " ") : '');
72
- }
73
-
38
+ return /*#__PURE__*/React.createElement("div", {
39
+ className: `${style.list} ${customClass} ${active ? style.listActive : hightlight ? style.listHover : ''} ${children && children[1] ? style.padding : ''}`,
40
+ onClick: handleClick,
41
+ onMouseOver: handleHover,
42
+ ref: getReference,
43
+ "data-id": dataId,
44
+ "data-test-id": dataId
45
+ }, children && children[0] ? /*#__PURE__*/React.createElement("span", {
46
+ className: style.children
47
+ }, " ", children[0], " ") : children !== undefined ? /*#__PURE__*/React.createElement("span", {
48
+ className: style.children
49
+ }, " ", children, " ") : null, value ? /*#__PURE__*/React.createElement("span", {
50
+ className: style.value
51
+ }, value) : '', children && children[1] ? /*#__PURE__*/React.createElement("span", {
52
+ className: style.user
53
+ }, " ", children[1], " ") : '');
74
54
  }
75
55
  DropDownItem.propTypes = DropDownItem_propTypes;
76
56
  DropDownItem.defaultProps = DropDownItem_defaultProps;
@@ -1,63 +1,55 @@
1
- import React from 'react';
1
+ import React, { useEffect, useRef } from 'react';
2
2
  import { DropDownSearch_propTypes } from '../../DropDown/props/propTypes';
3
3
  import { DropDownSearch_defaultProps } from '../../DropDown/props/defaultProps';
4
4
  import TextBox from '../TextBox/TextBox';
5
5
  import style from '../../DropDown/DropDownSearch.module.css';
6
- export default class DropDownSearch extends React.Component {
7
- constructor(props) {
8
- super(props);
9
- this.getRef = this.getRef.bind(this);
10
- }
6
+ export default function DropDownSearch(props) {
7
+ let {
8
+ name,
9
+ id,
10
+ maxLength,
11
+ onKeyDown,
12
+ onChange,
13
+ value,
14
+ onBlur,
15
+ size,
16
+ textBoxSize,
17
+ placeHolder,
18
+ customClass,
19
+ getRef
20
+ } = props;
21
+ let {
22
+ searchClass = '',
23
+ customTextBox = ''
24
+ } = customClass;
25
+ const inputRef = useRef(null); // eslint-disable-next-line func-call-spacing
11
26
 
12
- componentDidMount() {
13
- this.input && this.input.focus({
27
+ useEffect(() => {
28
+ inputRef.current && input.current.focus({
14
29
  preventScroll: true
15
30
  });
16
- }
31
+ }, []);
17
32
 
18
- getRef(ele) {
19
- let {
20
- getRef
21
- } = this.props;
22
- this.input = ele;
33
+ function getReference(ele) {
34
+ inputRef.current = ele;
23
35
  getRef && getRef(ele);
24
36
  }
25
37
 
26
- render() {
27
- let {
28
- name,
29
- id,
30
- maxLength,
31
- onKeyDown,
32
- onChange,
33
- value,
34
- onBlur,
35
- size,
36
- textBoxSize,
37
- placeHolder,
38
- customClass
39
- } = this.props;
40
- let {
41
- searchClass = '',
42
- customTextBox = ''
43
- } = customClass;
44
- return /*#__PURE__*/React.createElement("div", {
45
- className: `${style.search} ${style[`${size}Search`]} ${searchClass}`
46
- }, /*#__PURE__*/React.createElement(TextBox, {
47
- id: id,
48
- inputRef: this.getRef,
49
- maxLength: maxLength,
50
- name: name,
51
- onBlur: onBlur,
52
- onChange: onChange,
53
- onKeyDown: onKeyDown,
54
- size: textBoxSize,
55
- value: value,
56
- placeHolder: placeHolder,
57
- customClass: customTextBox
58
- }));
59
- }
60
-
38
+ return /*#__PURE__*/React.createElement("div", {
39
+ className: `${style.search} ${style[`${size}Search`]} ${searchClass}`
40
+ }, /*#__PURE__*/React.createElement(TextBox, {
41
+ id: id,
42
+ inputRef: getReference,
43
+ maxLength: maxLength,
44
+ name: name,
45
+ onBlur: onBlur,
46
+ onChange: onChange,
47
+ onKeyDown: onKeyDown,
48
+ size: textBoxSize,
49
+ value: value,
50
+ placeHolder: placeHolder,
51
+ customClass: customTextBox
52
+ }));
61
53
  }
62
54
  DropDownSearch.defaultProps = DropDownSearch_defaultProps;
63
55
  DropDownSearch.propTypes = DropDownSearch_propTypes;