@procore/core-react 11.25.0 → 11.25.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 (275) hide show
  1. package/babel.config.js +1 -1
  2. package/dist/Avatar/Avatar.d.ts +1 -1
  3. package/dist/Avatar/Avatar.styles.js +5 -5
  4. package/dist/AvatarStack/AvatarStack.d.ts +7 -7
  5. package/dist/AvatarStack/AvatarStack.styles.d.ts +1 -1
  6. package/dist/AvatarStack/AvatarStack.styles.js +7 -7
  7. package/dist/Badge/Badge.styles.js +2 -2
  8. package/dist/Banner/Banner.styles.js +10 -10
  9. package/dist/Box/Box.styles.js +1 -1
  10. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  11. package/dist/Button/Button.styles.js +5 -5
  12. package/dist/Calendar/Calendar.d.ts +1 -1
  13. package/dist/Calendar/Calendar.styles.js +8 -8
  14. package/dist/Card/Card.styles.js +1 -1
  15. package/dist/Checkbox/Checkbox.styles.js +6 -6
  16. package/dist/ContactItem/ContactItem.styles.d.ts +1 -1
  17. package/dist/ContactItem/ContactItem.styles.js +5 -5
  18. package/dist/Content/Content.d.ts +3 -3
  19. package/dist/Content/Content.styles.js +2 -2
  20. package/dist/DateInput/DateInput.styles.js +6 -6
  21. package/dist/DetailPage/DetailPage.styles.js +7 -7
  22. package/dist/Dropdown/Dropdown.styles.js +3 -3
  23. package/dist/DropdownFlyout/DropdownFlyout.d.ts +2 -2
  24. package/dist/DropdownFlyout/DropdownFlyout.helpers.d.ts +1 -1
  25. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  26. package/dist/Dropzone/Dropzone.d.ts +2 -2
  27. package/dist/Dropzone/Dropzone.js +1 -1
  28. package/dist/Dropzone/Dropzone.styles.js +9 -9
  29. package/dist/EmptyState/EmptyState.styles.js +6 -6
  30. package/dist/Field/Field.styles.js +3 -3
  31. package/dist/FileList/FileList.d.ts +1 -1
  32. package/dist/FileList/FileList.styles.js +4 -4
  33. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  34. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.d.ts +2 -2
  35. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  36. package/dist/FileSelect/FileSelect.styles.js +2 -2
  37. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  38. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  39. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  40. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  41. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  42. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.d.ts +2 -2
  43. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  44. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  45. package/dist/FileToken/FileToken.styles.js +4 -4
  46. package/dist/FilterToken/FilterToken.styles.js +2 -2
  47. package/dist/FlexList/FlexList.styles.js +1 -1
  48. package/dist/Form/Form.d.ts +71 -71
  49. package/dist/Form/Form.styles.js +16 -16
  50. package/dist/Form/stories/util.d.ts +3 -3
  51. package/dist/Grid/Grid.d.ts +1 -1
  52. package/dist/Grid/Grid.styles.js +2 -2
  53. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  54. package/dist/Input/Input.styles.js +1 -1
  55. package/dist/Link/Link.styles.js +1 -1
  56. package/dist/ListPage/ListPage.styles.js +8 -8
  57. package/dist/Loader/Loader.styles.js +2 -2
  58. package/dist/Menu/Menu.d.ts +4 -4
  59. package/dist/MenuImperative/MenuImperative.d.ts +3 -3
  60. package/dist/MenuImperative/MenuImperative.styles.js +10 -10
  61. package/dist/Modal/ChildRegistry.context.d.ts +1 -1
  62. package/dist/Modal/Modal.d.ts +1 -1
  63. package/dist/Modal/Modal.styles.js +13 -13
  64. package/dist/Modal/storyHelpers.d.ts +2 -2
  65. package/dist/MultiSelect/MultiSelect.styles.js +6 -6
  66. package/dist/NextMenu/NextMenu.styles.js +3 -3
  67. package/dist/NextTile/NextTile.d.ts +1 -1
  68. package/dist/Notation/Notation.js +1 -1
  69. package/dist/NumberInput/NumberInput.styles.js +7 -7
  70. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  71. package/dist/OverlayTrigger/OverlayTrigger.d.ts +1 -1
  72. package/dist/OverlayTrigger/OverlayTrigger.js +9 -3
  73. package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
  74. package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +2 -1
  75. package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
  76. package/dist/OverlayTrigger/a11yPresets.d.ts +48 -48
  77. package/dist/PageLayout/PageLayout.d.ts +1 -1
  78. package/dist/PageLayout/PageLayout.styles.js +13 -13
  79. package/dist/Pagination/Pagination.styles.js +5 -5
  80. package/dist/Panel/Panel.styles.js +11 -11
  81. package/dist/Pill/Pill.styles.js +2 -2
  82. package/dist/PillSelect/PillSelect.styles.js +4 -4
  83. package/dist/Popover/Popover.d.ts +1 -1
  84. package/dist/Popover/Popover.styles.js +2 -2
  85. package/dist/Portal/Portal.styles.js +1 -1
  86. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  87. package/dist/RadioButton/RadioButton.styles.js +3 -3
  88. package/dist/Required/Required.styles.js +3 -3
  89. package/dist/Search/Search.styles.js +5 -5
  90. package/dist/Section/Section.d.ts +2 -2
  91. package/dist/Section/Section.styles.js +6 -6
  92. package/dist/SegmentedController/SegmentedController.d.ts +2 -2
  93. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  94. package/dist/Select/Select.js +3 -1
  95. package/dist/Select/Select.js.map +1 -1
  96. package/dist/Select/Select.styles.js +7 -7
  97. package/dist/Select/Select.types.d.ts +3 -2
  98. package/dist/Select/Select.types.js.map +1 -1
  99. package/dist/Semantic/Semantic.d.ts +6 -1
  100. package/dist/Semantic/Semantic.js +7 -1
  101. package/dist/Semantic/Semantic.js.map +1 -1
  102. package/dist/Semantic/Semantic.styles.d.ts +14 -4
  103. package/dist/Semantic/Semantic.styles.js +20 -10
  104. package/dist/Semantic/Semantic.styles.js.map +1 -1
  105. package/dist/Semantic/index.d.ts +1 -1
  106. package/dist/Semantic/index.js +1 -1
  107. package/dist/Semantic/index.js.map +1 -1
  108. package/dist/Sidebar/Sidebar.styles.js +7 -7
  109. package/dist/Slider/Slider.styles.js +5 -5
  110. package/dist/Spinner/Spinner.styles.js +7 -7
  111. package/dist/SuperSelect/SuperSelect.components.d.ts +29 -29
  112. package/dist/SuperSelect/SuperSelect.d.ts +29 -29
  113. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  114. package/dist/SuperSelect/SuperSelect.styles.js +37 -37
  115. package/dist/SuperSelect/useSuperSelect.d.ts +87 -87
  116. package/dist/Switch/Switch.styles.js +4 -4
  117. package/dist/Table/Table.styles.js +28 -28
  118. package/dist/TableShelf/TableShelf.styles.js +5 -5
  119. package/dist/Tabs/Tabs.d.ts +1 -1
  120. package/dist/Tabs/Tabs.styles.js +8 -8
  121. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  122. package/dist/TextArea/TextArea.styles.js +1 -1
  123. package/dist/TextEditor/TextEditor.d.ts +3 -3
  124. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  125. package/dist/Thumbnail/Thumbnail.d.ts +3 -3
  126. package/dist/Thumbnail/Thumbnail.hooks.d.ts +226 -210
  127. package/dist/Thumbnail/Thumbnail.styles.js +17 -17
  128. package/dist/Thumbnail/ThumbnailCaption.d.ts +2 -2
  129. package/dist/Thumbnail/ThumbnailDocumentIcon.d.ts +2 -2
  130. package/dist/Thumbnail/ThumbnailPreview.d.ts +2 -2
  131. package/dist/ThumbnailGrid/ThumbnailGrid.styles.d.ts +2 -2
  132. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  133. package/dist/TieredSelect/TieredSelect.styles.d.ts +1 -1
  134. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  135. package/dist/Tile/Tile.styles.js +8 -8
  136. package/dist/Title/Title.styles.js +7 -7
  137. package/dist/Toast/Toast.styles.js +3 -3
  138. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  139. package/dist/Token/Token.styles.js +3 -3
  140. package/dist/ToolHeader/ActionIcon.d.ts +2 -2
  141. package/dist/ToolHeader/ToolHeader.d.ts +2 -2
  142. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  143. package/dist/Tooltip/Tooltip.styles.js +2 -2
  144. package/dist/Tree/Tree.styles.js +9 -9
  145. package/dist/Typeahead/Typeahead.styles.js +3 -3
  146. package/dist/Typography/Typography.colors.story.d.ts +2 -2
  147. package/dist/Typography/Typography.styles.js +1 -1
  148. package/dist/Typography/Typography.table.story.d.ts +2 -2
  149. package/dist/Typography/Typography.table.story.js +2 -2
  150. package/dist/_hooks/Analytics.d.ts +1 -1
  151. package/dist/_hooks/Anchor.d.ts +1 -1
  152. package/dist/_hooks/BoundingRect.d.ts +1 -1
  153. package/dist/_hooks/Buffer.d.ts +1 -1
  154. package/dist/_hooks/ClickOutside.d.ts +3 -2
  155. package/dist/_hooks/ClickOutside.js +8 -3
  156. package/dist/_hooks/ClickOutside.js.map +1 -1
  157. package/dist/_hooks/DateTime/DateTime.d.ts +1 -1
  158. package/dist/_hooks/DelayedToggle.d.ts +1 -1
  159. package/dist/_hooks/Event.d.ts +1 -1
  160. package/dist/_hooks/EventListener.js +14 -4
  161. package/dist/_hooks/EventListener.js.map +1 -1
  162. package/dist/_hooks/I18n.d.ts +1 -1
  163. package/dist/_hooks/InjectedScript.d.ts +1 -1
  164. package/dist/_hooks/ListNavigation.d.ts +1 -1
  165. package/dist/_hooks/TextEntry.d.ts +1 -1
  166. package/dist/_hooks/Timer.d.ts +1 -1
  167. package/dist/_hooks/Trigger.d.ts +1 -1
  168. package/dist/_hooks/Visibility.d.ts +1 -1
  169. package/dist/_hooks/ZIndex.d.ts +1 -1
  170. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  171. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +23 -23
  172. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  173. package/dist/_typedoc/Banner/Banner.types.json +13 -13
  174. package/dist/_typedoc/Box/Box.types.json +68 -68
  175. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
  176. package/dist/_typedoc/Button/Button.types.json +11 -11
  177. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  178. package/dist/_typedoc/Card/Card.types.json +6 -6
  179. package/dist/_typedoc/Checkbox/Checkbox.types.json +9 -9
  180. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  181. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  182. package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
  183. package/dist/_typedoc/DetailPage/DetailPage.types.json +4 -4
  184. package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
  185. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +29 -29
  186. package/dist/_typedoc/Dropzone/Dropzone.types.json +41 -41
  187. package/dist/_typedoc/EmptyState/EmptyState.types.json +14 -14
  188. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  189. package/dist/_typedoc/FileSelect/FileSelect.types.json +26 -26
  190. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  191. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  192. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  193. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  194. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  195. package/dist/_typedoc/Form/Form.types.json +764 -724
  196. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  197. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +52 -52
  198. package/dist/_typedoc/Input/Input.types.json +2 -2
  199. package/dist/_typedoc/Link/Link.types.json +4 -4
  200. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  201. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  202. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +74 -74
  203. package/dist/_typedoc/Modal/Modal.types.json +41 -41
  204. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +31 -31
  205. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  206. package/dist/_typedoc/NumberInput/NumberInput.types.json +38 -38
  207. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +40 -30
  208. package/dist/_typedoc/PageLayout/PageLayout.types.json +22 -22
  209. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  210. package/dist/_typedoc/Panel/Panel.types.json +27 -27
  211. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  212. package/dist/_typedoc/PillSelect/PillSelect.types.json +56 -46
  213. package/dist/_typedoc/Popover/Popover.types.json +14 -14
  214. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +6 -6
  215. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  216. package/dist/_typedoc/Required/Required.types.json +5 -5
  217. package/dist/_typedoc/Search/Search.types.json +18 -18
  218. package/dist/_typedoc/Section/Section.types.json +14 -14
  219. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +20 -20
  220. package/dist/_typedoc/Select/Select.types.json +75 -55
  221. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  222. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  223. package/dist/_typedoc/Switch/Switch.types.json +3 -3
  224. package/dist/_typedoc/Table/Table.types.json +106 -96
  225. package/dist/_typedoc/Tabs/Tabs.types.json +17 -17
  226. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +16 -16
  227. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  228. package/dist/_typedoc/TextEditor/TextEditor.types.json +9 -9
  229. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  230. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  231. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +42 -42
  232. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +28 -28
  233. package/dist/_typedoc/Tile/Tile.types.json +30 -30
  234. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  235. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +3 -3
  236. package/dist/_typedoc/Token/Token.types.json +4 -4
  237. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  238. package/dist/_typedoc/Tooltip/Tooltip.types.json +13 -13
  239. package/dist/_typedoc/Tree/Tree.types.json +86 -86
  240. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  241. package/dist/_typedoc/Typography/Typography.types.json +8 -8
  242. package/dist/_typedoc/_utils/types.json +3 -3
  243. package/dist/index.d.ts +1 -0
  244. package/dist/index.js +1 -0
  245. package/dist/index.js.map +1 -1
  246. package/package.json +2 -2
  247. package/tsconfig.prod.json +7 -1
  248. package/dist/FileSelect/SourceItem/SourceItem.test.js +0 -53
  249. package/dist/MultiSelect/MultiSelect.test.js +0 -250
  250. package/dist/OverlayTrigger/OverlayTrigger.test.js +0 -483
  251. package/dist/SuperSelect/SuperSelect.utils.test.js +0 -717
  252. package/dist/SuperSelect/useSuperSelect.test.js +0 -1284
  253. package/dist/_hooks/OverflowObserver/OverflowObserver.test.js +0 -110
  254. package/dist/_hooks/__tests__/Anchor.test.js +0 -109
  255. package/dist/_hooks/__tests__/BoundingRect.test.js +0 -85
  256. package/dist/_hooks/__tests__/Buffer.test.js +0 -76
  257. package/dist/_hooks/__tests__/DateTime.test.js +0 -136
  258. package/dist/_hooks/__tests__/DelayedCallback.test.js +0 -119
  259. package/dist/_hooks/__tests__/DelayedToggle.test.js +0 -50
  260. package/dist/_hooks/__tests__/Deprecation.test.js +0 -58
  261. package/dist/_hooks/__tests__/Event.test.js +0 -46
  262. package/dist/_hooks/__tests__/EventListener.test.js +0 -78
  263. package/dist/_hooks/__tests__/Hotkey.test.js +0 -18
  264. package/dist/_hooks/__tests__/InjectedScript.test.js +0 -80
  265. package/dist/_hooks/__tests__/ListNavigation.test.js +0 -101
  266. package/dist/_hooks/__tests__/TextEntry.test.js +0 -92
  267. package/dist/_hooks/__tests__/Timer.test.js +0 -60
  268. package/dist/_hooks/__tests__/Trigger.test.js +0 -52
  269. package/dist/_hooks/__tests__/Visibility.test.js +0 -86
  270. package/dist/_hooks/__tests__/ZIndex.test.js +0 -76
  271. package/dist/_utils/__tests__/CalendarHelpers.test.js +0 -64
  272. package/dist/_utils/__tests__/filename.test.js +0 -27
  273. package/dist/_utils/__tests__/getAnchorPosition.test.js +0 -250
  274. package/dist/_utils/__tests__/mergeRefs.test.js +0 -58
  275. package/dist/_utils/__tests__/slotify.test.js +0 -152
