@zohodesk/components 1.4.21 → 1.4.23

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 (153) hide show
  1. package/README.md +34 -0
  2. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +15 -0
  3. package/assets/Appearance/light/mode/Component_LightMode.module.css +15 -0
  4. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +15 -0
  5. package/es/ColorSelect/ColorMultiSelect.js +38 -0
  6. package/es/ColorSelect/ColorSelect.module.css +3 -0
  7. package/es/ColorSelect/ColorSingleSelect.js +83 -0
  8. package/es/ColorSelect/__tests__/ColorMultiSelect.spec.js +71 -0
  9. package/es/ColorSelect/__tests__/ColorSingleSelect.spec.js +80 -0
  10. package/es/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +536 -0
  11. package/es/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +422 -0
  12. package/es/ColorSelect/_shared/ColorIndicator/ColorIndicator.js +33 -0
  13. package/es/ColorSelect/_shared/ColorIndicator/ColorIndicator.module.css +19 -0
  14. package/es/ColorSelect/_shared/ColorIndicator/__tests__/ColorIndicator.spec.js +79 -0
  15. package/es/ColorSelect/_shared/ColorIndicator/__tests__/__snapshots__/ColorIndicator.spec.js.snap +106 -0
  16. package/es/ColorSelect/_shared/ColorIndicator/props/defaultProps.js +8 -0
  17. package/es/ColorSelect/_shared/ColorIndicator/props/propTypes.js +10 -0
  18. package/es/ColorSelect/_shared/ColoredTag/ColoredTag.js +33 -0
  19. package/es/ColorSelect/_shared/ColoredTag/__tests__/ColoredTag.spec.js +50 -0
  20. package/es/ColorSelect/_shared/ColoredTag/__tests__/__snapshots__/ColoredTag.spec.js.snap +101 -0
  21. package/es/ColorSelect/_shared/ColoredTag/props/propTypes.js +10 -0
  22. package/es/ColorSelect/_shared/helpers/renderHelpers.js +43 -0
  23. package/es/ColorSelect/props/defaultProps.js +12 -0
  24. package/es/ColorSelect/props/propTypes.js +17 -0
  25. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +3 -18
  26. package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +1 -6
  27. package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +3 -18
  28. package/es/ListItem/ListItem.js +6 -1
  29. package/es/ListItem/ListItem.module.css +6 -0
  30. package/es/ListItem/__tests__/ListItem.spec.js +8 -0
  31. package/es/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +47 -0
  32. package/es/ListItem/props/propTypes.js +1 -0
  33. package/es/MultiSelect/MultiSelect.js +11 -5
  34. package/es/MultiSelect/SelectedOptions.js +24 -1
  35. package/es/MultiSelect/Suggestions.js +4 -1
  36. package/es/MultiSelect/__tests__/MultiSelect.spec.js +38 -0
  37. package/es/MultiSelect/__tests__/SelectedOptions.spec.js +13 -0
  38. package/es/MultiSelect/__tests__/Suggestions.spec.js +12 -0
  39. package/es/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +1 -3
  40. package/es/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +3 -9
  41. package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +91 -12
  42. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +1 -3
  43. package/es/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +15 -0
  44. package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +66 -0
  45. package/es/MultiSelect/props/propTypes.js +6 -0
  46. package/es/Select/Select.js +67 -5
  47. package/es/Select/__tests__/Select.spec.js +10 -0
  48. package/es/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +1 -6
  49. package/es/Select/__tests__/__snapshots__/Select.spec.js.snap +111 -441
  50. package/es/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +1 -6
  51. package/es/Select/props/defaultProps.js +2 -1
  52. package/es/Select/props/propTypes.js +3 -1
  53. package/es/TextBox/__tests__/TextBox.spec.js +1 -1
  54. package/es/TextBoxIcon/TextBoxIcon.js +17 -12
  55. package/es/TextBoxIcon/TextBoxIcon.module.css +3 -38
  56. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +9 -2
  57. package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +78 -224
  58. package/es/TextBoxIcon/props/propTypes.js +1 -2
  59. package/es/Typography/Typography.js +9 -2
  60. package/es/Typography/__tests__/Typography.spec.js +427 -0
  61. package/es/Typography/__tests__/__snapshots__/Typography.spec.js.snap +506 -0
  62. package/es/Typography/props/defaultProps.js +2 -1
  63. package/es/Typography/props/propTypes.js +24 -5
  64. package/es/Typography/utils/textHighlighter.js +139 -0
  65. package/es/shared/ArrowIcon/ArrowIcon.js +51 -0
  66. package/es/shared/ArrowIcon/ArrowIcon.module.css +43 -0
  67. package/es/shared/ArrowIcon/__tests__/ArrowIcon.spec.js +100 -0
  68. package/es/shared/ArrowIcon/__tests__/__snapshots__/ArrowIcon.spec.js.snap +221 -0
  69. package/es/shared/ArrowIcon/props/defaultProps.js +11 -0
  70. package/es/shared/ArrowIcon/props/propTypes.js +17 -0
  71. package/es/shared/InputFieldLine/InputFieldLine.js +45 -0
  72. package/es/shared/InputFieldLine/InputFieldLine.module.css +88 -0
  73. package/es/shared/InputFieldLine/__tests__/InputFieldLine.spec.js +114 -0
  74. package/es/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +194 -0
  75. package/es/shared/InputFieldLine/props/defaultProps.js +16 -0
  76. package/es/shared/InputFieldLine/props/propTypes.js +22 -0
  77. package/es/utils/Common.js +3 -2
  78. package/es/utils/dropDownUtils.js +7 -1
  79. package/lib/ColorSelect/ColorMultiSelect.js +71 -0
  80. package/lib/ColorSelect/ColorSelect.module.css +3 -0
  81. package/lib/ColorSelect/ColorSingleSelect.js +111 -0
  82. package/lib/ColorSelect/__tests__/ColorMultiSelect.spec.js +82 -0
  83. package/lib/ColorSelect/__tests__/ColorSingleSelect.spec.js +91 -0
  84. package/lib/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +536 -0
  85. package/lib/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +422 -0
  86. package/lib/ColorSelect/_shared/ColorIndicator/ColorIndicator.js +47 -0
  87. package/lib/ColorSelect/_shared/ColorIndicator/ColorIndicator.module.css +19 -0
  88. package/lib/ColorSelect/_shared/ColorIndicator/__tests__/ColorIndicator.spec.js +86 -0
  89. package/lib/ColorSelect/_shared/ColorIndicator/__tests__/__snapshots__/ColorIndicator.spec.js.snap +106 -0
  90. package/lib/ColorSelect/_shared/ColorIndicator/props/defaultProps.js +15 -0
  91. package/lib/ColorSelect/_shared/ColorIndicator/props/propTypes.js +21 -0
  92. package/lib/ColorSelect/_shared/ColoredTag/ColoredTag.js +69 -0
  93. package/lib/ColorSelect/_shared/ColoredTag/__tests__/ColoredTag.spec.js +58 -0
  94. package/lib/ColorSelect/_shared/ColoredTag/__tests__/__snapshots__/ColoredTag.spec.js.snap +101 -0
  95. package/lib/ColorSelect/_shared/ColoredTag/props/propTypes.js +29 -0
  96. package/lib/ColorSelect/_shared/helpers/renderHelpers.js +63 -0
  97. package/lib/ColorSelect/props/defaultProps.js +32 -0
  98. package/lib/ColorSelect/props/propTypes.js +39 -0
  99. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +3 -18
  100. package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +1 -6
  101. package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +3 -18
  102. package/lib/ListItem/ListItem.js +6 -1
  103. package/lib/ListItem/ListItem.module.css +6 -0
  104. package/lib/ListItem/__tests__/ListItem.spec.js +12 -4
  105. package/lib/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +47 -0
  106. package/lib/ListItem/props/propTypes.js +1 -0
  107. package/lib/MultiSelect/MultiSelect.js +11 -5
  108. package/lib/MultiSelect/SelectedOptions.js +24 -1
  109. package/lib/MultiSelect/Suggestions.js +5 -1
  110. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +42 -2
  111. package/lib/MultiSelect/__tests__/SelectedOptions.spec.js +15 -0
  112. package/lib/MultiSelect/__tests__/Suggestions.spec.js +16 -2
  113. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +1 -3
  114. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +3 -9
  115. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +91 -12
  116. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +1 -3
  117. package/lib/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +15 -0
  118. package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +66 -0
  119. package/lib/MultiSelect/props/propTypes.js +6 -0
  120. package/lib/Select/Select.js +67 -4
  121. package/lib/Select/__tests__/Select.spec.js +12 -0
  122. package/lib/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +1 -6
  123. package/lib/Select/__tests__/__snapshots__/Select.spec.js.snap +111 -441
  124. package/lib/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +1 -6
  125. package/lib/Select/props/defaultProps.js +2 -1
  126. package/lib/Select/props/propTypes.js +3 -1
  127. package/lib/TextBox/__tests__/TextBox.spec.js +36 -36
  128. package/lib/TextBoxIcon/TextBoxIcon.js +18 -13
  129. package/lib/TextBoxIcon/TextBoxIcon.module.css +3 -38
  130. package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +9 -2
  131. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +78 -224
  132. package/lib/TextBoxIcon/props/propTypes.js +1 -2
  133. package/lib/Typography/Typography.js +9 -2
  134. package/lib/Typography/__tests__/Typography.spec.js +436 -0
  135. package/lib/Typography/__tests__/__snapshots__/Typography.spec.js.snap +506 -0
  136. package/lib/Typography/props/defaultProps.js +2 -1
  137. package/lib/Typography/props/propTypes.js +31 -6
  138. package/lib/Typography/utils/textHighlighter.js +160 -0
  139. package/lib/shared/ArrowIcon/ArrowIcon.js +65 -0
  140. package/lib/shared/ArrowIcon/ArrowIcon.module.css +43 -0
  141. package/lib/shared/ArrowIcon/__tests__/ArrowIcon.spec.js +107 -0
  142. package/lib/shared/ArrowIcon/__tests__/__snapshots__/ArrowIcon.spec.js.snap +221 -0
  143. package/lib/shared/ArrowIcon/props/defaultProps.js +18 -0
  144. package/lib/shared/ArrowIcon/props/propTypes.js +28 -0
  145. package/lib/shared/InputFieldLine/InputFieldLine.js +57 -0
  146. package/lib/shared/InputFieldLine/InputFieldLine.module.css +88 -0
  147. package/lib/shared/InputFieldLine/__tests__/InputFieldLine.spec.js +122 -0
  148. package/lib/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +194 -0
  149. package/lib/shared/InputFieldLine/props/defaultProps.js +23 -0
  150. package/lib/shared/InputFieldLine/props/propTypes.js +39 -0
  151. package/lib/utils/Common.js +8 -4
  152. package/lib/utils/dropDownUtils.js +10 -1
  153. package/package.json +9 -7
