@zohodesk/components 1.0.0-temp-220.11 → 1.0.0-temp-230

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 (161) hide show
  1. package/.cli/propValidation_report.html +1 -1
  2. package/README.md +33 -1
  3. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +8 -0
  4. package/assets/Appearance/light/mode/Component_LightMode.module.css +8 -0
  5. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +8 -0
  6. package/es/Accordion/Accordion.js +1 -1
  7. package/es/AppContainer/AppContainer.js +1 -1
  8. package/es/Card/Card.js +48 -14
  9. package/es/Card/__tests__/Card.spec.js +81 -2
  10. package/es/Card/__tests__/__snapshots__/Card.spec.js.snap +44 -0
  11. package/es/Card/props/defaultProps.js +2 -1
  12. package/es/Card/props/propTypes.js +2 -1
  13. package/es/ColorSelect/ColorMultiSelect.js +36 -0
  14. package/es/ColorSelect/ColorSingleSelect.js +50 -0
  15. package/es/ColorSelect/__tests__/ColorMultiSelect.spec.js +59 -0
  16. package/es/ColorSelect/__tests__/ColorSingleSelect.spec.js +59 -0
  17. package/es/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +547 -0
  18. package/es/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +178 -0
  19. package/es/ColorSelect/common/ColorIndicator/ColorIndicator.js +27 -0
  20. package/es/ColorSelect/common/ColorIndicator/ColorIndicator.module.css +18 -0
  21. package/es/ColorSelect/common/ColorIndicator/__tests__/ColorSingleSelect.spec.js +60 -0
  22. package/es/ColorSelect/common/ColorIndicator/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +95 -0
  23. package/es/ColorSelect/common/ColorIndicator/props/defaultProps.js +7 -0
  24. package/es/ColorSelect/common/ColorIndicator/props/propTypes.js +9 -0
  25. package/es/ColorSelect/common/ColoredTag/ColoredTag.js +33 -0
  26. package/es/ColorSelect/common/ColoredTag/__tests__/ColoredTag.spec.js +50 -0
  27. package/es/ColorSelect/common/ColoredTag/__tests__/__snapshots__/ColoredTag.spec.js.snap +101 -0
  28. package/es/ColorSelect/common/ColoredTag/props/propTypes.js +9 -0
  29. package/es/ColorSelect/common/helpers.js +35 -0
  30. package/es/ColorSelect/props/defaultProps.js +13 -0
  31. package/es/ColorSelect/props/propTypes.js +14 -0
  32. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +9 -18
  33. package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +3 -6
  34. package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +9 -18
  35. package/es/DropBox/DropBoxElement/css/DropBoxElement.module.css +7 -0
  36. package/es/InputFieldLine/InputFieldLine.js +39 -0
  37. package/es/InputFieldLine/InputFieldLine.module.css +90 -0
  38. package/es/InputFieldLine/__tests__/InputFieldLine.spec.js +114 -0
  39. package/es/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +194 -0
  40. package/es/InputFieldLine/props/defaultProps.js +14 -0
  41. package/es/InputFieldLine/props/propTypes.js +19 -0
  42. package/es/ListItem/ListItem.js +7 -2
  43. package/es/ListItem/ListItem.module.css +6 -0
  44. package/es/ListItem/__tests__/ListItem.spec.js +8 -0
  45. package/es/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +47 -0
  46. package/es/ListItem/props/propTypes.js +2 -1
  47. package/es/MultiSelect/MultiSelect.js +14 -4
  48. package/es/MultiSelect/SelectedOptions.js +24 -1
  49. package/es/MultiSelect/Suggestions.js +3 -1
  50. package/es/MultiSelect/__tests__/MultiSelect.spec.js +38 -0
  51. package/es/MultiSelect/__tests__/SelectedOptions.spec.js +13 -0
  52. package/es/MultiSelect/__tests__/Suggestions.spec.js +12 -0
  53. package/es/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +3 -3
  54. package/es/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +9 -9
  55. package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +88 -3
  56. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +3 -3
  57. package/es/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +15 -0
  58. package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +66 -0
  59. package/es/MultiSelect/props/propTypes.js +9 -3
  60. package/es/Popup/Popup.js +3 -3
  61. package/es/Select/ArrowIcon/ArrowIcon.js +48 -0
  62. package/es/Select/ArrowIcon/ArrowIcon.module.css +22 -0
  63. package/es/Select/Select.js +33 -4
  64. package/es/Select/__tests__/Select.spec.js +25 -0
  65. package/es/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +3 -6
  66. package/es/Select/__tests__/__snapshots__/Select.spec.js.snap +516 -419
  67. package/es/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +3 -6
  68. package/es/Select/props/propTypes.js +2 -1
  69. package/es/TextBoxIcon/TextBoxIcon.js +18 -12
  70. package/es/TextBoxIcon/TextBoxIcon.module.css +3 -38
  71. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +1 -2
  72. package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +116 -225
  73. package/es/TextBoxIcon/props/propTypes.js +1 -2
  74. package/es/common/basic.module.css +0 -2
  75. package/es/components_layer.module.css +1 -0
  76. package/es/utils/Common.js +3 -1
  77. package/es/utils/dropDownUtils.js +8 -2
  78. package/es/v1/Popup/Popup.js +1 -1
  79. package/es/v1/Select/Select.js +1 -1
  80. package/lib/Accordion/Accordion.js +2 -2
  81. package/lib/AppContainer/AppContainer.js +1 -1
  82. package/lib/Card/Card.js +64 -30
  83. package/lib/Card/__tests__/Card.spec.js +118 -1
  84. package/lib/Card/__tests__/__snapshots__/Card.spec.js.snap +44 -0
  85. package/lib/Card/props/defaultProps.js +2 -1
  86. package/lib/Card/props/propTypes.js +2 -1
  87. package/lib/ColorSelect/ColorMultiSelect.js +65 -0
  88. package/lib/ColorSelect/ColorSingleSelect.js +78 -0
  89. package/lib/ColorSelect/__tests__/ColorMultiSelect.spec.js +70 -0
  90. package/lib/ColorSelect/__tests__/ColorSingleSelect.spec.js +70 -0
  91. package/lib/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +547 -0
  92. package/lib/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +178 -0
  93. package/lib/ColorSelect/common/ColorIndicator/ColorIndicator.js +40 -0
  94. package/lib/ColorSelect/common/ColorIndicator/ColorIndicator.module.css +18 -0
  95. package/lib/ColorSelect/common/ColorIndicator/__tests__/ColorSingleSelect.spec.js +67 -0
  96. package/lib/ColorSelect/common/ColorIndicator/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +95 -0
  97. package/lib/ColorSelect/common/ColorIndicator/props/defaultProps.js +14 -0
  98. package/lib/ColorSelect/common/ColorIndicator/props/propTypes.js +20 -0
  99. package/lib/ColorSelect/common/ColoredTag/ColoredTag.js +61 -0
  100. package/lib/ColorSelect/common/ColoredTag/__tests__/ColoredTag.spec.js +58 -0
  101. package/lib/ColorSelect/common/ColoredTag/__tests__/__snapshots__/ColoredTag.spec.js.snap +101 -0
  102. package/lib/ColorSelect/common/ColoredTag/props/propTypes.js +28 -0
  103. package/lib/ColorSelect/common/helpers.js +53 -0
  104. package/lib/ColorSelect/props/defaultProps.js +31 -0
  105. package/lib/ColorSelect/props/propTypes.js +35 -0
  106. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +9 -18
  107. package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +3 -6
  108. package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +9 -18
  109. package/lib/DropBox/DropBoxElement/css/DropBoxElement.module.css +7 -0
  110. package/lib/InputFieldLine/InputFieldLine.js +53 -0
  111. package/lib/InputFieldLine/InputFieldLine.module.css +90 -0
  112. package/lib/InputFieldLine/__tests__/InputFieldLine.spec.js +122 -0
  113. package/lib/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +194 -0
  114. package/lib/InputFieldLine/props/defaultProps.js +21 -0
  115. package/lib/InputFieldLine/props/propTypes.js +36 -0
  116. package/lib/ListItem/ListItem.js +7 -2
  117. package/lib/ListItem/ListItem.module.css +6 -0
  118. package/lib/ListItem/__tests__/ListItem.spec.js +8 -0
  119. package/lib/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +47 -0
  120. package/lib/ListItem/props/propTypes.js +2 -1
  121. package/lib/MultiSelect/MultiSelect.js +14 -6
  122. package/lib/MultiSelect/SelectedOptions.js +24 -1
  123. package/lib/MultiSelect/Suggestions.js +3 -1
  124. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +40 -0
  125. package/lib/MultiSelect/__tests__/SelectedOptions.spec.js +15 -0
  126. package/lib/MultiSelect/__tests__/Suggestions.spec.js +14 -0
  127. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +3 -3
  128. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +9 -9
  129. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +88 -3
  130. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +3 -3
  131. package/lib/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +15 -0
  132. package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +66 -0
  133. package/lib/MultiSelect/props/propTypes.js +9 -3
  134. package/lib/Popup/Popup.js +4 -4
  135. package/lib/Select/ArrowIcon/ArrowIcon.js +62 -0
  136. package/lib/Select/ArrowIcon/ArrowIcon.module.css +22 -0
  137. package/lib/Select/Select.js +34 -4
  138. package/lib/Select/__tests__/Select.spec.js +177 -148
  139. package/lib/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +3 -6
  140. package/lib/Select/__tests__/__snapshots__/Select.spec.js.snap +516 -419
  141. package/lib/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +3 -6
  142. package/lib/Select/props/propTypes.js +2 -1
  143. package/lib/TextBoxIcon/TextBoxIcon.js +19 -13
  144. package/lib/TextBoxIcon/TextBoxIcon.module.css +3 -38
  145. package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +1 -2
  146. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +116 -225
  147. package/lib/TextBoxIcon/props/propTypes.js +1 -2
  148. package/lib/common/basic.module.css +0 -2
  149. package/lib/components_layer.module.css +1 -0
  150. package/lib/utils/Common.js +9 -3
  151. package/lib/utils/dropDownUtils.js +10 -1
  152. package/lib/v1/Popup/Popup.js +2 -2
  153. package/lib/v1/Select/Select.js +2 -2
  154. package/package.json +24 -14
  155. package/css_error.log +0 -1
  156. package/install.md +0 -10
  157. package/postPublish.js +0 -8
  158. package/prePublish.js +0 -70
  159. package/react-cli.config.js +0 -24
  160. package/result.json +0 -1
  161. /package/.cli/{stringContains.js → themeValidate/stringContains.js} +0 -0
