@zohodesk/components 1.0.0-temp-220.7 → 1.0.0-temp-223

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 (70) hide show
  1. package/.cli/config/variables/variableMapping.json +6 -0
  2. package/.cli/propValidation_report.html +1 -1
  3. package/README.md +8 -0
  4. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +1 -0
  5. package/assets/Appearance/light/mode/Component_LightMode.module.css +1 -0
  6. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +1 -0
  7. package/es/ListItem/ListContainer.js +3 -2
  8. package/es/ListItem/ListItem.module.css +52 -6
  9. package/es/ListItem/ListItemWithAvatar.js +17 -6
  10. package/es/ListItem/ListItemWithCheckBox.js +18 -6
  11. package/es/ListItem/ListItemWithIcon.js +20 -7
  12. package/es/ListItem/ListItemWithRadio.js +19 -6
  13. package/es/ListItem/__tests__/ListContainer.spec.js +8 -0
  14. package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +35 -0
  15. package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +35 -0
  16. package/es/ListItem/__tests__/ListItemWithIcon.spec.js +35 -0
  17. package/es/ListItem/__tests__/ListItemWithRadio.spec.js +35 -0
  18. package/es/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +13 -0
  19. package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +200 -2
  20. package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +451 -30
  21. package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +202 -4
  22. package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +447 -30
  23. package/es/ListItem/props/defaultProps.js +13 -5
  24. package/es/ListItem/props/propTypes.js +13 -1
  25. package/es/MultiSelect/AdvancedMultiSelect.js +10 -4
  26. package/es/MultiSelect/MultiSelect.js +8 -4
  27. package/es/MultiSelect/MultiSelect.module.css +9 -1
  28. package/es/MultiSelect/MultiSelectWithAvatar.js +6 -2
  29. package/es/MultiSelect/Suggestions.js +5 -2
  30. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
  31. package/es/MultiSelect/props/propTypes.js +3 -0
  32. package/es/Popup/Popup.js +22 -56
  33. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +21 -2
  34. package/es/VelocityAnimation/VelocityAnimationGroup/props/defaultProps.js +2 -1
  35. package/es/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +2 -1
  36. package/es/common/common.module.css +10 -0
  37. package/es/utils/dropDownUtils.js +33 -8
  38. package/lib/ListItem/ListContainer.js +3 -2
  39. package/lib/ListItem/ListItem.module.css +52 -6
  40. package/lib/ListItem/ListItemWithAvatar.js +16 -5
  41. package/lib/ListItem/ListItemWithCheckBox.js +17 -5
  42. package/lib/ListItem/ListItemWithIcon.js +19 -6
  43. package/lib/ListItem/ListItemWithRadio.js +18 -5
  44. package/lib/ListItem/__tests__/ListContainer.spec.js +8 -0
  45. package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +35 -0
  46. package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +35 -0
  47. package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +35 -0
  48. package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +35 -0
  49. package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +13 -0
  50. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +200 -2
  51. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +451 -30
  52. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +202 -4
  53. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +447 -30
  54. package/lib/ListItem/props/defaultProps.js +13 -5
  55. package/lib/ListItem/props/propTypes.js +12 -2
  56. package/lib/MultiSelect/AdvancedMultiSelect.js +76 -69
  57. package/lib/MultiSelect/MultiSelect.js +8 -4
  58. package/lib/MultiSelect/MultiSelect.module.css +9 -1
  59. package/lib/MultiSelect/MultiSelectWithAvatar.js +6 -2
  60. package/lib/MultiSelect/Suggestions.js +5 -2
  61. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
  62. package/lib/MultiSelect/props/propTypes.js +4 -1
  63. package/lib/Popup/Popup.js +60 -96
  64. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +49 -9
  65. package/lib/VelocityAnimation/VelocityAnimationGroup/props/defaultProps.js +2 -1
  66. package/lib/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +2 -1
  67. package/lib/common/common.module.css +10 -0
  68. package/lib/utils/dropDownUtils.js +41 -11
  69. package/package.json +3 -3
  70. package/result.json +0 -1
@@ -200,7 +200,15 @@
200
200
  cursor: pointer;
201
201
  margin-top: var(--zd_size5) ;
202
202
  background-color: var(--zdt_multiselect_delete_bg);
203
- border: 0;
203
+ border: 0
204
+ }
205
+
206
+ [dir=ltr] .more {
207
+ margin-right:var(--zd_size3)
208
+ }
209
+
210
+ [dir=rtl] .more {
211
+ margin-left:var(--zd_size3)
204
212
  }
