@qoretechnologies/reqore 0.31.2 → 0.32.2
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/.github/workflows/tests.yml +3 -1
- package/__tests__/breadcrumbs.test.tsx +46 -28
- package/__tests__/button.test.tsx +18 -0
- package/__tests__/checkbox.test.tsx +19 -1
- package/__tests__/collection.test.tsx +14 -1
- package/__tests__/icon.test.tsx +19 -1
- package/__tests__/input.test.tsx +435 -24
- package/__tests__/messages.test.tsx +16 -0
- package/__tests__/modal.test.tsx +4 -4
- package/__tests__/multiselect.test.tsx +8 -10
- package/__tests__/notifications.test.tsx +6 -6
- package/__tests__/panel.test.tsx +19 -1
- package/__tests__/textarea.test.tsx +423 -24
- package/__tests__/tree.test.tsx +3 -1
- package/dist/components/Breadcrumbs/item.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/item.js +6 -2
- package/dist/components/Breadcrumbs/item.js.map +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.js +18 -4
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +8 -4
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/Collection/index.d.ts +4 -2
- package/dist/components/Collection/index.d.ts.map +1 -1
- package/dist/components/Collection/index.js +19 -13
- package/dist/components/Collection/index.js.map +1 -1
- package/dist/components/Collection/item.js +2 -2
- package/dist/components/Collection/item.js.map +1 -1
- package/dist/components/Comment/index.d.ts +0 -1
- package/dist/components/Comment/index.d.ts.map +1 -1
- package/dist/components/ControlGroup/index.d.ts.map +1 -1
- package/dist/components/ControlGroup/index.js +18 -57
- package/dist/components/ControlGroup/index.js.map +1 -1
- package/dist/components/Drawer/index.d.ts +1 -1
- package/dist/components/Drawer/index.d.ts.map +1 -1
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/Drawer/index.js.map +1 -1
- package/dist/components/Dropdown/item.d.ts +0 -1
- package/dist/components/Dropdown/item.d.ts.map +1 -1
- package/dist/components/Icon/index.d.ts +2 -0
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +17 -8
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/Input/index.d.ts +4 -0
- package/dist/components/Input/index.d.ts.map +1 -1
- package/dist/components/Input/index.js +19 -7
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/InputClearButton/index.d.ts +1 -1
- package/dist/components/InputClearButton/index.d.ts.map +1 -1
- package/dist/components/InputClearButton/index.js +18 -8
- package/dist/components/InputClearButton/index.js.map +1 -1
- package/dist/components/InternalPopover/index.d.ts.map +1 -1
- package/dist/components/InternalPopover/index.js +2 -1
- package/dist/components/InternalPopover/index.js.map +1 -1
- package/dist/components/Menu/item.d.ts +1 -1
- package/dist/components/Menu/item.d.ts.map +1 -1
- package/dist/components/Menu/item.js +3 -6
- package/dist/components/Menu/item.js.map +1 -1
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Message/index.js +6 -2
- package/dist/components/Message/index.js.map +1 -1
- package/dist/components/Modal/index.d.ts +0 -1
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Panel/index.d.ts +1 -0
- package/dist/components/Panel/index.d.ts.map +1 -1
- package/dist/components/Panel/index.js +18 -9
- package/dist/components/Panel/index.js.map +1 -1
- package/dist/components/Panel/panel.screenshot.d.ts +0 -1
- package/dist/components/Panel/panel.screenshot.d.ts.map +1 -1
- package/dist/components/Sidebar/item.d.ts +0 -1
- package/dist/components/Sidebar/item.d.ts.map +1 -1
- package/dist/components/Sidebar/item.js +1 -3
- package/dist/components/Sidebar/item.js.map +1 -1
- package/dist/components/Spinner/index.d.ts +0 -1
- package/dist/components/Spinner/index.d.ts.map +1 -1
- package/dist/components/Table/header.d.ts +0 -1
- package/dist/components/Table/header.d.ts.map +1 -1
- package/dist/components/Tag/index.d.ts.map +1 -1
- package/dist/components/Tag/index.js +7 -4
- package/dist/components/Tag/index.js.map +1 -1
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/index.d.ts.map +1 -1
- package/dist/components/Textarea/index.js +9 -6
- package/dist/components/Textarea/index.js.map +1 -1
- package/dist/components/Tree/index.d.ts +0 -1
- package/dist/components/Tree/index.d.ts.map +1 -1
- package/dist/components/Tree/index.js +2 -4
- package/dist/components/Tree/index.js.map +1 -1
- package/dist/containers/PopoverProvider.d.ts.map +1 -1
- package/dist/containers/PopoverProvider.js +2 -2
- package/dist/containers/PopoverProvider.js.map +1 -1
- package/dist/containers/ReqoreProvider.d.ts.map +1 -1
- package/dist/containers/ReqoreProvider.js +4 -0
- package/dist/containers/ReqoreProvider.js.map +1 -1
- package/dist/containers/ThemeProvider.d.ts +1 -2
- package/dist/containers/ThemeProvider.d.ts.map +1 -1
- package/dist/containers/ThemeProvider.js +3 -3
- package/dist/containers/ThemeProvider.js.map +1 -1
- package/dist/context/PopoverContext.d.ts +1 -2
- package/dist/context/PopoverContext.d.ts.map +1 -1
- package/dist/context/PopoverContext.js +2 -2
- package/dist/context/PopoverContext.js.map +1 -1
- package/dist/context/ReqoreContext.d.ts +3 -2
- package/dist/context/ReqoreContext.d.ts.map +1 -1
- package/dist/context/ReqoreContext.js +5 -3
- package/dist/context/ReqoreContext.js.map +1 -1
- package/dist/context/ThemeContext.d.ts +1 -2
- package/dist/context/ThemeContext.d.ts.map +1 -1
- package/dist/context/ThemeContext.js +2 -2
- package/dist/context/ThemeContext.js.map +1 -1
- package/dist/hooks/useAutoFocus.d.ts +11 -0
- package/dist/hooks/useAutoFocus.d.ts.map +1 -0
- package/dist/hooks/useAutoFocus.js +80 -0
- package/dist/hooks/useAutoFocus.js.map +1 -0
- package/dist/hooks/useLatestZIndex.d.ts.map +1 -1
- package/dist/hooks/useLatestZIndex.js +3 -2
- package/dist/hooks/useLatestZIndex.js.map +1 -1
- package/dist/hooks/usePopover.d.ts +0 -1
- package/dist/hooks/usePopover.d.ts.map +1 -1
- package/dist/hooks/usePopover.js +4 -3
- package/dist/hooks/usePopover.js.map +1 -1
- package/dist/hooks/useReqore.js +2 -2
- package/dist/hooks/useReqore.js.map +1 -1
- package/dist/hooks/useReqoreContext.d.ts +3 -0
- package/dist/hooks/useReqoreContext.d.ts.map +1 -0
- package/dist/hooks/useReqoreContext.js +19 -0
- package/dist/hooks/useReqoreContext.js.map +1 -0
- package/dist/hooks/useReqoreEffect.js +2 -5
- package/dist/hooks/useReqoreEffect.js.map +1 -1
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTheme.js +20 -20
- package/dist/hooks/useTheme.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +1 -1
- package/dist/styles.js.map +1 -1
- package/package.json +20 -16
- package/src/components/Breadcrumbs/item.tsx +7 -3
- package/src/components/Button/index.tsx +26 -7
- package/src/components/Checkbox/index.tsx +9 -5
- package/src/components/Collection/index.tsx +33 -11
- package/src/components/Collection/item.tsx +3 -3
- package/src/components/ControlGroup/index.tsx +26 -87
- package/src/components/Drawer/index.tsx +4 -4
- package/src/components/Icon/index.tsx +27 -9
- package/src/components/Input/index.tsx +35 -4
- package/src/components/InputClearButton/index.tsx +41 -17
- package/src/components/InternalPopover/index.tsx +2 -1
- package/src/components/Menu/item.tsx +6 -9
- package/src/components/Message/index.tsx +6 -2
- package/src/components/Panel/index.tsx +26 -9
- package/src/components/Sidebar/item.tsx +2 -4
- package/src/components/Tag/index.tsx +9 -6
- package/src/components/Textarea/index.tsx +16 -11
- package/src/components/Tree/index.tsx +5 -8
- package/src/containers/PopoverProvider.tsx +2 -2
- package/src/containers/ReqoreProvider.tsx +5 -1
- package/src/containers/ThemeProvider.tsx +3 -13
- package/src/context/PopoverContext.tsx +1 -1
- package/src/context/ReqoreContext.tsx +4 -1
- package/src/context/ThemeContext.tsx +1 -1
- package/src/hooks/useAutoFocus.ts +104 -0
- package/src/hooks/useLatestZIndex.ts +5 -3
- package/src/hooks/usePopover.tsx +4 -3
- package/src/hooks/useReqore.ts +1 -1
- package/src/hooks/useReqoreContext.ts +16 -0
- package/src/hooks/useReqoreEffect.ts +3 -3
- package/src/hooks/useTheme.ts +21 -17
- package/src/index.tsx +1 -0
- package/src/stories/Button/Button.stories.tsx +7 -0
- package/src/stories/Collection/Collection.stories.tsx +56 -9
- package/src/stories/Drawer/Drawer.stories.tsx +4 -3
- package/src/stories/Input/Input.stories.tsx +29 -6
- package/src/stories/Modal/Modal.stories.tsx +3 -4
- package/src/stories/Notifications/Interactive.stories.tsx +3 -4
- package/src/stories/Panel/Panel.stories.tsx +4 -2
- package/src/stories/TextArea/TextArea.stories.tsx +1 -0
- package/src/styles.ts +0 -1
- package/tests.json +1 -1
package/__tests__/panel.test.tsx
CHANGED
|
@@ -156,7 +156,7 @@ test('Renders <Panel /> without actions group if all actins are not shown', () =
|
|
|
156
156
|
expect(document.querySelectorAll('.reqore-input').length).toBe(0);
|
|
157
157
|
});
|
|
158
158
|
|
|
159
|
-
test('Renders <Panel /> without title & bottom actions if all actions are not shown, there is no icon, title
|
|
159
|
+
test('Renders <Panel /> without title & bottom actions if all actions are not shown, there is no icon, & title is not collapsible', () => {
|
|
160
160
|
render(
|
|
161
161
|
<ReqoreUIProvider>
|
|
162
162
|
<ReqoreLayoutContent>
|
|
@@ -202,3 +202,21 @@ test('Renders <Panel /> without title & bottom actions if all actions are not sh
|
|
|
202
202
|
expect(document.querySelectorAll('.reqore-panel-title').length).toBe(0);
|
|
203
203
|
expect(document.querySelectorAll('.reqore-panel-bottom-actions').length).toBe(0);
|
|
204
204
|
});
|
|
205
|
+
|
|
206
|
+
test('Tooltip on <Panel /> works', () => {
|
|
207
|
+
jest.useFakeTimers();
|
|
208
|
+
|
|
209
|
+
render(
|
|
210
|
+
<ReqoreUIProvider>
|
|
211
|
+
<ReqorePanel tooltip='Hello'>Hello</ReqorePanel>
|
|
212
|
+
</ReqoreUIProvider>
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
216
|
+
|
|
217
|
+
fireEvent.mouseEnter(document.querySelectorAll('.reqore-panel')[0]);
|
|
218
|
+
|
|
219
|
+
jest.advanceTimersByTime(1);
|
|
220
|
+
|
|
221
|
+
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
222
|
+
});
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
ReqoreTextarea,
|
|
8
|
-
ReqoreUIProvider,
|
|
9
|
-
} from "../src";
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
2
|
+
import { fireEvent, render } from '@testing-library/react';
|
|
3
|
+
import { noop } from 'lodash';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { mockAllIsIntersecting } from 'react-intersection-observer/test-utils';
|
|
6
|
+
import { ReqoreContent, ReqoreLayoutContent, ReqoreTextarea, ReqoreUIProvider } from '../src';
|
|
10
7
|
|
|
11
|
-
test(
|
|
8
|
+
test('Renders <TextArea /> properly', () => {
|
|
12
9
|
render(
|
|
13
10
|
<ReqoreUIProvider>
|
|
14
11
|
<ReqoreLayoutContent>
|
|
@@ -19,37 +16,32 @@ test("Renders <TextArea /> properly", () => {
|
|
|
19
16
|
</ReqoreUIProvider>
|
|
20
17
|
);
|
|
21
18
|
|
|
22
|
-
expect(document.querySelectorAll(
|
|
19
|
+
expect(document.querySelectorAll('.reqore-textarea').length).toBe(1);
|
|
23
20
|
// No clear button
|
|
24
|
-
expect(document.querySelectorAll(
|
|
25
|
-
0
|
|
26
|
-
);
|
|
21
|
+
expect(document.querySelectorAll('.reqore-clear-input-button').length).toBe(0);
|
|
27
22
|
});
|
|
28
23
|
|
|
29
|
-
test(
|
|
24
|
+
test('Renders <TextArea /> with clear button properly', () => {
|
|
30
25
|
const fn = jest.fn();
|
|
31
26
|
|
|
32
27
|
render(
|
|
33
28
|
<ReqoreUIProvider>
|
|
34
29
|
<ReqoreLayoutContent>
|
|
35
30
|
<ReqoreContent>
|
|
36
|
-
<ReqoreTextarea minimal onChange={noop} onClearClick={fn} />
|
|
31
|
+
<ReqoreTextarea minimal onChange={noop} onClearClick={fn} value='test' />
|
|
37
32
|
</ReqoreContent>
|
|
38
33
|
</ReqoreLayoutContent>
|
|
39
34
|
</ReqoreUIProvider>
|
|
40
35
|
);
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
expect(document.querySelectorAll(".reqore-clear-input-button").length).toBe(
|
|
44
|
-
1
|
|
45
|
-
);
|
|
37
|
+
expect(document.querySelectorAll('.reqore-clear-input-button').length).toBe(1);
|
|
46
38
|
|
|
47
|
-
fireEvent.click(document.querySelector(
|
|
39
|
+
fireEvent.click(document.querySelector('.reqore-clear-input-button')!);
|
|
48
40
|
|
|
49
41
|
expect(fn).toHaveBeenCalled();
|
|
50
42
|
});
|
|
51
43
|
|
|
52
|
-
test(
|
|
44
|
+
test('Disabled <TextArea /> cannot be cleared', () => {
|
|
53
45
|
const fn = jest.fn();
|
|
54
46
|
|
|
55
47
|
render(
|
|
@@ -63,7 +55,414 @@ test("Disabled <TextArea /> cannot be cleared", () => {
|
|
|
63
55
|
);
|
|
64
56
|
|
|
65
57
|
// No clear button
|
|
66
|
-
expect(document.querySelectorAll(
|
|
67
|
-
|
|
58
|
+
expect(document.querySelectorAll('.reqore-clear-input-button').length).toBe(0);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('Readonly <Textarea /> cannot be cleared', () => {
|
|
62
|
+
const fn = jest.fn();
|
|
63
|
+
|
|
64
|
+
render(
|
|
65
|
+
<ReqoreUIProvider>
|
|
66
|
+
<ReqoreLayoutContent>
|
|
67
|
+
<ReqoreContent>
|
|
68
|
+
<ReqoreTextarea minimal onChange={noop} onClearClick={fn} readOnly />
|
|
69
|
+
</ReqoreContent>
|
|
70
|
+
</ReqoreLayoutContent>
|
|
71
|
+
</ReqoreUIProvider>
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
// No clear button
|
|
75
|
+
expect(document.querySelectorAll('.reqore-clear-input-button').length).toBe(0);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('<Textarea /> gets automatically focused', () => {
|
|
79
|
+
render(
|
|
80
|
+
<ReqoreUIProvider>
|
|
81
|
+
<ReqoreLayoutContent>
|
|
82
|
+
<ReqoreContent>
|
|
83
|
+
<ReqoreTextarea focusRules={{ type: 'auto' }} />
|
|
84
|
+
</ReqoreContent>
|
|
85
|
+
</ReqoreLayoutContent>
|
|
86
|
+
</ReqoreUIProvider>
|
|
68
87
|
);
|
|
88
|
+
|
|
89
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
test('Readonly <Textarea /> does not get automatically focused', () => {
|
|
93
|
+
render(
|
|
94
|
+
<ReqoreUIProvider>
|
|
95
|
+
<ReqoreLayoutContent>
|
|
96
|
+
<ReqoreContent>
|
|
97
|
+
<ReqoreTextarea focusRules={{ type: 'auto' }} readOnly />
|
|
98
|
+
</ReqoreContent>
|
|
99
|
+
</ReqoreLayoutContent>
|
|
100
|
+
</ReqoreUIProvider>
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('Disabled <Textarea /> does not get automatically focused', () => {
|
|
107
|
+
render(
|
|
108
|
+
<ReqoreUIProvider>
|
|
109
|
+
<ReqoreLayoutContent>
|
|
110
|
+
<ReqoreContent>
|
|
111
|
+
<ReqoreTextarea focusRules={{ type: 'auto' }} disabled />
|
|
112
|
+
</ReqoreContent>
|
|
113
|
+
</ReqoreLayoutContent>
|
|
114
|
+
</ReqoreUIProvider>
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
test("<Textarea /> gets automatically focused if it's out of viewport", () => {
|
|
121
|
+
render(
|
|
122
|
+
<ReqoreUIProvider>
|
|
123
|
+
<ReqoreLayoutContent>
|
|
124
|
+
<ReqoreContent>
|
|
125
|
+
<div style={{ height: '100vh' }} />
|
|
126
|
+
<ReqoreTextarea focusRules={{ type: 'auto' }} />
|
|
127
|
+
</ReqoreContent>
|
|
128
|
+
</ReqoreLayoutContent>
|
|
129
|
+
</ReqoreUIProvider>
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
test("<Textarea /> does not get automatically focused if it's out of viewport", () => {
|
|
136
|
+
render(
|
|
137
|
+
<ReqoreUIProvider>
|
|
138
|
+
<ReqoreLayoutContent>
|
|
139
|
+
<ReqoreContent>
|
|
140
|
+
<div style={{ height: '100vh' }} />
|
|
141
|
+
<ReqoreTextarea focusRules={{ type: 'auto', viewportOnly: true }} />
|
|
142
|
+
</ReqoreContent>
|
|
143
|
+
</ReqoreLayoutContent>
|
|
144
|
+
</ReqoreUIProvider>
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
mockAllIsIntersecting(false);
|
|
148
|
+
|
|
149
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
test('<Textarea /> gets automatically focused if its inside of viewport', () => {
|
|
153
|
+
render(
|
|
154
|
+
<ReqoreUIProvider>
|
|
155
|
+
<ReqoreLayoutContent>
|
|
156
|
+
<ReqoreContent>
|
|
157
|
+
<ReqoreTextarea focusRules={{ type: 'auto', viewportOnly: true }} />
|
|
158
|
+
</ReqoreContent>
|
|
159
|
+
</ReqoreLayoutContent>
|
|
160
|
+
</ReqoreUIProvider>
|
|
161
|
+
);
|
|
162
|
+
|
|
163
|
+
mockAllIsIntersecting(true);
|
|
164
|
+
|
|
165
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
test('<Textarea /> gets focused after any letter is pressed', () => {
|
|
169
|
+
render(
|
|
170
|
+
<ReqoreUIProvider>
|
|
171
|
+
<ReqoreLayoutContent>
|
|
172
|
+
<ReqoreContent>
|
|
173
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 'letters' }} />
|
|
174
|
+
</ReqoreContent>
|
|
175
|
+
</ReqoreLayoutContent>
|
|
176
|
+
</ReqoreUIProvider>
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
180
|
+
|
|
181
|
+
fireEvent.keyDown(document, {
|
|
182
|
+
key: 'a',
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
test('<Textarea /> gets focused after any letter is pressed 2', () => {
|
|
189
|
+
render(
|
|
190
|
+
<ReqoreUIProvider>
|
|
191
|
+
<ReqoreLayoutContent>
|
|
192
|
+
<ReqoreContent>
|
|
193
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 'letters' }} />
|
|
194
|
+
</ReqoreContent>
|
|
195
|
+
</ReqoreLayoutContent>
|
|
196
|
+
</ReqoreUIProvider>
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
200
|
+
|
|
201
|
+
fireEvent.keyDown(document, {
|
|
202
|
+
key: '2',
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
206
|
+
|
|
207
|
+
fireEvent.keyDown(document, {
|
|
208
|
+
key: 'L',
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
test('<Textarea /> gets focused after any digit is pressed', () => {
|
|
215
|
+
render(
|
|
216
|
+
<ReqoreUIProvider>
|
|
217
|
+
<ReqoreLayoutContent>
|
|
218
|
+
<ReqoreContent>
|
|
219
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 'numbers' }} />
|
|
220
|
+
</ReqoreContent>
|
|
221
|
+
</ReqoreLayoutContent>
|
|
222
|
+
</ReqoreUIProvider>
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
226
|
+
|
|
227
|
+
fireEvent.keyDown(document, {
|
|
228
|
+
key: '1',
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
test('<Textarea /> gets focused after any digit is pressed 2', () => {
|
|
235
|
+
render(
|
|
236
|
+
<ReqoreUIProvider>
|
|
237
|
+
<ReqoreLayoutContent>
|
|
238
|
+
<ReqoreContent>
|
|
239
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 'numbers' }} />
|
|
240
|
+
</ReqoreContent>
|
|
241
|
+
</ReqoreLayoutContent>
|
|
242
|
+
</ReqoreUIProvider>
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
246
|
+
|
|
247
|
+
fireEvent.keyDown(document, {
|
|
248
|
+
key: 'u',
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
252
|
+
|
|
253
|
+
fireEvent.keyDown(document, {
|
|
254
|
+
key: '0',
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
test('<Textarea /> gets focused after any digit or letter is pressed', () => {
|
|
261
|
+
render(
|
|
262
|
+
<ReqoreUIProvider>
|
|
263
|
+
<ReqoreLayoutContent>
|
|
264
|
+
<ReqoreContent>
|
|
265
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: ['numbers', 'letters'] }} />
|
|
266
|
+
</ReqoreContent>
|
|
267
|
+
</ReqoreLayoutContent>
|
|
268
|
+
</ReqoreUIProvider>
|
|
269
|
+
);
|
|
270
|
+
|
|
271
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
272
|
+
|
|
273
|
+
fireEvent.keyDown(document, {
|
|
274
|
+
key: 'm',
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
test('<Textarea /> gets focused after any digit or letter is pressed 2', () => {
|
|
281
|
+
render(
|
|
282
|
+
<ReqoreUIProvider>
|
|
283
|
+
<ReqoreLayoutContent>
|
|
284
|
+
<ReqoreContent>
|
|
285
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: ['numbers', 'letters'] }} />
|
|
286
|
+
</ReqoreContent>
|
|
287
|
+
</ReqoreLayoutContent>
|
|
288
|
+
</ReqoreUIProvider>
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
292
|
+
|
|
293
|
+
fireEvent.keyDown(document, {
|
|
294
|
+
key: '5',
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
test('<Textarea /> gets focused after a specified shortcut is pressed', () => {
|
|
301
|
+
render(
|
|
302
|
+
<ReqoreUIProvider>
|
|
303
|
+
<ReqoreLayoutContent>
|
|
304
|
+
<ReqoreContent>
|
|
305
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 's' }} />
|
|
306
|
+
</ReqoreContent>
|
|
307
|
+
</ReqoreLayoutContent>
|
|
308
|
+
</ReqoreUIProvider>
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
312
|
+
|
|
313
|
+
fireEvent.keyDown(document, {
|
|
314
|
+
key: 'u',
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
318
|
+
|
|
319
|
+
fireEvent.keyDown(document, {
|
|
320
|
+
key: '0',
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
324
|
+
|
|
325
|
+
fireEvent.keyDown(document, {
|
|
326
|
+
key: 's',
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
test("<Textarea /> does not get focused after a specified shortcut is pressed if it's not in Viewport, get's focused when in viewport", () => {
|
|
333
|
+
render(
|
|
334
|
+
<ReqoreUIProvider>
|
|
335
|
+
<ReqoreLayoutContent>
|
|
336
|
+
<ReqoreContent>
|
|
337
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 's', viewportOnly: true }} />
|
|
338
|
+
</ReqoreContent>
|
|
339
|
+
</ReqoreLayoutContent>
|
|
340
|
+
</ReqoreUIProvider>
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
mockAllIsIntersecting(false);
|
|
344
|
+
|
|
345
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
346
|
+
|
|
347
|
+
fireEvent.keyDown(document, {
|
|
348
|
+
key: 's',
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
352
|
+
|
|
353
|
+
mockAllIsIntersecting(true);
|
|
354
|
+
|
|
355
|
+
fireEvent.keyDown(document, {
|
|
356
|
+
key: 's',
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
test('<Textarea /> does not get focused when typing in another input', () => {
|
|
363
|
+
render(
|
|
364
|
+
<ReqoreUIProvider>
|
|
365
|
+
<ReqoreLayoutContent>
|
|
366
|
+
<ReqoreContent>
|
|
367
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 's' }} />
|
|
368
|
+
<ReqoreTextarea focusRules={{ type: 'auto' }} />
|
|
369
|
+
</ReqoreContent>
|
|
370
|
+
</ReqoreLayoutContent>
|
|
371
|
+
</ReqoreUIProvider>
|
|
372
|
+
);
|
|
373
|
+
|
|
374
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
375
|
+
expect(document.querySelectorAll('.reqore-textarea')[1]).toHaveFocus();
|
|
376
|
+
|
|
377
|
+
fireEvent.keyDown(document.querySelectorAll('.reqore-textarea')[1], {
|
|
378
|
+
key: 's',
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
382
|
+
expect(document.querySelectorAll('.reqore-textarea')[1]).toHaveFocus();
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
test('Readonly <Textarea /> does not get focused when shortcut is pressed', () => {
|
|
386
|
+
render(
|
|
387
|
+
<ReqoreUIProvider>
|
|
388
|
+
<ReqoreLayoutContent>
|
|
389
|
+
<ReqoreContent>
|
|
390
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 'letters' }} readOnly />
|
|
391
|
+
</ReqoreContent>
|
|
392
|
+
</ReqoreLayoutContent>
|
|
393
|
+
</ReqoreUIProvider>
|
|
394
|
+
);
|
|
395
|
+
|
|
396
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
397
|
+
|
|
398
|
+
fireEvent.keyDown(document, {
|
|
399
|
+
key: 'q',
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
test('Disabled <Textarea /> does not get focused when shortcut is pressed', () => {
|
|
406
|
+
render(
|
|
407
|
+
<ReqoreUIProvider>
|
|
408
|
+
<ReqoreLayoutContent>
|
|
409
|
+
<ReqoreContent>
|
|
410
|
+
<ReqoreTextarea focusRules={{ type: 'keypress', shortcut: 'numbers' }} readOnly />
|
|
411
|
+
</ReqoreContent>
|
|
412
|
+
</ReqoreLayoutContent>
|
|
413
|
+
</ReqoreUIProvider>
|
|
414
|
+
);
|
|
415
|
+
|
|
416
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
417
|
+
|
|
418
|
+
fireEvent.keyDown(document, {
|
|
419
|
+
key: '8',
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
test('<Textarea /> is cleared when focused', () => {
|
|
426
|
+
const fn = jest.fn();
|
|
427
|
+
|
|
428
|
+
render(
|
|
429
|
+
<ReqoreUIProvider>
|
|
430
|
+
<ReqoreLayoutContent>
|
|
431
|
+
<ReqoreContent>
|
|
432
|
+
<ReqoreTextarea
|
|
433
|
+
focusRules={{ type: 'keypress', shortcut: 'letters', clearOnFocus: true }}
|
|
434
|
+
value='this is a test'
|
|
435
|
+
onChange={fn}
|
|
436
|
+
/>
|
|
437
|
+
</ReqoreContent>
|
|
438
|
+
</ReqoreLayoutContent>
|
|
439
|
+
</ReqoreUIProvider>
|
|
440
|
+
);
|
|
441
|
+
|
|
442
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).not.toHaveFocus();
|
|
443
|
+
|
|
444
|
+
fireEvent.keyDown(document, {
|
|
445
|
+
key: 'h',
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
expect(fn).toHaveBeenNthCalledWith(1, { target: { value: '' } });
|
|
449
|
+
expect(document.querySelectorAll('.reqore-textarea')[0]).toHaveFocus();
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
test('Tooltip on <Textarea /> works', () => {
|
|
453
|
+
jest.useFakeTimers();
|
|
454
|
+
|
|
455
|
+
render(
|
|
456
|
+
<ReqoreUIProvider>
|
|
457
|
+
<ReqoreTextarea tooltip='this is a test' value='this is a test' />
|
|
458
|
+
</ReqoreUIProvider>
|
|
459
|
+
);
|
|
460
|
+
|
|
461
|
+
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
|
|
462
|
+
|
|
463
|
+
fireEvent.mouseEnter(document.querySelectorAll('.reqore-textarea')[0]);
|
|
464
|
+
|
|
465
|
+
jest.advanceTimersByTime(1);
|
|
466
|
+
|
|
467
|
+
expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
|
|
69
468
|
});
|
package/__tests__/tree.test.tsx
CHANGED
|
@@ -22,7 +22,7 @@ test('Shows textarea for <Tree /> properly', () => {
|
|
|
22
22
|
<ReqoreUIProvider>
|
|
23
23
|
<ReqoreLayoutContent>
|
|
24
24
|
<ReqoreContent>
|
|
25
|
-
<ReqoreTree data={
|
|
25
|
+
<ReqoreTree data={{ test: true }} />
|
|
26
26
|
</ReqoreContent>
|
|
27
27
|
</ReqoreLayoutContent>
|
|
28
28
|
</ReqoreUIProvider>
|
|
@@ -31,6 +31,8 @@ test('Shows textarea for <Tree /> properly', () => {
|
|
|
31
31
|
fireEvent.click(document.querySelector('.reqore-tree-as-text'));
|
|
32
32
|
|
|
33
33
|
expect(document.querySelectorAll('.reqore-textarea').length).toBe(1);
|
|
34
|
+
console.log(document.querySelectorAll('.reqore-textarea')[0].textContent);
|
|
35
|
+
expect(document.querySelectorAll('.reqore-textarea')[0].textContent).toContain('test: true');
|
|
34
36
|
});
|
|
35
37
|
|
|
36
38
|
test('<Tree /> items can be expanded and collapsed', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/Breadcrumbs/item.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAqC,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAcrD,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA2B,SAAQ,0BAA0B;IAC5E,KAAK,EAAE,YAAY,CAAC;CACrB;AAqFD,QAAA,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/Breadcrumbs/item.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAqC,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAcrD,MAAM,WAAW,0BAA2B,SAAQ,qBAAqB;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA2B,SAAQ,0BAA0B;IAC5E,KAAK,EAAE,YAAY,CAAC;CACrB;AAqFD,QAAA,MAAM,qBAAqB,uHA4C1B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -73,9 +73,13 @@ var StyledBreadcrumbItem = styled_components_1["default"].div(templateObject_4 |
|
|
|
73
73
|
var ReqoreBreadcrumbsItem = (0, react_1.forwardRef)(function (_a, ref) {
|
|
74
74
|
var tooltip = _a.tooltip, label = _a.label, props = _a.props, icon = _a.icon, active = _a.active, as = _a.as, interactive = _a.interactive, customTheme = _a.customTheme, _b = _a.size, size = _b === void 0 ? 'normal' : _b;
|
|
75
75
|
var targetRef = (0, useCombinedRefs_1.useCombinedRefs)(ref).targetRef;
|
|
76
|
+
var _c = (0, react_1.useState)(undefined), itemRef = _c[0], setItemRef = _c[1];
|
|
76
77
|
var theme = (0, useTheme_1.useReqoreTheme)('breadcrumbs', customTheme);
|
|
77
|
-
(0, useTooltip_1.useTooltip)(
|
|
78
|
-
return ((0, jsx_runtime_1.jsxs)(StyledBreadcrumbItem, __assign({ ref:
|
|
78
|
+
(0, useTooltip_1.useTooltip)(itemRef, tooltip);
|
|
79
|
+
return ((0, jsx_runtime_1.jsxs)(StyledBreadcrumbItem, __assign({ ref: function (ref) {
|
|
80
|
+
targetRef.current = ref;
|
|
81
|
+
setItemRef(ref);
|
|
82
|
+
}, active: active, interactive: interactive || !!(props === null || props === void 0 ? void 0 : props.onClick), className: 'reqore-breadcrumbs-item', theme: theme, size: size }, { children: [icon && (0, jsx_runtime_1.jsx)(Icon_1["default"], { icon: icon, size: size, margin: label ? 'right' : undefined }), label && ((0, jsx_runtime_1.jsxs)(Button_1.StyledAnimatedTextWrapper, __assign({ as: as || 'span' }, props, { children: [(0, jsx_runtime_1.jsx)(Button_1.StyledActiveContent, { children: label }), (0, jsx_runtime_1.jsx)(Button_1.StyledInActiveContent, { children: label }), (0, jsx_runtime_1.jsx)(Button_1.StyledInvisibleContent, { children: label })] })))] })));
|
|
79
83
|
});
|
|
80
84
|
exports["default"] = ReqoreBreadcrumbsItem;
|
|
81
85
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/components/Breadcrumbs/item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/components/Breadcrumbs/item.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAML,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAezE,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,aAAa,EAIb,kBAAkB,EAClB,eAAe,EAChB,MAAM,WAAW,CAAC;AAGnB,OAAkB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;AAE7D,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAC7C,eAAe,EACf,aAAa,EACb,eAAe,EACf,iBAAiB;IACnB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,iBAAiB,CAAC,EAAE,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAC5E,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAUD,eAAO,MAAM,yBAAyB,KAOrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,KAkB/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,KAgBjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,KAalC,CAAC;AAEF,eAAO,MAAM,YAAY,KA8IxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,KAgB/B,CAAC;AAEF,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,oCAAgB,uBAAuB,iBA0C7D,CAAC;AAEH,QAAA,MAAM,YAAY,yHAgLjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -58,10 +58,10 @@ var polished_1 = require("polished");
|
|
|
58
58
|
var react_1 = require("react");
|
|
59
59
|
var styled_components_1 = __importStar(require("styled-components"));
|
|
60
60
|
var sizes_1 = require("../../constants/sizes");
|
|
61
|
-
var ReqoreContext_1 = __importDefault(require("../../context/ReqoreContext"));
|
|
62
61
|
var colors_1 = require("../../helpers/colors");
|
|
63
62
|
var utils_1 = require("../../helpers/utils");
|
|
64
63
|
var useCombinedRefs_1 = require("../../hooks/useCombinedRefs");
|
|
64
|
+
var useReqoreContext_1 = require("../../hooks/useReqoreContext");
|
|
65
65
|
var useReqoreEffect_1 = require("../../hooks/useReqoreEffect");
|
|
66
66
|
var useTheme_1 = require("../../hooks/useTheme");
|
|
67
67
|
var useTooltip_1 = require("../../hooks/useTooltip");
|
|
@@ -209,11 +209,12 @@ exports.ButtonBadge = (0, react_1.memo)(function (props) {
|
|
|
209
209
|
var ReqoreButton = (0, react_1.memo)((0, react_1.forwardRef)(function (_a, ref) {
|
|
210
210
|
var icon = _a.icon, _b = _a.size, size = _b === void 0 ? 'normal' : _b, minimal = _a.minimal, children = _a.children, tooltip = _a.tooltip, className = _a.className, fluid = _a.fluid, fixed = _a.fixed, intent = _a.intent, active = _a.active, flat = _a.flat, rightIcon = _a.rightIcon, customTheme = _a.customTheme, wrap = _a.wrap, readOnly = _a.readOnly, badge = _a.badge, description = _a.description, maxWidth = _a.maxWidth, _c = _a.textAlign, textAlign = _c === void 0 ? 'left' : _c, effect = _a.effect, labelEffect = _a.labelEffect, descriptionEffect = _a.descriptionEffect, leftIconColor = _a.leftIconColor, rightIconColor = _a.rightIconColor, iconColor = _a.iconColor, rest = __rest(_a, ["icon", "size", "minimal", "children", "tooltip", "className", "fluid", "fixed", "intent", "active", "flat", "rightIcon", "customTheme", "wrap", "readOnly", "badge", "description", "maxWidth", "textAlign", "effect", "labelEffect", "descriptionEffect", "leftIconColor", "rightIconColor", "iconColor"]);
|
|
211
211
|
var targetRef = (0, useCombinedRefs_1.useCombinedRefs)(ref).targetRef;
|
|
212
|
-
var
|
|
212
|
+
var _d = (0, react_1.useState)(undefined), buttonRef = _d[0], setButtonRef = _d[1];
|
|
213
|
+
var animations = (0, useReqoreContext_1.useReqoreProperty)('animations');
|
|
213
214
|
var theme = (0, useTheme_1.useReqoreTheme)('main', customTheme, intent);
|
|
214
215
|
var fixedEffect = (0, useReqoreEffect_1.useReqoreEffect)('buttons', theme, effect);
|
|
215
216
|
/* A custom hook that is used to add a tooltip to the button. */
|
|
216
|
-
(0, useTooltip_1.useTooltip)(
|
|
217
|
+
(0, useTooltip_1.useTooltip)(buttonRef, tooltip);
|
|
217
218
|
// If color or intent was specified, set the color
|
|
218
219
|
var customColor = intent ? theme.main : (0, colors_1.changeLightness)(theme.main, 0.07);
|
|
219
220
|
var _flat = minimal ? flat : flat !== false;
|
|
@@ -224,7 +225,20 @@ var ReqoreButton = (0, react_1.memo)((0, react_1.forwardRef)(function (_a, ref)
|
|
|
224
225
|
: (0, colors_1.getReadableColor)(theme, undefined, undefined, true);
|
|
225
226
|
return ((0, jsx_runtime_1.jsxs)(exports.StyledButton, __assign({}, rest, { effect: intent
|
|
226
227
|
? undefined
|
|
227
|
-
: __assign({ interactive: !readOnly && !rest.disabled }, fixedEffect),
|
|
228
|
+
: __assign({ interactive: !readOnly && !rest.disabled }, fixedEffect), tabindex: rest.disabled ? -1 : 0, as: 'button', theme: theme, ref: function (ref) {
|
|
229
|
+
targetRef.current = ref;
|
|
230
|
+
setButtonRef(ref);
|
|
231
|
+
}, fluid: fluid, fixed: fixed, maxWidth: maxWidth, minimal: minimal, size: size, color: customColor, animate: animations.buttons, flat: _flat, active: active, readOnly: readOnly, wrap: wrap, description: description, className: "".concat(className || '', " reqore-control reqore-button") }, { children: [(0, jsx_runtime_1.jsxs)(exports.StyledButtonContent, __assign({ size: size, wrap: wrap, description: description, flat: _flat }, { children: [icon ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Icon_1["default"], { icon: icon, size: size, color: leftIconColor || iconColor, style: textAlign !== 'left'
|
|
232
|
+
? {
|
|
233
|
+
marginRight: 'auto',
|
|
234
|
+
marginLeft: textAlign === 'center' ? 'auto' : undefined
|
|
235
|
+
}
|
|
236
|
+
: undefined }), children || badge || rightIcon ? ((0, jsx_runtime_1.jsx)(Spacer_1.ReqoreSpacer, { width: sizes_1.PADDING_FROM_SIZE[size] })) : null] })) : children ? ((0, jsx_runtime_1.jsx)(Spacer_1.ReqoreHorizontalSpacer, { width: 1, style: textAlign !== 'left' ? { marginRight: 'auto' } : undefined })) : null, children && ((0, jsx_runtime_1.jsxs)(exports.StyledAnimatedTextWrapper, __assign({ textAlign: textAlign, style: textAlign === 'center' ? { margin: 'auto' } : undefined }, { children: [(0, jsx_runtime_1.jsx)(exports.StyledActiveContent, __assign({ wrap: wrap, effect: labelEffect }, { children: children })), (0, jsx_runtime_1.jsx)(exports.StyledInActiveContent, __assign({ wrap: wrap, effect: labelEffect }, { children: children })), (0, jsx_runtime_1.jsx)(exports.StyledInvisibleContent, __assign({ wrap: wrap, effect: labelEffect }, { children: children })), (badge || badge === 0) && wrap ? ((0, jsx_runtime_1.jsx)(exports.ButtonBadge, { content: badge, size: size, color: color, wrap: true })) : null] }))), (badge || badge === 0) && !wrap ? ((0, jsx_runtime_1.jsx)(exports.ButtonBadge, { content: badge, size: size, color: color })) : null, !rightIcon ? (children ? ((0, jsx_runtime_1.jsx)(Spacer_1.ReqoreHorizontalSpacer, { width: 1, style: textAlign !== 'right' ? { marginLeft: 'auto' } : undefined })) : null) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [children || badge ? (0, jsx_runtime_1.jsx)(Spacer_1.ReqoreSpacer, { width: sizes_1.PADDING_FROM_SIZE[size] }) : null, (0, jsx_runtime_1.jsx)(Icon_1["default"], { icon: rightIcon, size: size, style: textAlign !== 'right'
|
|
237
|
+
? {
|
|
238
|
+
marginLeft: 'auto',
|
|
239
|
+
marginRight: textAlign === 'center' ? 'auto' : undefined
|
|
240
|
+
}
|
|
241
|
+
: undefined, color: rightIconColor || iconColor })] }))] })), description && ((0, jsx_runtime_1.jsx)(Effect_1.ReqoreTextEffect, __assign({ className: 'reqore-button-description', effect: __assign({ textSize: (0, utils_1.getOneLessSize)(size), weight: 'light', color: "".concat(color, "90"), textAlign: textAlign }, descriptionEffect) }, { children: description })))] })));
|
|
228
242
|
}));
|
|
229
243
|
exports["default"] = ReqoreButton;
|
|
230
244
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18;
|