@@ -70,6 +70,12 @@
70
70
  .children,.secondaryValue {
71
71
  composes: dotted from '../common/common.module.css';
72
72
  }
73
+ [dir=ltr] .beforeChild{
74
+ margin-right: var(--zd_size10) ;
75
+ }
76
+ [dir=rtl] .beforeChild{
77
+ margin-left: var(--zd_size10) ;
78
+ }
73
79
  .value, .multiLineValue {
74
80
  line-height: 1.5385;
75
81
  }
@@ -8,4 +8,12 @@ describe('ListItem', () => {
8
8
  } = render( /*#__PURE__*/React.createElement(ListItem, null));
9
9
  expect(asFragment()).toMatchSnapshot();
10
10
  });
11
+ test('Should render with renderBeforeChildren', () => {
12
+ const {
13
+ asFragment
14
+ } = render( /*#__PURE__*/React.createElement(ListItem, {
15
+ renderBeforeChildren: /*#__PURE__*/React.createElement("span", null, "Before children")
16
+ }, "Content"));
17
+ expect(asFragment()).toMatchSnapshot();
18
+ });
11
19
  });
@@ -1,5 +1,52 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`ListItem Should render with renderBeforeChildren 1`] = `
4
+ <DocumentFragment>
5
+ <li
6
+ class="list medium default withBorder flex rowdir vCenter"
7
+ data-a11y-inset-focus="true"
8
+ data-id="listItem"
9
+ data-selector-id="listItem"
10
+ data-test-id="listItem"
11
+ role="option"
12
+ tabindex="0"
13
+ >
14
+ <div
15
+ class="leftBox grow basis shrinkOff"
16
+ data-id="boxComponent"
17
+ data-selector-id="box"
18
+ data-test-id="boxComponent"
19
+ >
20
+ <div
21
+ class="titleBox shrinkOff"
22
+ data-id="boxComponent"
23
+ data-selector-id="box"
24
+ data-test-id="boxComponent"
25
+ >
26
+ <div
27
+ class="beforeChild basisAuto shrinkOn"
28
+ data-id="boxComponent"
29
+ data-selector-id="box"
30
+ data-test-id="boxComponent"
31
+ >
32
+ <span>
33
+ Before children
34
+ </span>
35
+ </div>
36
+ <div
37
+ class="children basisAuto shrinkOn"
38
+ data-id="boxComponent"
39
+ data-selector-id="box"
40
+ data-test-id="boxComponent"
41
+ >
42
+ Content
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </li>
47
+ </DocumentFragment>
48
+ `;
49
+
3
50
  exports[`ListItem rendering the defult props 1`] = `
4
51
  <DocumentFragment>
5
52
  <li
@@ -65,7 +65,8 @@ export const ListItem_Props = {
65
65
  customProps: PropTypes.shape({
66
66
  ListItemProps: PropTypes.object
67
67
  }),
68
- secondaryValue: PropTypes.string
68
+ secondaryValue: PropTypes.string,
69
+ renderBeforeChildren: PropTypes.node
69
70
  };
70
71
  export const ListItemWithAvatar_Props = {
71
72
  active: PropTypes.bool,
@@ -89,7 +89,7 @@ export class MultiSelectComponent extends React.Component {
89
89
  // suggestionContainer.addEventListener('scroll', this.handleScroll);
90
90
  }
91
91
 
92
- componentWillReceiveProps(nextProps) {
92
+ UNSAFE_componentWillReceiveProps(nextProps) {
93
93
  const {
94
94
  selectedOptions,
95
95
  options,
@@ -882,6 +882,7 @@ export class MultiSelectComponent extends React.Component {
882
882
  isPopupOpen,
883
883
  ariaErrorId,
884
884
  customProps,
885
+ renderCustomSelectedValue,
885
886
  isFocus,
886
887
  isPopupReady,
887
888
  renderCustomClearComponent,
@@ -926,7 +927,11 @@ export class MultiSelectComponent extends React.Component {
926
927
  onSelect: this.handleClickSelectedOption,
927
928
  size: size,
928
929
  palette: palette,
929
- dataId: `${dataId}_selectedOptions`
930
+ dataId: `${dataId}_selectedOptions`,
931
+ renderCustomSelectedValue: renderCustomSelectedValue,
932
+ isPopupReady: isPopupReady,
933
+ isPopupOpen: isPopupOpen,
934
+ isDisabled: isDisabled
930
935
  }), /*#__PURE__*/React.createElement(Box, {
931
936
  flexible: true,
932
937
  className: style.wrapper,
@@ -1034,8 +1039,12 @@ export class MultiSelectComponent extends React.Component {
1034
1039
  boxSize,
1035
1040
  isLoading,
1036
1041
  selectAllText,
1037
- needSelectAll
1042
+ needSelectAll,
1043
+ customProps
1038
1044
  } = this.props;
1045
+ let {
1046
+ SuggestionsProps = {}
1047
+ } = customProps;
1039
1048
  const {
1040
1049
  selectedOptions,
1041
1050
  searchStr,
@@ -1125,7 +1134,8 @@ export class MultiSelectComponent extends React.Component {
1125
1134
  selectedOptions: selectedOptionIds,
1126
1135
  a11y: {
1127
1136
  role: 'option'
1128
- }
1137
+ },
1138
+ ...SuggestionsProps
1129
1139
  }) : /*#__PURE__*/React.createElement(EmptyState, {
1130
1140
  isLoading: isFetchingOptions,
1131
1141
  options: options,
@@ -22,7 +22,11 @@ export default class SelectedOptions extends React.PureComponent {
22
22
  onSelect,
23
23
  size,
24
24
  palette,
25
- dataId
25
+ dataId,
26
+ renderCustomSelectedValue,
27
+ isPopupOpen,
28
+ isPopupReady,
29
+ isDisabled: isInputDisabled
26
30
  } = this.props;
27
31
  const isDarkPalette = palette === 'dark' ? 'dark' : 'danger';
28
32
  return /*#__PURE__*/React.createElement(React.Fragment, null, selectedOptions.map(option => {
@@ -67,6 +71,25 @@ export default class SelectedOptions extends React.PureComponent {
67
71
  iconName: icon,
68
72
  iconSize: iconSize
69
73
  }));
74
+ } else if (optionType === 'custom') {
75
+ return /*#__PURE__*/React.createElement(Box, {
76
+ className: `${style.tag} ${style[size]}`,
77
+ key: `${id}customTag`,
78
+ dataId: dataId
79
+ }, typeof renderCustomSelectedValue == 'function' ? renderCustomSelectedValue({
80
+ onRemove: isDisabled || isReadOnly ? null : onRemove,
81
+ palette: isDarkPalette,
82
+ onSelectTag: isReadOnly ? null : onSelect,
83
+ getRef: getRef,
84
+ isReadOnly: isReadOnly,
85
+ isPopupReady: isPopupReady,
86
+ isPopupOpen: isPopupOpen,
87
+ isDisabled: isInputDisabled,
88
+ size,
89
+ highLightedSelectOptions,
90
+ isActive: highLightedSelectOptions.indexOf(id) >= 0,
91
+ option
92
+ }) : renderCustomSelectedValue);
70
93
  }
71
94
 
72
95
  return /*#__PURE__*/React.createElement(Box, {
@@ -19,6 +19,7 @@ export default class Suggestions extends React.PureComponent {
19
19
  needTick,
20
20
  needBorder,
21
21
  selectedOptions = [],
22
+ renderBeforeChildren,
22
23
  activeId,
23
24
  hoverId,
24
25
  dataId,
@@ -136,7 +137,8 @@ export default class Suggestions extends React.PureComponent {
136
137
  active: isActive,
137
138
  size: listItemSize,
138
139
  palette: palette,
139
- a11y: list_a11y
140
+ a11y: list_a11y,
141
+ renderBeforeChildren: renderBeforeChildren ? typeof renderBeforeChildren === 'function' ? renderBeforeChildren(suggestion) : renderBeforeChildren : null
140
142
  });
141
143
  })));
142
144
  }
@@ -1,6 +1,35 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
  import MultiSelect from "../MultiSelect";
4
+ const options = [{
5
+ id: 1,
6
+ text: 'custom 1',
7
+ optionType: 'custom'
8
+ }, {
9
+ id: 2,
10
+ text: 'custom 2',
11
+ optionType: 'custom'
12
+ }, {
13
+ id: 3,
14
+ text: 'custom 3',
15
+ optionType: 'custom'
16
+ }, {
17
+ id: 4,
18
+ text: 'custom 4',
19
+ optionType: 'custom'
20
+ }, {
21
+ id: 5,
22
+ text: 'custom 5',
23
+ optionType: 'custom'
24
+ }, {
25
+ id: 6,
26
+ text: 'custom 6',
27
+ optionType: 'custom'
28
+ }, {
29
+ id: 7,
30
+ text: 'custom 7',
31
+ optionType: 'custom'
32
+ }];
4
33
  describe('MultiSelect', () => {
5
34
  test('rendering the defult props', () => {
6
35
  const {
@@ -8,4 +37,13 @@ describe('MultiSelect', () => {
8
37
  } = render( /*#__PURE__*/React.createElement(MultiSelect, null));
9
38
  expect(asFragment()).toMatchSnapshot();
10
39
  });
40
+ test('Should render with renderCustomSelectedValue', () => {
41
+ const {
42
+ asFragment
43
+ } = render( /*#__PURE__*/React.createElement(MultiSelect, {
44
+ options: options,
45
+ renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, "MultiSelect Custom Value")
46
+ }));
47
+ expect(asFragment()).toMatchSnapshot();
48
+ });
11
49
  });
@@ -25,4 +25,17 @@ describe('SelectedOptions', () => {
25
25
  }));
26
26
  expect(asFragment()).toMatchSnapshot();
27
27
  });
28
+ test('Should render with renderCustomSelectedValue', () => {
29
+ const {
30
+ asFragment
31
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
32
+ highLightedSelectOptions: [],
33
+ selectedOptions: [{
34
+ value: 'SelectedObject1',
35
+ optionType: 'custom'
36
+ }],
37
+ renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, " SelectedOptions Custom Value")
38
+ }));
39
+ expect(asFragment()).toMatchSnapshot();
40
+ });
28
41
  });
@@ -10,4 +10,16 @@ describe('Suggestions', () => {
10
10
  }));
11
11
  expect(asFragment()).toMatchSnapshot();
12
12
  });
13
+ test('Should render with renderBeforeChildren', () => {
14
+ const {
15
+ asFragment
16
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
17
+ suggestions: [{
18
+ value: 'Suggestions Option 1',
19
+ id: '1'
20
+ }],
21
+ renderBeforeChildren: () => /*#__PURE__*/React.createElement("span", null, "Suggestions Before Children")
22
+ }));
23
+ expect(asFragment()).toMatchSnapshot();
24
+ });
13
25
  });
@@ -25,10 +25,10 @@ exports[`AdvancedGroupMultiSelect rendering the defult props 1`] = `
25
25
  "