205
213
 
206
214
  .rightPlaceholder{
@@ -42,7 +42,9 @@ class MultiSelectWithAvatarComponent extends MultiSelectComponent {
42
42
  textField,
43
43
  imageField,
44
44
  disabledOptions,
45
- allowValueFallback
45
+ allowValueFallback,
46
+ searchFields,
47
+ secondaryField
46
48
  } = props;
47
49
  return this.formatOptions({
48
50
  options,
@@ -51,7 +53,9 @@ class MultiSelectWithAvatarComponent extends MultiSelectComponent {
51
53
  imageField,
52
54
  optionType: 'avatar',
53
55
  disabledOptions,
54
- allowValueFallback
56
+ allowValueFallback,
57
+ searchFields,
58
+ secondaryField
55
59
  });
56
60
  }
57
61
 
@@ -46,6 +46,7 @@ export default class Suggestions extends React.PureComponent {
46
46
  const {
47
47
  id,
48
48
  value,
49
+ secondaryValue,
49
50
  photoURL,
50
51
  icon,
51
52
  optionType,
@@ -92,7 +93,8 @@ export default class Suggestions extends React.PureComponent {
92
93
  size: listItemSize,
93
94
  avatarPalette: avatarPalette,
94
95
  palette: palette,
95
- a11y: list_a11y
96
+ a11y: list_a11y,
97
+ secondaryValue: secondaryValue
96
98
  });
97
99
  } else if (optionType === 'icon') {
98
100
  return /*#__PURE__*/React.createElement(ListItemWithIcon, { ...commonProps,
@@ -112,7 +114,8 @@ export default class Suggestions extends React.PureComponent {
112
114
  iconSize: iconSize,
113
115
  size: listItemSize,
114
116
  palette: palette,
115
- a11y: list_a11y
117
+ a11y: list_a11y,
118
+ secondaryValue: secondaryValue
116
119
  });
117
120
  }
118
121
 
@@ -13,27 +13,48 @@ exports[`MultiSelectHeader rendering the basic value 1`] = `
13
13
  >
14
14
  <div
15
15
  aria-hidden="true"
16
- class="iconBox shrinkOff"
16
+ class="iconBox lhsBox lhsJustifyContent_center shrinkOff selfStart"
17
17
  data-id="MultiSelectHeader_selectAll_Icon"
18
18
  data-selector-id="box"
19
19
  data-test-id="MultiSelectHeader_selectAll_Icon"
20
20
  >
21
- <i
22
- aria-hidden="true"
23
- class="zd_font_icons basic icon-androidd "
24
- data-id="fontIcon"
25
- data-selector-id="fontIcon"
26
- data-test-id="fontIcon"
27
- style="--zd-iconfont-size: var(--zd_font_size15);"
28
- />
21
+ <div
22
+ class="lhsBox_medium shrinkOff selfStart"
23
+ data-id="boxComponent"
24
+ data-selector-id="box"
25
+ data-test-id="boxComponent"
26
+ >
27
+ <i
28
+ aria-hidden="true"
29
+ class="zd_font_icons basic icon-androidd "
30
+ data-id="fontIcon"
31
+ data-selector-id="fontIcon"
32
+ data-test-id="fontIcon"
33
+ style="--zd-iconfont-size: var(--zd_font_size15);"
34
+ />
35
+ </div>
29
36
  </div>
30
37
  <div
31
- class="value grow basis shrinkOn"
32
- data-id="MultiSelectHeader_selectAll_Text"
38
+ class="grow basis shrinkOn"
39
+ data-id="boxComponent"
33
40
  data-selector-id="box"
34
- data-test-id="MultiSelectHeader_selectAll_Text"
41
+ data-test-id="boxComponent"
35
42
  >
36
- List
43
+ <div
44
+ class="flex cover coldir"
45
+ data-id="containerComponent"
46
+ data-selector-id="container"
47
+ data-test-id="containerComponent"
48
+ >
49
+ <div
50
+ class="value shrinkOff"
51
+ data-id="MultiSelectHeader_selectAll_Text"
52
+ data-selector-id="box"
53
+ data-test-id="MultiSelectHeader_selectAll_Text"
54
+ >
55
+ List
56
+ </div>
57
+ </div>
37
58
  </div>
38
59
  </li>
39
60
  </DocumentFragment>
@@ -46,6 +46,7 @@ export const MultiSelect_propTypes = {
46
46
  a11y: PropTypes.shape({
47
47
  clearLabel: PropTypes.string
48
48
  }),
49
+ searchFields: PropTypes.arrayOf(PropTypes.string),
49
50
  isAnimate: PropTypes.bool,
50
51
  isBoxPaddingNeed: PropTypes.bool,
51
52
  isDisabled: PropTypes.bool,
@@ -132,6 +133,7 @@ export const MultiSelectWithAvatar_propTypes = {
132
133
  SuggestionsProps: PropTypes.object,
133
134
  DropBoxProps: PropTypes.object
134
135
  }),
136
+ secondaryField: PropTypes.string,
135
137
  ...MultiSelect_propTypes
136
138
  };
137
139
  export const SelectedOptions_propTypes = {
@@ -281,6 +283,7 @@ export const AdvancedMultiSelect_propTypes = { ...MultiSelect_propTypes,
281
283
  //For grouping multiSelect
282
284
  optionType: PropTypes.oneOf(['default', 'avatar', 'icon']),
283
285
  needEffect: PropTypes.bool,
286
+ secondaryField: PropTypes.string,
284
287
  animationStyle: PropTypes.string,
285
288
  defaultDropBoxPosition: PropTypes.oneOf(['bottom', 'top', 'left', 'right']),
286
289
  dropBoxSize: PropTypes.oneOf(['small', 'medium', 'large']),
package/es/Popup/Popup.js CHANGED
@@ -74,9 +74,8 @@ const Popup = function (Component) {
74
74
  isMobile: false
75
75
  };
76
76
  this.togglePopup = this.togglePopup.bind(this);
77
- this.closePopups = this.closePopups.bind(this);
78
- this.handleDocumentInteraction = this.handleDocumentInteraction.bind(this);
79
77
  this.documentClickHandler = this.documentClickHandler.bind(this);
78
+ this.documentClickHandler1 = this.documentClickHandler1.bind(this);
80
79
  this.removeClose = this.removeClose.bind(this);
81
80
  this.documentKeyupHandler = this.documentKeyupHandler.bind(this);
82
81
  this.openPopupOnly = this.openPopupOnly.bind(this);
@@ -134,11 +133,11 @@ const Popup = function (Component) {
134
133
  popups[group] = groupPopups;
135
134
 
136
135
  if (Object.keys(popups).length === 1 && groupPopups.length === 1) {
137
- document.addEventListener('click', this.handleDocumentInteraction, true);
138
136
  document.addEventListener('click', this.documentClickHandler, false);
139
137
  document.addEventListener('keyup', this.documentKeyupHandler, false); // document.addEventListener('scroll', this.handleScroll, true);
140
138
 
141
139
  window.addEventListener('resize', this.handleResize);
140
+ document.addEventListener('click', this.documentClickHandler1, true);
142
141
  document.addEventListener('mousedown', this.handleDocumentMouseDown, true);
143
142
  document.addEventListener('focus', this.handleDocumentFocus, true);
144
143
  }
@@ -225,11 +224,11 @@ const Popup = function (Component) {
225
224
  }
226
225
 
227
226
  if (noPopups) {
228
- document.removeEventListener('click', this.handleDocumentInteraction, true);
229
- document.removeEventListener('click', this.documentClickHandler, false);
227
+ document.removeEventListener('click', this.documentClickHandler);
230
228
  document.removeEventListener('keyup', this.documentKeyupHandler); // document.removeEventListener('scroll', this.handleScroll);
231
229
 
232
230
  window.removeEventListener('resize', this.handleResize);
231
+ document.removeEventListener('click', this.documentClickHandler1, true);
233
232
  document.removeEventListener('mousedown', this.handleDocumentMouseDown, true);
234
233
  document.removeEventListener('focus', this.handleDocumentFocus, true);
235
234
  }
@@ -618,62 +617,29 @@ const Popup = function (Component) {
618
617
  return needPrevent;
619
618
  }
620
619
 
621
- closePopups(e) {
622
- let checkTarget = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
623
-
624
- try {
625
- Object.keys(popups).forEach(groupName => {
626
- const openGroupPopups = (popups[groupName] || []).filter(popup => popup.state.isPopupOpen);
627
- openGroupPopups.forEach(popup => {
628
- const {
629
- dropElement,
630
- placeHolderElement
631
- } = popup;
632
- const {
633
- target
634
- } = e || {};
635
- const canClosePopup = !popup.props.checkBeforeClose || popup.props.checkBeforeClose && popup.props.checkBeforeClose() && !isTextSelected();
636
- const isOutsideClick = checkTarget && placeHolderElement && dropElement && placeHolderElement !== target && !placeHolderElement.contains(target) && dropElement !== target && !dropElement.contains(target);
637
-
638
- if (canClosePopup && (!checkTarget || isOutsideClick)) {
639
- popup.setState({
640
- isPopupOpen: false,
641
- isPopupReady: false
642
- });
643
- }
644
- });
645
- });
646
-
647
- if (!checkTarget) {
648
- lastOpenedGroup = [];
649
- }
650
- } catch (error) {// eslint-disable-next-line no-console
651
- //console.error('popup component not unmounted properly', error);
652
- }
653
- }
654
-
655
- documentClickHandler(e) {
656
- // Handles document click events to close all popups.
657
- // This function closes all popups without checking if the click occurred outside the popup.
658
- this.closePopups(e, false);
659
- }
660
-
661
- handleDocumentInteraction(e) {
662
- // Handles interactions with the document to determine whether to close the popup.
663
- // This function is specifically designed to close the popup when clicking outside of it.
664
- // Check if the click event should prevent popup closure.
620
+ documentClickHandler1(e) {
665
621
  const needPrevent = this.handleGetNeedPrevent(e);
666
622
 
667
623
  if (needPrevent) {
668
- // If the click event should prevent popup closure:
669
- // - Stop the event propagation.
670
- // - Close the last opened group of popups.
671
624
  this.removeClose(e);
672
625
  this.handleCloseLastOpenedGroup();
673
- } else {
674
- // If the click event does not need to prevent popup closure:
675
- // - Close all popups, but only if the click occurred outside the popup elements.
676
- this.closePopups(e, true);
626
+ }
627
+ }
628
+
629
+ documentClickHandler() {
630
+ try {
631
+ Object.keys(popups).forEach(groupName => {
632
+ const groupPopups = popups[groupName] || [];
633
+ groupPopups.forEach(popup => {
634
+ popup.state.isPopupOpen && (!popup.props.checkBeforeClose || popup.props.checkBeforeClose && popup.props.checkBeforeClose()) && !isTextSelected() && popup.setState({
635
+ isPopupOpen: false,
636
+ isPopupReady: false
637
+ });
638
+ });
639
+ });
640
+ lastOpenedGroup = [];
641
+ } catch (e) {// eslint-disable-next-line no-console
642
+ //console.error('popup component not unmounted properly', e);
677
643
  }
678
644
  }
679
645
 
@@ -16,6 +16,20 @@ function clearProps(props) {
16
16
  export default class VelocityAnimationGroup extends React.Component {
17
17
  constructor(props) {
18
18
  super(props);
19
+ this.handleOnEnterComplete = this.handleOnEnterComplete.bind(this);
20
+ }
21
+
22
+ handleOnEnterComplete(onEnterComplete, elements) {
23
+ if (typeof onEnterComplete === 'function') {
24
+ onEnterComplete(elements);
25
+ } else if (onEnterComplete && typeof onEnterComplete === 'object') {
26
+ elements.forEach(rootElement => {
27
+ Object.entries(onEnterComplete).forEach(_ref => {
28
+ let [cssProperty, cssValue] = _ref;
29
+ if (cssProperty.includes) rootElement.style[cssProperty] = cssValue;
30
+ });
31
+ });
32
+ }
19
33
  }
20
34
 
21
35
  render() {
@@ -35,7 +49,8 @@ export default class VelocityAnimationGroup extends React.Component {
35
49
  enterDelay,
36
50
  isCustomized,
37
51
  name,
38
- needUIPack
52
+ needUIPack,
53
+ onEnterComplete
39
54
  } = this.props;
40
55
  let {
41
56
  direction,
@@ -76,7 +91,10 @@ export default class VelocityAnimationGroup extends React.Component {
76
91
  animation: isCustomized ? enterAnimationObj[name] : needUIPack ? `transition.${enterName}In` : enterName,
77
92
  duration: !isReducedMotion ? enterDuration : 0,
78
93
  delay: enterDelay ? enterDelay : 0,
79
- display: isFlex ? 'flex' : ''
94
+ display: isFlex ? 'flex' : '',
95
+ complete: elements => {
96
+ this.handleOnEnterComplete(onEnterComplete, elements);
97
+ }
80
98
  };
81
99
  let exitAnimation = {
82
100
  animation: isCustomized ? exitAnimationObj[name] : needUIPack ? `transition.${exitName ? exitName : enterName}Out` : exitName ? exitName : enterName,
@@ -91,6 +109,7 @@ export default class VelocityAnimationGroup extends React.Component {
91
109
  runOnMount: runOnMount,
92
110
  enterHideStyle: enterHideStyle,
93
111
  enterShowStyle: enterShowStyle,
112
+ onEnterComplete: onEnterComplete,
94
113
  ...childProps
95
114
  }, isActive ? children : null);
96
115
  }
@@ -11,5 +11,6 @@ export const defaultProps = {
11
11
  exitDuration: 300,
12
12
  isActive: false,
13
13
  isCustomized: true,
14
- needUIPack: true
14
+ needUIPack: true,
15
+ onEnterComplete: {}
15
16
  };
@@ -15,5 +15,6 @@ export const propTypes = {
15
15
  isFlex: PropTypes.bool,
16
16
  name: PropTypes.oneOf(['fade', 'slideDown', 'flyDown', 'slideRight', 'shrink', 'expand', 'slideLeft']),
17
17
  needUIPack: PropTypes.bool,
18
- runOnMount: PropTypes.bool
18
+ runOnMount: PropTypes.bool,
19
+ onEnterComplete: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
19
20
  };
@@ -260,6 +260,12 @@
260
260
  justify-content: space-between;
261
261
  }
262
262
 
263
+ .justifyFstart {
264
+ -webkit-box-pack: flex-start;
265
+ -ms-flex-pack: flex-start;
266
+ justify-content: flex-start;
267
+ }
268
+
263
269
  .justifyFend {
264
270
  -webkit-box-pack: flex-end;
265
271
  -ms-flex-pack: flex-end;
@@ -493,6 +499,10 @@
493
499
  display: -webkit-box;
494
500
  overflow: hidden;
495
501
  }
502
+ .lineClamp {
503
+ composes: wbreak clamp;
504
+ -webkit-line-clamp: var(--line-clamp,2);
505
+ }
496
506
 
497
507
  .offSelection {
498
508
  -webkit-user-select: none;
@@ -12,6 +12,7 @@ const getSelectedOptionsSel = props => props.selectedOptions || dummyArray;
12
12
  const getSearchStr = props => props.searchStr || '';
13
13
 
14
14
  export const getValueField = props => props.valueField || '';
15
+ export const getSecondaryField = props => props.secondaryField || '';
15
16
  export const getTextField = props => props.textField || '';
16
17
  export const getImageField = props => props.imageField || '';
17
18
  export const getIconName = props => props.iconName || '';
@@ -40,23 +41,36 @@ const getDisabledOptions = props => props.disabledOptions || dummyArray;
40
41
 
41
42
  const getListItemProps = props => props.listItemProps || '';
42
43
 
44
+ const getSearchFields = props => {
45
+ return props.searchFields || ['value'];
46
+ };
47
+
48
+ const isObjectContainsSearchString = function () {
49
+ let searchFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
50
+ let searchStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
51
+ let obj = arguments.length > 2 ? arguments[2] : undefined;
52
+ const matchedFields = searchFields.filter(element => {
53
+ return getSearchString(obj[element]).indexOf(searchStr) !== -1;
54
+ });
55
+ return matchedFields.length !== 0;
56
+ };
57
+
43
58
  const getAllowValueFallback = props => props.allowValueFallback !== false;
44
59
 
45
- export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch, getKeepSelectedOptions], (options, selectedOptions, searchStr, needSearch, isStartsWithSearch, keepSelectedOptions) => {
60
+ export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch, getKeepSelectedOptions, getSearchFields], (options, selectedOptions, searchStr, needSearch, isStartsWithSearch, keepSelectedOptions, searchFields) => {
46
61
  const suggestions = [];
47
62
  const suggestionIds = [];
48
63
  options.forEach(option => {
64
+ const searchString = getSearchString(searchStr);
49
65
  const {
50
- id,
51
66
  value = ''
52
67
  } = option;
53
68
  const valueString = getSearchString(value);
54
- const searchString = getSearchString(searchStr);
55
- const isMatch = needSearch ? isStartsWithSearch ? valueString.startsWith(searchString) : valueString.indexOf(searchString) !== -1 : true;
69
+ const isMatch = needSearch ? isStartsWithSearch ? valueString.startsWith(searchString) : isObjectContainsSearchString(searchFields, searchString, option) : true;
56
70
 
57
- if (selectedOptions.indexOf(id) === -1 && isMatch || keepSelectedOptions) {
71
+ if (selectedOptions.indexOf(option.id) === -1 && isMatch || keepSelectedOptions) {
58
72
  suggestions.push(option);
59
- suggestionIds.push(id);
73
+ suggestionIds.push(option.id);
60
74
  }
61
75
  });
62
76
  return {
@@ -107,7 +121,7 @@ export const extractOptionId = id => {
107
121
  }
108
122
  };
109
123
  export const extractOptionIdFromJson = (id, localData) => localData[id] || {};
110
- export const makeFormatOptions = () => createSelector([getOptions, getValueField, getTextField, getImageField, getPrefixText, getIconName, getIconSize, getOptionType, getDisabledOptions, getListItemProps, getAllowValueFallback], (options, valueField, textField, imageField, prefixText, iconName, iconSize, optionType, disabledOptions, listItemProps, allowValueFallback) => {
124
+ export const makeFormatOptions = () => createSelector([getOptions, getValueField, getTextField, getImageField, getPrefixText, getIconName, getIconSize, getOptionType, getDisabledOptions, getListItemProps, getAllowValueFallback, getSearchFields, getSecondaryField], (options, valueField, textField, imageField, prefixText, iconName, iconSize, optionType, disabledOptions, listItemProps, allowValueFallback, searchFields, secondaryField) => {
111
125
  const revampOptions = [];
112
126
  const remvampOptionIds = [];
113
127
  const normalizedAllOptions = {};
@@ -119,6 +133,7 @@ export const makeFormatOptions = () => createSelector([getOptions, getValueField
119
133
  valueField: impValueField,
120
134
  textField: impTextField,
121
135
  imageField: impImageField,
136
+ secondaryField: impSecondaryField,
122
137
  optionType: impOptionType,
123
138
  iconName: impIconName,
124
139
  iconSize: impIconSize,
@@ -126,15 +141,25 @@ export const makeFormatOptions = () => createSelector([getOptions, getValueField
126
141
  } = option;
127
142
  let id = typeof option === 'object' ? option[impValueField || valueField] : option;
128
143
  const value = typeof option === 'object' ? option[impTextField || textField] : allowValueFallback ? option : '';
144
+ const secondaryValue = typeof option === 'object' ? option[impSecondaryField || secondaryField] : '';
129
145
  const photoURL = typeof option === 'object' ? option[impImageField || imageField] : ''; // grouping options (group select/MultiSelect)
130
146
 
131
147
  id = !getIsEmptyValue(id) ? optionIdGrouping(id, prefixText) : '';
148
+ const additionalSearchFieldData = searchFields.reduce((value, item) => {
149
+ if (typeof option === 'object' && option.hasOwnProperty(item)) {
150
+ value[item] = option[item];
151
+ }
152
+
153
+ return value;
154
+ }, {});
132
155
 
133
156
  if (remvampOptionIds.indexOf(id) === -1 && !getIsEmptyValue(id) && !getIsEmptyValue(value)) {
134
157
  remvampOptionIds.push(id);
135
- const optionDetails = {
158
+ const optionDetails = { // ...option,
159
+ ...additionalSearchFieldData,
136
160
  id,
137
161
  value,
162
+ secondaryValue,
138
163
  optionType: impOptionType || optionType
139
164
  };
140
165
 
@@ -58,7 +58,8 @@ var ListContainer = function ListContainer(props) {
58
58
  onClick = props.onClick,
59
59
  onMouseEnter = props.onMouseEnter,
60
60
  onMouseOver = props.onMouseOver,
61
- eleRef = props.eleRef;
61
+ eleRef = props.eleRef,
62
+ align = props.align;
62
63
  var responsiveFunc = (0, _react.useCallback)(function (_ref) {
63
64
  var mediaQueryOR = _ref.mediaQueryOR,
64
65
  isTouchDevice = _ref.isTouchDevice;
@@ -102,7 +103,7 @@ var ListContainer = function ListContainer(props) {
102
103
  "aria-selected": ariaSelected,
103
104
  "aria-label": ariaLabel,
104
105
  isCover: false,
105
- align: "vertical",
106
+ align: align,
106
107
  alignBox: "row",
107
108
  className: "".concat(_ListItemModule["default"].list, " ").concat(_ListItemModule["default"][size], " ").concat(mobileToTab && isTouchDevice ? _ListItemModule["default"].responsiveHeight : '', " ").concat(_ListItemModule["default"][palette], " ").concat(active ? _ListItemModule["default"]["active".concat(palette)] : highlight && !isDisabled ? _ListItemModule["default"]["".concat(palette, "Hover")] : '', " ").concat(autoHover && !isDisabled ? _ListItemModule["default"]["".concat(palette, "Effect")] : '', " ").concat(needTick ? _ListItemModule["default"]["".concat(size, "withTick")] : '', " ").concat(isDisabled ? (0, _CssProvider["default"])('isDisable') : '', " ").concat(needBorder ? active ? _ListItemModule["default"].activewithBorder : _ListItemModule["default"].withBorder : '', " ").concat(customClass),
108
109
  dataId: dataId,
@@ -1,5 +1,6 @@
1
1
  .varClass {
2
2
  /* listitem default variables */
3
+ --listitem_font_size: var(--zd_font_size13);
3
4
  --listitem_text_color: var(--zdt_listitem_default_text);
4
5
  --listitem_padding: var(--zd_size9) var(--zd_size20);
5
6
  --listitem_border_width: 0;
@@ -24,7 +25,7 @@
24
25
  position: relative;
25
26
  list-style: none;
26
27
  color: var(--listitem_text_color);
27
- font-size: var(--zd_font_size13) ;
28
+ font-size: var(--listitem_font_size);
28
29
  height: var(--listitem_height);
29
30
  min-height: var(--listitem_min_height);
30
31
  text-decoration: none;
@@ -57,7 +58,7 @@
57
58
  --listitem_min_height: var(--zd_size35);
58
59
  }
59
60
  .large {
60
- --listitem_height: var(--zd_size48);
61
+ --listitem_min_height: var(--zd_size48);
61
62
  }
62
63
  [dir=ltr] .large {
63
64
  --listitem_padding: var(--zd_size10) var(--zd_size3) var(--zd_size10) var(--zd_size25);
@@ -72,9 +73,8 @@
72
73
  .value, .multiLineValue {
73
74
  line-height: 1.5385;
74
75
  }
75
- .multiLineValue{
76
- word-break: break-word;
77
- composes: clamp from '../common/common.module.css'
76
+ .multiLineValue,.multiLine{
77
+ composes: lineClamp from '../common/common.module.css';
78
78
  }
79
79
  .iconBox {
80
80
  width: var(--zd_size20) ;
@@ -94,6 +94,42 @@
94
94
  margin: var(--listitem_avatar_margin);
95
95
  }
96
96
 
97
+ .lhsJustifyContent_start,
98
+ .lhsJustifyContent_center,
99
+ .lhsJustifyContent_end {
100
+ composes: dflex alignVertical from '../common/common.module.css';
101
+ }
102
+ .lhsJustifyContent_start {
103
+ composes: justifyFstart from '../common/common.module.css';
104
+ }
105
+ .lhsJustifyContent_center {
106
+ composes: alignHorizontal from '../common/common.module.css';
107
+ }
108
+ .lhsJustifyContent_end {
109
+ composes: justifyFend from '../common/common.module.css';
110
+ }
111
+
112
+ .lhsBox {
113
+ composes: dflex from '../common/common.module.css';
114
+ align-self: stretch;
115
+ }
116
+ .lhsBox_small,
117
+ .lhsBox_medium,
118
+ .lhsBox_large{
119
+ composes: varClass;
120
+ --listitem_doubleline_content_height: calc(var(--listitem_font_size) * 2 );
121
+ height: 100% ;
122
+ composes: dflex alignVertical from '../common/common.module.css';
123
+ }
124
+ .lhsBox_small {
125
+ max-height: calc(var(--listitem_doubleline_content_height) + var(--zd_size7)); /* 7px = listitem min-height - (top + bottom padding) - doubleLine content height */
126
+ }
127
+ .lhsBox_medium {
128
+ max-height: calc(var(--listitem_doubleline_content_height) + var(--zd_size8)); /* 8px = listitem min-height - (top + bottom padding) - doubleLine content height */
129
+ }
130
+ .lhsBox_large {
131
+ max-height: calc(var(--listitem_doubleline_content_height) + var(--zd_size15)); /* 15px = listitem min-height - (top + bottom padding) - doubleLine content height */
132
+ }
97
133
  .defaultHover, .primaryHover, .secondaryHover, .darkHover {
98
134
  background-color: var(--listitem_highlight_bg_color);
99
135
  }
@@ -155,12 +191,22 @@
155
191
  .activedark {
156
192
  --listitem_active_bg_color: var(--zdt_listitem_dark_active_bg);
157
193
  }
194
+ .secondaryField{
195
+ color:var(--zdt_listitem_secondaryfield_text);
196
+ font-size: var(--zd_font_size12) ;
197
+ line-height: 1.25;
198
+ }
158
199
 
159
200
  .tickIcon,
160
201
  .defaultTick,
161
202
  .darkTick {
162
203
  position: absolute;
163
204
  color: var(--listitem_tickicon_color);
205
+ top:50% ;
206
+ }
207
+
208
+ .tickIcon, .defaultTick, .darkTick {
209
+ transform: translateY(-50%);
164
210
  }
165
211
 
166
212
  [dir=ltr] .tickIcon, [dir=ltr] .defaultTick, [dir=ltr] .darkTick {
@@ -199,7 +245,7 @@
199
245
  }
200
246
  .responsiveHeight {
201
247
  --listitem_min_height: var(--zd_size45);
202
- font-size: var(--zd_font_size15) ;
248
+ --listitem_font_size: var(--zd_font_size15);
203
249
  padding-top: var(--zd_size10) ;
204
250
  padding-bottom: var(--zd_size10) ;
205
251
  }
@@ -128,7 +128,9 @@ var ListItemWithAvatar = /*#__PURE__*/function (_React$PureComponent) {
128
128
  a11y = _this$props4.a11y,
129
129
  customClass = _this$props4.customClass,
130
130
  customProps = _this$props4.customProps,
131
- needMultiLineText = _this$props4.needMultiLineText;
131
+ needMultiLineText = _this$props4.needMultiLineText,
132
+ secondaryValue = _this$props4.secondaryValue,
133
+ lhsAlignContent = _this$props4.lhsAlignContent;
132
134
  var _customProps$ListItem = customProps.ListItemProps,
133
135
  ListItemProps = _customProps$ListItem === void 0 ? {} : _customProps$ListItem,
134
136
  _customProps$Containe = customProps.ContainerProps,
@@ -172,7 +174,10 @@ var ListItemWithAvatar = /*#__PURE__*/function (_React$PureComponent) {
172
174
  title: null,
173
175
  customProps: ListItemProps
174
176
  }, ContainerProps), name || imgSrc ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
175
- className: _ListItemModule["default"].leftAvatar
177
+ className: "".concat(_ListItemModule["default"].leftAvatar, " ").concat(lhsAlignContent !== 'center' ? "".concat(_ListItemModule["default"].lhsBox) : '')
178
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
179
+ align: lhsAlignContent,
180
+ className: _ListItemModule["default"]["lhsBox_".concat(size)]
176
181
  }, isTeam ? /*#__PURE__*/_react["default"].createElement(_AvatarTeam["default"], _extends({
177
182
  name: name,
178
183
  size: "small",
@@ -193,12 +198,18 @@ var ListItemWithAvatar = /*#__PURE__*/function (_React$PureComponent) {
193
198
  needTitle: needAvatarTitle,
194
199
  palette: isDarkPalette ? 'info' : avatarPalette,
195
200
  customClass: customAvatar
196
- }, AvatarProps))) : null, value ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
201
+ }, AvatarProps)))) : null, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
197
202
  flexible: true,
198
- shrink: true,
203
+ shrink: true
204
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
205
+ alignBox: "column"
206
+ }, value ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
199
207
  "data-title": isDisabled ? null : title,
200
208
  className: needMultiLineText ? _ListItemModule["default"].multiLineValue : _ListItemModule["default"].value
201
- }, value) : null, needTick && active ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
209
+ }, value) : null, secondaryValue ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
210
+ "data-title": isDisabled ? null : secondaryValue,
211
+ className: "".concat(_ListItemModule["default"].secondaryField, " ").concat(needMultiLineText ? _ListItemModule["default"].multiLine : '')
212
+ }, secondaryValue) : null)), needTick && active ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
202
213
  className: _ListItemModule["default"].tickIcon,
203
214
  "aria-hidden": ariaHidden,
204
215
  dataId: "".concat(dataIdString, "_tickIcon"),