@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.
- package/.cli/config/variables/variableMapping.json +7 -0
- package/.cli/propValidation_report.html +1 -1
- package/README.md +8 -0
- package/assets/Appearance/dark/mode/Component_DarkMode.module.css +1 -0
- package/assets/Appearance/light/mode/Component_LightMode.module.css +1 -0
- package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +1 -0
- package/es/ListItem/ListContainer.js +3 -2
- package/es/ListItem/ListItem.module.css +52 -6
- package/es/ListItem/ListItemWithAvatar.js +17 -6
- package/es/ListItem/ListItemWithCheckBox.js +18 -6
- package/es/ListItem/ListItemWithIcon.js +20 -7
- package/es/ListItem/ListItemWithRadio.js +19 -6
- package/es/ListItem/__tests__/ListContainer.spec.js +8 -0
- package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +35 -0
- package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +35 -0
- package/es/ListItem/__tests__/ListItemWithIcon.spec.js +35 -0
- package/es/ListItem/__tests__/ListItemWithRadio.spec.js +35 -0
- package/es/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +13 -0
- package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +200 -2
- package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +451 -30
- package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +202 -4
- package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +447 -30
- package/es/ListItem/props/defaultProps.js +13 -5
- package/es/ListItem/props/propTypes.js +13 -1
- package/es/MultiSelect/AdvancedMultiSelect.js +10 -4
- package/es/MultiSelect/MultiSelect.js +8 -4
- package/es/MultiSelect/MultiSelect.module.css +9 -1
- package/es/MultiSelect/MultiSelectWithAvatar.js +6 -2
- package/es/MultiSelect/Suggestions.js +5 -2
- package/es/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
- package/es/MultiSelect/props/propTypes.js +3 -0
- package/es/Radio/props/propTypes.js +1 -1
- package/es/common/common.module.css +10 -0
- package/es/utils/dropDownUtils.js +33 -8
- package/es/v1/Radio/props/propTypes.js +1 -1
- package/lib/ListItem/ListContainer.js +3 -2
- package/lib/ListItem/ListItem.module.css +52 -6
- package/lib/ListItem/ListItemWithAvatar.js +16 -5
- package/lib/ListItem/ListItemWithCheckBox.js +17 -5
- package/lib/ListItem/ListItemWithIcon.js +19 -6
- package/lib/ListItem/ListItemWithRadio.js +18 -5
- package/lib/ListItem/__tests__/ListContainer.spec.js +8 -0
- package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +35 -0
- package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +35 -0
- package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +35 -0
- package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +35 -0
- package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +13 -0
- package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +200 -2
- package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +451 -30
- package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +202 -4
- package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +447 -30
- package/lib/ListItem/props/defaultProps.js +13 -5
- package/lib/ListItem/props/propTypes.js +12 -2
- package/lib/MultiSelect/AdvancedMultiSelect.js +76 -69
- package/lib/MultiSelect/MultiSelect.js +8 -4
- package/lib/MultiSelect/MultiSelect.module.css +9 -1
- package/lib/MultiSelect/MultiSelectWithAvatar.js +6 -2
- package/lib/MultiSelect/Suggestions.js +5 -2
- package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +34 -13
- package/lib/MultiSelect/props/propTypes.js +4 -1
- package/lib/Radio/props/propTypes.js +1 -1
- package/lib/common/common.module.css +10 -0
- package/lib/utils/dropDownUtils.js +41 -11
- package/lib/v1/Radio/props/propTypes.js +1 -1
- package/package.json +6 -6
- 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
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
data-id="
|
|
25
|
-
data-
|
|
26
|
-
|
|
27
|
-
|
|
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="
|
|
32
|
-
data-id="
|
|
38
|
+
class="grow basis shrinkOn"
|
|
39
|
+
data-id="boxComponent"
|
|
33
40
|
data-selector-id="box"
|
|
34
|
-
data-test-id="
|
|
41
|
+
data-test-id="boxComponent"
|
|
35
42
|
>
|
|
36
|
-
|
|
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
|
|
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:
|
|
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(--
|
|
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
|
-
--
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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)
|
|
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
|
-
|
|
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
|
});
|