@@ -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
  const testData = ['text1', 'text2', 'text3', 'text4', 'text5', 'text6', 'text7', 'text8', 'text9', 'text10'];
5
34
  const testSelectedData = ['text1', 'text2', 'text3'];
6
35
  describe('MultiSelect', () => {
@@ -10,6 +39,15 @@ describe('MultiSelect', () => {
10
39
  } = render( /*#__PURE__*/React.createElement(MultiSelect, null));
11
40
  expect(asFragment()).toMatchSnapshot();
12
41
  });
42
+ test('Should render with renderCustomSelectedValue', () => {
43
+ const {
44
+ asFragment
45
+ } = render( /*#__PURE__*/React.createElement(MultiSelect, {
46
+ options: options,
47
+ renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, "MultiSelect Custom Value")
48
+ }));
49
+ expect(asFragment()).toMatchSnapshot();
50
+ });
13
51
  test('rendering with limit feature', () => {
14
52
  const {
15
53
  asFragment
@@ -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
  });
@@ -57,6 +57,18 @@ describe('Suggestions', () => {
57
57
  }));
58
58
  expect(asFragment()).toMatchSnapshot();
59
59
  });
60
+ test('Should render with renderBeforeChildren', () => {
61
+ const {
62
+ asFragment
63
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
64
+ suggestions: [{
65
+ value: 'Suggestions Option 1',
66
+ id: '1'
67
+ }],
68
+ renderBeforeChildren: () => /*#__PURE__*/React.createElement("span", null, "Suggestions Before Children")
69
+ }));
70
+ expect(asFragment()).toMatchSnapshot();
71
+ });
60
72
  test('rendering with limit props', () => {
61
73
  const {
62
74
  asFragment
@@ -25,10 +25,8 @@ 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"
30
29
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
32
30
  >
33
31
  <div
34
32
  class="grow basis shrinkOff"
@@ -25,10 +25,8 @@ 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"
30
29
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
32
30
  >
33
31
  <div
34
32
  class="grow basis shrinkOff"
@@ -98,10 +96,8 @@ exports[`AdvancedMultiSelect rendering the options array with objects and string
98
96
  "
99
97
  />
100
98
  <div
101
- class="container effect custmInputWrapper flex rowdir"
102
- data-id="containerComponent"
99
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
103
100
  data-selector-id="textBoxIcon"
104
- data-test-id="containerComponent"
105
101
  >
106
102
  <div
107
103
  class="grow basis shrinkOff"
@@ -346,10 +342,8 @@ exports[`AdvancedMultiSelect rendering the options array with only objects using
346
342
  "
347
343
  />
348
344
  <div
349
- class="container effect custmInputWrapper flex rowdir"
350
- data-id="containerComponent"
345
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
351
346
  data-selector-id="textBoxIcon"
352
- data-test-id="containerComponent"
353
347
  >
354
348
  <div
355
349
  class="grow basis shrinkOff"
@@ -1,5 +1,88 @@
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-selector-id="textBoxIcon"
30
+ >
31
+ <div
32
+ class="grow basis shrinkOff"
33
+ data-id="boxComponent"
34
+ data-selector-id="box"
35
+ data-test-id="boxComponent"
36
+ >
37
+ <input
38
+ aria-expanded="false"
39
+ aria-haspopup="true"
40
+ aria-required="true"
41
+ autocomplete="off"
42
+ class=" container medium default effect borderColor_default "
43
+ data-id="multiSelect_textBox"
44
+ data-selector-id="textBoxIcon"
45
+ data-test-id="multiSelect_textBox"
46
+ maxlength="250"
47
+ role="combobox"
48
+ type="text"
49
+ value=""
50
+ />
51
+ </div>
52
+ <div
53
+ class="iconContainer shrinkOff"
54
+ data-id="boxComponent"
55
+ data-selector-id="box"
56
+ data-test-id="boxComponent"
57
+ >
58
+ <div
59
+ class="flex cover rowdir"
60
+ data-id="containerComponent"
61
+ data-selector-id="container"
62
+ data-test-id="containerComponent"
63
+ >
64
+ <div
65
+ class="icon shrinkOff"
66
+ data-id="boxComponent"
67
+ data-selector-id="box"
68
+ data-test-id="boxComponent"
69
+ >
70
+ <div
71
+ class="rightPlaceholder inflex rowdir vCenter"
72
+ data-id="containerComponent"
73
+ data-selector-id="container"
74
+ data-test-id="containerComponent"
75
+ />
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </DocumentFragment>
84
+ `;
85
+
3
86
  exports[`MultiSelect rendering the defult props 1`] = `
4
87
  <DocumentFragment>
5
88
  <div
@@ -25,10 +108,8 @@ exports[`MultiSelect rendering the defult props 1`] = `
25
108
  "
26
109
  />
27
110
  <div
28
- class="container effect custmInputWrapper flex rowdir"
29
- data-id="containerComponent"
111
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
30
112
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
32
113
  >
33
114
  <div
34
115
  class="grow basis shrinkOff"
@@ -106,7 +187,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
106
187
  data-test-id="multiSelect_selectedOptions"
107
188
  >
108
189
  <div
109
- aria-labelledby="5"
190
+ aria-labelledby="7"
110
191
  class="container effect medium lgRadius danger pointer "
111
192
  data-id="tag_Tag"
112
193
  data-selector-id="tag"
@@ -117,7 +198,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
117
198
  <div
118
199
  aria-hidden="true"
119
200
  class="text mediumtext"
120
- id="5"
201
+ id="7"
121
202
  >
122
203
  text1
123
204
  </div>
@@ -156,7 +237,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
156
237
  data-test-id="multiSelect_selectedOptions"
157
238
  >
158
239
  <div
159
- aria-labelledby="6"
240
+ aria-labelledby="8"
160
241
  class="container effect medium lgRadius danger pointer "
161
242
  data-id="tag_Tag"
162
243
  data-selector-id="tag"
@@ -167,7 +248,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
167
248
  <div
168
249
  aria-hidden="true"
169
250
  class="text mediumtext"
170
- id="6"
251
+ id="8"
171
252
  >
172
253
  text2
173
254
  </div>
@@ -206,7 +287,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
206
287
  data-test-id="multiSelect_selectedOptions"
207
288
  >
208
289
  <div
209
- aria-labelledby="7"
290
+ aria-labelledby="9"
210
291
  class="container effect medium lgRadius danger pointer "
211
292
  data-id="tag_Tag"
212
293
  data-selector-id="tag"
@@ -217,7 +298,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
217
298
  <div
218
299
  aria-hidden="true"
219
300
  class="text mediumtext"
220
- id="7"
301
+ id="9"
221
302
  >
222
303
  text3
223
304
  </div>
@@ -260,10 +341,8 @@ exports[`MultiSelect rendering with limit feature 1`] = `
260
341
  "
261
342
  />
262
343
  <div
263
- class="container effect custmInputWrapper flex rowdir"
264
- data-id="containerComponent"
344
+ class="varClass customContainer effect container custmInputWrapper flex rowdir"
265
345
  data-selector-id="textBoxIcon"
266
- data-test-id="containerComponent"
267
346
  >
268
347
  <div
269
348
  class="grow basis shrinkOff"
@@ -25,10 +25,8 @@ 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"
30
29
  data-selector-id="textBoxIcon"
31
- data-test-id="containerComponent"
32
30
  >
33
31
  <div
34
32
  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
@@ -120,6 +120,7 @@ export const MultiSelect_propTypes = {
120
120
  allowValueFallback: PropTypes.bool,
121
121
  renderCustomClearComponent: PropTypes.func,
122
122
  renderCustomToggleIndicator: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
123
+ renderCustomSelectedValue: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
123
124
  limit: PropTypes.number,
124
125
  secondaryField: PropTypes.string
125
126
  };
@@ -158,6 +159,10 @@ export const SelectedOptions_propTypes = {
158
159
  size: PropTypes.oneOf(['medium', 'xmedium']),
159
160
  palette: PropTypes.string,
160
161
  dataId: PropTypes.string,
162
+ isDisabled: PropTypes.bool,
163
+ isPopupReady: PropTypes.bool,
164
+ isPopupOpen: PropTypes.bool,
165
+ renderCustomSelectedValue: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
161
166
  limit: PropTypes.number
162
167
  };
163
168
  export const Suggestions_propTypes = {
@@ -192,6 +197,7 @@ export const Suggestions_propTypes = {
192
197
  optionType: PropTypes.string,
193
198
  listItemProps: PropTypes.object
194
199
  })),
200
+ renderBeforeChildren: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
195
201
  limit: PropTypes.number,
196
202
  limitReachedMessage: PropTypes.string
197
203
  };
@@ -16,10 +16,12 @@ import { Icon } from '@zohodesk/icons';
16
16
  import ResponsiveDropBox from "../ResponsiveDropBox/ResponsiveDropBox";
17
17
  import { ResponsiveReceiver } from "../Responsive/CustomResponsive";
18
18
  import Loader from '@zohodesk/svg/lib/Loader/Loader';
19
+ import InputFieldLine from "../shared/InputFieldLine/InputFieldLine.js";
19
20
  /**** Methods ****/
20
21
 
21
22
  import { dummyObj, makeFormatOptions, makeGetMultiSelectFilterSuggestions as makeGetFilterSuggestions, makeGetSelectedValueText as makeGetSelectedValue } from "../utils/dropDownUtils";
22
- import { debounce, scrollTo, getIsEmptyValue, getSearchString, findScrollEnd, getKeyValue } from "../utils/Common.js";
23
+ import { debounce, scrollTo, getIsEmptyValue, getSearchString, findScrollEnd, getKeyValue, DUMMY_OBJECT } from "../utils/Common.js";
24
+ import { isRenderable, renderNode } from '@zohodesk/utils';
23
25
  /**** CSS ****/
24
26
 
25
27
  import style from "./Select.module.css";
@@ -71,6 +73,7 @@ export class SelectComponent extends Component {
71
73
 
72
74
  this.state = {
73
75
  selected,
76
+ selectedValueDetails,
74
77
  options: allOptions,
75
78
  optionsNormalize: normalizedAllOptions,
76
79
  hoverIndex,
@@ -106,6 +109,7 @@ export class SelectComponent extends Component {
106
109
  this.handleAddNewOption = this.handleAddNewOption.bind(this);
107
110
  this.handleExposePopupHandlers = this.handleExposePopupHandlers.bind(this);
108
111
  this.handleGetAddNewOptionText = this.handleGetAddNewOptionText.bind(this);
112
+ this.getInputFieldLineA11y = this.getInputFieldLineA11y.bind(this);
109
113
  this.getVirtualizerPublicMethods = this.getVirtualizerPublicMethods.bind(this);
110
114
  this.scrollToHighlightedIndex = this.scrollToHighlightedIndex.bind(this);
111
115
  this.setSuggestionsVirtualizerContainerRefFunction = this.setSuggestionsVirtualizerContainerRefFunction.bind(this);
@@ -170,6 +174,7 @@ export class SelectComponent extends Component {
170
174
  options: allOptions,
171
175
  optionsNormalize: normalizedAllOptions,
172
176
  selected,
177
+ selectedValueDetails,
173
178
  hoverIndex: oldHoverIndex ? oldHoverIndex : hoverIndex,
174
179
  selectedId,
175
180
  selectedValueIndex: hoverIndex
@@ -717,6 +722,27 @@ export class SelectComponent extends Component {
717
722
  });
718
723
  }
719
724
 
725
+ getInputFieldLineA11y(_ref2) {
726
+ let {
727
+ setAriaId,
728
+ isReadOnly,
729
+ isDisabled,
730
+ isPopupOpen,
731
+ inputFieldLineA11y
732
+ } = _ref2;
733
+ return {
734
+ tabIndex: 0,
735
+ role: 'button',
736
+ 'aria-haspopup': 'listbox',
737
+ ...inputFieldLineA11y,
738
+ 'aria-controls': setAriaId,
739
+ 'aria-owns': setAriaId,
740
+ 'aria-expanded': !isReadOnly && !isDisabled && isPopupOpen,
741
+ 'aria-disabled': isDisabled,
742
+ 'aria-readonly': isReadOnly
743
+ };
744
+ }
745
+
720
746
  getVirtualizerPublicMethods(methods) {
721
747
  this.virtualizerMethods = methods;
722
748
  }
@@ -781,7 +807,9 @@ export class SelectComponent extends Component {
781
807
  dropBoxPortalId,
782
808
  isVirtualizerEnabled,
783
809
  renderCustomToggleIndicator,
784
- renderCustomSearchClearComponent
810
+ renderCustomSearchClearComponent,
811
+ renderCustomSelectedValue,
812
+ inputFieldLineA11y
785
813
  } = this.props;
786
814
  let {
787
815
  TextBoxIcon_i18n,
@@ -794,6 +822,7 @@ export class SelectComponent extends Component {
794
822
  let {
795
823
  hoverIndex,
796
824
  selected,
825
+ selectedValueDetails,
797
826
  searchStr,
798
827
  isFetchingOptions,
799
828
  selectedId,
@@ -808,6 +837,13 @@ export class SelectComponent extends Component {
808
837
  SuggestionsProps = {},
809
838
  TextBoxIconProps = {}
810
839
  } = customProps;
840
+ const inputFieldLineA11yAttributes = this.getInputFieldLineA11y({
841
+ setAriaId,
842
+ isReadOnly,
843
+ isDisabled,
844
+ isPopupOpen,
845
+ inputFieldLineA11y
846
+ });
811
847
  return /*#__PURE__*/React.createElement("div", {
812
848
  className: `${isParentBased || isReadOnly || isDisabled ? style.container : ''} ${style[`box_${size}`]} ${isReadOnly ? style.readonly : ''} ${borderColor === 'transparent' ? style.transparentContainer : ''} ${iconOnHover && (isReadOnly || isDisabled) ? style.iconOnHoverReadonly : iconOnHover && !(isReadOnly || isDisabled) ? style.iconOnHoverStyle : ''}`,
813
849
  "data-title": isDisabled ? title : null,
@@ -818,7 +854,33 @@ export class SelectComponent extends Component {
818
854
  ref: getTargetRef,
819
855
  "data-id": `${isDisabled ? `${dataId}_disabled` : isReadOnly ? `${dataId}_readOnly` : dataId}`,
820
856
  "data-test-id": `${isDisabled ? `${dataId}_disabled` : isReadOnly ? `${dataId}_readOnly` : dataId}`
821
- }, needSelectDownIcon ? /*#__PURE__*/React.createElement(TextBoxIcon, {
857
+ }, isRenderable(renderCustomSelectedValue) ? /*#__PURE__*/React.createElement(InputFieldLine, {
858
+ isActive: isPopupReady,
859
+ border: needBorder ? 'bottom' : 'none',
860
+ size: size,
861
+ borderColor: borderColor,
862
+ isDisabled: isDisabled,
863
+ isReadOnly: isReadOnly,
864
+ onKeyDown: this.handleKeyDown,
865
+ hasPadding: true,
866
+ a11yAttributes: inputFieldLineA11yAttributes
867
+ }, renderNode(renderCustomSelectedValue, {
868
+ isDisabled,
869
+ isPopupOpen,
870
+ isReadOnly,
871
+ isActive: isPopupReady,
872
+ size,
873
+ option: selectedValueDetails[selectedId] || DUMMY_OBJECT,
874
+ selectedId,
875
+ placeHolder,
876
+ htmlId,
877
+ maxLength,
878
+ getRef: this.valueInputRef,
879
+ onFocus: this.handleSelectFocus,
880
+ onKeyDown: this.handleKeyDown,
881
+ onKeyPress: this.handleValueInputChange,
882
+ ariaControlsId: setAriaId
883
+ })) : needSelectDownIcon ? /*#__PURE__*/React.createElement(TextBoxIcon, {
822
884
  a11y: {
823
885
  role: 'Menuitem',
824
886
  ariaLabel: TextBox_ally_label,
@@ -925,10 +987,10 @@ export class SelectComponent extends Component {
925
987
  })), !isReadOnly && !isDisabled && isPopupOpen ? /*#__PURE__*/React.createElement(ResponsiveReceiver, {
926
988
  query: this.responsiveFunc,
927
989
  responsiveId: "Helmet"
928
- }, _ref2 => {
990
+ }, _ref3 => {
929
991
  let {
930
992
  tabletMode
931
- } = _ref2;
993
+ } = _ref3;
932
994
  return /*#__PURE__*/React.createElement(ResponsiveDropBox, {
933
995
  animationStyle: animationStyle,
934
996
  boxPosition: position || `${defaultDropBoxPosition}`,
@@ -1150,4 +1150,14 @@ describe('Select dataId snapshot - ', () => {
1150
1150
  userEvent.click(getByRole(selectInputRole));
1151
1151
  expect(asFragment()).toMatchSnapshot();
1152
1152
  });
1153
+ test('Should render with renderCustomSelectedValue', () => {
1154
+ const {
1155
+ asFragment
1156
+ } = render( /*#__PURE__*/React.createElement(Select, {
1157
+ options: options,
1158
+ selectedValue: "Option 2",
1159
+ renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("div", null, " Select Custom Option 2")
1160
+ }));
1161
+ expect(asFragment()).toMatchSnapshot();
1162
+ });
1153
1163
  });
@@ -14,10 +14,8 @@ exports[`GroupSelect rendering the defult props 1`] = `
14
14
  data-test-id="GroupSelect"
15
15
  >
16
16
  <div
17
- class="container effect flex rowdir"
18
- data-id="containerComponent"
17
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container flex rowdir"
19
18
  data-selector-id="textBoxIcon"
20
- data-test-id="containerComponent"
21
19
  >
22
20
  <div
23
21
  class="grow basis shrinkOff"
@@ -80,9 +78,6 @@ exports[`GroupSelect rendering the defult props 1`] = `
80
78
  </div>
81
79
  </div>
82
80
  </div>
83
- <div
84
- class="line borderColor_default "
85
- />
86
81
  </div>
87
82
  </div>
88
83
  </div>