26
26
  />
27
27
  <div
28
- class="container effect custmInputWrapper flex rowdir"
29
- data-id="containerComponent"
28
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
29
+ data-id="multiSelect_textBox"
30
30
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
31
+ data-test-id="multiSelect_textBox"
32
32
  >
33
33
  <div
34
34
  class="grow basis shrinkOff"
@@ -25,10 +25,10 @@ exports[`AdvancedMultiSelect rendering the defult props 1`] = `
25
25
  "
26
26
  />
27
27
  <div
28
- class="container effect custmInputWrapper flex rowdir"
29
- data-id="containerComponent"
28
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
29
+ data-id="textBoxIcon"
30
30
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
31
+ data-test-id="textBoxIcon"
32
32
  >
33
33
  <div
34
34
  class="grow basis shrinkOff"
@@ -98,10 +98,10 @@ exports[`AdvancedMultiSelect rendering the options array with objects and string
98
98
  "
99
99
  />
100
100
  <div
101
- class="container effect custmInputWrapper flex rowdir"
102
- data-id="containerComponent"
101
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
102
+ data-id="textBoxIcon"
103
103
  data-selector-id="textBoxIcon"
104
- data-test-id="containerComponent"
104
+ data-test-id="textBoxIcon"
105
105
  >
106
106
  <div
