@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.
Files changed (183) hide show
  1. package/.github/workflows/tests.yml +3 -1
  2. package/__tests__/breadcrumbs.test.tsx +46 -28
  3. package/__tests__/button.test.tsx +18 -0
  4. package/__tests__/checkbox.test.tsx +19 -1
  5. package/__tests__/collection.test.tsx +14 -1
  6. package/__tests__/icon.test.tsx +19 -1
  7. package/__tests__/input.test.tsx +435 -24
  8. package/__tests__/messages.test.tsx +16 -0
  9. package/__tests__/modal.test.tsx +4 -4
  10. package/__tests__/multiselect.test.tsx +8 -10
  11. package/__tests__/notifications.test.tsx +6 -6
  12. package/__tests__/panel.test.tsx +19 -1
  13. package/__tests__/textarea.test.tsx +423 -24
  14. package/__tests__/tree.test.tsx +3 -1
  15. package/dist/components/Breadcrumbs/item.d.ts.map +1 -1
  16. package/dist/components/Breadcrumbs/item.js +6 -2
  17. package/dist/components/Breadcrumbs/item.js.map +1 -1
  18. package/dist/components/Button/index.d.ts.map +1 -1
  19. package/dist/components/Button/index.js +18 -4
  20. package/dist/components/Button/index.js.map +1 -1
  21. package/dist/components/Checkbox/index.d.ts.map +1 -1
  22. package/dist/components/Checkbox/index.js +8 -4
  23. package/dist/components/Checkbox/index.js.map +1 -1
  24. package/dist/components/Collection/index.d.ts +4 -2
  25. package/dist/components/Collection/index.d.ts.map +1 -1
  26. package/dist/components/Collection/index.js +19 -13
  27. package/dist/components/Collection/index.js.map +1 -1
  28. package/dist/components/Collection/item.js +2 -2
  29. package/dist/components/Collection/item.js.map +1 -1
  30. package/dist/components/Comment/index.d.ts +0 -1
  31. package/dist/components/Comment/index.d.ts.map +1 -1
  32. package/dist/components/ControlGroup/index.d.ts.map +1 -1
  33. package/dist/components/ControlGroup/index.js +18 -57
  34. package/dist/components/ControlGroup/index.js.map +1 -1
  35. package/dist/components/Drawer/index.d.ts +1 -1
  36. package/dist/components/Drawer/index.d.ts.map +1 -1
  37. package/dist/components/Drawer/index.js +1 -1
  38. package/dist/components/Drawer/index.js.map +1 -1
  39. package/dist/components/Dropdown/item.d.ts +0 -1
  40. package/dist/components/Dropdown/item.d.ts.map +1 -1
  41. package/dist/components/Icon/index.d.ts +2 -0
  42. package/dist/components/Icon/index.d.ts.map +1 -1
  43. package/dist/components/Icon/index.js +17 -8
  44. package/dist/components/Icon/index.js.map +1 -1
  45. package/dist/components/Input/index.d.ts +4 -0
  46. package/dist/components/Input/index.d.ts.map +1 -1
  47. package/dist/components/Input/index.js +19 -7
  48. package/dist/components/Input/index.js.map +1 -1
  49. package/dist/components/InputClearButton/index.d.ts +1 -1
  50. package/dist/components/InputClearButton/index.d.ts.map +1 -1
  51. package/dist/components/InputClearButton/index.js +18 -8
  52. package/dist/components/InputClearButton/index.js.map +1 -1
  53. package/dist/components/InternalPopover/index.d.ts.map +1 -1
  54. package/dist/components/InternalPopover/index.js +2 -1
  55. package/dist/components/InternalPopover/index.js.map +1 -1
  56. package/dist/components/Menu/item.d.ts +1 -1
  57. package/dist/components/Menu/item.d.ts.map +1 -1
  58. package/dist/components/Menu/item.js +3 -6
  59. package/dist/components/Menu/item.js.map +1 -1
  60. package/dist/components/Message/index.d.ts.map +1 -1
  61. package/dist/components/Message/index.js +6 -2
  62. package/dist/components/Message/index.js.map +1 -1
  63. package/dist/components/Modal/index.d.ts +0 -1
  64. package/dist/components/Modal/index.d.ts.map +1 -1
  65. package/dist/components/Panel/index.d.ts +1 -0
  66. package/dist/components/Panel/index.d.ts.map +1 -1
  67. package/dist/components/Panel/index.js +18 -9
  68. package/dist/components/Panel/index.js.map +1 -1
  69. package/dist/components/Panel/panel.screenshot.d.ts +0 -1
  70. package/dist/components/Panel/panel.screenshot.d.ts.map +1 -1
  71. package/dist/components/Sidebar/item.d.ts +0 -1
  72. package/dist/components/Sidebar/item.d.ts.map +1 -1
  73. package/dist/components/Sidebar/item.js +1 -3
  74. package/dist/components/Sidebar/item.js.map +1 -1
  75. package/dist/components/Spinner/index.d.ts +0 -1
  76. package/dist/components/Spinner/index.d.ts.map +1 -1
  77. package/dist/components/Table/header.d.ts +0 -1
  78. package/dist/components/Table/header.d.ts.map +1 -1
  79. package/dist/components/Tag/index.d.ts.map +1 -1
  80. package/dist/components/Tag/index.js +7 -4
  81. package/dist/components/Tag/index.js.map +1 -1
  82. package/dist/components/Textarea/index.d.ts +2 -0
  83. package/dist/components/Textarea/index.d.ts.map +1 -1
  84. package/dist/components/Textarea/index.js +9 -6
  85. package/dist/components/Textarea/index.js.map +1 -1
  86. package/dist/components/Tree/index.d.ts +0 -1
  87. package/dist/components/Tree/index.d.ts.map +1 -1
  88. package/dist/components/Tree/index.js +2 -4
  89. package/dist/components/Tree/index.js.map +1 -1
  90. package/dist/containers/PopoverProvider.d.ts.map +1 -1
  91. package/dist/containers/PopoverProvider.js +2 -2
  92. package/dist/containers/PopoverProvider.js.map +1 -1
  93. package/dist/containers/ReqoreProvider.d.ts.map +1 -1
  94. package/dist/containers/ReqoreProvider.js +4 -0
  95. package/dist/containers/ReqoreProvider.js.map +1 -1
  96. package/dist/containers/ThemeProvider.d.ts +1 -2
  97. package/dist/containers/ThemeProvider.d.ts.map +1 -1
  98. package/dist/containers/ThemeProvider.js +3 -3
  99. package/dist/containers/ThemeProvider.js.map +1 -1
  100. package/dist/context/PopoverContext.d.ts +1 -2
  101. package/dist/context/PopoverContext.d.ts.map +1 -1
  102. package/dist/context/PopoverContext.js +2 -2
  103. package/dist/context/PopoverContext.js.map +1 -1
  104. package/dist/context/ReqoreContext.d.ts +3 -2
  105. package/dist/context/ReqoreContext.d.ts.map +1 -1
  106. package/dist/context/ReqoreContext.js +5 -3
  107. package/dist/context/ReqoreContext.js.map +1 -1
  108. package/dist/context/ThemeContext.d.ts +1 -2
  109. package/dist/context/ThemeContext.d.ts.map +1 -1
  110. package/dist/context/ThemeContext.js +2 -2
  111. package/dist/context/ThemeContext.js.map +1 -1
  112. package/dist/hooks/useAutoFocus.d.ts +11 -0
  113. package/dist/hooks/useAutoFocus.d.ts.map +1 -0
  114. package/dist/hooks/useAutoFocus.js +80 -0
  115. package/dist/hooks/useAutoFocus.js.map +1 -0
  116. package/dist/hooks/useLatestZIndex.d.ts.map +1 -1
  117. package/dist/hooks/useLatestZIndex.js +3 -2
  118. package/dist/hooks/useLatestZIndex.js.map +1 -1
  119. package/dist/hooks/usePopover.d.ts +0 -1
  120. package/dist/hooks/usePopover.d.ts.map +1 -1
  121. package/dist/hooks/usePopover.js +4 -3
  122. package/dist/hooks/usePopover.js.map +1 -1
  123. package/dist/hooks/useReqore.js +2 -2
  124. package/dist/hooks/useReqore.js.map +1 -1
  125. package/dist/hooks/useReqoreContext.d.ts +3 -0
  126. package/dist/hooks/useReqoreContext.d.ts.map +1 -0
  127. package/dist/hooks/useReqoreContext.js +19 -0
  128. package/dist/hooks/useReqoreContext.js.map +1 -0
  129. package/dist/hooks/useReqoreEffect.js +2 -5
  130. package/dist/hooks/useReqoreEffect.js.map +1 -1
  131. package/dist/hooks/useTheme.d.ts.map +1 -1
  132. package/dist/hooks/useTheme.js +20 -20
  133. package/dist/hooks/useTheme.js.map +1 -1
  134. package/dist/index.d.ts +1 -0
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +3 -1
  137. package/dist/index.js.map +1 -1
  138. package/dist/styles.d.ts.map +1 -1
  139. package/dist/styles.js +1 -1
  140. package/dist/styles.js.map +1 -1
  141. package/package.json +20 -16
  142. package/src/components/Breadcrumbs/item.tsx +7 -3
  143. package/src/components/Button/index.tsx +26 -7
  144. package/src/components/Checkbox/index.tsx +9 -5
  145. package/src/components/Collection/index.tsx +33 -11
  146. package/src/components/Collection/item.tsx +3 -3
  147. package/src/components/ControlGroup/index.tsx +26 -87
  148. package/src/components/Drawer/index.tsx +4 -4
  149. package/src/components/Icon/index.tsx +27 -9
  150. package/src/components/Input/index.tsx +35 -4
  151. package/src/components/InputClearButton/index.tsx +41 -17
  152. package/src/components/InternalPopover/index.tsx +2 -1
  153. package/src/components/Menu/item.tsx +6 -9
  154. package/src/components/Message/index.tsx +6 -2
  155. package/src/components/Panel/index.tsx +26 -9
  156. package/src/components/Sidebar/item.tsx +2 -4
  157. package/src/components/Tag/index.tsx +9 -6
  158. package/src/components/Textarea/index.tsx +16 -11
  159. package/src/components/Tree/index.tsx +5 -8
  160. package/src/containers/PopoverProvider.tsx +2 -2
  161. package/src/containers/ReqoreProvider.tsx +5 -1
  162. package/src/containers/ThemeProvider.tsx +3 -13
  163. package/src/context/PopoverContext.tsx +1 -1
  164. package/src/context/ReqoreContext.tsx +4 -1
  165. package/src/context/ThemeContext.tsx +1 -1
  166. package/src/hooks/useAutoFocus.ts +104 -0
  167. package/src/hooks/useLatestZIndex.ts +5 -3
  168. package/src/hooks/usePopover.tsx +4 -3
  169. package/src/hooks/useReqore.ts +1 -1
  170. package/src/hooks/useReqoreContext.ts +16 -0
  171. package/src/hooks/useReqoreEffect.ts +3 -3
  172. package/src/hooks/useTheme.ts +21 -17
  173. package/src/index.tsx +1 -0
  174. package/src/stories/Button/Button.stories.tsx +7 -0
  175. package/src/stories/Collection/Collection.stories.tsx +56 -9
  176. package/src/stories/Drawer/Drawer.stories.tsx +4 -3
  177. package/src/stories/Input/Input.stories.tsx +29 -6
  178. package/src/stories/Modal/Modal.stories.tsx +3 -4
  179. package/src/stories/Notifications/Interactive.stories.tsx +3 -4
  180. package/src/stories/Panel/Panel.stories.tsx +4 -2
  181. package/src/stories/TextArea/TextArea.stories.tsx +1 -0
  182. package/src/styles.ts +0 -1
  183. package/tests.json +1 -1
