@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
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import MultiSelect from "../MultiSelect";
|
|
4
|
+
const options = [{
|
|
5
|
+
id: 1,
|
|
6
|
+
text: 'custom 1',
|
|
7
|
+
optionType: 'custom'
|
|
8
|
+
}, {
|
|
9
|
+
id: 2,
|
|
10
|
+
text: 'custom 2',
|
|
11
|
+
optionType: 'custom'
|
|
12
|
+
}, {
|
|
13
|
+
id: 3,
|
|
14
|
+
text: 'custom 3',
|
|
15
|
+
optionType: 'custom'
|
|
16
|
+
}, {
|
|
17
|
+
id: 4,
|
|
18
|
+
text: 'custom 4',
|
|
19
|
+
optionType: 'custom'
|
|
20
|
+
}, {
|
|
21
|
+
id: 5,
|
|
22
|
+
text: 'custom 5',
|
|
23
|
+
optionType: 'custom'
|
|
24
|
+
}, {
|
|
25
|
+
id: 6,
|
|
26
|
+
text: 'custom 6',
|
|
27
|
+
optionType: 'custom'
|
|
28
|
+
}, {
|
|
29
|
+
id: 7,
|
|
30
|
+
text: 'custom 7',
|
|
31
|
+
optionType: 'custom'
|
|
32
|
+
}];
|
|
4
33
|
const testData = ['text1', 'text2', 'text3', 'text4', 'text5', 'text6', 'text7', 'text8', 'text9', 'text10'];
|
|
5
34
|
const testSelectedData = ['text1', 'text2', 'text3'];
|
|
6
35
|
describe('MultiSelect', () => {
|
|
@@ -10,6 +39,15 @@ describe('MultiSelect', () => {
|
|
|
10
39
|
} = render( /*#__PURE__*/React.createElement(MultiSelect, null));
|
|
11
40
|
expect(asFragment()).toMatchSnapshot();
|
|
12
41
|
});
|
|
42
|
+
test('Should render with renderCustomSelectedValue', () => {
|
|
43
|
+
const {
|
|
44
|
+
asFragment
|
|
45
|
+
} = render( /*#__PURE__*/React.createElement(MultiSelect, {
|
|
46
|
+
options: options,
|
|
47
|
+
renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, "MultiSelect Custom Value")
|
|
48
|
+
}));
|
|
49
|
+
expect(asFragment()).toMatchSnapshot();
|
|
50
|
+
});
|
|
13
51
|
test('rendering with limit feature', () => {
|
|
14
52
|
const {
|
|
15
53
|
asFragment
|
|
@@ -25,4 +25,17 @@ describe('SelectedOptions', () => {
|
|
|
25
25
|
}));
|
|
26
26
|
expect(asFragment()).toMatchSnapshot();
|
|
27
27
|
});
|
|
28
|
+
test('Should render with renderCustomSelectedValue', () => {
|
|
29
|
+
const {
|
|
30
|
+
asFragment
|
|
31
|
+
} = render( /*#__PURE__*/React.createElement(SelectedOptions, {
|
|
32
|
+
highLightedSelectOptions: [],
|
|
33
|
+
selectedOptions: [{
|
|
34
|
+
value: 'SelectedObject1',
|
|
35
|
+
optionType: 'custom'
|
|
36
|
+
}],
|
|
37
|
+
renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, " SelectedOptions Custom Value")
|
|
38
|
+
}));
|
|
39
|
+
expect(asFragment()).toMatchSnapshot();
|
|
40
|
+
});
|
|
28
41
|
});
|
|
@@ -57,6 +57,18 @@ describe('Suggestions', () => {
|
|
|
57
57
|
}));
|
|
58
58
|
expect(asFragment()).toMatchSnapshot();
|
|
59
59
|
});
|
|
60
|
+
test('Should render with renderBeforeChildren', () => {
|
|
61
|
+
const {
|
|
62
|
+
asFragment
|
|
63
|
+
} = render( /*#__PURE__*/React.createElement(Suggestions, {
|
|
64
|
+
suggestions: [{
|
|
65
|
+
value: 'Suggestions Option 1',
|
|
66
|
+
id: '1'
|
|
67
|
+
}],
|
|
68
|
+
renderBeforeChildren: () => /*#__PURE__*/React.createElement("span", null, "Suggestions Before Children")
|
|
69
|
+
}));
|
|
70
|
+
expect(asFragment()).toMatchSnapshot();
|
|
71
|
+
});
|
|
60
72
|
test('rendering with limit props', () => {
|
|
61
73
|
const {
|
|
62
74
|
asFragment
|
|
@@ -25,10 +25,8 @@ exports[`AdvancedGroupMultiSelect rendering the defult props 1`] = `
|
|
|
25
25
|
"
|
|
26
26
|
/>
|
|
27
27
|
<div
|
|
28
|
-
class="container
|
|
29
|
-
data-id="containerComponent"
|
|
28
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
30
29
|
data-selector-id="textBoxIcon"
|
|
31
|
-
data-test-id="containerComponent"
|
|
32
30
|
>
|
|
33
31
|
<div
|
|
34
32
|
class="grow basis shrinkOff"
|
|
@@ -25,10 +25,8 @@ exports[`AdvancedMultiSelect rendering the defult props 1`] = `
|
|
|
25
25
|
"
|
|
26
26
|
/>
|
|
27
27
|
<div
|
|
28
|
-
class="container
|
|
29
|
-
data-id="containerComponent"
|
|
28
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
30
29
|
data-selector-id="textBoxIcon"
|
|
31
|
-
data-test-id="containerComponent"
|
|
32
30
|
>
|
|
33
31
|
<div
|
|
34
32
|
class="grow basis shrinkOff"
|
|
@@ -98,10 +96,8 @@ exports[`AdvancedMultiSelect rendering the options array with objects and string
|
|
|
98
96
|
"
|
|
99
97
|
/>
|
|
100
98
|
<div
|
|
101
|
-
class="container
|
|
102
|
-
data-id="containerComponent"
|
|
99
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
103
100
|
data-selector-id="textBoxIcon"
|
|
104
|
-
data-test-id="containerComponent"
|
|
105
101
|
>
|
|
106
102
|
<div
|
|
107
103
|
class="grow basis shrinkOff"
|
|
@@ -346,10 +342,8 @@ exports[`AdvancedMultiSelect rendering the options array with only objects using
|
|
|
346
342
|
"
|
|
347
343
|
/>
|
|
348
344
|
<div
|
|
349
|
-
class="container
|
|
350
|
-
data-id="containerComponent"
|
|
345
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
351
346
|
data-selector-id="textBoxIcon"
|
|
352
|
-
data-test-id="containerComponent"
|
|
353
347
|
>
|
|
354
348
|
<div
|
|
355
349
|
class="grow basis shrinkOff"
|
|
@@ -1,5 +1,88 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
+
exports[`MultiSelect Should render with renderCustomSelectedValue 1`] = `
|
|
4
|
+
<DocumentFragment>
|
|
5
|
+
<div
|
|
6
|
+
class="wrapper effect"
|
|
7
|
+
data-id="multiSelect"
|
|
8
|
+
data-selector-id="multiSelect"
|
|
9
|
+
data-test-id="multiSelect"
|
|
10
|
+
>
|
|
11
|
+
<div
|
|
12
|
+
class="container medium borderColor_default hasBorder flex cover rowdir wrap vCenter"
|
|
13
|
+
data-id="containerComponent"
|
|
14
|
+
data-selector-id="container"
|
|
15
|
+
data-test-id="containerComponent"
|
|
16
|
+
>
|
|
17
|
+
<div
|
|
18
|
+
class="wrapper grow basisAuto shrinkOn"
|
|
19
|
+
data-id="boxComponent"
|
|
20
|
+
data-selector-id="box"
|
|
21
|
+
data-test-id="boxComponent"
|
|
22
|
+
>
|
|
23
|
+
<span
|
|
24
|
+
class=" custmSpan custmSpanMedium
|
|
25
|
+
"
|
|
26
|
+
/>
|
|
27
|
+
<div
|
|
28
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
29
|
+
data-selector-id="textBoxIcon"
|
|
30
|
+
>
|
|
31
|
+
<div
|
|
32
|
+
class="grow basis shrinkOff"
|
|
33
|
+
data-id="boxComponent"
|
|
34
|
+
data-selector-id="box"
|
|
35
|
+
data-test-id="boxComponent"
|
|
36
|
+
>
|
|
37
|
+
<input
|
|
38
|
+
aria-expanded="false"
|
|
39
|
+
aria-haspopup="true"
|
|
40
|
+
aria-required="true"
|
|
41
|
+
autocomplete="off"
|
|
42
|
+
class=" container medium default effect borderColor_default "
|
|
43
|
+
data-id="multiSelect_textBox"
|
|
44
|
+
data-selector-id="textBoxIcon"
|
|
45
|
+
data-test-id="multiSelect_textBox"
|
|
46
|
+
maxlength="250"
|
|
47
|
+
role="combobox"
|
|
48
|
+
type="text"
|
|
49
|
+
value=""
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
<div
|
|
53
|
+
class="iconContainer shrinkOff"
|
|
54
|
+
data-id="boxComponent"
|
|
55
|
+
data-selector-id="box"
|
|
56
|
+
data-test-id="boxComponent"
|
|
57
|
+
>
|
|
58
|
+
<div
|
|
59
|
+
class="flex cover rowdir"
|
|
60
|
+
data-id="containerComponent"
|
|
61
|
+
data-selector-id="container"
|
|
62
|
+
data-test-id="containerComponent"
|
|
63
|
+
>
|
|
64
|
+
<div
|
|
65
|
+
class="icon shrinkOff"
|
|
66
|
+
data-id="boxComponent"
|
|
67
|
+
data-selector-id="box"
|
|
68
|
+
data-test-id="boxComponent"
|
|
69
|
+
>
|
|
70
|
+
<div
|
|
71
|
+
class="rightPlaceholder inflex rowdir vCenter"
|
|
72
|
+
data-id="containerComponent"
|
|
73
|
+
data-selector-id="container"
|
|
74
|
+
data-test-id="containerComponent"
|
|
75
|
+
/>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</DocumentFragment>
|
|
84
|
+
`;
|
|
85
|
+
|
|
3
86
|
exports[`MultiSelect rendering the defult props 1`] = `
|
|
4
87
|
<DocumentFragment>
|
|
5
88
|
<div
|
|
@@ -25,10 +108,8 @@ exports[`MultiSelect rendering the defult props 1`] = `
|
|
|
25
108
|
"
|
|
26
109
|
/>
|
|
27
110
|
<div
|
|
28
|
-
class="container
|
|
29
|
-
data-id="containerComponent"
|
|
111
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
30
112
|
data-selector-id="textBoxIcon"
|
|
31
|
-
data-test-id="containerComponent"
|
|
32
113
|
>
|
|
33
114
|
<div
|
|
34
115
|
class="grow basis shrinkOff"
|
|
@@ -106,7 +187,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
106
187
|
data-test-id="multiSelect_selectedOptions"
|
|
107
188
|
>
|
|
108
189
|
<div
|
|
109
|
-
aria-labelledby="
|
|
190
|
+
aria-labelledby="7"
|
|
110
191
|
class="container effect medium lgRadius danger pointer "
|
|
111
192
|
data-id="tag_Tag"
|
|
112
193
|
data-selector-id="tag"
|
|
@@ -117,7 +198,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
117
198
|
<div
|
|
118
199
|
aria-hidden="true"
|
|
119
200
|
class="text mediumtext"
|
|
120
|
-
id="
|
|
201
|
+
id="7"
|
|
121
202
|
>
|
|
122
203
|
text1
|
|
123
204
|
</div>
|
|
@@ -156,7 +237,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
156
237
|
data-test-id="multiSelect_selectedOptions"
|
|
157
238
|
>
|
|
158
239
|
<div
|
|
159
|
-
aria-labelledby="
|
|
240
|
+
aria-labelledby="8"
|
|
160
241
|
class="container effect medium lgRadius danger pointer "
|
|
161
242
|
data-id="tag_Tag"
|
|
162
243
|
data-selector-id="tag"
|
|
@@ -167,7 +248,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
167
248
|
<div
|
|
168
249
|
aria-hidden="true"
|
|
169
250
|
class="text mediumtext"
|
|
170
|
-
id="
|
|
251
|
+
id="8"
|
|
171
252
|
>
|
|
172
253
|
text2
|
|
173
254
|
</div>
|
|
@@ -206,7 +287,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
206
287
|
data-test-id="multiSelect_selectedOptions"
|
|
207
288
|
>
|
|
208
289
|
<div
|
|
209
|
-
aria-labelledby="
|
|
290
|
+
aria-labelledby="9"
|
|
210
291
|
class="container effect medium lgRadius danger pointer "
|
|
211
292
|
data-id="tag_Tag"
|
|
212
293
|
data-selector-id="tag"
|
|
@@ -217,7 +298,7 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
217
298
|
<div
|
|
218
299
|
aria-hidden="true"
|
|
219
300
|
class="text mediumtext"
|
|
220
|
-
id="
|
|
301
|
+
id="9"
|
|
221
302
|
>
|
|
222
303
|
text3
|
|
223
304
|
</div>
|
|
@@ -260,10 +341,8 @@ exports[`MultiSelect rendering with limit feature 1`] = `
|
|
|
260
341
|
"
|
|
261
342
|
/>
|
|
262
343
|
<div
|
|
263
|
-
class="container
|
|
264
|
-
data-id="containerComponent"
|
|
344
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
265
345
|
data-selector-id="textBoxIcon"
|
|
266
|
-
data-test-id="containerComponent"
|
|
267
346
|
>
|
|
268
347
|
<div
|
|
269
348
|
class="grow basis shrinkOff"
|
|
@@ -25,10 +25,8 @@ exports[`MultiSelectWithAvatar rendering the defult props 1`] = `
|
|
|
25
25
|
"
|
|
26
26
|
/>
|
|
27
27
|
<div
|
|
28
|
-
class="container
|
|
29
|
-
data-id="containerComponent"
|
|
28
|
+
class="varClass customContainer effect container custmInputWrapper flex rowdir"
|
|
30
29
|
data-selector-id="textBoxIcon"
|
|
31
|
-
data-test-id="containerComponent"
|
|
32
30
|
>
|
|
33
31
|
<div
|
|
34
32
|
class="grow basis shrinkOff"
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
+
exports[`SelectedOptions Should render with renderCustomSelectedValue 1`] = `
|
|
4
|
+
<DocumentFragment>
|
|
5
|
+
<div
|
|
6
|
+
class="tag medium shrinkOff"
|
|
7
|
+
data-id="selectedOptions"
|
|
8
|
+
data-selector-id="box"
|
|
9
|
+
data-test-id="selectedOptions"
|
|
10
|
+
>
|
|
11
|
+
<span>
|
|
12
|
+
SelectedOptions Custom Value
|
|
13
|
+
</span>
|
|
14
|
+
</div>
|
|
15
|
+
</DocumentFragment>
|
|
16
|
+
`;
|
|
17
|
+
|
|
3
18
|
exports[`SelectedOptions rendering the basic select options 1`] = `
|
|
4
19
|
<DocumentFragment>
|
|
5
20
|
<div
|
|
@@ -1,5 +1,71 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
+
exports[`Suggestions Should render with renderBeforeChildren 1`] = `
|
|
4
|
+
<DocumentFragment>
|
|
5
|
+
<div
|
|
6
|
+
class="flex coldir"
|
|
7
|
+
data-id="containerComponent"
|
|
8
|
+
data-selector-id="container"
|
|
9
|
+
data-test-id="containerComponent"
|
|
10
|
+
tabindex="0"
|
|
11
|
+
>
|
|
12
|
+
<div
|
|
13
|
+
class="shrinkOff"
|
|
14
|
+
data-id="undefined"
|
|
15
|
+
data-selector-id="box"
|
|
16
|
+
data-test-id="undefined"
|
|
17
|
+
>
|
|
18
|
+
<li
|
|
19
|
+
aria-label="Suggestions Option 1"
|
|
20
|
+
aria-selected="false"
|
|
21
|
+
class="list medium default withBorder flex rowdir vCenter"
|
|
22
|
+
data-a11y-inset-focus="true"
|
|
23
|
+
data-a11y-list-active="false"
|
|
24
|
+
data-id="Suggestions Option 1"
|
|
25
|
+
data-selector-id="listItem"
|
|
26
|
+
data-test-id="Suggestions Option 1"
|
|
27
|
+
data-title="Suggestions Option 1"
|
|
28
|
+
role="option"
|
|
29
|
+
tabindex="0"
|
|
30
|
+
>
|
|
31
|
+
<div
|
|
32
|
+
class="leftBox grow basis shrinkOff"
|
|
33
|
+
data-id="boxComponent"
|
|
34
|
+
data-selector-id="box"
|
|
35
|
+
data-test-id="boxComponent"
|
|
36
|
+
>
|
|
37
|
+
<div
|
|
38
|
+
class="titleBox shrinkOff"
|
|
39
|
+
data-id="boxComponent"
|
|
40
|
+
data-selector-id="box"
|
|
41
|
+
data-test-id="boxComponent"
|
|
42
|
+
>
|
|
43
|
+
<div
|
|
44
|
+
class="beforeChild basisAuto shrinkOn"
|
|
45
|
+
data-id="boxComponent"
|
|
46
|
+
data-selector-id="box"
|
|
47
|
+
data-test-id="boxComponent"
|
|
48
|
+
>
|
|
49
|
+
<span>
|
|
50
|
+
Suggestions Before Children
|
|
51
|
+
</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div
|
|
54
|
+
class="value basisAuto shrinkOn"
|
|
55
|
+
data-id="boxComponent"
|
|
56
|
+
data-selector-id="box"
|
|
57
|
+
data-test-id="boxComponent"
|
|
58
|
+
>
|
|
59
|
+
Suggestions Option 1
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</li>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</DocumentFragment>
|
|
67
|
+
`;
|
|
68
|
+
|
|
3
69
|
exports[`Suggestions rendering the defult props 1`] = `
|
|
4
70
|
<DocumentFragment>
|
|
5
71
|
<div
|
|
@@ -120,6 +120,7 @@ export const MultiSelect_propTypes = {
|
|
|
120
120
|
allowValueFallback: PropTypes.bool,
|
|
121
121
|
renderCustomClearComponent: PropTypes.func,
|
|
122
122
|
renderCustomToggleIndicator: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
123
|
+
renderCustomSelectedValue: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
123
124
|
limit: PropTypes.number,
|
|
124
125
|
secondaryField: PropTypes.string
|
|
125
126
|
};
|
|
@@ -158,6 +159,10 @@ export const SelectedOptions_propTypes = {
|
|
|
158
159
|
size: PropTypes.oneOf(['medium', 'xmedium']),
|
|
159
160
|
palette: PropTypes.string,
|
|
160
161
|
dataId: PropTypes.string,
|
|
162
|
+
isDisabled: PropTypes.bool,
|
|
163
|
+
isPopupReady: PropTypes.bool,
|
|
164
|
+
isPopupOpen: PropTypes.bool,
|
|
165
|
+
renderCustomSelectedValue: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
161
166
|
limit: PropTypes.number
|
|
162
167
|
};
|
|
163
168
|
export const Suggestions_propTypes = {
|
|
@@ -192,6 +197,7 @@ export const Suggestions_propTypes = {
|
|
|
192
197
|
optionType: PropTypes.string,
|
|
193
198
|
listItemProps: PropTypes.object
|
|
194
199
|
})),
|
|
200
|
+
renderBeforeChildren: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
195
201
|
limit: PropTypes.number,
|
|
196
202
|
limitReachedMessage: PropTypes.string
|
|
197
203
|
};
|
package/es/Select/Select.js
CHANGED
|
@@ -16,10 +16,12 @@ import { Icon } from '@zohodesk/icons';
|
|
|
16
16
|
import ResponsiveDropBox from "../ResponsiveDropBox/ResponsiveDropBox";
|
|
17
17
|
import { ResponsiveReceiver } from "../Responsive/CustomResponsive";
|
|
18
18
|
import Loader from '@zohodesk/svg/lib/Loader/Loader';
|
|
19
|
+
import InputFieldLine from "../shared/InputFieldLine/InputFieldLine.js";
|
|
19
20
|
/**** Methods ****/
|
|
20
21
|
|
|
21
22
|
import { dummyObj, makeFormatOptions, makeGetMultiSelectFilterSuggestions as makeGetFilterSuggestions, makeGetSelectedValueText as makeGetSelectedValue } from "../utils/dropDownUtils";
|
|
22
|
-
import { debounce, scrollTo, getIsEmptyValue, getSearchString, findScrollEnd, getKeyValue } from "../utils/Common.js";
|
|
23
|
+
import { debounce, scrollTo, getIsEmptyValue, getSearchString, findScrollEnd, getKeyValue, DUMMY_OBJECT } from "../utils/Common.js";
|
|
24
|
+
import { isRenderable, renderNode } from '@zohodesk/utils';
|
|
23
25
|
/**** CSS ****/
|
|
24
26
|
|
|
25
27
|
import style from "./Select.module.css";
|
|
@@ -71,6 +73,7 @@ export class SelectComponent extends Component {
|
|
|
71
73
|
|
|
72
74
|
this.state = {
|
|
73
75
|
selected,
|
|
76
|
+
selectedValueDetails,
|
|
74
77
|
options: allOptions,
|
|
75
78
|
optionsNormalize: normalizedAllOptions,
|
|
76
79
|
hoverIndex,
|
|
@@ -106,6 +109,7 @@ export class SelectComponent extends Component {
|
|
|
106
109
|
this.handleAddNewOption = this.handleAddNewOption.bind(this);
|
|
107
110
|
this.handleExposePopupHandlers = this.handleExposePopupHandlers.bind(this);
|
|
108
111
|
this.handleGetAddNewOptionText = this.handleGetAddNewOptionText.bind(this);
|
|
112
|
+
this.getInputFieldLineA11y = this.getInputFieldLineA11y.bind(this);
|
|
109
113
|
this.getVirtualizerPublicMethods = this.getVirtualizerPublicMethods.bind(this);
|
|
110
114
|
this.scrollToHighlightedIndex = this.scrollToHighlightedIndex.bind(this);
|
|
111
115
|
this.setSuggestionsVirtualizerContainerRefFunction = this.setSuggestionsVirtualizerContainerRefFunction.bind(this);
|
|
@@ -170,6 +174,7 @@ export class SelectComponent extends Component {
|
|
|
170
174
|
options: allOptions,
|
|
171
175
|
optionsNormalize: normalizedAllOptions,
|
|
172
176
|
selected,
|
|
177
|
+
selectedValueDetails,
|
|
173
178
|
hoverIndex: oldHoverIndex ? oldHoverIndex : hoverIndex,
|
|
174
179
|
selectedId,
|
|
175
180
|
selectedValueIndex: hoverIndex
|
|
@@ -717,6 +722,27 @@ export class SelectComponent extends Component {
|
|
|
717
722
|
});
|
|
718
723
|
}
|
|
719
724
|
|
|
725
|
+
getInputFieldLineA11y(_ref2) {
|
|
726
|
+
let {
|
|
727
|
+
setAriaId,
|
|
728
|
+
isReadOnly,
|
|
729
|
+
isDisabled,
|
|
730
|
+
isPopupOpen,
|
|
731
|
+
inputFieldLineA11y
|
|
732
|
+
} = _ref2;
|
|
733
|
+
return {
|
|
734
|
+
tabIndex: 0,
|
|
735
|
+
role: 'button',
|
|
736
|
+
'aria-haspopup': 'listbox',
|
|
737
|
+
...inputFieldLineA11y,
|
|
738
|
+
'aria-controls': setAriaId,
|
|
739
|
+
'aria-owns': setAriaId,
|
|
740
|
+
'aria-expanded': !isReadOnly && !isDisabled && isPopupOpen,
|
|
741
|
+
'aria-disabled': isDisabled,
|
|
742
|
+
'aria-readonly': isReadOnly
|
|
743
|
+
};
|
|
744
|
+
}
|
|
745
|
+
|
|
720
746
|
getVirtualizerPublicMethods(methods) {
|
|
721
747
|
this.virtualizerMethods = methods;
|
|
722
748
|
}
|
|
@@ -781,7 +807,9 @@ export class SelectComponent extends Component {
|
|
|
781
807
|
dropBoxPortalId,
|
|
782
808
|
isVirtualizerEnabled,
|
|
783
809
|
renderCustomToggleIndicator,
|
|
784
|
-
renderCustomSearchClearComponent
|
|
810
|
+
renderCustomSearchClearComponent,
|
|
811
|
+
renderCustomSelectedValue,
|
|
812
|
+
inputFieldLineA11y
|
|
785
813
|
} = this.props;
|
|
786
814
|
let {
|
|
787
815
|
TextBoxIcon_i18n,
|
|
@@ -794,6 +822,7 @@ export class SelectComponent extends Component {
|
|
|
794
822
|
let {
|
|
795
823
|
hoverIndex,
|
|
796
824
|
selected,
|
|
825
|
+
selectedValueDetails,
|
|
797
826
|
searchStr,
|
|
798
827
|
isFetchingOptions,
|
|
799
828
|
selectedId,
|
|
@@ -808,6 +837,13 @@ export class SelectComponent extends Component {
|
|
|
808
837
|
SuggestionsProps = {},
|
|
809
838
|
TextBoxIconProps = {}
|
|
810
839
|
} = customProps;
|
|
840
|
+
const inputFieldLineA11yAttributes = this.getInputFieldLineA11y({
|
|
841
|
+
setAriaId,
|
|
842
|
+
isReadOnly,
|
|
843
|
+
isDisabled,
|
|
844
|
+
isPopupOpen,
|
|
845
|
+
inputFieldLineA11y
|
|
846
|
+
});
|
|
811
847
|
return /*#__PURE__*/React.createElement("div", {
|
|
812
848
|
className: `${isParentBased || isReadOnly || isDisabled ? style.container : ''} ${style[`box_${size}`]} ${isReadOnly ? style.readonly : ''} ${borderColor === 'transparent' ? style.transparentContainer : ''} ${iconOnHover && (isReadOnly || isDisabled) ? style.iconOnHoverReadonly : iconOnHover && !(isReadOnly || isDisabled) ? style.iconOnHoverStyle : ''}`,
|
|
813
849
|
"data-title": isDisabled ? title : null,
|
|
@@ -818,7 +854,33 @@ export class SelectComponent extends Component {
|
|
|
818
854
|
ref: getTargetRef,
|
|
819
855
|
"data-id": `${isDisabled ? `${dataId}_disabled` : isReadOnly ? `${dataId}_readOnly` : dataId}`,
|
|
820
856
|
"data-test-id": `${isDisabled ? `${dataId}_disabled` : isReadOnly ? `${dataId}_readOnly` : dataId}`
|
|
821
|
-
},
|
|
857
|
+
}, isRenderable(renderCustomSelectedValue) ? /*#__PURE__*/React.createElement(InputFieldLine, {
|
|
858
|
+
isActive: isPopupReady,
|
|
859
|
+
border: needBorder ? 'bottom' : 'none',
|
|
860
|
+
size: size,
|
|
861
|
+
borderColor: borderColor,
|
|
862
|
+
isDisabled: isDisabled,
|
|
863
|
+
isReadOnly: isReadOnly,
|
|
864
|
+
onKeyDown: this.handleKeyDown,
|
|
865
|
+
hasPadding: true,
|
|
866
|
+
a11yAttributes: inputFieldLineA11yAttributes
|
|
867
|
+
}, renderNode(renderCustomSelectedValue, {
|
|
868
|
+
isDisabled,
|
|
869
|
+
isPopupOpen,
|
|
870
|
+
isReadOnly,
|
|
871
|
+
isActive: isPopupReady,
|
|
872
|
+
size,
|
|
873
|
+
option: selectedValueDetails[selectedId] || DUMMY_OBJECT,
|
|
874
|
+
selectedId,
|
|
875
|
+
placeHolder,
|
|
876
|
+
htmlId,
|
|
877
|
+
maxLength,
|
|
878
|
+
getRef: this.valueInputRef,
|
|
879
|
+
onFocus: this.handleSelectFocus,
|
|
880
|
+
onKeyDown: this.handleKeyDown,
|
|
881
|
+
onKeyPress: this.handleValueInputChange,
|
|
882
|
+
ariaControlsId: setAriaId
|
|
883
|
+
})) : needSelectDownIcon ? /*#__PURE__*/React.createElement(TextBoxIcon, {
|
|
822
884
|
a11y: {
|
|
823
885
|
role: 'Menuitem',
|
|
824
886
|
ariaLabel: TextBox_ally_label,
|
|
@@ -925,10 +987,10 @@ export class SelectComponent extends Component {
|
|
|
925
987
|
})), !isReadOnly && !isDisabled && isPopupOpen ? /*#__PURE__*/React.createElement(ResponsiveReceiver, {
|
|
926
988
|
query: this.responsiveFunc,
|
|
927
989
|
responsiveId: "Helmet"
|
|
928
|
-
},
|
|
990
|
+
}, _ref3 => {
|
|
929
991
|
let {
|
|
930
992
|
tabletMode
|
|
931
|
-
} =
|
|
993
|
+
} = _ref3;
|
|
932
994
|
return /*#__PURE__*/React.createElement(ResponsiveDropBox, {
|
|
933
995
|
animationStyle: animationStyle,
|
|
934
996
|
boxPosition: position || `${defaultDropBoxPosition}`,
|
|
@@ -1150,4 +1150,14 @@ describe('Select dataId snapshot - ', () => {
|
|
|
1150
1150
|
userEvent.click(getByRole(selectInputRole));
|
|
1151
1151
|
expect(asFragment()).toMatchSnapshot();
|
|
1152
1152
|
});
|
|
1153
|
+
test('Should render with renderCustomSelectedValue', () => {
|
|
1154
|
+
const {
|
|
1155
|
+
asFragment
|
|
1156
|
+
} = render( /*#__PURE__*/React.createElement(Select, {
|
|
1157
|
+
options: options,
|
|
1158
|
+
selectedValue: "Option 2",
|
|
1159
|
+
renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("div", null, " Select Custom Option 2")
|
|
1160
|
+
}));
|
|
1161
|
+
expect(asFragment()).toMatchSnapshot();
|
|
1162
|
+
});
|
|
1153
1163
|
});
|
|
@@ -14,10 +14,8 @@ exports[`GroupSelect rendering the defult props 1`] = `
|
|
|
14
14
|
data-test-id="GroupSelect"
|
|
15
15
|
>
|
|
16
16
|
<div
|
|
17
|
-
class="
|
|
18
|
-
data-id="containerComponent"
|
|
17
|
+
class="varClass customContainer border_bottom effect borderColor_default hasBorder container flex rowdir"
|
|
19
18
|
data-selector-id="textBoxIcon"
|
|
20
|
-
data-test-id="containerComponent"
|
|
21
19
|
>
|
|
22
20
|
<div
|
|
23
21
|
class="grow basis shrinkOff"
|
|
@@ -80,9 +78,6 @@ exports[`GroupSelect rendering the defult props 1`] = `
|
|
|
80
78
|
</div>
|
|
81
79
|
</div>
|
|
82
80
|
</div>
|
|
83
|
-
<div
|
|
84
|
-
class="line borderColor_default "
|
|
85
|
-
/>
|
|
86
81
|
</div>
|
|
87
82
|
</div>
|
|
88
83
|
</div>
|