@zohodesk/components 1.2.63 → 1.3.1

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 (68) hide show
  1. package/.cli/config/variables/variableMapping.json +6 -0
  2. package/.cli/propValidation_report.html +1 -1
  3. package/README.md +12 -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 +54 -7
  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 +8 -3
  30. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
  31. package/es/MultiSelect/props/defaultProps.js +2 -1
  32. package/es/MultiSelect/props/propTypes.js +4 -0
  33. package/es/Radio/props/propTypes.js +1 -1
  34. package/es/common/common.module.css +10 -0
  35. package/es/utils/dropDownUtils.js +41 -8
  36. package/es/v1/Radio/props/propTypes.js +1 -1
  37. package/lib/ListItem/ListContainer.js +3 -2
  38. package/lib/ListItem/ListItem.module.css +54 -7
  39. package/lib/ListItem/ListItemWithAvatar.js +16 -5
  40. package/lib/ListItem/ListItemWithCheckBox.js +17 -5
  41. package/lib/ListItem/ListItemWithIcon.js +19 -6
  42. package/lib/ListItem/ListItemWithRadio.js +18 -5
  43. package/lib/ListItem/__tests__/ListContainer.spec.js +8 -0
  44. package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +35 -0
  45. package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +35 -0
  46. package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +35 -0
  47. package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +35 -0
  48. package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +13 -0
  49. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +200 -2
  50. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +451 -30
  51. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +202 -4
  52. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +447 -30
  53. package/lib/ListItem/props/defaultProps.js +13 -5
  54. package/lib/ListItem/props/propTypes.js +12 -2
  55. package/lib/MultiSelect/AdvancedMultiSelect.js +76 -69
  56. package/lib/MultiSelect/MultiSelect.js +8 -4
  57. package/lib/MultiSelect/MultiSelect.module.css +9 -1
  58. package/lib/MultiSelect/MultiSelectWithAvatar.js +6 -2
  59. package/lib/MultiSelect/Suggestions.js +9 -4
  60. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
  61. package/lib/MultiSelect/props/defaultProps.js +2 -1
  62. package/lib/MultiSelect/props/propTypes.js +5 -1
  63. package/lib/Radio/props/propTypes.js +1 -1
  64. package/lib/common/common.module.css +10 -0
  65. package/lib/utils/dropDownUtils.js +49 -11
  66. package/lib/v1/Radio/props/propTypes.js +1 -1
  67. package/package.json +7 -7
  68. package/result.json +1 -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
 
@@ -27,7 +27,8 @@ export default class Suggestions extends React.PureComponent {
27
27
  avatarPalette,
28
28
  palette,
29
29
  htmlId,
30
- a11y
30
+ a11y,
31
+ needMultiLineText
31
32
  } = this.props;