107
107
  class="grow basis shrinkOff"
@@ -346,10 +346,10 @@ exports[`AdvancedMultiSelect rendering the options array with only objects using
346
346
  "
347
347
  />
348
348
  <div
349
- class="container effect custmInputWrapper flex rowdir"
350
- data-id="containerComponent"
349
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
350
+ data-id="textBoxIcon"
351
351
  data-selector-id="textBoxIcon"
352
- data-test-id="containerComponent"
352
+ data-test-id="textBoxIcon"
353
353
  >
354
354
  <div
355
355
  class="grow basis shrinkOff"
@@ -1,5 +1,90 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`MultiSelect Should render with renderCustomSelectedValue 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="wrapper effect"
7
+ data-id="multiSelect"
8
+ data-selector-id="multiSelect"
9
+ data-test-id="multiSelect"
10
+ >
11
+ <div
12
+ class="container medium borderColor_default hasBorder flex cover rowdir wrap vCenter"
13
+ data-id="containerComponent"
14
+ data-selector-id="container"
15
+ data-test-id="containerComponent"
16
+ >
17
+ <div
18
+ class="wrapper grow basisAuto shrinkOn"
19
+ data-id="boxComponent"
20
+ data-selector-id="box"
21
+ data-test-id="boxComponent"
22
+ >
23
+ <span
24
+ class=" custmSpan custmSpanMedium
25
+ "
26
+ />
27
+ <div
28
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
29
+ data-id="multiSelect_textBox"
30
+ data-selector-id="textBoxIcon"
31
+ data-test-id="multiSelect_textBox"
32
+ >
33
+ <div
34
+ class="grow basis shrinkOff"
35
+ data-id="boxComponent"
36
+ data-selector-id="box"
37
+ data-test-id="boxComponent"
38
+ >
39
+ <input
40
+ aria-expanded="false"
41
+ aria-haspopup="true"
42
+ aria-required="true"
43
+ autocomplete="off"
44
+ class=" container medium default effect borderColor_default "
45
+ data-id="multiSelect_textBox"
46
+ data-selector-id="textBoxIcon"
47
+ data-test-id="multiSelect_textBox"
48
+ maxlength="250"
49
+ role="combobox"
50
+ type="text"
51
+ value=""
52
+ />
53
+ </div>
54
+ <div
55
+ class="iconContainer shrinkOff"
56
+ data-id="boxComponent"
57
+ data-selector-id="box"
58
+ data-test-id="boxComponent"
59
+ >
60
+ <div
61
+ class="flex cover rowdir"
62
+ data-id="containerComponent"
63
+ data-selector-id="container"
64
+ data-test-id="containerComponent"
65
+ >
66
+ <div
67
+ class="icon shrinkOff"
68
+ data-id="boxComponent"
69
+ data-selector-id="box"
70
+ data-test-id="boxComponent"
71
+ >
72
+ <div
73
+ class="rightPlaceholder inflex rowdir vCenter"
74
+ data-id="containerComponent"
75
+ data-selector-id="container"
76
+ data-test-id="containerComponent"
77
+ />
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </DocumentFragment>
86
+ `;
87
+
3
88
  exports[`MultiSelect rendering the defult props 1`] = `
4
89
  <DocumentFragment>
5
90
  <div
@@ -25,10 +110,10 @@ exports[`MultiSelect rendering the defult props 1`] = `
25
110
  "
26
111
  />
27
112
  <div
28
- class="container effect custmInputWrapper flex rowdir"
29
- data-id="containerComponent"
113
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
114
+ data-id="multiSelect_textBox"
30
115
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
116
+ data-test-id="multiSelect_textBox"
32
117
  >
33
118
  <div
34
119
  class="grow basis shrinkOff"
@@ -25,10 +25,10 @@ exports[`MultiSelectWithAvatar rendering the defult props 1`] = `
25
25
  "
26
26
  />
27
27
  <div
28
- class="container effect custmInputWrapper flex rowdir"
29
- data-id="containerComponent"
28
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
29
+ data-id="multiSelectWithAvatar_textBox"
30
30
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
31
+ data-test-id="multiSelectWithAvatar_textBox"
32
32
  >
33
33
  <div
34
34
  class="grow basis shrinkOff"
@@ -1,5 +1,20 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`SelectedOptions Should render with renderCustomSelectedValue 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="tag medium shrinkOff"
7
+ data-id="selectedOptions"
8
+ data-selector-id="box"
9
+ data-test-id="selectedOptions"
10
+ >
11
+ <span>
12
+ SelectedOptions Custom Value
13
+ </span>
14
+ </div>
15
+ </DocumentFragment>
16
+ `;
17
+
3
18
  exports[`SelectedOptions rendering the basic select options 1`] = `
4
19
  <DocumentFragment>
5
20
  <div
@@ -1,5 +1,71 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`Suggestions Should render with renderBeforeChildren 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="flex coldir"
7
+ data-id="containerComponent"
8
+ data-selector-id="container"
9
+ data-test-id="containerComponent"
10
+ tabindex="0"
11
+ >
12
+ <div
13
+ class="shrinkOff"
14
+ data-id="undefined"
15
+ data-selector-id="box"
16
+ data-test-id="undefined"
17
+ >
18
+ <li
19
+ aria-label="Suggestions Option 1"
20
+ aria-selected="false"
21
+ class="list medium default withBorder flex rowdir vCenter"
22
+ data-a11y-inset-focus="true"
23
+ data-a11y-list-active="false"
24
+ data-id="Suggestions Option 1"
25
+ data-selector-id="listItem"
26
+ data-test-id="Suggestions Option 1"
27
+ data-title="Suggestions Option 1"
28
+ role="option"
29
+ tabindex="0"
30
+ >
31
+ <div
32
+ class="leftBox grow basis shrinkOff"
33
+ data-id="boxComponent"
34
+ data-selector-id="box"
35
+ data-test-id="boxComponent"
36
+ >
37
+ <div
38
+ class="titleBox shrinkOff"
39
+ data-id="boxComponent"
40
+ data-selector-id="box"
41
+ data-test-id="boxComponent"
42
+ >
43
+ <div
44
+ class="beforeChild basisAuto shrinkOn"
45
+ data-id="boxComponent"
46
+ data-selector-id="box"
47
+ data-test-id="boxComponent"
48
+ >
49
+ <span>
50
+ Suggestions Before Children
51
+ </span>
52
+ </div>
53
+ <div
54
+ class="value basisAuto shrinkOn"
55
+ data-id="boxComponent"
56
+ data-selector-id="box"
57
+ data-test-id="boxComponent"
58
+ >
59
+ Suggestions Option 1
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </li>
64
+ </div>
65
+ </div>
66
+ </DocumentFragment>
67
+ `;
68
+
3
69
  exports[`Suggestions rendering the defult props 1`] = `
4
70
  <DocumentFragment>
5
71
  <div
@@ -116,7 +116,8 @@ export const MultiSelect_propTypes = {
116
116
  isFocus: PropTypes.bool,
117
117
  allowValueFallback: PropTypes.bool,
118
118
  renderCustomClearComponent: PropTypes.func,
119
- renderCustomToggleIndicator: PropTypes.oneOfType([PropTypes.func, PropTypes.node])
119
+ renderCustomToggleIndicator: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
120
+ renderCustomSelectedValue: PropTypes.oneOfType([PropTypes.func, PropTypes.node])
120
121
  };
121
122
  export const MultiSelectHeader_propTypes = {
122
123
  dataId: PropTypes.string,
@@ -153,7 +154,11 @@ export const SelectedOptions_propTypes = {
153
154
  })),
