@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
@@ -0,0 +1,33 @@
1
+ import React, { useMemo } from 'react';
2
+ import { propTypes } from "./props/propTypes";
3
+ import Tag from "../../../Tag/Tag";
4
+ import { DUMMY_OBJECT } from "../../../utils/Common.js";
5
+
6
+ function ColoredTag(props) {
7
+ const {
8
+ colorConfig,
9
+ customAttributes,
10
+ isActive,
11
+ ...rest
12
+ } = props;
13
+ const {
14
+ textColor,
15
+ backgroundColor,
16
+ borderColor
17
+ } = colorConfig || DUMMY_OBJECT;
18
+ const style = useMemo(() => ({
19
+ '--tag_bg_color': backgroundColor,
20
+ '--tag_text_color': textColor,
21
+ '--tag_border_color': borderColor
22
+ }), [backgroundColor, textColor, borderColor]);
23
+ const composedAttributes = useMemo(() => ({ ...customAttributes,
24
+ style
25
+ }), [customAttributes, style]);
26
+ return /*#__PURE__*/React.createElement(Tag, { ...rest,
27
+ active: isActive,
28
+ customAttributes: composedAttributes
29
+ });
30
+ }
31
+
32
+ ColoredTag.propTypes = propTypes;
33
+ export default ColoredTag;
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import ColoredTag from "../ColoredTag";
4
+ describe('ColoredTag', () => {
5
+ test('rendering the defult props', () => {
6
+ const {
7
+ asFragment
8
+ } = render( /*#__PURE__*/React.createElement(ColoredTag, null));
9
+ expect(asFragment()).toMatchSnapshot();
10
+ });
11
+ test('rendering with isActive true', () => {
12
+ const {
13
+ asFragment
14
+ } = render( /*#__PURE__*/React.createElement(ColoredTag, {
15
+ isActive: true
16
+ }));
17
+ expect(asFragment()).toMatchSnapshot();
18
+ });
19
+ test('rendering with colorConfig', () => {
20
+ const colorConfig = {
21
+ backgroundColor: 'lightsteelblue',
22
+ textColor: 'dodgerblue',
23
+ borderColor: 'dodgerblue'
24
+ };
25
+ const {
26
+ asFragment
27
+ } = render( /*#__PURE__*/React.createElement(ColoredTag, {
28
+ colorConfig: colorConfig
29
+ }));
30
+ expect(asFragment()).toMatchSnapshot();
31
+ });
32
+ test('rendering with customAttributes', () => {
33
+ const {
34
+ asFragment
35
+ } = render( /*#__PURE__*/React.createElement(ColoredTag, {
36
+ customAttributes: {
37
+ 'data-custom-attribute': 'true'
38
+ }
39
+ }));
40
+ expect(asFragment()).toMatchSnapshot();
41
+ });
42
+ test('rendering with text', () => {
43
+ const {
44
+ asFragment
45
+ } = render( /*#__PURE__*/React.createElement(ColoredTag, {
46
+ text: 'Colored Tag'
47
+ }));
48
+ expect(asFragment()).toMatchSnapshot();
49
+ });
50
+ });
@@ -0,0 +1,101 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ColoredTag rendering the defult props 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ aria-labelledby="1"
7
+ class="container effect medium lgRadius default "
8
+ data-id="tag_Tag"
9
+ data-selector-id="tag"
10
+ data-test-id="tag_Tag"
11
+ tabindex="0"
12
+ >
13
+ <div
14
+ aria-hidden="true"
15
+ class="text mediumtext"
16
+ id="1"
17
+ />
18
+ </div>
19
+ </DocumentFragment>
20
+ `;
21
+
22
+ exports[`ColoredTag rendering with colorConfig 1`] = `
23
+ <DocumentFragment>
24
+ <div
25
+ aria-labelledby="3"
26
+ class="container effect medium lgRadius default "
27
+ data-id="tag_Tag"
28
+ data-selector-id="tag"
29
+ data-test-id="tag_Tag"
30
+ style="--tag_bg_color: lightsteelblue; --tag_text_color: dodgerblue; --tag_border_color: dodgerblue;"
31
+ tabindex="0"
32
+ >
33
+ <div
34
+ aria-hidden="true"
35
+ class="text mediumtext"
36
+ id="3"
37
+ />
38
+ </div>
39
+ </DocumentFragment>
40
+ `;
41
+
42
+ exports[`ColoredTag rendering with customAttributes 1`] = `
43
+ <DocumentFragment>
44
+ <div
45
+ aria-labelledby="4"
46
+ class="container effect medium lgRadius default "
47
+ data-custom-attribute="true"
48
+ data-id="tag_Tag"
49
+ data-selector-id="tag"
50
+ data-test-id="tag_Tag"
51
+ tabindex="0"
52
+ >
53
+ <div
54
+ aria-hidden="true"
55
+ class="text mediumtext"
56
+ id="4"
57
+ />
58
+ </div>
59
+ </DocumentFragment>
60
+ `;
61
+
62
+ exports[`ColoredTag rendering with isActive true 1`] = `
63
+ <DocumentFragment>
64
+ <div
65
+ aria-labelledby="2"
66
+ class="container effect selected activedefault medium lgRadius default "
67
+ data-id="tag_TagSelected"
68
+ data-selector-id="tag"
69
+ data-test-id="tag_TagSelected"
70
+ tabindex="0"
71
+ >
72
+ <div
73
+ aria-hidden="true"
74
+ class="text mediumtext"
75
+ id="2"
76
+ />
77
+ </div>
78
+ </DocumentFragment>
79
+ `;
80
+
81
+ exports[`ColoredTag rendering with text 1`] = `
82
+ <DocumentFragment>
83
+ <div
84
+ aria-labelledby="5"
85
+ class="container effect medium lgRadius default "
86
+ data-id="tag_Tag"
87
+ data-selector-id="tag"
88
+ data-test-id="tag_Tag"
89
+ data-title="Colored Tag"
90
+ tabindex="0"
91
+ >
92
+ <div
93
+ aria-hidden="true"
94
+ class="text mediumtext"
95
+ id="5"
96
+ >
97
+ Colored Tag
98
+ </div>
99
+ </div>
100
+ </DocumentFragment>
101
+ `;
@@ -0,0 +1,10 @@
1
+ import PropTypes from 'prop-types';
2
+ import { propTypes as tagPropTypes } from "../../../../Tag/props/propTypes";
3
+ export const propTypes = { ...tagPropTypes,
4
+ isActive: PropTypes.bool,
5
+ colorConfig: PropTypes.shape({
6
+ textColor: PropTypes.string,
7
+ backgroundColor: PropTypes.string,
8
+ borderColor: PropTypes.string
9
+ })
10
+ };
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import ColoredTag from "../ColoredTag/ColoredTag";
3
+ import ColorIndicator from "../ColorIndicator/ColorIndicator";
4
+ import { DUMMY_OBJECT } from "../../../utils/Common";
5
+ export function renderColoredTag(data) {
6
+ const {
7
+ option,
8
+ ...otherData
9
+ } = data || DUMMY_OBJECT;
10
+ const {
11
+ colorConfig,
12
+ value,
13
+ id
14
+ } = option || DUMMY_OBJECT;
15
+ const {
16
+ text,
17
+ background,
18
+ border
19
+ } = colorConfig || DUMMY_OBJECT;
20
+
21
+ function getColorConfig() {
22
+ return {
23
+ backgroundColor: background,
24
+ textColor: text,
25
+ borderColor: border
26
+ };
27
+ }
28
+
29
+ return /*#__PURE__*/React.createElement(ColoredTag, {
30
+ text: value,
31
+ id: id,
32
+ ...otherData,
33
+ colorConfig: getColorConfig()
34
+ });
35
+ }
36
+ export function renderColorIndicator(data) {
37
+ const {
38
+ colorConfig
39
+ } = data;
40
+ return /*#__PURE__*/React.createElement(ColorIndicator, {
41
+ colorConfig: colorConfig
42
+ });
43
+ }
@@ -0,0 +1,12 @@
1
+ import { MultiSelect_defaultProps } from "../../MultiSelect/props/defaultProps";
2
+ import { Select_defaultProps } from "../../Select/props/defaultProps";
3
+ export const ColorSingleSelect_defaultProps = { ...Select_defaultProps,
4
+ className: '',
5
+ options: [],
6
+ customProps: {},
7
+ customClass: {}
8
+ };
9
+ export const ColorMultiSelect_defaultProps = { ...MultiSelect_defaultProps,
10
+ options: [],
11
+ customProps: {}
12
+ };
@@ -0,0 +1,17 @@
1
+ import PropTypes from 'prop-types';
2
+ import { Select_propTypes } from "../../Select/props/propTypes";
3
+ import { MultiSelect_propTypes } from "../../MultiSelect/props/propTypes";
4
+ export const propTypes = {
5
+ renderCustomColorIndicator: PropTypes.element
6
+ };
7
+ export const ColorSingleSelect_propTypes = { ...Select_propTypes,
8
+ ...propTypes,
9
+ placeholder: PropTypes.string,
10
+ customClass: PropTypes.shape({
11
+ selectClass: PropTypes.string
12
+ }),
13
+ renderRightPlaceholderNode: PropTypes.node
14
+ };
15
+ export const ColorMultiSelect_propTypes = { ...MultiSelect_propTypes,
16
+ ...propTypes
17
+ };
@@ -618,10 +618,8 @@ exports[`DateTime rendering the isActive is true and isDefaultPosition is true 1
618
618
  data-test-id="hourField"