32
33
  const {
33
34
  ariaParentRole,
@@ -46,6 +47,7 @@ export default class Suggestions extends React.PureComponent {
46
47
  const {
47
48
  id,
48
49
  value,
50
+ secondaryValue,
49
51
  photoURL,
50
52
  icon,
51
53
  optionType,
@@ -63,6 +65,7 @@ export default class Suggestions extends React.PureComponent {
63
65
  });
64
66
  const commonProps = {
65
67
  isDisabled,
68
+ needMultiLineText,
66
69
  ...listItemCustomProps
67
70
  };
68
71
 
@@ -92,7 +95,8 @@ export default class Suggestions extends React.PureComponent {
92
95
  size: listItemSize,
93
96
  avatarPalette: avatarPalette,
94
97
  palette: palette,
95
- a11y: list_a11y
98
+ a11y: list_a11y,
99
+ secondaryValue: secondaryValue
96
100
  });
97
101
  } else if (optionType === 'icon') {
98
102
  return /*#__PURE__*/React.createElement(ListItemWithIcon, { ...commonProps,
@@ -112,7 +116,8 @@ export default class Suggestions extends React.PureComponent {
112
116
  iconSize: iconSize,
113
117
  size: listItemSize,
114
118
  palette: palette,
115
- a11y: list_a11y
119
+ a11y: list_a11y,
120
+ secondaryValue: secondaryValue
116
121
  });
117
122
  }
118
123
 
@@ -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>
@@ -166,5 +166,6 @@ export const SelectedOptions_defaultProps = {
166
166
  dataId: 'selectedOptions'
167
167
  };
168
168
  export const Suggestions_defaultProps = {
169
- a11y: {}
169
+ a11y: {},
170
+ needMultiLineText: false
170
171
  };
@@ -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 = {
@@ -171,6 +173,7 @@ export const Suggestions_propTypes = {
171
173
  palette: PropTypes.string,
172
174
  selectedOptions: PropTypes.array,
173
175
  htmlId: PropTypes.string,
176
+ needMultiLineText: PropTypes.bool,
174
177
  suggestions: PropTypes.arrayOf(PropTypes.shape({
175
178
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
176
179
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
@@ -281,6 +284,7 @@ export const AdvancedMultiSelect_propTypes = { ...MultiSelect_propTypes,
281
284
  //For grouping multiSelect
282
285
  optionType: PropTypes.oneOf(['default', 'avatar', 'icon']),
283
286
  needEffect: PropTypes.bool,
287
+ secondaryField: PropTypes.string,
284
288
  animationStyle: PropTypes.string,
285
289
  defaultDropBoxPosition: PropTypes.oneOf(['bottom', 'top', 'left', 'right']),
286
290
  dropBoxSize: PropTypes.oneOf(['small', 'medium', 'large']),
@@ -29,7 +29,7 @@ export const propTypes = {
29
29
  ariaChecked: PropTypes.bool,
30
30
  ariaHidden: PropTypes.bool,
31
31
  role: PropTypes.string,
32
- tabIndex: PropTypes.oneOfType(PropTypes.string, PropTypes.number),
32
+ tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
33
33
  ariaLabelledby: PropTypes.string,
34
34
  ariaLabel: PropTypes.string,
35
35
  ariaReadonly: PropTypes.bool
@@ -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,44 @@ 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
+ }; // const isObjectContainsSearchString = (searchFields = [], searchStr = '', obj) => {
47
+ // const matchedFields = searchFields.filter(element => {
48
+ // return getSearchString(obj[element]).indexOf(searchStr) !== -1
49
+ // });
50
+ // return matchedFields.length !== 0;
51
+ // }
52
+
53
+
54
+ const isObjectContainsSearchString = function () {
55
+ let searchFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
56
+ let searchStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
57
+ let obj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
58
+ return searchFields.some(field => {
59
+ const val = obj[field];
60
+ if (val === null || val === undefined) return false;
61
+ const str = getSearchString(val);
62
+ return str && str.indexOf(searchStr) !== -1;
63
+ });
64
+ };
65
+
43
66
  const getAllowValueFallback = props => props.allowValueFallback !== false;
44
67
 
45
- export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch, getKeepSelectedOptions], (options, selectedOptions, searchStr, needSearch, isStartsWithSearch, keepSelectedOptions) => {
68
+ export const makeGetMultiSelectFilterSuggestions = () => createSelector([getOptions, getSelectedOptionsSel, getSearchStr, getNeedSearch, getIsStartWithSearch, getKeepSelectedOptions, getSearchFields], (options, selectedOptions, searchStr, needSearch, isStartsWithSearch, keepSelectedOptions, searchFields) => {
46
69
  const suggestions = [];
47
70
  const suggestionIds = [];
48
71
  options.forEach(option => {
72
+ const searchString = getSearchString(searchStr);
49
73
  const {
50
- id,
51
74
  value = ''
52
75
  } = option;
53
76
  const valueString = getSearchString(value);
54
- const searchString = getSearchString(searchStr);
55
- const isMatch = needSearch ? isStartsWithSearch ? valueString.startsWith(searchString) : valueString.indexOf(searchString) !== -1 : true;
77
+ const isMatch = needSearch ? isStartsWithSearch ? valueString.startsWith(searchString) : isObjectContainsSearchString(searchFields, searchString, option) : true;
56
78
 
57
- if (selectedOptions.indexOf(id) === -1 && isMatch || keepSelectedOptions) {
79
+ if (selectedOptions.indexOf(option.id) === -1 && isMatch || keepSelectedOptions) {
58
80
  suggestions.push(option);
59
- suggestionIds.push(id);
81
+ suggestionIds.push(option.id);
60
82
  }
61
83
  });
62
84
  return {
@@ -107,7 +129,7 @@ export const extractOptionId = id => {
107
129
  }
108
130
  };
109
131
  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) => {
132
+ 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
133
  const revampOptions = [];
112
134
  const remvampOptionIds = [];
113
135
  const normalizedAllOptions = {};
@@ -119,6 +141,7 @@ export const makeFormatOptions = () => createSelector([getOptions, getValueField
119
141
  valueField: impValueField,
120
142
  textField: impTextField,
121
143
  imageField: impImageField,
144
+ secondaryField: impSecondaryField,
122
145
  optionType: impOptionType,
123
146
  iconName: impIconName,
124
147
  iconSize: impIconSize,
@@ -126,15 +149,25 @@ export const makeFormatOptions = () => createSelector([getOptions, getValueField
126
149
  } = option;
127
150
  let id = typeof option === 'object' ? option[impValueField || valueField] : option;
128
151
  const value = typeof option === 'object' ? option[impTextField || textField] : allowValueFallback ? option : '';
152
+ const secondaryValue = typeof option === 'object' ? option[impSecondaryField || secondaryField] : '';
129
153
  const photoURL = typeof option === 'object' ? option[impImageField || imageField] : ''; // grouping options (group select/MultiSelect)
130
154
 
131
155
  id = !getIsEmptyValue(id) ? optionIdGrouping(id, prefixText) : '';
156
+ const additionalSearchFieldData = searchFields.reduce((value, item) => {
157
+ if (typeof option === 'object' && option.hasOwnProperty(item)) {
158
+ value[item] = option[item];
159
+ }
160
+
161
+ return value;
162
+ }, {});
132
163
 
133
164
  if (remvampOptionIds.indexOf(id) === -1 && !getIsEmptyValue(id) && !getIsEmptyValue(value)) {
134
165
  remvampOptionIds.push(id);
135
- const optionDetails = {
166
+ const optionDetails = { // ...option,
167
+ ...additionalSearchFieldData,
136
168
  id,
137
169
  value,
170
+ secondaryValue,
138
171
  optionType: impOptionType || optionType
139
172
  };
140
173
 
@@ -29,7 +29,7 @@ export const propTypes = {
29
29
  ariaChecked: PropTypes.bool,
30
30
  ariaHidden: PropTypes.bool,
31
31
  role: PropTypes.string,
32
- tabIndex: PropTypes.oneOfType(PropTypes.string, PropTypes.number),
32
+ tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
33
33
  ariaLabelledby: PropTypes.string,
34
34
  ariaLabel: PropTypes.string,
35
35
  ariaReadonly: PropTypes.bool
@@ -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);
@@ -66,15 +67,14 @@
66
67
  --listitem_padding: var(--zd_size10) var(--zd_size25) var(--zd_size10) var(--zd_size3);
67
68
  }
68
69
  .value,
69
- .children {
70
+ .children,.secondaryValue {
70
71
  composes: dotted from '../common/common.module.css';
71
72
  }
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,23 @@
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
+ font-size: 0 ;
207
+ }
208
+
209
+ .tickIcon, .defaultTick, .darkTick {
210
+ transform: translateY(-50%);
164
211
  }
165
212
 
166
213
  [dir=ltr] .tickIcon, [dir=ltr] .defaultTick, [dir=ltr] .darkTick {
@@ -199,7 +246,7 @@
199
246
  }
200
247
  .responsiveHeight {
201
248
  --listitem_min_height: var(--zd_size45);
202
- font-size: var(--zd_font_size15) ;
249
+ --listitem_font_size: var(--zd_font_size15);
203
250
  padding-top: var(--zd_size10) ;
204
251
  padding-bottom: var(--zd_size10) ;
205
252
  }
@@ -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 : _ListItemModule["default"].secondaryValue)
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"),
@@ -116,7 +116,10 @@ var ListItemWithCheckBox = /*#__PURE__*/function (_React$Component) {
116
116
  a11y = _this$props4.a11y,
117
117
  customClass = _this$props4.customClass,
118
118
  customProps = _this$props4.customProps,
119
- needMultiLineText = _this$props4.needMultiLineText;
119
+ needMultiLineText = _this$props4.needMultiLineText,
120
+ secondaryValue = _this$props4.secondaryValue,
121
+ lhsAlignContent = _this$props4.lhsAlignContent,
122
+ lhsJustifyContent = _this$props4.lhsJustifyContent;
120
123
 
121
124
  var listA11y = _objectSpread({
122
125
  role: 'option'
@@ -150,8 +153,11 @@ var ListItemWithCheckBox = /*#__PURE__*/function (_React$Component) {
150
153
  title: null,
151
154
  customProps: ListItemProps
152
155
  }, ContainerProps), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
153
- className: _ListItemModule["default"].iconBox,
156
+ className: "".concat(_ListItemModule["default"].iconBox, " ").concat(_ListItemModule["default"].lhsBox, " ").concat(_ListItemModule["default"]["lhsJustifyContent_".concat(lhsJustifyContent)]),
154
157
  dataId: "".concat(dataId ? dataId : value, "_checkBox")
158
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
159
+ align: lhsAlignContent,
160
+ className: lhsAlignContent !== 'center' ? _ListItemModule["default"]["lhsBox_".concat(size)] : ''
155
161
  }, /*#__PURE__*/_react["default"].createElement(_CheckBox["default"], {
156
162
  checked: checked,
157
163
  a11y: {
@@ -161,12 +167,18 @@ var ListItemWithCheckBox = /*#__PURE__*/function (_React$Component) {
161
167
  customCheckBox: customCheckBox,
162
168
  customLabel: customLabel
163
169
  }
164
- })), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
170
+ }))), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
165
171
  flexible: true,
166
- shrink: true,
172
+ shrink: true
173
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
174
+ alignBox: "column"
175
+ }, value ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
167
176
  "data-title": isDisabled ? null : title,
168
177
  className: needMultiLineText ? _ListItemModule["default"].multiLineValue : _ListItemModule["default"].value
169
- }, value));
178
+ }, value) : null, secondaryValue ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
179
+ "data-title": isDisabled ? null : secondaryValue,
180
+ className: "".concat(_ListItemModule["default"].secondaryField, " ").concat(needMultiLineText ? _ListItemModule["default"].multiLine : _ListItemModule["default"].secondaryValue)
181
+ }, secondaryValue) : null)));
170
182
  }