@@ -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 & is not collapsible', () => {
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 { fireEvent, render } from "@testing-library/react";
2
- import { noop } from "lodash";
3
- import React from "react";
4
- import {
5
- ReqoreContent,
6
- ReqoreLayoutContent,
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("Renders <TextArea /> properly", () => {
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(".reqore-textarea").length).toBe(1);
19
+ expect(document.querySelectorAll('.reqore-textarea').length).toBe(1);
23
20
  // No clear button
24
- expect(document.querySelectorAll(".reqore-clear-input-button").length).toBe(
25
- 0
26
- );
21
+ expect(document.querySelectorAll('.reqore-clear-input-button').length).toBe(0);
27
22
  });
28
23
 
29
- test("Renders <TextArea /> with clear button properly", () => {
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
- // No clear button
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(".reqore-clear-input-button"));
39
+ fireEvent.click(document.querySelector('.reqore-clear-input-button')!);
48
40
 
49
41
  expect(fn).toHaveBeenCalled();
50
42
  });
51
43
 
52
- test("Disabled <TextArea /> cannot be cleared", () => {
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(".reqore-clear-input-button").length).toBe(
67
- 0
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
  });
@@ -22,7 +22,7 @@ test('Shows textarea for <Tree /> properly', () => {
22
22
  <ReqoreUIProvider>
23
23
  <ReqoreLayoutContent>
24
24
  <ReqoreContent>
25
- <ReqoreTree data={MockObject} />
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,uHAwC1B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
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)(targetRef === null || targetRef === void 0 ? void 0 : targetRef.current, tooltip);
78
- return ((0, jsx_runtime_1.jsxs)(StyledBreadcrumbItem, __assign({ ref: targetRef, 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 })] })))] })));
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":"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"}
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,KAAoD,MAAM,OAAO,CAAC;AAEzE,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,yHA6JjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
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 animations = (0, react_1.useContext)(ReqoreContext_1["default"]).animations;
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)(targetRef.current, tooltip);
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), as: 'button', theme: theme, ref: targetRef, 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' ? { marginRight: 'auto' } : 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' ? { marginLeft: 'auto' } : 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
+ : __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;