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