171
183
  }]);
172
184
 
@@ -124,7 +124,10 @@ var ListItemWithIcon = /*#__PURE__*/function (_React$Component) {
124
124
  a11y = _this$props4.a11y,
125
125
  customClass = _this$props4.customClass,
126
126
  customProps = _this$props4.customProps,
127
- needMultiLineText = _this$props4.needMultiLineText;
127
+ needMultiLineText = _this$props4.needMultiLineText,
128
+ secondaryValue = _this$props4.secondaryValue,
129
+ lhsAlignContent = _this$props4.lhsAlignContent,
130
+ lhsJustifyContent = _this$props4.lhsJustifyContent;
128
131
  var _customProps$ListItem = customProps.ListItemProps,
129
132
  ListItemProps = _customProps$ListItem === void 0 ? {} : _customProps$ListItem,
130
133
  _customProps$Containe = customProps.ContainerProps,
@@ -161,21 +164,31 @@ var ListItemWithIcon = /*#__PURE__*/function (_React$Component) {
161
164
  customProps: ListItemProps
162
165
  }, ContainerProps), iconName && /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
163
166
  "aria-hidden": true,
164
- className: _ListItemModule["default"].iconBox,
167
+ align: lhsAlignContent,
168
+ className: "".concat(_ListItemModule["default"].iconBox, " ").concat(_ListItemModule["default"].lhsBox, " ").concat(_ListItemModule["default"]["lhsJustifyContent_".concat(lhsJustifyContent)]),
165
169
  dataId: dataId ? "".concat(dataId, "_Icon") : "".concat(value.toLowerCase().replace("'", '_'), "_Icon")