154
155
  size: PropTypes.oneOf(['medium', 'xmedium']),
155
156
  palette: PropTypes.string,
156
- dataId: PropTypes.string
157
+ dataId: PropTypes.string,
158
+ isDisabled: PropTypes.bool,
159
+ isPopupReady: PropTypes.bool,
160
+ isPopupOpen: PropTypes.bool,
161
+ renderCustomSelectedValue: PropTypes.oneOfType([PropTypes.func, PropTypes.node])
157
162
  };
158
163
  export const Suggestions_propTypes = {
159
164
  a11y: PropTypes.shape({
@@ -183,7 +188,8 @@ export const Suggestions_propTypes = {
183
188
  logo: PropTypes.string,
184
189
  optionType: PropTypes.string,
185
190
  listItemProps: PropTypes.object
186
- }))
191
+ })),
192
+ renderBeforeChildren: PropTypes.oneOfType([PropTypes.func, PropTypes.node])
187
193
  };
188
194
  export const AdvancedGroupMultiSelect_propTypes = {
189
195
  animationStyle: PropTypes.string,
package/es/Popup/Popup.js CHANGED
@@ -196,7 +196,7 @@ const Popup = function (Component) {
196
196
  }
197
197
  }
198
198
 
199
- componentWillReceiveProps(nextProps) {
199
+ UNSAFE_componentWillReceiveProps(nextProps) {
200
200
  const {
201
201
  isPopupOpen
202
202
  } = this.state;
@@ -556,10 +556,10 @@ const Popup = function (Component) {
556
556
 
557
557
  if (entry.isIntersecting === true) {
558
558
  this.isTargetElementVisible = true;
559
- dropElement && dropElement.setAttribute('data-visible', 'visible');
559
+ dropElement.setAttribute('data-visible', 'visible');
560
560
  } else if (entry.intersectionRatio === 0 && entry.isIntersecting === false) {
561
561
  this.isTargetElementVisible = false;
562
- dropElement && dropElement.setAttribute('data-visible', 'hidden');
562
+ dropElement.setAttribute('data-visible', 'hidden');
563
563
  }
564
564
  }
565
565
 
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Container } from "../../Layout";
4
+ import Icon from '@zohodesk/icons/es/Icon';
5
+ import style from "./ArrowIcon.module.css";
6
+
7
+ const ArrowIcon = props => {
8
+ const {
9
+ dataId,
10
+ isRotated,
11
+ customClass,
12
+ a11yAttributes
13
+ } = props;
14
+ const {
15
+ iconClass = '',
16
+ containerClass = ''
17
+ } = customClass;
18
+ return /*#__PURE__*/React.createElement(Container, {
19
+ isInline: true,
20
+ isCover: false,
21
+ align: "both",
22
+ dataId: `${dataId}_downIcon`,
23
+ className: `${style.arrowIcon} ${isRotated ? style.rotated : ''} ${containerClass}`,
24
+ ...a11yAttributes,
25
+ "aria-hidden": true
26
+ }, /*#__PURE__*/React.createElement(Icon, {
27
+ name: "ZD-down",
28
+ size: "7",
29
+ iconClass: iconClass
30
+ }));
31
+ };
32
+
33
+ ArrowIcon.defaultProps = {
34
+ dataId: 'arrowIcon',
35
+ isRotated: false,
36
+ customClass: {},
37
+ a11yAttributes: {}
38
+ };
39
+ ArrowIcon.propTypes = {
40
+ dataId: PropTypes.string,
41
+ isRotated: PropTypes.bool,
42
+ customClass: PropTypes.shape({
43
+ iconClass: PropTypes.string,
44
+ containerClass: PropTypes.string
45
+ }),
46
+ a11yAttributes: PropTypes.object
47
+ };
48
+ export default ArrowIcon;