619
619
  >
620
620
  <div
621
- class="container effect input flex rowdir"
622
- data-id="containerComponent"
621
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container input flex rowdir"
623
622
  data-selector-id="textBoxIcon"
624
- data-test-id="containerComponent"
625
623
  >
626
624
  <div
627
625
  class="grow basis shrinkOff"
@@ -695,9 +693,6 @@ exports[`DateTime rendering the isActive is true and isDefaultPosition is true 1
695
693
  </div>
696
694
  </div>
697
695
  </div>
698
- <div
699
- class="line borderColor_default "
700
- />
701
696
  </div>
702
697
  </div>
703
698
  </div>
@@ -718,10 +713,8 @@ exports[`DateTime rendering the isActive is true and isDefaultPosition is true 1
718
713
  data-test-id="minuteField"
719
714
  >
720
715
  <div
721
- class="container effect input flex rowdir"
722
- data-id="containerComponent"
716
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container input flex rowdir"
723
717
  data-selector-id="textBoxIcon"
724
- data-test-id="containerComponent"
725
718
  >
726
719
  <div
727
720
  class="grow basis shrinkOff"
@@ -795,9 +788,6 @@ exports[`DateTime rendering the isActive is true and isDefaultPosition is true 1
795
788
  </div>
796
789
  </div>
797
790
  </div>
798
- <div
799
- class="line borderColor_default "
800
- />
801
791
  </div>
802
792
  </div>
803
793
  </div>
@@ -818,10 +808,8 @@ exports[`DateTime rendering the isActive is true and isDefaultPosition is true 1
818
808
  data-test-id="ampmField"
819
809
  >
820
810
  <div
821
- class="container effect input flex rowdir"
822
- data-id="containerComponent"
811
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container input flex rowdir"
823
812
  data-selector-id="textBoxIcon"
824
- data-test-id="containerComponent"
825
813
  >
826
814
  <div
827
815
  class="grow basis shrinkOff"
@@ -895,9 +883,6 @@ exports[`DateTime rendering the isActive is true and isDefaultPosition is true 1
895
883
  </div>
896
884
  </div>
897
885
  </div>
898
- <div
899
- class="line borderColor_default "
900
- />
901
886
  </div>
902
887
  </div>
903
888
  </div>
@@ -11,10 +11,8 @@ exports[`DateWidget rendering the defult props 1`] = `
11
11
  data-test-id="dateWidget_widget"
12
12
  >
13
13
  <div
14
- class="container effect placeHolder flex rowdir"
15
- data-id="containerComponent"
14
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container placeHolder flex rowdir"
16
15
  data-selector-id="textBoxIcon"
17
- data-test-id="containerComponent"
18
16
  >
19
17
  <div
20
18
  class="grow basis shrinkOff"
@@ -69,9 +67,6 @@ exports[`DateWidget rendering the defult props 1`] = `
69
67
  </div>
70
68
  </div>
71
69
  </div>
72
- <div
73
- class="line borderColor_default "
74
- />
75
70
  </div>
76
71
  </div>
77
72
  </div>
@@ -27,10 +27,8 @@ exports[`Time rendering the defult props 1`] = `
27
27
  data-test-id="hourField"
28
28
  >
29
29
  <div
30
- class="container effect input flex rowdir"
31
- data-id="containerComponent"
30
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container input flex rowdir"
32
31
  data-selector-id="textBoxIcon"
33
- data-test-id="containerComponent"
34
32
  >
35
33
  <div
36
34
  class="grow basis shrinkOff"
@@ -102,9 +100,6 @@ exports[`Time rendering the defult props 1`] = `
102
100
  </div>
103
101
  </div>
104
102
  </div>
105
- <div
106
- class="line borderColor_default "
107
- />
108
103
  </div>
109
104
  </div>
110
105
  </div>
@@ -125,10 +120,8 @@ exports[`Time rendering the defult props 1`] = `
125
120
  data-test-id="minuteField"
126
121
  >
127
122
  <div
128
- class="container effect input flex rowdir"
129
- data-id="containerComponent"
123
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container input flex rowdir"
130
124
  data-selector-id="textBoxIcon"
131
- data-test-id="containerComponent"
132
125
  >
133
126
  <div
134
127
  class="grow basis shrinkOff"
@@ -200,9 +193,6 @@ exports[`Time rendering the defult props 1`] = `
200
193
  </div>
201
194
  </div>
202
195
  </div>
203
- <div
204
- class="line borderColor_default "
205
- />
206
196
  </div>
207
197
  </div>
208
198
  </div>
@@ -223,10 +213,8 @@ exports[`Time rendering the defult props 1`] = `
223
213
  data-test-id="ampmField"
224
214
  >
225
215
  <div
226
- class="container effect input flex rowdir"
227
- data-id="containerComponent"
216
+ class="varClass customContainer border_bottom effect borderColor_default hasBorder container input flex rowdir"
228
217
  data-selector-id="textBoxIcon"
229
- data-test-id="containerComponent"
230
218
  >
231
219
  <div
232
220
  class="grow basis shrinkOff"
@@ -298,9 +286,6 @@ exports[`Time rendering the defult props 1`] = `
298
286
  </div>
299
287
  </div>
300
288
  </div>
301
- <div
302
- class="line borderColor_default "
303
- />
304
289
  </div>
305
290
  </div>
306
291
  </div>
@@ -75,6 +75,7 @@ export default class ListItem extends React.Component {
75
75
  customProps,
76
76
  needMultiLineText,
77
77
  secondaryValue,
78
+ renderBeforeChildren,
78
79
  renderValueRightPlaceholderNode
79
80
  } = this.props;
80
81
  let {
@@ -124,7 +125,11 @@ export default class ListItem extends React.Component {
124
125
  className: style.leftBox
125
126
  }, /*#__PURE__*/React.createElement(Box, {
126
127
  className: style.titleBox
127
- }, value ? /*#__PURE__*/React.createElement(Box, {
128
+ }, isRenderable(renderBeforeChildren) ? /*#__PURE__*/React.createElement(Box, {
129
+ shrink: true,
130
+ adjust: true,
131
+ className: style.beforeChild
132
+ }, renderNode(renderBeforeChildren)) : null, value ? /*#__PURE__*/React.createElement(Box, {
128
133
  shrink: true,
129
134
  adjust: true,
130
135
  className: needMultiLineText ? style.multiLineValue : style.value
@@ -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,6 +8,14 @@ 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
  test('ListItem with renderValueRightPlaceholderNode', () => {
12
20
  const {
13
21
  asFragment
@@ -78,6 +78,53 @@ exports[`ListItem ListItem with renderValueRightPlaceholderNode 1`] = `
78
78
  </DocumentFragment>
79
79
  `;
80
80
 
81
+ exports[`ListItem Should render with renderBeforeChildren 1`] = `
82
+ <DocumentFragment>
83
+ <li
84
+ class="list medium default withBorder flex rowdir vCenter"
85
+ data-a11y-inset-focus="true"
86
+ data-id="listItem"
87
+ data-selector-id="listItem"
88
+ data-test-id="listItem"
89
+ role="option"
90
+ tabindex="0"
91
+ >
92
+ <div
93
+ class="leftBox grow basis shrinkOff"
94
+ data-id="boxComponent"
95
+ data-selector-id="box"
96
+ data-test-id="boxComponent"
97
+ >
98
+ <div
99
+ class="titleBox shrinkOff"
100
+ data-id="boxComponent"
101
+ data-selector-id="box"
102
+ data-test-id="boxComponent"
103
+ >
104
+ <div
105
+ class="beforeChild basisAuto shrinkOn"
106
+ data-id="boxComponent"
107
+ data-selector-id="box"
108
+ data-test-id="boxComponent"
109
+ >
110
+ <span>
111
+ Before children
112
+ </span>
113
+ </div>
114
+ <div
115
+ class="children basisAuto shrinkOn"
116
+ data-id="boxComponent"
117
+ data-selector-id="box"
118
+ data-test-id="boxComponent"
119
+ >
120
+ Content
121
+ </div>
122
+ </div>
123
+ </div>
124
+ </li>
125
+ </DocumentFragment>
126
+ `;
127
+
81
128
  exports[`ListItem rendering the defult props 1`] = `
82
129
  <DocumentFragment>
83
130
  <li
@@ -67,6 +67,7 @@ export const ListItem_Props = {
67
67
  ListItemProps: PropTypes.object
68
68
  }),
69
69
  secondaryValue: PropTypes.string,
70
+ renderBeforeChildren: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
70
71
  renderValueRightPlaceholderNode: PropTypes.oneOfType([PropTypes.node, PropTypes.func])
71
72
  };
72
73
  export const ListItemWithAvatar_Props = {
@@ -36,6 +36,9 @@ import MobileHeader from "./MobileHeader/MobileHeader";
36
36
  /* eslint-disable react/no-unused-prop-types */
37
37
 
38
38
  const dummyArray = [];
39
+ const a11yProps = {
40
+ role: 'option'
41
+ };
39
42
  export class MultiSelectComponent extends React.Component {
40
43
  constructor(props) {
41
44
  super(props);
@@ -934,6 +937,7 @@ export class MultiSelectComponent extends React.Component {
934
937
  isPopupOpen,
935
938
  ariaErrorId,
936
939
  customProps,
940
+ renderCustomSelectedValue,
937
941
  isFocus,
938
942
  isPopupReady,
939
943
  renderCustomClearComponent,
@@ -978,7 +982,11 @@ export class MultiSelectComponent extends React.Component {
978
982
  onSelect: this.handleClickSelectedOption,
979
983
  size: size,
980
984
  palette: palette,
981
- dataId: `${dataId}_selectedOptions`
985
+ dataId: `${dataId}_selectedOptions`,
986
+ renderCustomSelectedValue: renderCustomSelectedValue,
987
+ isPopupReady: isPopupReady,
988
+ isPopupOpen: isPopupOpen,
989
+ isDisabled: isDisabled
982
990
  }), /*#__PURE__*/React.createElement(Box, {
983
991
  flexible: true,
984
992
  className: style.wrapper,
@@ -1174,6 +1182,8 @@ export class MultiSelectComponent extends React.Component {
1174
1182
  }, isSearching ? /*#__PURE__*/React.createElement("div", {
1175
1183
  className: style[palette]
1176
1184
  }, searchText) : suggestions.length ? /*#__PURE__*/React.createElement(Suggestions, {
1185
+ a11y: a11yProps,
1186
+ needBorder: false,
1177
1187
  key: searchStr.trim(),
1178
1188
  suggestions: suggestions,
1179
1189
  isVirtualizerEnabled: isVirtualizerEnabled,
@@ -1183,13 +1193,9 @@ export class MultiSelectComponent extends React.Component {
1183
1193
  hoverOption: hoverOption,
1184
1194
  onClick: this.handleSelectOption,
1185
1195
  onMouseEnter: this.handleMouseEnter,
1186
- needBorder: false,
1187
1196
  dataId: `${dataId}_Options`,
1188
1197
  palette: palette,
1189
1198
  selectedOptions: selectedOptionIds,
1190
- a11y: {
1191
- role: 'option'
1192
- },
1193
1199
  limit: limit,
1194
1200
  limitReachedMessage: limitReachedMessage,
1195
1201
  ...SuggestionsProps
@@ -23,7 +23,11 @@ export default class SelectedOptions extends React.PureComponent {
23
23
  size,
24
24
  palette,
25
25
  dataId,
26
- limit
26
+ limit,
27
+ renderCustomSelectedValue,
28
+ isPopupOpen,
29
+ isPopupReady,
30
+ isDisabled: isInputDisabled
27
31
  } = this.props;
28
32
  const isDarkPalette = palette === 'dark' ? 'dark' : 'danger';
29
33
  const selectedData = limit && limit > 0 ? selectedOptions.slice(0, limit) : selectedOptions;
@@ -69,6 +73,25 @@ export default class SelectedOptions extends React.PureComponent {
69
73
  iconName: icon,
70
74
  iconSize: iconSize
71
75
  }));
76
+ } else if (optionType === 'custom') {
77
+ return /*#__PURE__*/React.createElement(Box, {
78
+ className: `${style.tag} ${style[size]}`,
79
+ key: `${id}customTag`,
80
+ dataId: dataId
81
+ }, typeof renderCustomSelectedValue == 'function' ? renderCustomSelectedValue({
82
+ onRemove: isDisabled || isReadOnly ? null : onRemove,
83
+ palette: isDarkPalette,
84
+ onSelectTag: isReadOnly ? null : onSelect,
85
+ getRef: getRef,
86
+ isReadOnly: isReadOnly,
87
+ isPopupReady: isPopupReady,
88
+ isPopupOpen: isPopupOpen,
89
+ isDisabled: isInputDisabled,
90
+ size,
91
+ highLightedSelectOptions,
92
+ isActive: highLightedSelectOptions.indexOf(id) >= 0,
93
+ option
94
+ }) : renderCustomSelectedValue);
72
95
  }
73
96
 
74
97
  return /*#__PURE__*/React.createElement(Box, {
@@ -10,6 +10,7 @@ import ListItemWithAvatar from "../ListItem/ListItemWithAvatar";
10
10
  import ListItemWithIcon from "../ListItem/ListItemWithIcon";
11
11
  import { Container, Box } from "../Layout";
12
12
  import { DUMMY_OBJECT, DUMMY_ARRAY } from "../utils/Common";
13
+ import { renderNode } from '@zohodesk/utils';
13
14
 
14
15
  function SuggestionsVirtualizerContainer(_ref) {
15
16
  let {
@@ -44,6 +45,7 @@ export default class Suggestions extends React.PureComponent {
44
45
  needTick,
45
46
  needBorder,
46
47
  selectedOptions = DUMMY_ARRAY,
48
+ renderBeforeChildren,
47
49
  activeId,
48
50
  hoverId,
49
51
  listItemSize,
@@ -161,7 +163,8 @@ export default class Suggestions extends React.PureComponent {
161
163
  size: listItemSize,
162
164
  palette: palette,
163
165
  a11y: list_a11y,
164
- secondaryValue: secondaryValue
166
+ secondaryValue: secondaryValue,
167
+ renderBeforeChildren: renderNode(renderBeforeChildren, suggestion)
165
168
  });
166
169
  }
167
170