170
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
171
+ align: lhsAlignContent,
172
+ className: lhsAlignContent !== 'center' ? _ListItemModule["default"]["lhsBox_".concat(size)] : ''
166
173
  }, /*#__PURE__*/_react["default"].createElement(_icons.Icon, {
167
174
  iconClass: iconClass,
168
175
  name: iconName,
169
176
  size: iconSize
170
- })), iconClass && !iconName ? /*#__PURE__*/_react["default"].createElement("span", {
177
+ }))), iconClass && !iconName ? /*#__PURE__*/_react["default"].createElement("span", {
171
178
  className: iconClass
172
- }) : null, value && /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
179
+ }) : null, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
173
180
  flexible: true,
174
- shrink: true,
181
+ shrink: true
182
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
183
+ alignBox: "column"
184
+ }, value ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
175
185
  className: needMultiLineText ? _ListItemModule["default"].multiLineValue : _ListItemModule["default"].value,
176
186
  "data-title": isDisabled ? null : title,
177
187
  dataId: "".concat(dataIdString, "_Text")
178
- }, value), needTick && active ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
188
+ }, value) : null, secondaryValue ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
189
+ "data-title": isDisabled ? null : secondaryValue,
190
+ className: "".concat(_ListItemModule["default"].secondaryField, " ").concat(needMultiLineText ? _ListItemModule["default"].multiLine : _ListItemModule["default"].secondaryValue)
191
+ }, secondaryValue) : null)), needTick && active ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
179
192
  className: _ListItemModule["default"].tickIcon,
180
193
  "aria-hidden": ariaHidden,
181
194
  dataId: "".concat(dataIdString, "_tickIcon"),