@qoretechnologies/reqore 0.44.0 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/tests.json +1 -1
- package/.eslintrc.js +0 -40
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/ISSUE_TEMPLATE/new-component.md +0 -20
- package/.github/ISSUE_TEMPLATE/visual-bug-report.md +0 -38
- package/.github/workflows/beta_release.yml +0 -100
- package/.github/workflows/tests.yml +0 -84
- package/.gitpod.yml +0 -11
- package/.jest-test-results.json +0 -1
- package/.prettierrc +0 -7
- package/.vscode/settings.json +0 -0
- package/__tests__/breadcrumbs.test.tsx +0 -75
- package/__tests__/button.test.tsx +0 -218
- package/__tests__/checkbox.test.tsx +0 -45
- package/__tests__/collection.test.tsx +0 -243
- package/__tests__/containers/paging.test.tsx +0 -138
- package/__tests__/control_group.test.tsx +0 -32
- package/__tests__/drawer.test.tsx +0 -140
- package/__tests__/dropdown.test.tsx +0 -381
- package/__tests__/effect.test.tsx +0 -70
- package/__tests__/heading.test.tsx +0 -58
- package/__tests__/helpers/colors.test.tsx +0 -18
- package/__tests__/helpers/table.test.tsx +0 -67
- package/__tests__/hooks/useLatestZIndex.test.tsx +0 -10
- package/__tests__/hooks/useReqorePaging.test.tsx +0 -271
- package/__tests__/hooks/useTheme.test.tsx +0 -31
- package/__tests__/icon.test.tsx +0 -53
- package/__tests__/input.test.tsx +0 -482
- package/__tests__/layout.test.tsx +0 -37
- package/__tests__/menu.test.tsx +0 -65
- package/__tests__/messages.test.tsx +0 -79
- package/__tests__/modal.test.tsx +0 -204
- package/__tests__/multiselect.test.tsx +0 -458
- package/__tests__/navbar.test.tsx +0 -31
- package/__tests__/notifications.test.tsx +0 -178
- package/__tests__/pagination.test.tsx +0 -437
- package/__tests__/panel.test.tsx +0 -243
- package/__tests__/popover.test.tsx +0 -282
- package/__tests__/radiogroup.test.tsx +0 -47
- package/__tests__/setup.js +0 -8
- package/__tests__/stories/Collection.stories.tsx +0 -0
- package/__tests__/table.test.tsx +0 -647
- package/__tests__/tabs.test.tsx +0 -321
- package/__tests__/tag.test.tsx +0 -160
- package/__tests__/textarea.test.tsx +0 -467
- package/__tests__/timeAgo.test.tsx +0 -27
- package/__tests__/tree.test.tsx +0 -58
- package/build-storybook.log +0 -491
- package/chromatic.config.json +0 -1
- package/icons.ts +0 -1
- package/migration-storybook.log +0 -56
- package/public/logo-dark.png +0 -0
- package/public/logo.png +0 -0
- package/public/q-symbol-small.png +0 -0
- package/public/q-symbol.png +0 -0
- package/public/qoreLogo-dark.png +0 -0
- package/public/qoreLogo.png +0 -0
- package/src/components/Breadcrumbs/index.tsx +0 -254
- package/src/components/Breadcrumbs/item.tsx +0 -44
- package/src/components/Button/index.tsx +0 -633
- package/src/components/Checkbox/index.tsx +0 -388
- package/src/components/Collection/index.tsx +0 -426
- package/src/components/Collection/item.tsx +0 -267
- package/src/components/Columns/column.tsx +0 -27
- package/src/components/Columns/index.tsx +0 -41
- package/src/components/Comment/index.tsx +0 -141
- package/src/components/CommentFeed/index.tsx +0 -34
- package/src/components/Content/index.tsx +0 -34
- package/src/components/Content/wrapper.tsx +0 -36
- package/src/components/ControlGroup/index.tsx +0 -523
- package/src/components/DatePicker/index.tsx +0 -347
- package/src/components/Drawer/backdrop.tsx +0 -54
- package/src/components/Drawer/index.tsx +0 -365
- package/src/components/Dropdown/index.tsx +0 -153
- package/src/components/Dropdown/item.tsx +0 -33
- package/src/components/Dropdown/list.tsx +0 -222
- package/src/components/Effect/index.tsx +0 -464
- package/src/components/ExportModal/index.tsx +0 -99
- package/src/components/Header/index.tsx +0 -81
- package/src/components/Icon/index.tsx +0 -184
- package/src/components/Input/index.tsx +0 -295
- package/src/components/InputClearButton/index.tsx +0 -59
- package/src/components/InternalPopover/index.tsx +0 -303
- package/src/components/KeyValueTable/index.tsx +0 -192
- package/src/components/Label/index.tsx +0 -10
- package/src/components/Layout/content.tsx +0 -31
- package/src/components/Layout/index.tsx +0 -55
- package/src/components/Menu/divider.tsx +0 -92
- package/src/components/Menu/index.tsx +0 -141
- package/src/components/Menu/item.tsx +0 -137
- package/src/components/Menu/section.tsx +0 -81
- package/src/components/Message/index.tsx +0 -220
- package/src/components/Modal/index.tsx +0 -26
- package/src/components/MultiSelect/index.tsx +0 -288
- package/src/components/Navbar/divider.tsx +0 -50
- package/src/components/Navbar/group.tsx +0 -53
- package/src/components/Navbar/index.tsx +0 -82
- package/src/components/Navbar/item.tsx +0 -92
- package/src/components/Notifications/index.tsx +0 -57
- package/src/components/Notifications/notification.tsx +0 -362
- package/src/components/Paging/index.tsx +0 -321
- package/src/components/Panel/LabelEditor.tsx +0 -67
- package/src/components/Panel/NonResponsiveActions.tsx +0 -79
- package/src/components/Panel/__screenshots__/linux/panel-SomePanel.png +0 -0
- package/src/components/Panel/index.tsx +0 -912
- package/src/components/Panel/panel.screenshot.tsx +0 -29
- package/src/components/Paragraph/index.tsx +0 -43
- package/src/components/Popover/index.tsx +0 -68
- package/src/components/RadioGroup/index.tsx +0 -71
- package/src/components/Slider/index.tsx +0 -358
- package/src/components/Spacer/index.tsx +0 -142
- package/src/components/Spinner/index.tsx +0 -74
- package/src/components/Table/body.tsx +0 -109
- package/src/components/Table/cell.tsx +0 -136
- package/src/components/Table/header.tsx +0 -236
- package/src/components/Table/headerCell.tsx +0 -203
- package/src/components/Table/helpers.ts +0 -308
- package/src/components/Table/index.tsx +0 -797
- package/src/components/Table/row.tsx +0 -288
- package/src/components/Table/value.tsx +0 -28
- package/src/components/Tabs/content.tsx +0 -68
- package/src/components/Tabs/index.tsx +0 -124
- package/src/components/Tabs/item.tsx +0 -198
- package/src/components/Tabs/list.tsx +0 -381
- package/src/components/Tag/group.tsx +0 -73
- package/src/components/Tag/index.tsx +0 -463
- package/src/components/Textarea/index.tsx +0 -277
- package/src/components/TimeAgo/index.tsx +0 -15
- package/src/components/Tree/index.tsx +0 -271
- package/src/constants/animations.ts +0 -9
- package/src/constants/colors.ts +0 -13
- package/src/constants/paging.ts +0 -93
- package/src/constants/sizes.ts +0 -185
- package/src/constants/theme.ts +0 -122
- package/src/containers/Paging.tsx +0 -136
- package/src/containers/PopoverProvider.tsx +0 -124
- package/src/containers/ReqoreProvider.tsx +0 -289
- package/src/containers/ThemeProvider.tsx +0 -12
- package/src/containers/UIProvider.tsx +0 -101
- package/src/context/PopoverContext.tsx +0 -11
- package/src/context/ReqoreContext.tsx +0 -47
- package/src/context/ThemeContext.tsx +0 -4
- package/src/helpers/animations.ts +0 -13
- package/src/helpers/colors.ts +0 -335
- package/src/helpers/time.ts +0 -21
- package/src/helpers/utils.ts +0 -152
- package/src/hooks/useAutoFocus.ts +0 -106
- package/src/hooks/useCloneThroughFragments.ts +0 -39
- package/src/hooks/useCombinedRefs.ts +0 -26
- package/src/hooks/useLatestZIndex.ts +0 -13
- package/src/hooks/useOutsideClick.ts +0 -29
- package/src/hooks/usePaging.ts +0 -128
- package/src/hooks/usePopover.tsx +0 -220
- package/src/hooks/useQueryWithDelay.ts +0 -30
- package/src/hooks/useReqore.ts +0 -12
- package/src/hooks/useReqoreContext.ts +0 -16
- package/src/hooks/useReqoreEffect.ts +0 -49
- package/src/hooks/useTextareaAutoSize.ts +0 -22
- package/src/hooks/useTheme.ts +0 -48
- package/src/hooks/useTooltip.ts +0 -40
- package/src/hooks/useWhyDidYouUpdate.ts +0 -32
- package/src/icons.json +0 -2295
- package/src/index.tsx +0 -80
- package/src/mock/breadcrumbs.ts +0 -146
- package/src/mock/collectionData.tsx +0 -380
- package/src/mock/data.json +0 -11000
- package/src/mock/icons.ts +0 -32
- package/src/mock/menu.ts +0 -93
- package/src/mock/multiSelect.ts +0 -71
- package/src/mock/object.json +0 -317
- package/src/mock/styleMock.js +0 -1
- package/src/mock/tableData.ts +0 -64
- package/src/stories/Breadcrumbs/Breadcrumbs.stories.tsx +0 -27
- package/src/stories/Button/Button.stories.tsx +0 -405
- package/src/stories/Checkbox/Checkbox.stories.tsx +0 -75
- package/src/stories/Collection/Collection.stories.tsx +0 -317
- package/src/stories/Columns/Columns.stories.tsx +0 -158
- package/src/stories/Comment/Comment.stories.tsx +0 -136
- package/src/stories/ControlGroup/ControlGroup.stories.tsx +0 -399
- package/src/stories/DatePicker/DatePicker.stories.tsx +0 -348
- package/src/stories/Drawer/Drawer.stories.tsx +0 -294
- package/src/stories/Dropdown/Dropdown.stories.tsx +0 -375
- package/src/stories/Dropdown/DropdownTests.stories.tsx +0 -111
- package/src/stories/ExportModal/ExportModal.stories.tsx +0 -18
- package/src/stories/Header/Header.stories.tsx +0 -108
- package/src/stories/Icon/Icon.stories.tsx +0 -162
- package/src/stories/Input/Input.stories.tsx +0 -220
- package/src/stories/KeyValueTable/KeyValueTable.stories.tsx +0 -346
- package/src/stories/Label/Label.stories.tsx +0 -33
- package/src/stories/Menu/Menu.stories.tsx +0 -367
- package/src/stories/Message/Message.stories.tsx +0 -167
- package/src/stories/Modal/Manager.stories.tsx +0 -192
- package/src/stories/Modal/Modal.stories.tsx +0 -252
- package/src/stories/MultiSelect/MultiSelect.stories.tsx +0 -140
- package/src/stories/Navbar/Navbar.stories.tsx +0 -119
- package/src/stories/Notifications/Interactive.stories.tsx +0 -117
- package/src/stories/Notifications/Notification.stories.tsx +0 -216
- package/src/stories/Notifications/Notifications.stories.tsx +0 -81
- package/src/stories/Paging/Paging.stories.tsx +0 -255
- package/src/stories/Panel/Panel.stories.tsx +0 -753
- package/src/stories/Paragraph/Paragraph.stories.tsx +0 -108
- package/src/stories/Popover/Popover.stories.tsx +0 -510
- package/src/stories/RadioGroup/RadioGroup.stories.tsx +0 -212
- package/src/stories/Slider/Slider.stories.tsx +0 -173
- package/src/stories/Spacer/Spacer.stories.tsx +0 -100
- package/src/stories/Spinner/Spinner.stories.tsx +0 -82
- package/src/stories/Table/Table.stories.tsx +0 -571
- package/src/stories/Tabs/Tabs.stories.tsx +0 -346
- package/src/stories/Tag/Tag.stories.tsx +0 -381
- package/src/stories/Tag/TagGroup.stories.tsx +0 -307
- package/src/stories/TextArea/TextArea.stories.tsx +0 -287
- package/src/stories/TextArea/TextAreaTests.stories.tsx +0 -108
- package/src/stories/Tree/Tree.stories.tsx +0 -124
- package/src/stories/Wrapper.tsx +0 -13
- package/src/stories/utils/args.ts +0 -151
- package/src/stories/utils.ts +0 -39
- package/src/styles.ts +0 -124
- package/src/types/global.ts +0 -211
- package/src/types/icons.ts +0 -2272
- package/tsconfig.prod.json +0 -26
package/__tests__/modal.test.tsx
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { act, fireEvent, render, screen } from '@testing-library/react';
|
|
2
|
-
import React, { useState } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
ReqoreButton,
|
|
5
|
-
ReqoreContent,
|
|
6
|
-
ReqoreLayoutContent,
|
|
7
|
-
ReqoreModal,
|
|
8
|
-
ReqoreUIProvider,
|
|
9
|
-
useReqore,
|
|
10
|
-
} from '../src';
|
|
11
|
-
import { useReqoreProperty } from '../src/hooks/useReqoreContext';
|
|
12
|
-
|
|
13
|
-
test('Renders basic <Modal /> properly', () => {
|
|
14
|
-
render(
|
|
15
|
-
<ReqoreUIProvider>
|
|
16
|
-
<ReqoreLayoutContent>
|
|
17
|
-
<ReqoreContent>
|
|
18
|
-
<ReqoreModal isOpen>Basic modal</ReqoreModal>
|
|
19
|
-
</ReqoreContent>
|
|
20
|
-
</ReqoreLayoutContent>
|
|
21
|
-
</ReqoreUIProvider>
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
expect(document.querySelectorAll('.reqore-modal').length).toBe(1);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test('Does not renders <Modal /> if its not open', () => {
|
|
28
|
-
render(
|
|
29
|
-
<ReqoreUIProvider>
|
|
30
|
-
<ReqoreLayoutContent>
|
|
31
|
-
<ReqoreContent>
|
|
32
|
-
<ReqoreModal>Basic modal</ReqoreModal>
|
|
33
|
-
</ReqoreContent>
|
|
34
|
-
</ReqoreLayoutContent>
|
|
35
|
-
</ReqoreUIProvider>
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
expect(document.querySelectorAll('.reqore-modal').length).toBe(0);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
test('Renders <Modal /> with custom dimensions', () => {
|
|
42
|
-
render(
|
|
43
|
-
<ReqoreUIProvider>
|
|
44
|
-
<ReqoreLayoutContent>
|
|
45
|
-
<ReqoreContent>
|
|
46
|
-
<ReqoreModal width='700px' height='700px'>
|
|
47
|
-
Resized modal
|
|
48
|
-
</ReqoreModal>
|
|
49
|
-
</ReqoreContent>
|
|
50
|
-
</ReqoreLayoutContent>
|
|
51
|
-
</ReqoreUIProvider>
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
expect(document.querySelectorAll('.reqore-modal').length).toBe(0);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
const ConfirmButton = ({ confirmFn, cancelFn }) => {
|
|
58
|
-
const reqoreContext = useReqore();
|
|
59
|
-
|
|
60
|
-
return (
|
|
61
|
-
<>
|
|
62
|
-
<ReqoreButton
|
|
63
|
-
id='custom-confirm'
|
|
64
|
-
onClick={() => {
|
|
65
|
-
reqoreContext?.confirmAction({
|
|
66
|
-
title: 'Are you sure mate?',
|
|
67
|
-
description: 'Do you really wanna do this?',
|
|
68
|
-
confirmButtonIntent: 'warning',
|
|
69
|
-
confirmIcon: 'SunFill',
|
|
70
|
-
confirmLabel: 'Yep',
|
|
71
|
-
onConfirm: () => confirmFn(),
|
|
72
|
-
onCancel: () => cancelFn(),
|
|
73
|
-
});
|
|
74
|
-
}}
|
|
75
|
-
>
|
|
76
|
-
{' '}
|
|
77
|
-
Custom confirm action{' '}
|
|
78
|
-
</ReqoreButton>
|
|
79
|
-
<br />
|
|
80
|
-
<ReqoreButton
|
|
81
|
-
id='confirm'
|
|
82
|
-
onClick={() => {
|
|
83
|
-
reqoreContext?.confirmAction({
|
|
84
|
-
onConfirm: () => confirmFn(),
|
|
85
|
-
onCancel: () => cancelFn(),
|
|
86
|
-
});
|
|
87
|
-
}}
|
|
88
|
-
>
|
|
89
|
-
{' '}
|
|
90
|
-
Confirm action{' '}
|
|
91
|
-
</ReqoreButton>
|
|
92
|
-
<br />
|
|
93
|
-
{status && <p>{status}</p>}
|
|
94
|
-
</>
|
|
95
|
-
);
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
const ConfirmButtonFromModal = ({ confirmFn, cancelFn }) => {
|
|
99
|
-
const confirmAction = useReqoreProperty('confirmAction');
|
|
100
|
-
const [isDialogOpen, setIsDialogOpen] = useState(false);
|
|
101
|
-
|
|
102
|
-
return (
|
|
103
|
-
<>
|
|
104
|
-
<ReqoreButton
|
|
105
|
-
id='dialog'
|
|
106
|
-
onClick={() => {
|
|
107
|
-
setIsDialogOpen(true);
|
|
108
|
-
}}
|
|
109
|
-
>
|
|
110
|
-
Open Dialog
|
|
111
|
-
</ReqoreButton>
|
|
112
|
-
{isDialogOpen && (
|
|
113
|
-
<ReqoreModal
|
|
114
|
-
isOpen
|
|
115
|
-
id='confirm'
|
|
116
|
-
actions={[
|
|
117
|
-
{
|
|
118
|
-
label: 'Open Confirm',
|
|
119
|
-
id: 'open-confirm',
|
|
120
|
-
onClick: () => {
|
|
121
|
-
confirmAction({
|
|
122
|
-
description: 'Do you really wanna do this?',
|
|
123
|
-
onConfirm: () => confirmFn(),
|
|
124
|
-
onCancel: () => cancelFn(),
|
|
125
|
-
});
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
]}
|
|
129
|
-
>
|
|
130
|
-
Modal
|
|
131
|
-
</ReqoreModal>
|
|
132
|
-
)}
|
|
133
|
-
</>
|
|
134
|
-
);
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
test('Renders confirmation <Modal /> ', () => {
|
|
138
|
-
const confirmFn = jest.fn();
|
|
139
|
-
const cancelFn = jest.fn();
|
|
140
|
-
|
|
141
|
-
act(() => {
|
|
142
|
-
render(
|
|
143
|
-
<ReqoreUIProvider options={{ animations: { dialogs: false } }}>
|
|
144
|
-
<ReqoreLayoutContent>
|
|
145
|
-
<ReqoreContent>
|
|
146
|
-
<ConfirmButton confirmFn={confirmFn} cancelFn={cancelFn} />
|
|
147
|
-
</ReqoreContent>
|
|
148
|
-
</ReqoreLayoutContent>
|
|
149
|
-
</ReqoreUIProvider>
|
|
150
|
-
);
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
fireEvent.click(document.getElementById('custom-confirm')!);
|
|
154
|
-
fireEvent.click(screen.getAllByText('Yep')[0]);
|
|
155
|
-
|
|
156
|
-
expect(confirmFn).toHaveBeenCalled();
|
|
157
|
-
|
|
158
|
-
fireEvent.click(document.getElementById('confirm')!);
|
|
159
|
-
fireEvent.click(screen.getAllByText('Confirm')[0]);
|
|
160
|
-
|
|
161
|
-
expect(confirmFn).toHaveBeenCalledTimes(2);
|
|
162
|
-
|
|
163
|
-
fireEvent.click(document.getElementById('custom-confirm')!);
|
|
164
|
-
fireEvent.click(screen.getAllByText('Cancel')[0]);
|
|
165
|
-
|
|
166
|
-
expect(cancelFn).toHaveBeenCalled();
|
|
167
|
-
|
|
168
|
-
fireEvent.click(document.getElementById('confirm')!);
|
|
169
|
-
fireEvent.click(screen.getAllByText('Cancel')[0]);
|
|
170
|
-
|
|
171
|
-
expect(cancelFn).toHaveBeenCalledTimes(2);
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
test('Always renders confirmation <Modal /> properly above a normal modal', () => {
|
|
175
|
-
const confirmFn = jest.fn();
|
|
176
|
-
const cancelFn = jest.fn();
|
|
177
|
-
|
|
178
|
-
act(() => {
|
|
179
|
-
render(
|
|
180
|
-
<ReqoreUIProvider options={{ animations: { dialogs: false } }}>
|
|
181
|
-
<ReqoreLayoutContent>
|
|
182
|
-
<ReqoreContent>
|
|
183
|
-
<ConfirmButtonFromModal confirmFn={confirmFn} cancelFn={cancelFn} />
|
|
184
|
-
</ReqoreContent>
|
|
185
|
-
</ReqoreLayoutContent>
|
|
186
|
-
</ReqoreUIProvider>
|
|
187
|
-
);
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
fireEvent.click(document.getElementById('dialog')!);
|
|
191
|
-
expect(document.querySelectorAll('.reqore-modal').length).toBe(1);
|
|
192
|
-
|
|
193
|
-
fireEvent.click(screen.getAllByText('Open Confirm')[0]);
|
|
194
|
-
expect(document.querySelectorAll('.reqore-modal').length).toBe(2);
|
|
195
|
-
expect(document.querySelectorAll('.reqore-confirmation-modal').length).toBe(1);
|
|
196
|
-
|
|
197
|
-
// @ts-ignore
|
|
198
|
-
const zIndex = document.querySelectorAll('.reqore-modal')[0].style.zIndex;
|
|
199
|
-
// @ts-ignore
|
|
200
|
-
const zIndexConfirmation = document.querySelectorAll('.reqore-confirmation-modal')[0].style
|
|
201
|
-
.zIndex;
|
|
202
|
-
|
|
203
|
-
expect(parseInt(zIndexConfirmation)).toBeGreaterThan(parseInt(zIndex));
|
|
204
|
-
});
|
|
@@ -1,458 +0,0 @@
|
|
|
1
|
-
import { act, fireEvent, render, screen } from '@testing-library/react';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { ReqoreMultiSelect, ReqoreUIProvider } from '../src';
|
|
4
|
-
import { IReqoreMultiSelectProps } from '../src/components/MultiSelect';
|
|
5
|
-
import { MultiSelectItems } from '../src/mock/multiSelect';
|
|
6
|
-
|
|
7
|
-
beforeAll(() => {
|
|
8
|
-
jest.setTimeout(30000);
|
|
9
|
-
jest.useFakeTimers();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
const MultiSelectItemsTestComponent = ({
|
|
13
|
-
onValueChange,
|
|
14
|
-
value,
|
|
15
|
-
...rest
|
|
16
|
-
}: Partial<IReqoreMultiSelectProps>) => {
|
|
17
|
-
const [selected, setSelected] = React.useState<string[] | undefined>(value);
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<ReqoreUIProvider>
|
|
21
|
-
<ReqoreMultiSelect
|
|
22
|
-
{...rest}
|
|
23
|
-
value={selected}
|
|
24
|
-
onValueChange={(value) => {
|
|
25
|
-
setSelected(value);
|
|
26
|
-
onValueChange?.(value);
|
|
27
|
-
}}
|
|
28
|
-
/>
|
|
29
|
-
</ReqoreUIProvider>
|
|
30
|
-
);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
test('Renders empty <ReqoreMultiSelect />', () => {
|
|
34
|
-
act(() => {
|
|
35
|
-
render(<MultiSelectItemsTestComponent items={MultiSelectItems} />);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
jest.advanceTimersByTime(1);
|
|
39
|
-
|
|
40
|
-
expect(screen.getByText('No items selected')).toBeTruthy();
|
|
41
|
-
expect(document.querySelectorAll('.reqore-input')?.length).toBe(1);
|
|
42
|
-
expect(document.querySelector('.reqore-input')?.getAttribute('disabled')).toBe(null);
|
|
43
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
44
|
-
// No items tag
|
|
45
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
test('Renders <ReqoreMultiSelect /> with default value', () => {
|
|
49
|
-
act(() => {
|
|
50
|
-
render(
|
|
51
|
-
<MultiSelectItemsTestComponent
|
|
52
|
-
items={MultiSelectItems}
|
|
53
|
-
value={['Existing item 1', 'Existing item 3']}
|
|
54
|
-
/>
|
|
55
|
-
);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
jest.advanceTimersByTime(1);
|
|
59
|
-
|
|
60
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(2);
|
|
61
|
-
expect(screen.getByText('Existing item 1')).toBeTruthy();
|
|
62
|
-
expect(screen.getByText('Existing item 3')).toBeTruthy();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('Renders <ReqoreMultiSelect /> with default value, items can be removed', () => {
|
|
66
|
-
act(() => {
|
|
67
|
-
render(
|
|
68
|
-
<MultiSelectItemsTestComponent
|
|
69
|
-
items={MultiSelectItems}
|
|
70
|
-
value={['Existing item 1', 'Existing item 3']}
|
|
71
|
-
canRemoveItems
|
|
72
|
-
/>
|
|
73
|
-
);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
jest.advanceTimersByTime(1);
|
|
77
|
-
|
|
78
|
-
fireEvent.click(document.querySelectorAll('.reqore-tag-remove')[0]!);
|
|
79
|
-
|
|
80
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
81
|
-
expect(screen.getByText('Existing item 3')).toBeTruthy();
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
test('Renders disabled <ReqoreMultiSelect /> when items are empty and items CANNOT be created', () => {
|
|
85
|
-
act(() => {
|
|
86
|
-
render(<MultiSelectItemsTestComponent />);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
90
|
-
|
|
91
|
-
expect(document.querySelector('.reqore-input')?.getAttribute('disabled')).toBe('');
|
|
92
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
test('Renders empty <ReqoreMultiSelect /> when items are empty and items CAN be created', () => {
|
|
96
|
-
act(() => {
|
|
97
|
-
render(<MultiSelectItemsTestComponent canCreateItems />);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
101
|
-
|
|
102
|
-
jest.advanceTimersByTime(1);
|
|
103
|
-
|
|
104
|
-
expect(document.querySelector('.reqore-input')?.getAttribute('disabled')).toBe(null);
|
|
105
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
106
|
-
expect(screen.getAllByText('No items exist')).toBeTruthy();
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
test('Renders <ReqoreMultiSelect /> and selects / deselects items from the list', () => {
|
|
110
|
-
act(() => {
|
|
111
|
-
render(<MultiSelectItemsTestComponent items={MultiSelectItems} />);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
115
|
-
|
|
116
|
-
jest.advanceTimersByTime(1);
|
|
117
|
-
|
|
118
|
-
fireEvent.click(screen.getAllByText('Existing item 3')[1]);
|
|
119
|
-
|
|
120
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
121
|
-
expect(screen.getAllByText('Existing item 3')).toBeTruthy();
|
|
122
|
-
// Keeps the list open
|
|
123
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
124
|
-
|
|
125
|
-
fireEvent.click(screen.getAllByText('Disabled item')[1]);
|
|
126
|
-
|
|
127
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
128
|
-
|
|
129
|
-
// Deselect an item from the list
|
|
130
|
-
fireEvent.click(screen.getAllByText('Existing item 3')[1]);
|
|
131
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
132
|
-
expect(screen.getAllByText('No items selected')).toBeTruthy();
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
test('Renders <ReqoreMultiSelect /> and items can be searched, opens up the list', () => {
|
|
136
|
-
act(() => {
|
|
137
|
-
render(<MultiSelectItemsTestComponent items={MultiSelectItems} />);
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
141
|
-
|
|
142
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
143
|
-
target: { value: 'Existing item' },
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
jest.advanceTimersByTime(1);
|
|
147
|
-
|
|
148
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
149
|
-
// 4 items + 1 button for clearable input
|
|
150
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(4);
|
|
151
|
-
|
|
152
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
153
|
-
target: { value: 'Nothing' },
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(1);
|
|
157
|
-
expect(screen.getAllByText('No existing items found')).toBeTruthy();
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
test('Renders <ReqoreMultiSelect /> and items can be searched and created, opens up the list', () => {
|
|
161
|
-
act(() => {
|
|
162
|
-
render(<MultiSelectItemsTestComponent items={MultiSelectItems} canCreateItems />);
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
166
|
-
|
|
167
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
168
|
-
target: { value: 'Existing item 1' },
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
jest.advanceTimersByTime(1);
|
|
172
|
-
|
|
173
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
174
|
-
// 4 items + 1 button for clearable input
|
|
175
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(1);
|
|
176
|
-
|
|
177
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
178
|
-
target: { value: 'Existing item' },
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(5);
|
|
182
|
-
expect(screen.getAllByText('Create new "Existing item"')).toBeTruthy();
|
|
183
|
-
|
|
184
|
-
// This has to fail because we do not allow creating items with ENTER key
|
|
185
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
186
|
-
key: 'Enter',
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
expect(screen.getByText('No items selected')).toBeTruthy();
|
|
190
|
-
|
|
191
|
-
// Create the item by clicking
|
|
192
|
-
fireEvent.click(screen.getAllByText('Create new "Existing item"')[1]);
|
|
193
|
-
|
|
194
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
195
|
-
expect(screen.getAllByText('Existing item')).toBeTruthy();
|
|
196
|
-
|
|
197
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
198
|
-
target: { value: 'Existing item' },
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
// 6 again because the item is already created, so the Create button is not there
|
|
202
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(5);
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
test('Renders <ReqoreMultiSelect /> and items can be searched and created using the ENTER key, opens up the list', () => {
|
|
206
|
-
act(() => {
|
|
207
|
-
render(
|
|
208
|
-
<MultiSelectItemsTestComponent items={MultiSelectItems} canCreateItems enterKeySelects />
|
|
209
|
-
);
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
213
|
-
|
|
214
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
215
|
-
target: { value: 'Existing item 1' },
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
jest.advanceTimersByTime(1);
|
|
219
|
-
|
|
220
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
221
|
-
// 4 items + 1 button for clearable input
|
|
222
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(1);
|
|
223
|
-
|
|
224
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
225
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
226
|
-
target: { value: 'Existing item' },
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(5);
|
|
230
|
-
expect(screen.getAllByText('Create new "Existing item"')).toBeTruthy();
|
|
231
|
-
|
|
232
|
-
// Create the item by pressing ENTER key
|
|
233
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
234
|
-
key: 'Enter',
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
238
|
-
expect(screen.getAllByText('Existing item')).toBeTruthy();
|
|
239
|
-
|
|
240
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
241
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
242
|
-
target: { value: 'Existing item' },
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
// 6 again because the item is already created, so the Create button is not there
|
|
246
|
-
expect(document.querySelectorAll('.reqore-button').length).toBe(5);
|
|
247
|
-
|
|
248
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
249
|
-
// Does not create new item if the query is empty
|
|
250
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
251
|
-
target: { value: '' },
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
255
|
-
key: 'Enter',
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
test('Renders <ReqoreMultiSelect /> and does not create new item on ENTER when not focused', () => {
|
|
262
|
-
act(() => {
|
|
263
|
-
render(
|
|
264
|
-
<MultiSelectItemsTestComponent items={MultiSelectItems} canCreateItems enterKeySelects />
|
|
265
|
-
);
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
269
|
-
|
|
270
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
271
|
-
// Add some text
|
|
272
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
273
|
-
target: { value: 'New item' },
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
// Blur the input
|
|
277
|
-
fireEvent.blur(document.querySelector('.reqore-input')!);
|
|
278
|
-
|
|
279
|
-
jest.advanceTimersByTime(1);
|
|
280
|
-
|
|
281
|
-
// Try and create the item by pressing ENTER key
|
|
282
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
283
|
-
key: 'Enter',
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
expect(screen.getByText('No items selected')).toBeTruthy();
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
test('Renders <ReqoreMultiSelect /> and deselects an item using the ENTER key', () => {
|
|
290
|
-
act(() => {
|
|
291
|
-
render(
|
|
292
|
-
<MultiSelectItemsTestComponent
|
|
293
|
-
items={MultiSelectItems}
|
|
294
|
-
canCreateItems
|
|
295
|
-
enterKeySelects
|
|
296
|
-
value={['Existing item 3']}
|
|
297
|
-
/>
|
|
298
|
-
);
|
|
299
|
-
});
|
|
300
|
-
|
|
301
|
-
// The item is already selected
|
|
302
|
-
expect(screen.getAllByText('Existing item 3')).toBeTruthy();
|
|
303
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
304
|
-
|
|
305
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
306
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
307
|
-
target: { value: 'Existing item 3' },
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
jest.advanceTimersByTime(1);
|
|
311
|
-
|
|
312
|
-
// Deselect the item by pressing ENTER key
|
|
313
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
314
|
-
key: 'Enter',
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
318
|
-
expect(screen.getAllByText('No items selected')).toBeTruthy();
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
test('Renders <ReqoreMultiSelect /> and calls onValueChange when value changes', () => {
|
|
322
|
-
const onValueChange = jest.fn();
|
|
323
|
-
|
|
324
|
-
act(() => {
|
|
325
|
-
render(
|
|
326
|
-
<MultiSelectItemsTestComponent
|
|
327
|
-
items={MultiSelectItems}
|
|
328
|
-
canCreateItems
|
|
329
|
-
enterKeySelects
|
|
330
|
-
onValueChange={onValueChange}
|
|
331
|
-
value={['Existing item 3']}
|
|
332
|
-
/>
|
|
333
|
-
);
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
// The item is already selected
|
|
337
|
-
expect(screen.getAllByText('Existing item 3')).toBeTruthy();
|
|
338
|
-
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
339
|
-
|
|
340
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
341
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
342
|
-
target: { value: 'Existing item 3' },
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
jest.advanceTimersByTime(1);
|
|
346
|
-
|
|
347
|
-
// Deselect the item by pressing ENTER key
|
|
348
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
349
|
-
key: 'Enter',
|
|
350
|
-
});
|
|
351
|
-
|
|
352
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
353
|
-
expect(screen.getAllByText('No items selected')).toBeTruthy();
|
|
354
|
-
expect(onValueChange).toHaveBeenNthCalledWith(1, []);
|
|
355
|
-
|
|
356
|
-
fireEvent.click(screen.getAllByText('Existing item 1')[1]);
|
|
357
|
-
|
|
358
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
359
|
-
expect(screen.getAllByText('Existing item 1')).toBeTruthy();
|
|
360
|
-
expect(onValueChange).toHaveBeenNthCalledWith(2, ['Existing item 1']);
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
test('Renders <ReqoreMultiSelect /> and calls onItemClick when an item is clicked', () => {
|
|
364
|
-
const onItemClick = jest.fn();
|
|
365
|
-
|
|
366
|
-
act(() => {
|
|
367
|
-
render(
|
|
368
|
-
<MultiSelectItemsTestComponent
|
|
369
|
-
items={MultiSelectItems}
|
|
370
|
-
canCreateItems
|
|
371
|
-
enterKeySelects
|
|
372
|
-
onItemClick={onItemClick}
|
|
373
|
-
value={['Existing item 3', 'Disabled item']}
|
|
374
|
-
/>
|
|
375
|
-
);
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
// The item is already selected
|
|
379
|
-
fireEvent.click(screen.getByText('Existing item 3'));
|
|
380
|
-
|
|
381
|
-
expect(onItemClick).toHaveBeenNthCalledWith(
|
|
382
|
-
1,
|
|
383
|
-
MultiSelectItems.find((item) => item.value === 'Existing item 3')
|
|
384
|
-
);
|
|
385
|
-
|
|
386
|
-
fireEvent.click(screen.getByText('Disabled item'));
|
|
387
|
-
|
|
388
|
-
expect(onItemClick).toHaveBeenCalledTimes(1);
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
test('Renders <ReqoreMultiSelect /> and calls onItemAdded when an item is added', () => {
|
|
392
|
-
const onItemAdd = jest.fn();
|
|
393
|
-
|
|
394
|
-
act(() => {
|
|
395
|
-
render(
|
|
396
|
-
<MultiSelectItemsTestComponent
|
|
397
|
-
items={MultiSelectItems}
|
|
398
|
-
canCreateItems
|
|
399
|
-
enterKeySelects
|
|
400
|
-
onItemAdded={onItemAdd}
|
|
401
|
-
/>
|
|
402
|
-
);
|
|
403
|
-
});
|
|
404
|
-
|
|
405
|
-
const item = MultiSelectItems.find((item) => item.value === 'Existing item 3');
|
|
406
|
-
|
|
407
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
408
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
409
|
-
target: { value: 'Existing item 3' },
|
|
410
|
-
});
|
|
411
|
-
|
|
412
|
-
jest.advanceTimersByTime(1);
|
|
413
|
-
|
|
414
|
-
// Select the item by pressing ENTER key
|
|
415
|
-
fireEvent.keyDown(document.querySelector('.reqore-input')!, {
|
|
416
|
-
key: 'Enter',
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(1);
|
|
420
|
-
expect(onItemAdd).toHaveBeenNthCalledWith(1, item!.value);
|
|
421
|
-
|
|
422
|
-
// Add completely new item
|
|
423
|
-
fireEvent.focus(document.querySelector('.reqore-input')!);
|
|
424
|
-
fireEvent.change(document.querySelector('.reqore-input')!, {
|
|
425
|
-
target: { value: 'Some new item' },
|
|
426
|
-
});
|
|
427
|
-
|
|
428
|
-
jest.advanceTimersByTime(1);
|
|
429
|
-
|
|
430
|
-
// Create the item by clicking
|
|
431
|
-
fireEvent.click(screen.getAllByText('Create new "Some new item"')[1]);
|
|
432
|
-
|
|
433
|
-
expect(document.querySelectorAll('.reqore-tag').length).toBe(2);
|
|
434
|
-
expect(onItemAdd).toHaveBeenNthCalledWith(2, 'Some new item');
|
|
435
|
-
});
|
|
436
|
-
|
|
437
|
-
test('Renders <ReqoreMultiSelect /> and calls onItemRemoved when an item is removed', () => {
|
|
438
|
-
const onItemRemove = jest.fn();
|
|
439
|
-
|
|
440
|
-
act(() => {
|
|
441
|
-
render(
|
|
442
|
-
<MultiSelectItemsTestComponent
|
|
443
|
-
items={MultiSelectItems}
|
|
444
|
-
canCreateItems
|
|
445
|
-
enterKeySelects
|
|
446
|
-
canRemoveItems
|
|
447
|
-
onItemRemoved={onItemRemove}
|
|
448
|
-
value={['Existing item 3']}
|
|
449
|
-
/>
|
|
450
|
-
);
|
|
451
|
-
});
|
|
452
|
-
|
|
453
|
-
const item = MultiSelectItems.find((item) => item.value === 'Existing item 3');
|
|
454
|
-
|
|
455
|
-
fireEvent.click(document.querySelectorAll('.reqore-tag-remove')[0]!);
|
|
456
|
-
|
|
457
|
-
expect(onItemRemove).toHaveBeenNthCalledWith(1, item!.value);
|
|
458
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { render } from "@testing-library/react";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import {
|
|
4
|
-
ReqoreHeader,
|
|
5
|
-
ReqoreNavbarDivider,
|
|
6
|
-
ReqoreNavbarGroup,
|
|
7
|
-
ReqoreNavbarItem,
|
|
8
|
-
ReqoreUIProvider,
|
|
9
|
-
} from "../src";
|
|
10
|
-
|
|
11
|
-
test("Renders Navbar properly", () => {
|
|
12
|
-
render(
|
|
13
|
-
<ReqoreUIProvider>
|
|
14
|
-
<ReqoreHeader>
|
|
15
|
-
<ReqoreNavbarGroup>
|
|
16
|
-
<ReqoreNavbarItem>Logo</ReqoreNavbarItem>
|
|
17
|
-
</ReqoreNavbarGroup>
|
|
18
|
-
<ReqoreNavbarGroup position="right">
|
|
19
|
-
<ReqoreNavbarItem>Item</ReqoreNavbarItem>
|
|
20
|
-
<ReqoreNavbarDivider />
|
|
21
|
-
<ReqoreNavbarItem>Item 2</ReqoreNavbarItem>
|
|
22
|
-
</ReqoreNavbarGroup>
|
|
23
|
-
</ReqoreHeader>
|
|
24
|
-
</ReqoreUIProvider>
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
expect(document.querySelectorAll(".reqore-navbar-header").length).toBe(1);
|
|
28
|
-
expect(document.querySelectorAll(".reqore-navbar-group").length).toBe(2);
|
|
29
|
-
expect(document.querySelectorAll(".reqore-navbar-divider").length).toBe(1);
|
|
30
|
-
expect(document.querySelectorAll(".reqore-navbar-item").length).toBe(3);
|
|
31
|
-
});
|