@@ -1,110 +0,0 @@
1
- import { act, renderHook } from '@testing-library/react-hooks'
2
- import { useOverflowObserver } from './OverflowObserver'
3
-
4
- describe('useOverflowObserver', () => {
5
- const hookApi = () => renderHook(() => useOverflowObserver()).result
6
-
7
- const runDefaulValueAssertions = (api) => {
8
- expect(api.isOverflowingY).toBe(false)
9
- expect(api.isOverflowingX).toBe(false)
10
- expect(api.isOverflowing).toBe(false)
11
- }
12
-
13
- it('should detect vertical content overflow', () => {
14
- const api = hookApi()
15
-
16
- const domNode = {
17
- clientHeight: 100,
18
- scrollHeight: 102,
19
- clientWidth: 50,
20
- scrollWidth: 50,
21
- }
22
-
23
- runDefaulValueAssertions(api.current)
24
-
25
- act(() => api.current.ref(domNode))
26
-
27
- expect(api.current.isOverflowingY).toBe(true)
28
- expect(api.current.isOverflowingX).toBe(false)
29
- expect(api.current.isOverflowing).toBe(true)
30
- })
31
-
32
- it('should detect horizontal content overflow', () => {
33
- const api = hookApi()
34
-
35
- const domNode = {
36
- clientHeight: 100,
37
- scrollHeight: 100,
38
- clientWidth: 50,
39
- scrollWidth: 52,
40
- }
41
-
42
- runDefaulValueAssertions(api.current)
43
-
44
- act(() => api.current.ref(domNode))
45
-
46
- expect(api.current.isOverflowingY).toBe(false)
47
- expect(api.current.isOverflowingX).toBe(true)
48
- expect(api.current.isOverflowing).toBe(true)
49
- })
50
-
51
- it('should detect vertical and horizontal content overflow', () => {
52
- const api = hookApi()
53
-
54
- const domNode = {
55
- clientHeight: 100,
56
- scrollHeight: 102,
57
- clientWidth: 50,
58
- scrollWidth: 52,
59
- }
60
-
61
- runDefaulValueAssertions(api.current)
62
-
63
- act(() => api.current.ref(domNode))
64
-
65
- expect(api.current.isOverflowingY).toBe(true)
66
- expect(api.current.isOverflowingX).toBe(true)
67
- expect(api.current.isOverflowing).toBe(true)
68
- })
69
-
70
- describe('Given that the browser miscalculates content dimensions', () => {
71
- ;[
72
- {
73
- clientHeight: 100,
74
- scrollHeight: 100,
75
- clientWidth: 99,
76
- scrollWidth: 100,
77
- },
78
- {
79
- clientHeight: 99,
80
- scrollHeight: 100,
81
- clientWidth: 50,
82
- scrollWidth: 50,
83
- },
84
- {
85
- clientHeight: 100,
86
- scrollHeight: 100,
87
- clientWidth: 50,
88
- scrollWidth: 49,
89
- },
90
- {
91
- clientHeight: 100,
92
- scrollHeight: 99,
93
- clientWidth: 50,
94
- scrollWidth: 50,
95
- },
96
- ].forEach((domNode) => {
97
- it('should ignore dimension variance in 1 pixel range', () => {
98
- const api = hookApi()
99
-
100
- runDefaulValueAssertions(api.current)
101
-
102
- act(() => api.current.ref(domNode))
103
-
104
- expect(api.current.isOverflowingY).toBe(false)
105
- expect(api.current.isOverflowingX).toBe(false)
106
- expect(api.current.isOverflowing).toBe(false)
107
- })
108
- })
109
- })
110
- })
@@ -1,109 +0,0 @@
1
- import { renderHook } from '@testing-library/react-hooks'
2
- import React from 'react'
3
- import { defaultRect } from '../../_utils/dom'
4
- import {
5
- testContext,
6
- testHook,
7
- testRenderProp,
8
- } from '../../__tests__/helpers/state'
9
- import { Anchor, AnchorProvider, useAnchor, useAnchorContext } from '../Anchor'
10
-
11
- const validateAPI = (api) => {
12
- expect(typeof api.left).toBe('number')
13
- expect(typeof api.minWidth).toBe('number')
14
- expect(typeof api.placement).toBe('string')
15
- expect(typeof api.top).toBe('number')
16
- }
17
-
18
- const apiTest = {
19
- test: 'api',
20
- config: {
21
- overlayRef: React.createRef(),
22
- targetRef: React.createRef(),
23
- },
24
- callback: validateAPI,
25
- }
26
-
27
- describe('Anchor', () => {
28
- const mockGetBoundingClientRect = jest
29
- .spyOn(Element.prototype, 'getBoundingClientRect')
30
- .mockImplementation(() => ({
31
- ...defaultRect,
32
- }))
33
-
34
- testHook(useAnchor, [apiTest])
35
-
36
- describe('useAnchor', () => {
37
- describe('shrinkOverlay', () => {
38
- let overlayGetBoundingClientRectSpy
39
- let targetRef
40
- let overlayRef
41
- beforeEach(() => {
42
- const target = document.createElement('div')
43
- target.getBoundingClientRect = jest.fn(() => ({
44
- ...defaultRect,
45
- width: 8.34375,
46
- }))
47
- targetRef = { current: target }
48
-
49
- const overlay = document.createElement('div')
50
- overlayGetBoundingClientRectSpy = jest.spyOn(
51
- overlay,
52
- 'getBoundingClientRect'
53
- )
54
- overlayRef = {
55
- current: overlay,
56
- }
57
- })
58
-
59
- describe('when shrinkOverlay is false', () => {
60
- it('should set minWidth', () => {
61
- renderHook(() =>
62
- useAnchor({
63
- targetRef,
64
- overlayRef,
65
- shrinkOverlay: false,
66
- })
67
- )
68
-
69
- expect(
70
- overlayGetBoundingClientRectSpy.mock.instances[0].style.minWidth
71
- ).toBe('8.34375px')
72
- })
73
- })
74
-
75
- describe('when shrinkOverlay is true', () => {
76
- it('should not set minWidth', () => {
77
- renderHook(() =>
78
- useAnchor({
79
- targetRef,
80
- overlayRef,
81
- shrinkOverlay: true,
82
- })
83
- )
84
-
85
- expect(
86
- overlayGetBoundingClientRectSpy.mock.instances[0].style.minWidth
87
- ).toBe('')
88
- })
89
- })
90
- })
91
- })
92
-
93
- testRenderProp(Anchor, 'anchor', [apiTest])
94
-
95
- testContext(AnchorProvider, useAnchorContext, [
96
- apiTest,
97
- ,
98
- {
99
- test: 'missing provider',
100
- config: {},
101
- injectProvider: false,
102
- callback: (context) => {
103
- validateAPI(context)
104
- },
105
- },
106
- ])
107
-
108
- mockGetBoundingClientRect.mockRestore()
109
- })
@@ -1,85 +0,0 @@
1
- import { mount } from 'enzyme'
2
- import React from 'react'
3
- import {
4
- getProps,
5
- testContext,
6
- testRenderProp,
7
- } from '../../__tests__/helpers/state'
8
- import {
9
- BoundingRect,
10
- BoundingRectProvider,
11
- DEFAULT_RECT,
12
- useBoundingRect,
13
- useBoundingRectContext,
14
- } from '../BoundingRect'
15
-
16
- const Component = 'div'
17
-
18
- const validateAPI = (api) => {
19
- expect(api.ref).toBeTruthy()
20
- expect(api.rect).toBeInstanceOf(Object)
21
- }
22
-
23
- const apiTest = {
24
- test: 'api',
25
- config: {},
26
- callback: validateAPI,
27
- }
28
-
29
- const Enhanced = ({ width, dependencies }) => {
30
- const mockGetBoundingClientRect = jest
31
- .spyOn(Element.prototype, 'getBoundingClientRect')
32
- .mockImplementation(() => ({
33
- ...DEFAULT_RECT,
34
- width,
35
- }))
36
-
37
- const boundingRect = useBoundingRect({ dependencies })
38
-
39
- React.useLayoutEffect(mockGetBoundingClientRect.mockRestore)
40
-
41
- return (
42
- <Component ref={boundingRect.ref} state={boundingRect} style={{ width }} />
43
- )
44
- }
45
-
46
- describe('BoundingRect', () => {
47
- describe('hook', () => {
48
- it('provides the correct api', () => {
49
- const width = 100
50
- const dom = mount(<Enhanced width={width} />)
51
- const props = getProps(Component, dom, 'state')()
52
-
53
- validateAPI(props)
54
-
55
- expect(props.rect.width).toBe(100)
56
- })
57
-
58
- it('updates rect when changing dependencies', () => {
59
- const width1 = 100
60
- const width2 = 200
61
- const dom = mount(<Enhanced width={width1} dependencies={[true]} />)
62
- const props = getProps(Component, dom, 'state')
63
-
64
- expect(props().rect.width).toBe(width1)
65
-
66
- dom.setProps({ width: width2, dependencies: [false] })
67
-
68
- expect(props().rect.width).toBe(width2)
69
- })
70
- })
71
-
72
- testRenderProp(BoundingRect, 'boundingRect', [apiTest])
73
-
74
- testContext(BoundingRectProvider, useBoundingRectContext, [
75
- apiTest,
76
- {
77
- test: 'missing provider',
78
- config: {},
79
- injectProvider: false,
80
- callback: ({ ref, rect }) => {
81
- expect(ref).toEqual({ current: null })
82
- },
83
- },
84
- ])
85
- })
@@ -1,76 +0,0 @@
1
- import {
2
- testContext,
3
- testHook,
4
- testRenderProp,
5
- } from '../../__tests__/helpers/state'
6
- import { Buffer, BufferProvider, useBuffer, useBufferContext } from '../Buffer'
7
-
8
- const validateAPI = (api) => {
9
- expect(api.value).toEqual('')
10
- expect(api.clear).toBeInstanceOf(Function)
11
- expect(api.reset).toBeInstanceOf(Function)
12
- expect(api.update).toBeInstanceOf(Function)
13
- }
14
-
15
- const apiTest = {
16
- test: 'api',
17
- config: {},
18
- callback: validateAPI,
19
- }
20
-
21
- const configTest = {
22
- test: 'config',
23
- config: { initialValue: 'foo' },
24
- callback: ({ value }) => expect(value).toEqual('foo'),
25
- }
26
-
27
- describe('Buffer', () => {
28
- testHook(useBuffer, [
29
- apiTest,
30
- configTest,
31
- {
32
- test: 'mutations',
33
- config: { initialValue: 'foo' },
34
- mutations: [
35
- ['update', 'bar', ['value', 'toBe', 'bar']],
36
- ['clear', null, ['value', 'toBe', '']],
37
- ['reset', null, ['value', 'toBe', 'foo']],
38
- ],
39
- },
40
- ])
41
-
42
- testRenderProp(Buffer, 'buffer', [apiTest, configTest])
43
-
44
- testContext(BufferProvider, useBufferContext, [
45
- apiTest,
46
- configTest,
47
- {
48
- test: 'missing provider',
49
- config: {},
50
- injectProvider: false,
51
- callback: (context, { spy }) => {
52
- spy.mockImplementation(() => {})
53
-
54
- context.update()
55
- context.clear()
56
- context.reset()
57
- expect(context.value).toBe('')
58
- expect(spy).toBeCalledTimes(3)
59
- expect(spy).toHaveBeenNthCalledWith(
60
- 1,
61
- 'Could not call `update`, please wrap your component in a `<BufferProvider>`'
62
- )
63
- expect(spy).toHaveBeenNthCalledWith(
64
- 2,
65
- 'Could not call `clear`, please wrap your component in a `<BufferProvider>`'
66
- )
67
- expect(spy).toHaveBeenNthCalledWith(
68
- 3,
69
- 'Could not call `reset`, please wrap your component in a `<BufferProvider>`'
70
- )
71
-
72
- spy.mockRestore()
73
- },
74
- },
75
- ])
76
- })
@@ -1,136 +0,0 @@
1
- import { mount } from 'enzyme'
2
- import React from 'react'
3
- import { DateTimeProvider, useDateTime } from '../DateTime'
4
-
5
- const sampleDate = new Date(2020, 9, 31, 14, 30, 42) // Halloween, a Saturday at 2:30 PM
6
- // Testing is set up to run in time zone "America/Los_Angeles" as local
7
- const timeZone1 = 'Australia/Sydney' // ahead of California
8
- const timeZone2 = 'America/Adak' // behind California
9
- const timeZoneLocalFormatted = '2:30 PM PDT on 10/31/2020'
10
- const timeZoneLocalTimeFormatted = '2:30 PM PDT'
11
- const timeZoneLocalTimeFormatted24Hour = '14:30 PDT'
12
- const timeZone1Formatted = '8:30 AM GMT+11 on 11/1/2020'
13
- const timeZone2Formatted = '12:30 PM HADT on 10/31/2020'
14
- const timeZone2TimeFormatted24Hour = '12:30 HADT'
15
- const timeZone1TimeFormatted = '8:30 AM GMT+11'
16
-
17
- function ComponentUsingHook({
18
- date = sampleDate,
19
- format = 'time-on-numeric-date',
20
- optionsDate,
21
- optionsTime,
22
- }) {
23
- const dateTime = useDateTime()
24
-
25
- return dateTime.format(date, format, optionsDate, optionsTime)
26
- }
27
-
28
- describe('Context and Time Zone Shifting', () => {
29
- describe('Does not time zone shift', () => {
30
- it('when no provider', () => {
31
- const wrapper = mount(<ComponentUsingHook />)
32
-
33
- expect(wrapper.text()).toEqual(timeZoneLocalFormatted)
34
- })
35
-
36
- it('when a provider but no time zone', () => {
37
- const wrapper = mount(
38
- <DateTimeProvider>
39
- <ComponentUsingHook />
40
- </DateTimeProvider>
41
- )
42
- expect(wrapper.text()).toEqual(timeZoneLocalFormatted)
43
- })
44
- it('when a provider with default time zone is inside a provider with time zone', () => {
45
- const wrapper = mount(
46
- <DateTimeProvider timeZone={timeZone1}>
47
- <DateTimeProvider>
48
- <ComponentUsingHook />
49
- </DateTimeProvider>
50
- </DateTimeProvider>
51
- )
52
- expect(wrapper.text()).toEqual(timeZoneLocalFormatted)
53
- })
54
- it('when a provider with undefined time zone is inside a provider with time zone', () => {
55
- const wrapper = mount(
56
- <DateTimeProvider timeZone={timeZone1}>
57
- <DateTimeProvider timeZone={undefined}>
58
- <ComponentUsingHook />
59
- </DateTimeProvider>
60
- </DateTimeProvider>
61
- )
62
- expect(wrapper.text()).toEqual(timeZoneLocalFormatted)
63
- })
64
- })
65
- describe('Does time zone shift', () => {
66
- it('when a provider has time zome', () => {
67
- const wrapper = mount(
68
- <DateTimeProvider timeZone={timeZone1}>
69
- <ComponentUsingHook />
70
- </DateTimeProvider>
71
- )
72
- expect(wrapper.text()).toEqual(timeZone1Formatted)
73
- })
74
- it('using the nearest provider', () => {
75
- const wrapper = mount(
76
- <DateTimeProvider timeZone={timeZone1}>
77
- <DateTimeProvider timeZone={timeZone2}>
78
- <ComponentUsingHook />
79
- </DateTimeProvider>
80
- </DateTimeProvider>
81
- )
82
- expect(wrapper.text()).toEqual(timeZone2Formatted)
83
- })
84
- it('when passed as an option', () => {
85
- const wrapper = mount(
86
- <ComponentUsingHook
87
- format="time"
88
- optionsDate={{ timeZone: timeZone1 }}
89
- />
90
- )
91
-
92
- expect(wrapper.text()).toEqual(timeZone1TimeFormatted)
93
- })
94
- })
95
- })
96
-
97
- describe('Context and 24 Hour Clock', () => {
98
- it('can change 24 hour clock', () => {
99
- const wrapper = mount(
100
- <DateTimeProvider hour12={true}>
101
- <DateTimeProvider hour12={false}>
102
- <ComponentUsingHook format="time" />
103
- </DateTimeProvider>
104
- </DateTimeProvider>
105
- )
106
- expect(wrapper.text()).toEqual(timeZoneLocalTimeFormatted24Hour)
107
- })
108
- it('can change 24 hour clock in time zone', () => {
109
- const wrapper = mount(
110
- <DateTimeProvider hour12={true}>
111
- <DateTimeProvider timeZone={timeZone2} hour12={false}>
112
- <ComponentUsingHook format="time" />
113
- </DateTimeProvider>
114
- </DateTimeProvider>
115
- )
116
- expect(wrapper.text()).toEqual(timeZone2TimeFormatted24Hour)
117
- })
118
- it('when passed as an option can be 24 hours', () => {
119
- const wrapper = mount(
120
- <DateTimeProvider hour12={false}>
121
- <ComponentUsingHook format="time" optionsDate={{ hour12: true }} />
122
- </DateTimeProvider>
123
- )
124
-
125
- expect(wrapper.text()).toEqual(timeZoneLocalTimeFormatted)
126
- })
127
- it('when passed as an option can be 12 hours', () => {
128
- const wrapper = mount(
129
- <DateTimeProvider hour12={true}>
130
- <ComponentUsingHook format="time" optionsDate={{ hour12: false }} />
131
- </DateTimeProvider>
132
- )
133
-
134
- expect(wrapper.text()).toEqual(timeZoneLocalTimeFormatted24Hour)
135
- })
136
- })
@@ -1,119 +0,0 @@
1
- import { render, screen } from '@testing-library/react'
2
- import userEvent from '@testing-library/user-event'
3
- import { mount } from 'enzyme'
4
- import React from 'react'
5
- import { isPromise, useDelayedCallback, wrapPromise } from '../DelayedCallback'
6
-
7
- const DELAY = 10
8
-
9
- const Component = 'button' //
10
-
11
- const Enhanced = ({ after, before, delay }) => {
12
- const delayed = useDelayedCallback({ after, before, delay })
13
-
14
- return <Component onClick={delayed} />
15
- }
16
-
17
- describe('isPromise', () => {
18
- it('returns true if input is a promise object', () => {
19
- expect(isPromise(new Promise(() => {}))).toBe(true)
20
- expect(isPromise(0)).toBe(false)
21
- expect(isPromise('')).toBe(false)
22
- expect(isPromise(false)).toBe(false)
23
- expect(isPromise([])).toBe(false)
24
- expect(isPromise({})).toBe(false)
25
- })
26
- })
27
-
28
- describe('wrapPromise', () => {
29
- it('passes through if input is a promise', () => {
30
- wrapPromise(new Promise((resolve) => resolve('foo'))).then((value) =>
31
- expect(value).toBe('foo')
32
- )
33
- })
34
-
35
- it('resolves to provided input if input is a boolean', () => {
36
- wrapPromise(true).then((value) => expect(value).toBe(true))
37
- wrapPromise(false).then((value) => expect(value).toBe(false))
38
- })
39
-
40
- it('thens to true if input is not a promise or boolean', () => {
41
- wrapPromise('').then((value) => expect(value).toBe(true))
42
- wrapPromise({}).then((value) => expect(value).toBe(true))
43
- wrapPromise([]).then((value) => expect(value).toBe(true))
44
- })
45
- })
46
-
47
- describe('useDelayedCallback', () => {
48
- describe('api', () => {
49
- it('provides a delayed function', () => {
50
- const after = jest.fn()
51
- const before = jest.fn()
52
- const delay = DELAY
53
- const dom = mount(<Enhanced {...{ after, before, delay }} />)
54
- const onClick = dom.find(Component).prop('onClick')
55
- expect(typeof onClick).toBe('function')
56
- })
57
- })
58
-
59
- describe('after callback', () => {
60
- let after, before
61
- beforeEach(() => {
62
- after = jest.fn()
63
- before = jest.fn()
64
- jest.useFakeTimers()
65
- })
66
-
67
- afterEach(() => {
68
- jest.runOnlyPendingTimers()
69
- jest.useRealTimers()
70
- })
71
-
72
- // remove delay to make it work with FakeTimers
73
- const user = userEvent.setup({ delay: null })
74
-
75
- it('gets invoked after the delay has elapsed', async () => {
76
- render(<Enhanced {...{ after, before, delay: DELAY }} />)
77
-
78
- await user.click(screen.getByRole('button'))
79
- expect(after).not.toHaveBeenCalled()
80
-
81
- jest.advanceTimersByTime(DELAY)
82
- expect(after).toHaveBeenCalled()
83
- })
84
-
85
- it('should not call after if component is unmounted', async () => {
86
- const { unmount } = render(
87
- <Enhanced {...{ after, before, delay: DELAY }} />
88
- )
89
-
90
- await user.click(screen.getByRole('button'))
91
- unmount()
92
-
93
- jest.advanceTimersByTime(DELAY)
94
- expect(after).not.toHaveBeenCalled()
95
- })
96
- })
97
-
98
- describe('before callback', () => {
99
- it('gets invoked immediately', () => {
100
- const after = jest.fn()
101
- const before = jest.fn()
102
- const delay = DELAY
103
- const dom = mount(<Enhanced {...{ after, before, delay }} />)
104
- dom.simulate('click')
105
- expect(before).toHaveBeenCalled()
106
- })
107
-
108
- it('will not call the after callback when before returns false', (done) => {
109
- const after = jest.fn()
110
- const before = jest.fn(() => false)
111
- const delay = DELAY
112
- mount(<Enhanced {...{ after, before, delay }} />)
113
- setTimeout(() => {
114
- expect(after).toHaveBeenCalledTimes(0)
115
- done()
116
- }, DELAY * 2)
117
- })
118
- })
119
- })
@@ -1,50 +0,0 @@
1
- import {
2
- testContext,
3
- testHook,
4
- testRenderProp,
5
- } from '../../__tests__/helpers/state'
6
-
7
- import {
8
- DelayedToggle,
9
- DelayedToggleProvider,
10
- initDelayedToggle,
11
- useDelayedToggle,
12
- useDelayedToggleContext,
13
- } from '../DelayedToggle'
14
-
15
- const mockOnEnable = () => {}
16
- const mockOnDisable = () => {}
17
-
18
- const validateAPI = (api) => {
19
- expect(api.enable).toBeInstanceOf(Function)
20
- expect(api.disable).toBeInstanceOf(Function)
21
- expect(api.toggle).toBeInstanceOf(Function)
22
- }
23
-
24
- const apiTest = {
25
- test: 'api',
26
- config: {
27
- onEnable: mockOnEnable,
28
- onDisable: mockOnDisable,
29
- },
30
- callback: validateAPI,
31
- }
32
-
33
- describe('DelayedToggle', () => {
34
- testHook(useDelayedToggle, [apiTest])
35
-
36
- testRenderProp(DelayedToggle, 'delayedToggle', [apiTest])
37
-
38
- testContext(DelayedToggleProvider, useDelayedToggleContext, [
39
- apiTest,
40
- ,
41
- {
42
- test: 'missing provider',
43
- config: {},
44
- injectProvider: false,
45
- callback: (context) => {
46
- expect(context).toEqual(initDelayedToggle)
47
- },
48
- },
49
- ])
50
- })