@zohodesk/components 1.2.63 → 1.3.0

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 (66) hide show
  1. package/.cli/config/variables/variableMapping.json +7 -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/Radio/props/propTypes.js +1 -1
  33. package/es/common/common.module.css +10 -0
  34. package/es/utils/dropDownUtils.js +33 -8
  35. package/es/v1/Radio/props/propTypes.js +1 -1
  36. package/lib/ListItem/ListContainer.js +3 -2
  37. package/lib/ListItem/ListItem.module.css +52 -6
  38. package/lib/ListItem/ListItemWithAvatar.js +16 -5
  39. package/lib/ListItem/ListItemWithCheckBox.js +17 -5
  40. package/lib/ListItem/ListItemWithIcon.js +19 -6
  41. package/lib/ListItem/ListItemWithRadio.js +18 -5
  42. package/lib/ListItem/__tests__/ListContainer.spec.js +8 -0
  43. package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +35 -0
  44. package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +35 -0
  45. package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +35 -0
  46. package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +35 -0
  47. package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +13 -0
  48. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +200 -2
  49. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +451 -30
  50. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +202 -4
  51. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +447 -30
  52. package/lib/ListItem/props/defaultProps.js +13 -5
  53. package/lib/ListItem/props/propTypes.js +12 -2
  54. package/lib/MultiSelect/AdvancedMultiSelect.js +76 -69
  55. package/lib/MultiSelect/MultiSelect.js +8 -4
  56. package/lib/MultiSelect/MultiSelect.module.css +9 -1
  57. package/lib/MultiSelect/MultiSelectWithAvatar.js +6 -2
  58. package/lib/MultiSelect/Suggestions.js +5 -2
  59. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
  60. package/lib/MultiSelect/props/propTypes.js +4 -1
  61. package/lib/Radio/props/propTypes.js +1 -1
  62. package/lib/common/common.module.css +10 -0
  63. package/lib/utils/dropDownUtils.js +41 -11
  64. package/lib/v1/Radio/props/propTypes.js +1 -1
  65. package/package.json +6 -6
  66. 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
 
@@ -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']),
@@ -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,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
 
@@ -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);
@@ -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"),
@@ -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 : '')
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 : '')
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"),
@@ -117,7 +117,10 @@ var ListItemWithRadio = /*#__PURE__*/function (_React$Component) {
117
117
  a11y = _this$props4.a11y,
118
118
  customClass = _this$props4.customClass,
119
119
  customProps = _this$props4.customProps,
120
- needMultiLineText = _this$props4.needMultiLineText;
120
+ needMultiLineText = _this$props4.needMultiLineText,
121
+ secondaryValue = _this$props4.secondaryValue,
122
+ lhsAlignContent = _this$props4.lhsAlignContent,
123
+ lhsJustifyContent = _this$props4.lhsJustifyContent;
121
124
  var _customProps$ListItem = customProps.ListItemProps,
122
125
  ListItemProps = _customProps$ListItem === void 0 ? {} : _customProps$ListItem,
123
126
  _customProps$Containe = customProps.ContainerProps,
@@ -151,8 +154,12 @@ var ListItemWithRadio = /*#__PURE__*/function (_React$Component) {
151
154
  title: null,
152
155
  customProps: ListItemProps
153
156
  }, ContainerProps), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
154
- className: _ListItemModule["default"].iconBox,
157
+ align: lhsAlignContent,
158
+ className: "".concat(_ListItemModule["default"].iconBox, " ").concat(_ListItemModule["default"].lhsBox, " ").concat(_ListItemModule["default"]["lhsJustifyContent_".concat(lhsJustifyContent)]),
155
159
  dataId: "".concat(dataId, "_radio")
160
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
161
+ align: lhsAlignContent,
162
+ className: lhsAlignContent !== 'center' ? _ListItemModule["default"]["lhsBox_".concat(size)] : ''
156
163
  }, /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
157
164
  checked: checked,
158
165
  id: id,
@@ -163,12 +170,18 @@ var ListItemWithRadio = /*#__PURE__*/function (_React$Component) {
163
170
  customRadio: customRadio,
164
171
  customRadioWrap: customRadioWrap
165
172
  }
166
- })), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
173
+ }))), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
167
174
  flexible: true,
168
- shrink: true,
175
+ shrink: true
176
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
177
+ alignBox: "column"
178
+ }, value ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
169
179
  "data-title": disableTitle ? null : title,
170
180
  className: needMultiLineText ? _ListItemModule["default"].multiLineValue : _ListItemModule["default"].value
171
- }, value));
181
+ }, value) : null, secondaryValue ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
182
+ "data-title": isDisabled ? null : secondaryValue,
183
+ className: "".concat(_ListItemModule["default"].secondaryField, " ").concat(needMultiLineText ? _ListItemModule["default"].multiLine : '')
184
+ }, secondaryValue) : null)));
172
185
  }
173
186
  }]);
174
187
 
@@ -15,4 +15,12 @@ describe('ListContainer', function () {
15
15
 
16
16
  expect(asFragment()).toMatchSnapshot();
17
17
  });
18
+ test('ListContainer with Align Base Line', function () {
19
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ListContainer["default"], {
20
+ align: 'baseline'
21
+ })),
22
+ asFragment = _render2.asFragment;
23
+
24
+ expect(asFragment()).toMatchSnapshot();
25
+ });
18
26
  });