bright-components 10.2.7 → 10.2.9
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/circle.yml +1 -2
- package/deploy.sh +6 -0
- package/dist/components/DayPicker/NewDayPicker/index.js +0 -28
- package/dist/components/DayPicker/index.js +2 -20
- package/dist/components/DayPickerPanel/HeaderDayPickerPanel/index.js +1 -18
- package/dist/components/DayPickerPanel/HeaderMonthPanel/index.js +0 -14
- package/dist/components/DayPickerPanel/HeaderYearPanel/index.js +2 -15
- package/dist/components/DayPickerPanel/Shortcuts/index.js +2 -16
- package/dist/components/DayPickerPanel/index.js +2 -74
- package/dist/components/EmployeeCard/index.js +1 -14
- package/dist/components/EmployeePicker/FilterBar/index.js +1 -28
- package/dist/components/EmployeePicker/Group/index.js +1 -41
- package/dist/components/FilterRadioGroup/index.js +2 -14
- package/dist/components/Form/index.js +4 -47
- package/dist/components/Modal/index.js +1 -23
- package/dist/components/RadioBlock/index.js +10 -41
- package/dist/components/Snackbar/index.js +1 -17
- package/dist/components/Time/OverlayBase/index.js +2 -25
- package/dist/components/Time/TimePicker/TimeOverlay/index.js +3 -26
- package/dist/components/TimePicker/Time/TimeOverlay/index.js +1 -58
- package/dist/setupTests.js +0 -7
- package/package.json +6 -8
- package/src/components/DayPicker/NewDayPicker/index.js +0 -21
- package/src/components/DayPicker/index.js +1 -16
- package/src/components/DayPicker/test.js +0 -85
- package/src/components/DayPickerPanel/HeaderDayPickerPanel/index.js +2 -22
- package/src/components/DayPickerPanel/HeaderDayPickerPanel/test.js +0 -34
- package/src/components/DayPickerPanel/HeaderMonthPanel/index.js +0 -10
- package/src/components/DayPickerPanel/HeaderMonthPanel/test.js +0 -25
- package/src/components/DayPickerPanel/HeaderYearPanel/index.js +3 -12
- package/src/components/DayPickerPanel/HeaderYearPanel/test.js +0 -17
- package/src/components/DayPickerPanel/Shortcuts/index.js +3 -17
- package/src/components/DayPickerPanel/Shortcuts/test.js +0 -39
- package/src/components/DayPickerPanel/index.js +1 -69
- package/src/components/DayPickerPanel/test.js +0 -177
- package/src/components/EmployeeCard/index.js +1 -15
- package/src/components/EmployeeCard/test.js +0 -20
- package/src/components/EmployeePicker/FilterBar/index.js +2 -26
- package/src/components/EmployeePicker/FilterBar/test.js +0 -29
- package/src/components/EmployeePicker/Group/index.js +1 -42
- package/src/components/EmployeePicker/Group/test.js +0 -21
- package/src/components/FilterRadioGroup/index.js +2 -14
- package/src/components/FilterRadioGroup/test.js +0 -13
- package/src/components/Form/index.js +1 -49
- package/src/components/Form/test.js +0 -73
- package/src/components/Modal/index.js +1 -22
- package/src/components/Modal/test.js +9 -9
- package/src/components/RadioBlock/index.js +14 -33
- package/src/components/RadioBlock/test.js +35 -155
- package/src/components/ResponsiveTabs/test.js +49 -86
- package/src/components/Snackbar/index.js +1 -16
- package/src/components/Time/OverlayBase/index.js +3 -21
- package/src/components/Time/OverlayBase/test.js +0 -50
- package/src/components/Time/TimePicker/TimeOverlay/index.js +4 -30
- package/src/components/Time/TimePicker/TimeOverlay/test.js +0 -24
- package/src/components/TimePicker/DayPart/test.js +1 -1
- package/src/components/TimePicker/Time/TimeOverlay/index.js +2 -50
- package/src/components/TimePicker/Time/TimeOverlay/test.js +1 -220
- package/src/index.js +1 -1
- package/src/setupTests.js +0 -2
- package/dist/components/TimePicker/utils/PickerGA/index.js +0 -24
- package/dist/utils/trackForm/index.js +0 -48
- package/src/components/TimePicker/utils/PickerGA/index.js +0 -6
- package/src/components/TimePicker/utils/PickerGA/test.js +0 -29
- package/src/utils/trackForm/index.js +0 -36
- package/src/utils/trackForm/test.js +0 -110
@@ -1,25 +1,24 @@
|
|
1
|
-
import React from
|
2
|
-
import { bool, func, string, node, shape } from
|
3
|
-
import styled from
|
4
|
-
import Colors from
|
5
|
-
import Variables from
|
6
|
-
import { event } from 'react-ga';
|
1
|
+
import React from "react";
|
2
|
+
import { bool, func, string, node, shape } from "prop-types";
|
3
|
+
import styled from "styled-components";
|
4
|
+
import Colors from "constants/colors";
|
5
|
+
import Variables from "constants/vars";
|
7
6
|
|
8
7
|
const Option = styled.div`
|
9
8
|
position: relative;
|
10
9
|
text-align: left;
|
11
10
|
border: 1px solid
|
12
11
|
${props => (props.selected ? Colors.primaryLight : Colors.borderColor)};
|
13
|
-
background: ${props => (props.selected ? Colors.primaryLighter :
|
12
|
+
background: ${props => (props.selected ? Colors.primaryLighter : "#fff")};
|
14
13
|
${props => props.selected && `box-shadow: 1px 4px 8px -4px #888888`};
|
15
14
|
border-radius: ${Variables.borderRadius};
|
16
15
|
height: 100%;
|
17
|
-
opacity: ${props => (props.disabled ?
|
16
|
+
opacity: ${props => (props.disabled ? "0.3" : 1)};
|
18
17
|
`;
|
19
|
-
Option.displayName =
|
18
|
+
Option.displayName = "Option";
|
20
19
|
|
21
20
|
const Radio = styled.input`
|
22
|
-
cursor: ${props => (props.disabled ?
|
21
|
+
cursor: ${props => (props.disabled ? "not-allowed" : "pointer")};
|
23
22
|
opacity: 0 !important;
|
24
23
|
position: absolute;
|
25
24
|
top: 0;
|
@@ -29,19 +28,11 @@ const Radio = styled.input`
|
|
29
28
|
width: 100%;
|
30
29
|
height: 100%;
|
31
30
|
`;
|
32
|
-
Radio.displayName =
|
31
|
+
Radio.displayName = "Radio";
|
33
32
|
|
34
33
|
class RadioBlock extends React.Component {
|
35
34
|
componentDidMount() {
|
36
|
-
const {
|
37
|
-
GA: { category, action },
|
38
|
-
checked
|
39
|
-
} = this.props;
|
40
|
-
|
41
|
-
if (category && action && checked) {
|
42
|
-
const defaultAction = `Defaulted to ${action}`;
|
43
|
-
event({ category, action: defaultAction });
|
44
|
-
}
|
35
|
+
const { checked } = this.props;
|
45
36
|
}
|
46
37
|
|
47
38
|
render() {
|
@@ -53,7 +44,6 @@ class RadioBlock extends React.Component {
|
|
53
44
|
value,
|
54
45
|
children,
|
55
46
|
className,
|
56
|
-
GA: { category, action },
|
57
47
|
...props
|
58
48
|
} = this.props;
|
59
49
|
|
@@ -72,10 +62,6 @@ class RadioBlock extends React.Component {
|
|
72
62
|
checked={checked}
|
73
63
|
disabled={disabled}
|
74
64
|
onChange={evt => {
|
75
|
-
if (category && action && !checked) {
|
76
|
-
const defaultAction = `Switched to ${action}`;
|
77
|
-
event({ category, action: defaultAction });
|
78
|
-
}
|
79
65
|
onChange(evt);
|
80
66
|
}}
|
81
67
|
{...props}
|
@@ -92,17 +78,12 @@ RadioBlock.propTypes = {
|
|
92
78
|
name: string.isRequired,
|
93
79
|
value: string.isRequired,
|
94
80
|
children: node.isRequired,
|
95
|
-
className: string
|
96
|
-
GA: shape({
|
97
|
-
category: string,
|
98
|
-
action: string
|
99
|
-
})
|
81
|
+
className: string
|
100
82
|
};
|
101
83
|
|
102
84
|
RadioBlock.defaultProps = {
|
103
|
-
className:
|
104
|
-
disabled: false
|
105
|
-
GA: {}
|
85
|
+
className: "",
|
86
|
+
disabled: false
|
106
87
|
};
|
107
88
|
|
108
89
|
export default RadioBlock;
|
@@ -1,17 +1,15 @@
|
|
1
|
-
import React from
|
2
|
-
import { render, fireEvent } from
|
3
|
-
import Colors from
|
4
|
-
import { event } from 'react-ga';
|
1
|
+
import React from "react";
|
2
|
+
import { render, fireEvent } from "@testing-library/react";
|
3
|
+
import Colors from "constants/colors";
|
5
4
|
|
6
|
-
import RadioBlock from
|
5
|
+
import RadioBlock from ".";
|
7
6
|
|
8
7
|
const child = <div data-testid="test-child">child</div>;
|
9
8
|
|
10
9
|
const onChange = jest.fn();
|
11
|
-
jest.mock('react-ga');
|
12
10
|
|
13
|
-
describe(
|
14
|
-
it(
|
11
|
+
describe("Radio Block", () => {
|
12
|
+
it("should render styles when unchecked", () => {
|
15
13
|
const { getByTestId } = render(
|
16
14
|
<RadioBlock
|
17
15
|
checked={false}
|
@@ -24,14 +22,14 @@ describe('Radio Block', () => {
|
|
24
22
|
</RadioBlock>
|
25
23
|
);
|
26
24
|
|
27
|
-
expect(getByTestId(
|
28
|
-
|
25
|
+
expect(getByTestId("option")).toHaveStyleRule(
|
26
|
+
"border",
|
29
27
|
`1px solid ${Colors.borderColor}`
|
30
28
|
);
|
31
|
-
expect(getByTestId(
|
29
|
+
expect(getByTestId("option")).toHaveStyleRule("background", "#fff");
|
32
30
|
});
|
33
31
|
|
34
|
-
it(
|
32
|
+
it("should render styles when checked", () => {
|
35
33
|
const { getByTestId } = render(
|
36
34
|
<RadioBlock
|
37
35
|
checked
|
@@ -44,17 +42,17 @@ describe('Radio Block', () => {
|
|
44
42
|
</RadioBlock>
|
45
43
|
);
|
46
44
|
|
47
|
-
expect(getByTestId(
|
48
|
-
|
45
|
+
expect(getByTestId("option")).toHaveStyleRule(
|
46
|
+
"border",
|
49
47
|
`1px solid ${Colors.primaryLight}`
|
50
48
|
);
|
51
|
-
expect(getByTestId(
|
52
|
-
|
49
|
+
expect(getByTestId("option")).toHaveStyleRule(
|
50
|
+
"background",
|
53
51
|
Colors.primaryLighter
|
54
52
|
);
|
55
53
|
});
|
56
54
|
|
57
|
-
it(
|
55
|
+
it("should render the supplied children", () => {
|
58
56
|
const { getByTestId } = render(
|
59
57
|
<RadioBlock
|
60
58
|
checked={false}
|
@@ -66,10 +64,10 @@ describe('Radio Block', () => {
|
|
66
64
|
{child}
|
67
65
|
</RadioBlock>
|
68
66
|
);
|
69
|
-
expect(getByTestId(
|
67
|
+
expect(getByTestId("test-child")).toHaveTextContent("child");
|
70
68
|
});
|
71
69
|
|
72
|
-
it(
|
70
|
+
it("should render a radio input", () => {
|
73
71
|
const { getByRole } = render(
|
74
72
|
<RadioBlock
|
75
73
|
checked={false}
|
@@ -82,12 +80,12 @@ describe('Radio Block', () => {
|
|
82
80
|
</RadioBlock>
|
83
81
|
);
|
84
82
|
|
85
|
-
expect(getByRole(
|
86
|
-
expect(getByRole(
|
87
|
-
expect(getByRole(
|
83
|
+
expect(getByRole("radio")).toBeInTheDocument();
|
84
|
+
expect(getByRole("radio")).toHaveAttribute("name", "nameyname");
|
85
|
+
expect(getByRole("radio")).toHaveAttribute("value", "valerie");
|
88
86
|
});
|
89
87
|
|
90
|
-
it(
|
88
|
+
it("should make option opaque if disabled", () => {
|
91
89
|
const elem = render(
|
92
90
|
<RadioBlock
|
93
91
|
checked={false}
|
@@ -101,129 +99,11 @@ describe('Radio Block', () => {
|
|
101
99
|
</RadioBlock>
|
102
100
|
);
|
103
101
|
|
104
|
-
expect(elem.getByTestId(
|
102
|
+
expect(elem.getByTestId("option")).toHaveStyleRule("opacity", "0.3");
|
105
103
|
});
|
106
104
|
|
107
|
-
describe(
|
108
|
-
it(
|
109
|
-
expect(event).not.toHaveBeenCalled();
|
110
|
-
render(
|
111
|
-
<RadioBlock
|
112
|
-
checked
|
113
|
-
onChange={onChange}
|
114
|
-
name="nameyname"
|
115
|
-
value="valerie"
|
116
|
-
className="class"
|
117
|
-
GA={{
|
118
|
-
category: 'ga-category-mock',
|
119
|
-
action: 'ga-action-mock'
|
120
|
-
}}
|
121
|
-
>
|
122
|
-
{child}
|
123
|
-
</RadioBlock>
|
124
|
-
);
|
125
|
-
expect(event).toHaveBeenCalledWith({
|
126
|
-
action: 'Defaulted to ga-action-mock',
|
127
|
-
category: 'ga-category-mock'
|
128
|
-
});
|
129
|
-
});
|
130
|
-
|
131
|
-
it('should not call default GA event if component is not rendered with checked state', () => {
|
132
|
-
expect(event).not.toHaveBeenCalled();
|
133
|
-
render(
|
134
|
-
<RadioBlock
|
135
|
-
checked={false}
|
136
|
-
onChange={onChange}
|
137
|
-
name="nameyname"
|
138
|
-
value="valerie"
|
139
|
-
className="class"
|
140
|
-
GA={{
|
141
|
-
category: 'ga-category-mock',
|
142
|
-
action: 'ga-action-mock'
|
143
|
-
}}
|
144
|
-
>
|
145
|
-
{child}
|
146
|
-
</RadioBlock>
|
147
|
-
);
|
148
|
-
expect(event).not.toHaveBeenCalled();
|
149
|
-
});
|
150
|
-
|
151
|
-
it('should not call default GA event if component does not have A GA prop', () => {
|
152
|
-
expect(event).not.toHaveBeenCalled();
|
153
|
-
render(
|
154
|
-
<RadioBlock
|
155
|
-
checked
|
156
|
-
onChange={onChange}
|
157
|
-
name="nameyname"
|
158
|
-
value="valerie"
|
159
|
-
className="class"
|
160
|
-
>
|
161
|
-
{child}
|
162
|
-
</RadioBlock>
|
163
|
-
);
|
164
|
-
expect(event).not.toHaveBeenCalled();
|
165
|
-
});
|
166
|
-
});
|
167
|
-
|
168
|
-
describe('GA onChange events', () => {
|
169
|
-
it('should trigger GA event when user click on an unchecked radio', () => {
|
170
|
-
expect(event).not.toHaveBeenCalled();
|
171
|
-
const elem = render(
|
172
|
-
<RadioBlock
|
173
|
-
checked={false}
|
174
|
-
onChange={onChange}
|
175
|
-
name="nameyname"
|
176
|
-
value="valerie"
|
177
|
-
className="class"
|
178
|
-
GA={{
|
179
|
-
category: 'ga-category-mock',
|
180
|
-
action: 'ga-action-mock'
|
181
|
-
}}
|
182
|
-
>
|
183
|
-
{child}
|
184
|
-
</RadioBlock>
|
185
|
-
);
|
186
|
-
|
187
|
-
fireEvent.click(elem.getByRole('radio'), {
|
188
|
-
target: { value: 'valerie' }
|
189
|
-
});
|
190
|
-
|
191
|
-
expect(event).toHaveBeenCalledWith({
|
192
|
-
action: 'Switched to ga-action-mock',
|
193
|
-
category: 'ga-category-mock'
|
194
|
-
});
|
195
|
-
});
|
196
|
-
|
197
|
-
it('should NOT trigger GA event when user clicks on a checked radio button', () => {
|
198
|
-
expect(event).not.toHaveBeenCalled();
|
199
|
-
const elem = render(
|
200
|
-
<RadioBlock
|
201
|
-
checked
|
202
|
-
onChange={onChange}
|
203
|
-
name="nameyname"
|
204
|
-
value="valerie"
|
205
|
-
className="class"
|
206
|
-
GA={{
|
207
|
-
category: 'ga-category-mock',
|
208
|
-
action: 'ga-action-mock'
|
209
|
-
}}
|
210
|
-
>
|
211
|
-
{child}
|
212
|
-
</RadioBlock>
|
213
|
-
);
|
214
|
-
|
215
|
-
event.mockClear(); // to clear the event call that happened on mounting component
|
216
|
-
|
217
|
-
fireEvent.click(elem.getByRole('radio'), {
|
218
|
-
target: { value: 'valerie' }
|
219
|
-
});
|
220
|
-
|
221
|
-
expect(event).not.toHaveBeenCalled();
|
222
|
-
});
|
223
|
-
});
|
224
|
-
|
225
|
-
describe('Disabled options', () => {
|
226
|
-
it('should use not-allowed cursor when disabled', () => {
|
105
|
+
describe("Disabled options", () => {
|
106
|
+
it("should use not-allowed cursor when disabled", () => {
|
227
107
|
const elem = render(
|
228
108
|
<RadioBlock
|
229
109
|
checked={false}
|
@@ -237,17 +117,17 @@ describe('Radio Block', () => {
|
|
237
117
|
</RadioBlock>
|
238
118
|
);
|
239
119
|
|
240
|
-
expect(elem.getByTestId(
|
241
|
-
|
242
|
-
|
120
|
+
expect(elem.getByTestId("option")).toHaveStyleRule(
|
121
|
+
"opacity",
|
122
|
+
"0.3"
|
243
123
|
);
|
244
|
-
expect(elem.getByRole(
|
245
|
-
|
246
|
-
|
124
|
+
expect(elem.getByRole("radio")).toHaveStyleRule(
|
125
|
+
"cursor",
|
126
|
+
"not-allowed"
|
247
127
|
);
|
248
128
|
});
|
249
129
|
|
250
|
-
it(
|
130
|
+
it("should use a pointer cursor when not disabled", () => {
|
251
131
|
const elem = render(
|
252
132
|
<RadioBlock
|
253
133
|
checked={false}
|
@@ -261,10 +141,10 @@ describe('Radio Block', () => {
|
|
261
141
|
</RadioBlock>
|
262
142
|
);
|
263
143
|
|
264
|
-
expect(elem.getByTestId(
|
265
|
-
expect(elem.getByRole(
|
266
|
-
|
267
|
-
|
144
|
+
expect(elem.getByTestId("option")).toHaveStyleRule("opacity", "1");
|
145
|
+
expect(elem.getByRole("radio")).toHaveStyleRule(
|
146
|
+
"cursor",
|
147
|
+
"pointer"
|
268
148
|
);
|
269
149
|
});
|
270
150
|
});
|
@@ -1,13 +1,10 @@
|
|
1
|
-
import React from
|
2
|
-
import { render, fireEvent } from
|
3
|
-
import TabPanel from
|
4
|
-
import
|
5
|
-
import ResponsiveTabs from '.';
|
1
|
+
import React from "react";
|
2
|
+
import { render, fireEvent } from "@testing-library/react";
|
3
|
+
import TabPanel from "components/Tabs/TabPanel";
|
4
|
+
import ResponsiveTabs from ".";
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
describe('<ResponsiveTabs />', () => {
|
10
|
-
it('should handle when defaultIndex is larger than the amount of tabs', () => {
|
6
|
+
describe("<ResponsiveTabs />", () => {
|
7
|
+
it("should handle when defaultIndex is larger than the amount of tabs", () => {
|
11
8
|
const { getByRole, getAllByRole } = render(
|
12
9
|
<ResponsiveTabs defaultIndex={3}>
|
13
10
|
<TabPanel name="One">One</TabPanel>
|
@@ -15,13 +12,13 @@ describe('<ResponsiveTabs />', () => {
|
|
15
12
|
</ResponsiveTabs>
|
16
13
|
);
|
17
14
|
|
18
|
-
expect(getByRole(
|
19
|
-
expect(getAllByRole(
|
15
|
+
expect(getByRole("combobox")).toBeInTheDocument();
|
16
|
+
expect(getAllByRole("option")).toHaveLength(2);
|
20
17
|
|
21
18
|
// doesn't throw an error is good
|
22
19
|
});
|
23
20
|
|
24
|
-
it(
|
21
|
+
it("should render a dropdown for selecting tabs on mobile", () => {
|
25
22
|
const { getByRole, getAllByRole } = render(
|
26
23
|
<ResponsiveTabs>
|
27
24
|
<TabPanel name="One">One</TabPanel>
|
@@ -29,17 +26,13 @@ describe('<ResponsiveTabs />', () => {
|
|
29
26
|
</ResponsiveTabs>
|
30
27
|
);
|
31
28
|
|
32
|
-
expect(getByRole(
|
33
|
-
expect(getAllByRole(
|
29
|
+
expect(getByRole("combobox")).toBeInTheDocument();
|
30
|
+
expect(getAllByRole("option")).toHaveLength(2);
|
34
31
|
});
|
35
32
|
|
36
|
-
it(
|
33
|
+
it("should change tabs when the dropdown is used", () => {
|
37
34
|
const { getByRole, getByTestId } = render(
|
38
|
-
<ResponsiveTabs
|
39
|
-
onSelected={i => {
|
40
|
-
event({ category: 'tabs', action: 'tab change', label: i });
|
41
|
-
}}
|
42
|
-
>
|
35
|
+
<ResponsiveTabs onSelected={i => {}}>
|
43
36
|
<TabPanel name="One" data-testid="tab1">
|
44
37
|
One
|
45
38
|
</TabPanel>
|
@@ -49,29 +42,19 @@ describe('<ResponsiveTabs />', () => {
|
|
49
42
|
</ResponsiveTabs>
|
50
43
|
);
|
51
44
|
|
52
|
-
expect(getByTestId(
|
53
|
-
expect(getByTestId(
|
54
|
-
|
55
|
-
const dropdown = getByRole('combobox');
|
56
|
-
fireEvent.change(dropdown, { target: { value: 'Two' } });
|
45
|
+
expect(getByTestId("tab1")).toBeVisible();
|
46
|
+
expect(getByTestId("tab2")).not.toBeVisible();
|
57
47
|
|
58
|
-
|
59
|
-
|
48
|
+
const dropdown = getByRole("combobox");
|
49
|
+
fireEvent.change(dropdown, { target: { value: "Two" } });
|
60
50
|
|
61
|
-
expect(
|
62
|
-
|
63
|
-
category: 'tabs',
|
64
|
-
label: 1
|
65
|
-
});
|
51
|
+
expect(getByTestId("tab1")).not.toBeVisible();
|
52
|
+
expect(getByTestId("tab2")).toBeVisible();
|
66
53
|
});
|
67
54
|
|
68
|
-
it(
|
55
|
+
it("should change tabs when the tablist is used", () => {
|
69
56
|
const { getAllByRole, getByTestId } = render(
|
70
|
-
<ResponsiveTabs
|
71
|
-
onSelected={i => {
|
72
|
-
event({ category: 'tabs', action: 'tab change', label: i });
|
73
|
-
}}
|
74
|
-
>
|
57
|
+
<ResponsiveTabs onSelected={i => {}}>
|
75
58
|
<TabPanel name="One" data-testid="tab1">
|
76
59
|
One
|
77
60
|
</TabPanel>
|
@@ -81,48 +64,28 @@ describe('<ResponsiveTabs />', () => {
|
|
81
64
|
</ResponsiveTabs>
|
82
65
|
);
|
83
66
|
|
84
|
-
expect(getByTestId(
|
85
|
-
expect(getByTestId(
|
67
|
+
expect(getByTestId("tab1")).toBeVisible();
|
68
|
+
expect(getByTestId("tab2")).not.toBeVisible();
|
86
69
|
|
87
|
-
const { 1: secondTab } = getAllByRole(
|
70
|
+
const { 1: secondTab } = getAllByRole("tab");
|
88
71
|
fireEvent.click(secondTab);
|
89
72
|
|
90
|
-
expect(getByTestId(
|
91
|
-
expect(getByTestId(
|
92
|
-
|
93
|
-
expect(event).toHaveBeenCalledWith({
|
94
|
-
action: 'tab change',
|
95
|
-
category: 'tabs',
|
96
|
-
label: 1
|
97
|
-
});
|
98
|
-
});
|
99
|
-
|
100
|
-
it('not passing in onSelected', () => {
|
101
|
-
const { getByRole } = render(
|
102
|
-
<ResponsiveTabs>
|
103
|
-
<TabPanel name="One">One</TabPanel>
|
104
|
-
</ResponsiveTabs>
|
105
|
-
);
|
106
|
-
|
107
|
-
fireEvent.change(getByRole('combobox'), { target: { value: 'One' } });
|
108
|
-
expect(event).not.toHaveBeenCalled();
|
109
|
-
|
110
|
-
fireEvent.click(getByRole('tab'));
|
111
|
-
expect(event).not.toHaveBeenCalled();
|
73
|
+
expect(getByTestId("tab1")).not.toBeVisible();
|
74
|
+
expect(getByTestId("tab2")).toBeVisible();
|
112
75
|
});
|
113
76
|
|
114
|
-
it(
|
77
|
+
it("should support tab auto width", () => {
|
115
78
|
const { getByRole } = render(
|
116
79
|
<ResponsiveTabs autoTabWidth>
|
117
80
|
<TabPanel name="One">One</TabPanel>
|
118
81
|
</ResponsiveTabs>
|
119
82
|
);
|
120
83
|
|
121
|
-
expect(getByRole(
|
84
|
+
expect(getByRole("tab")).toHaveStyleRule({ flex: "1 1 auto" });
|
122
85
|
});
|
123
86
|
|
124
|
-
describe(
|
125
|
-
it(
|
87
|
+
describe("when tablist inferred from children", () => {
|
88
|
+
it("should render a tablist inferred from children", () => {
|
126
89
|
const { getByRole, getAllByRole } = render(
|
127
90
|
<ResponsiveTabs>
|
128
91
|
<TabPanel name="One">One</TabPanel>
|
@@ -131,11 +94,11 @@ describe('<ResponsiveTabs />', () => {
|
|
131
94
|
</ResponsiveTabs>
|
132
95
|
);
|
133
96
|
|
134
|
-
expect(getByRole(
|
135
|
-
expect(getAllByRole(
|
97
|
+
expect(getByRole("tablist")).toBeInTheDocument();
|
98
|
+
expect(getAllByRole("tab")).toHaveLength(3);
|
136
99
|
});
|
137
100
|
|
138
|
-
it(
|
101
|
+
it("should handle null elements", () => {
|
139
102
|
const { getByRole, getAllByRole } = render(
|
140
103
|
<ResponsiveTabs>
|
141
104
|
<TabPanel name="One">One</TabPanel>
|
@@ -143,11 +106,11 @@ describe('<ResponsiveTabs />', () => {
|
|
143
106
|
</ResponsiveTabs>
|
144
107
|
);
|
145
108
|
|
146
|
-
expect(getByRole(
|
147
|
-
expect(getAllByRole(
|
109
|
+
expect(getByRole("tablist")).toBeInTheDocument();
|
110
|
+
expect(getAllByRole("tab")).toHaveLength(1);
|
148
111
|
});
|
149
112
|
|
150
|
-
it(
|
113
|
+
it("should support counters", () => {
|
151
114
|
const { getByText } = render(
|
152
115
|
<ResponsiveTabs>
|
153
116
|
<TabPanel name="One" counter={999}>
|
@@ -160,14 +123,14 @@ describe('<ResponsiveTabs />', () => {
|
|
160
123
|
</ResponsiveTabs>
|
161
124
|
);
|
162
125
|
|
163
|
-
expect(getByText(
|
164
|
-
expect(getByText(
|
126
|
+
expect(getByText("999")).toBeInTheDocument();
|
127
|
+
expect(getByText("3333")).toBeInTheDocument();
|
165
128
|
});
|
166
129
|
});
|
167
130
|
|
168
|
-
describe(
|
169
|
-
it(
|
170
|
-
const tabs = [{ name:
|
131
|
+
describe("when tab list is passed as a prop", () => {
|
132
|
+
it("should render a tablist", () => {
|
133
|
+
const tabs = [{ name: "One" }, { name: "Two" }, { name: "Three" }];
|
171
134
|
const { getByRole, getAllByRole } = render(
|
172
135
|
<ResponsiveTabs tabs={tabs}>
|
173
136
|
<TabPanel>One</TabPanel>
|
@@ -176,15 +139,15 @@ describe('<ResponsiveTabs />', () => {
|
|
176
139
|
</ResponsiveTabs>
|
177
140
|
);
|
178
141
|
|
179
|
-
expect(getByRole(
|
180
|
-
expect(getAllByRole(
|
142
|
+
expect(getByRole("tablist")).toBeInTheDocument();
|
143
|
+
expect(getAllByRole("tab")).toHaveLength(tabs.length);
|
181
144
|
});
|
182
145
|
|
183
|
-
it(
|
146
|
+
it("should support counters", () => {
|
184
147
|
const tabs = [
|
185
|
-
{ name:
|
186
|
-
{ name:
|
187
|
-
{ name:
|
148
|
+
{ name: "One", counter: 999 },
|
149
|
+
{ name: "Two" },
|
150
|
+
{ name: "Three", counter: 3333 }
|
188
151
|
];
|
189
152
|
|
190
153
|
const { getByText } = render(
|
@@ -195,8 +158,8 @@ describe('<ResponsiveTabs />', () => {
|
|
195
158
|
</ResponsiveTabs>
|
196
159
|
);
|
197
160
|
|
198
|
-
expect(getByText(
|
199
|
-
expect(getByText(
|
161
|
+
expect(getByText("999")).toBeInTheDocument();
|
162
|
+
expect(getByText("3333")).toBeInTheDocument();
|
200
163
|
});
|
201
164
|
});
|
202
165
|
});
|
@@ -114,7 +114,6 @@ const delays = {
|
|
114
114
|
class Snackbar extends React.Component {
|
115
115
|
constructor(props) {
|
116
116
|
super(props);
|
117
|
-
this.state = { createdElement: null };
|
118
117
|
autobind(this);
|
119
118
|
|
120
119
|
this.timer = null;
|
@@ -124,12 +123,6 @@ class Snackbar extends React.Component {
|
|
124
123
|
if (this.props.visible) {
|
125
124
|
this.hideAfterDelay();
|
126
125
|
}
|
127
|
-
|
128
|
-
const randomId = Math.random().toString();
|
129
|
-
const wrapperElement = document.createElement('div');
|
130
|
-
wrapperElement.setAttribute('id', `modal${randomId}`);
|
131
|
-
document.body.appendChild(wrapperElement);
|
132
|
-
this.setState({ createdElement: wrapperElement });
|
133
126
|
}
|
134
127
|
|
135
128
|
componentDidUpdate(prevProps) {
|
@@ -139,10 +132,6 @@ class Snackbar extends React.Component {
|
|
139
132
|
}
|
140
133
|
|
141
134
|
componentWillUnmount() {
|
142
|
-
this.state.createdElement.parentNode.removeChild(
|
143
|
-
this.state.createdElement
|
144
|
-
);
|
145
|
-
|
146
135
|
window.clearTimeout(this.timer);
|
147
136
|
}
|
148
137
|
|
@@ -170,10 +159,6 @@ class Snackbar extends React.Component {
|
|
170
159
|
...rest
|
171
160
|
} = this.props;
|
172
161
|
|
173
|
-
if (!this.state.createdElement) {
|
174
|
-
return null;
|
175
|
-
}
|
176
|
-
|
177
162
|
return createPortal(
|
178
163
|
<SlideUpLeft visible={visible} {...rest}>
|
179
164
|
<SnackWrapper type={type} data-testid="snackwrapper">
|
@@ -205,7 +190,7 @@ class Snackbar extends React.Component {
|
|
205
190
|
</ContentWrapper>
|
206
191
|
</SnackWrapper>
|
207
192
|
</SlideUpLeft>,
|
208
|
-
|
193
|
+
document.body
|
209
194
|
);
|
210
195
|
}
|
211
196
|
}
|