@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
@@ -51,7 +51,9 @@ jobs:
51
51
  run: yarn test:ci
52
52
  - name: Build test
53
53
  id: build_test
54
- run: yarn build:test
54
+ run: |
55
+ yarn build
56
+ rm -rf dist
55
57
  - name: Publish to Chromatic
56
58
  id: chromatic_publish
57
59
  uses: chromaui/action@v1
@@ -1,23 +1,19 @@
1
- import { act, render } from "@testing-library/react";
2
- import React from "react";
3
- import {
4
- ReqoreBreadcrumbs,
5
- ReqoreLayoutContent,
6
- ReqoreUIProvider,
7
- } from "../src";
8
-
9
- test("Renders full <Breadcrumbs /> properly", () => {
1
+ import { act, fireEvent, render } from '@testing-library/react';
2
+ import React from 'react';
3
+ import { ReqoreBreadcrumbs, ReqoreLayoutContent, ReqoreUIProvider } from '../src';
4
+
5
+ test('Renders full <Breadcrumbs /> properly', () => {
10
6
  render(
11
- <div style={{ width: "1000px" }}>
7
+ <div style={{ width: '1000px' }}>
12
8
  <ReqoreUIProvider>
13
9
  <ReqoreLayoutContent>
14
10
  <ReqoreBreadcrumbs
15
11
  items={[
16
- { label: "Page 1", icon: "Home3Line" },
17
- { label: "Page 2", icon: "Home3Line" },
18
- { label: "Page 3", icon: "Home3Line" },
19
- { label: "Page 4", icon: "Home3Line" },
20
- { label: "Page 5", icon: "Home3Line" },
12
+ { label: 'Page 1', icon: 'Home3Line' },
13
+ { label: 'Page 2', icon: 'Home3Line' },
14
+ { label: 'Page 3', icon: 'Home3Line' },
15
+ { label: 'Page 4', icon: 'Home3Line' },
16
+ { label: 'Page 5', icon: 'Home3Line' },
21
17
  ]}
22
18
  />
23
19
  </ReqoreLayoutContent>
@@ -25,13 +21,11 @@ test("Renders full <Breadcrumbs /> properly", () => {
25
21
  </div>
26
22
  );
27
23
 
28
- expect(document.querySelectorAll(".reqore-breadcrumbs-wrapper").length).toBe(
29
- 1
30
- );
31
- expect(document.querySelectorAll(".reqore-breadcrumbs-item").length).toBe(5);
24
+ expect(document.querySelectorAll('.reqore-breadcrumbs-wrapper').length).toBe(1);
25
+ expect(document.querySelectorAll('.reqore-breadcrumbs-item').length).toBe(5);
32
26
  });
33
27
 
34
- test("Renders shortened <Breadcrumbs /> properly", () => {
28
+ test('Renders shortened <Breadcrumbs /> properly', () => {
35
29
  act(() => {
36
30
  render(
37
31
  <ReqoreUIProvider>
@@ -39,11 +33,11 @@ test("Renders shortened <Breadcrumbs /> properly", () => {
39
33
  <ReqoreBreadcrumbs
40
34
  _testWidth={300}
41
35
  items={[
42
- { label: "Page 1", icon: "Home3Line" },
43
- { label: "Page 2", icon: "Home3Line" },
44
- { label: "Page 3", icon: "Home3Line" },
45
- { label: "Page 4", icon: "Home3Line" },
46
- { label: "Page 5", icon: "Home3Line" },
36
+ { label: 'Page 1', icon: 'Home3Line' },
37
+ { label: 'Page 2', icon: 'Home3Line' },
38
+ { label: 'Page 3', icon: 'Home3Line' },
39
+ { label: 'Page 4', icon: 'Home3Line' },
40
+ { label: 'Page 5', icon: 'Home3Line' },
47
41
  ]}
48
42
  />
49
43
  </ReqoreLayoutContent>
@@ -51,8 +45,32 @@ test("Renders shortened <Breadcrumbs /> properly", () => {
51
45
  );
52
46
  });
53
47
 
54
- expect(document.querySelectorAll(".reqore-breadcrumbs-wrapper").length).toBe(
55
- 1
48
+ expect(document.querySelectorAll('.reqore-breadcrumbs-wrapper').length).toBe(1);
49
+ expect(document.querySelectorAll('.reqore-breadcrumbs-item').length).toBe(2);
50
+ });
51
+
52
+ test('Tooltip on <Breadcrumbs /> works', () => {
53
+ jest.useFakeTimers();
54
+
55
+ render(
56
+ <ReqoreUIProvider>
57
+ <ReqoreBreadcrumbs
58
+ items={[
59
+ { label: 'Page 1', icon: 'Home3Line' },
60
+ { label: 'Page 2', icon: 'Home3Line', tooltip: 'Tooltip' },
61
+ { label: 'Page 3', icon: 'Home3Line' },
62
+ { label: 'Page 4', icon: 'Home3Line' },
63
+ { label: 'Page 5', icon: 'Home3Line' },
64
+ ]}
65
+ />
66
+ </ReqoreUIProvider>
56
67
  );
57
- expect(document.querySelectorAll(".reqore-breadcrumbs-item").length).toBe(2);
68
+
69
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
70
+
71
+ fireEvent.mouseEnter(document.querySelectorAll('.reqore-breadcrumbs-item')[1]);
72
+
73
+ jest.advanceTimersByTime(1);
74
+
75
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
58
76
  });
@@ -169,3 +169,21 @@ test('Renders <Button /> with a Tag props badge', () => {
169
169
 
170
170
  expect(document.querySelectorAll('.reqore-button-badge').length).toBe(1);
171
171
  });
172
+
173
+ test('Tooltip on <Button /> works', () => {
174
+ jest.useFakeTimers();
175
+
176
+ render(
177
+ <ReqoreUIProvider>
178
+ <ReqoreButton tooltip='test'>Click</ReqoreButton>
179
+ </ReqoreUIProvider>
180
+ );
181
+
182
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
183
+
184
+ fireEvent.mouseEnter(document.querySelectorAll('.reqore-button')[0]);
185
+
186
+ jest.advanceTimersByTime(1);
187
+
188
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
189
+ });
@@ -1,4 +1,4 @@
1
- import { render, screen } from '@testing-library/react';
1
+ import { fireEvent, render, screen } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { ReqoreCheckbox, ReqoreContent, ReqoreLayoutContent, ReqoreUIProvider } from '../src';
4
4
 
@@ -25,3 +25,21 @@ test('Renders <Checkbox /> properly', () => {
25
25
  expect(screen.getByText('Yes')).toBeTruthy();
26
26
  expect(screen.getByText('No')).toBeTruthy();
27
27
  });
28
+
29
+ test('Tooltip on <Checkbox /> works', () => {
30
+ jest.useFakeTimers();
31
+
32
+ render(
33
+ <ReqoreUIProvider>
34
+ <ReqoreCheckbox label='With Text' asSwitch onText='Yes' offText='No' tooltip='test' />
35
+ </ReqoreUIProvider>
36
+ );
37
+
38
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
39
+
40
+ fireEvent.mouseEnter(document.querySelectorAll('.reqore-checkbox')[0]);
41
+
42
+ jest.advanceTimersByTime(1);
43
+
44
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
45
+ });
@@ -1,3 +1,4 @@
1
+ import '@testing-library/jest-dom/extend-expect';
1
2
  import { fireEvent, render } from '@testing-library/react';
2
3
  import React from 'react';
3
4
  import { ReqoreCollection, ReqoreLayoutContent, ReqoreUIProvider } from '../src';
@@ -17,10 +18,13 @@ test('Renders basic <Collection /> properly', () => {
17
18
  });
18
19
 
19
20
  test('<Collection /> items can be filtered', () => {
21
+ const fn = jest.fn();
22
+ jest.useFakeTimers();
23
+
20
24
  render(
21
25
  <ReqoreUIProvider>
22
26
  <ReqoreLayoutContent>
23
- <ReqoreCollection items={items} filterable />
27
+ <ReqoreCollection items={items} filterable onQueryChange={fn} />
24
28
  </ReqoreLayoutContent>
25
29
  </ReqoreUIProvider>
26
30
  );
@@ -29,12 +33,19 @@ test('<Collection /> items can be filtered', () => {
29
33
  target: { value: 'I have' },
30
34
  });
31
35
 
36
+ expect(fn).not.toHaveBeenCalled();
37
+
38
+ jest.runAllTimers();
39
+
40
+ expect(fn).toHaveBeenCalledWith('I have');
32
41
  expect(document.querySelectorAll('.reqore-collection-item').length).toBe(2);
33
42
 
34
43
  fireEvent.change(document.querySelector('.reqore-input')!, {
35
44
  target: { value: 'asg' },
36
45
  });
37
46
 
47
+ jest.runAllTimers();
48
+
38
49
  expect(document.querySelectorAll('.reqore-collection-item').length).toBe(0);
39
50
  expect(document.querySelectorAll('.reqore-message').length).toBe(1);
40
51
 
@@ -42,6 +53,8 @@ test('<Collection /> items can be filtered', () => {
42
53
  target: { value: 'secret' },
43
54
  });
44
55
 
56
+ jest.runAllTimers();
57
+
45
58
  expect(document.querySelectorAll('.reqore-collection-item').length).toBe(1);
46
59
  expect(document.querySelectorAll('.reqore-message').length).toBe(0);
47
60
  });
@@ -1,4 +1,4 @@
1
- import { render } from '@testing-library/react';
1
+ import { fireEvent, render } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { ReqoreContent, ReqoreIcon, ReqoreLayoutContent, ReqoreUIProvider } from '../src';
4
4
 
@@ -33,3 +33,21 @@ test('Renders empty <Icon /> if icon does not exist', () => {
33
33
  expect(document.querySelector('.reqore-icon').textContent).toBe('');
34
34
  expect(document.querySelectorAll('svg').length).toBe(0);
35
35
  });
36
+
37
+ test('Tooltip on <Icon /> works', () => {
38
+ jest.useFakeTimers();
39
+
40
+ render(
41
+ <ReqoreUIProvider>
42
+ <ReqoreIcon icon='24HoursLine' tooltip='test' />
43
+ </ReqoreUIProvider>
44
+ );
45
+
46
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(0);
47
+
48
+ fireEvent.mouseEnter(document.querySelectorAll('.reqore-icon')[0]);
49
+
50
+ jest.advanceTimersByTime(1);
51
+
52
+ expect(document.querySelectorAll('.reqore-popover-content').length).toBe(1);
53
+ });