@mongodb-js/compass-components 1.29.3 → 1.30.1

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 (240) hide show
  1. package/README.md +10 -14
  2. package/lib/components/breadcrumb.d.ts +2 -1
  3. package/lib/components/breadcrumb.d.ts.map +1 -1
  4. package/lib/components/breadcrumb.js +1 -1
  5. package/lib/components/breadcrumb.js.map +1 -1
  6. package/lib/components/bson-value.js +4 -0
  7. package/lib/components/bson-value.js.map +1 -1
  8. package/lib/components/collapsible-field-set.js +4 -1
  9. package/lib/components/collapsible-field-set.js.map +1 -1
  10. package/lib/components/combobox/Chip.js +5 -2
  11. package/lib/components/combobox/Chip.js.map +1 -1
  12. package/lib/components/combobox/Combobox.d.ts +11 -1
  13. package/lib/components/combobox/Combobox.d.ts.map +1 -1
  14. package/lib/components/combobox/Combobox.js +225 -5
  15. package/lib/components/combobox/Combobox.js.map +1 -1
  16. package/lib/components/combobox/Combobox.styles.d.ts +15 -0
  17. package/lib/components/combobox/Combobox.styles.d.ts.map +1 -1
  18. package/lib/components/combobox/Combobox.styles.js +19 -2
  19. package/lib/components/combobox/Combobox.styles.js.map +1 -1
  20. package/lib/components/combobox/Combobox.types.d.ts +174 -0
  21. package/lib/components/combobox/Combobox.types.d.ts.map +1 -1
  22. package/lib/components/combobox/Combobox.types.js +20 -0
  23. package/lib/components/combobox/Combobox.types.js.map +1 -1
  24. package/lib/components/combobox/ComboboxGroup.d.ts +1 -0
  25. package/lib/components/combobox/ComboboxGroup.d.ts.map +1 -1
  26. package/lib/components/combobox/ComboboxMenu/ComboboxMenu.js +5 -0
  27. package/lib/components/combobox/ComboboxMenu/ComboboxMenu.js.map +1 -1
  28. package/lib/components/combobox/ComboboxMenu/Menu.styles.d.ts +4 -0
  29. package/lib/components/combobox/ComboboxMenu/Menu.styles.d.ts.map +1 -1
  30. package/lib/components/combobox/ComboboxMenu/Menu.styles.js +4 -0
  31. package/lib/components/combobox/ComboboxMenu/Menu.styles.js.map +1 -1
  32. package/lib/components/combobox/ComboboxOption.d.ts +3 -0
  33. package/lib/components/combobox/ComboboxOption.d.ts.map +1 -1
  34. package/lib/components/combobox/ComboboxOption.js +14 -0
  35. package/lib/components/combobox/ComboboxOption.js.map +1 -1
  36. package/lib/components/combobox/Menu.styles.d.ts +4 -0
  37. package/lib/components/combobox/Menu.styles.d.ts.map +1 -1
  38. package/lib/components/combobox/Menu.styles.js +7 -3
  39. package/lib/components/combobox/Menu.styles.js.map +1 -1
  40. package/lib/components/combobox/utils/OptionObjectUtils.d.ts +18 -0
  41. package/lib/components/combobox/utils/OptionObjectUtils.d.ts.map +1 -1
  42. package/lib/components/combobox/utils/OptionObjectUtils.js +18 -0
  43. package/lib/components/combobox/utils/OptionObjectUtils.js.map +1 -1
  44. package/lib/components/combobox/utils/flattenChildren.d.ts +8 -0
  45. package/lib/components/combobox/utils/flattenChildren.d.ts.map +1 -1
  46. package/lib/components/combobox/utils/flattenChildren.js +13 -1
  47. package/lib/components/combobox/utils/flattenChildren.js.map +1 -1
  48. package/lib/components/combobox/utils/getNameAndValue.d.ts +9 -0
  49. package/lib/components/combobox/utils/getNameAndValue.d.ts.map +1 -1
  50. package/lib/components/combobox/utils/getNameAndValue.js +10 -1
  51. package/lib/components/combobox/utils/getNameAndValue.js.map +1 -1
  52. package/lib/components/combobox/utils/wrapJSX.d.ts +13 -0
  53. package/lib/components/combobox/utils/wrapJSX.d.ts.map +1 -1
  54. package/lib/components/combobox/utils/wrapJSX.js +21 -0
  55. package/lib/components/combobox/utils/wrapJSX.js.map +1 -1
  56. package/lib/components/combobox-with-custom-option.d.ts +2 -1
  57. package/lib/components/combobox-with-custom-option.d.ts.map +1 -1
  58. package/lib/components/combobox-with-custom-option.js +2 -0
  59. package/lib/components/combobox-with-custom-option.js.map +1 -1
  60. package/lib/components/compass-components-provider.d.ts +24 -1
  61. package/lib/components/compass-components-provider.d.ts.map +1 -1
  62. package/lib/components/compass-components-provider.js +22 -1
  63. package/lib/components/compass-components-provider.js.map +1 -1
  64. package/lib/components/content-with-fallback.js +3 -0
  65. package/lib/components/content-with-fallback.js.map +1 -1
  66. package/lib/components/document-list/document-actions-group.js +10 -1
  67. package/lib/components/document-list/document-actions-group.js.map +1 -1
  68. package/lib/components/document-list/document-edit-actions-footer.js +3 -0
  69. package/lib/components/document-list/document-edit-actions-footer.js.map +1 -1
  70. package/lib/components/document-list/document.js +23 -1
  71. package/lib/components/document-list/document.js.map +1 -1
  72. package/lib/components/document-list/element-actions.js +2 -0
  73. package/lib/components/document-list/element-actions.js.map +1 -1
  74. package/lib/components/document-list/element-editors.js +51 -9
  75. package/lib/components/document-list/element-editors.js.map +1 -1
  76. package/lib/components/document-list/element.js +45 -5
  77. package/lib/components/document-list/element.js.map +1 -1
  78. package/lib/components/empty-content.js +1 -1
  79. package/lib/components/empty-content.js.map +1 -1
  80. package/lib/components/error-boundary.js +3 -0
  81. package/lib/components/error-boundary.js.map +1 -1
  82. package/lib/components/feedback-popover.d.ts +1 -1
  83. package/lib/components/feedback-popover.d.ts.map +1 -1
  84. package/lib/components/feedback-popover.js +3 -0
  85. package/lib/components/feedback-popover.js.map +1 -1
  86. package/lib/components/file-input.js +22 -3
  87. package/lib/components/file-input.js.map +1 -1
  88. package/lib/components/guide-cue/guide-cue-groups.js +3 -0
  89. package/lib/components/guide-cue/guide-cue-groups.js.map +1 -1
  90. package/lib/components/guide-cue/guide-cue-service.js +5 -0
  91. package/lib/components/guide-cue/guide-cue-service.js.map +1 -1
  92. package/lib/components/guide-cue/guide-cue.d.ts +1 -1
  93. package/lib/components/guide-cue/guide-cue.d.ts.map +1 -1
  94. package/lib/components/guide-cue/guide-cue.js +14 -1
  95. package/lib/components/guide-cue/guide-cue.js.map +1 -1
  96. package/lib/components/horizontal-rule.d.ts +1 -1
  97. package/lib/components/horizontal-rule.d.ts.map +1 -1
  98. package/lib/components/icons/favorite-icon.js +3 -1
  99. package/lib/components/icons/favorite-icon.js.map +1 -1
  100. package/lib/components/icons/logo-icon.d.ts +1 -1
  101. package/lib/components/icons/logo-icon.d.ts.map +1 -1
  102. package/lib/components/icons/server-icon.d.ts +2 -1
  103. package/lib/components/icons/server-icon.d.ts.map +1 -1
  104. package/lib/components/index-icon.d.ts +2 -1
  105. package/lib/components/index-icon.d.ts.map +1 -1
  106. package/lib/components/index-keys-badge.js +1 -0
  107. package/lib/components/index-keys-badge.js.map +1 -1
  108. package/lib/components/inline-definition.js +1 -0
  109. package/lib/components/inline-definition.js.map +1 -1
  110. package/lib/components/inline-info-link.d.ts +1 -0
  111. package/lib/components/inline-info-link.d.ts.map +1 -1
  112. package/lib/components/interactive-popover.d.ts +3 -0
  113. package/lib/components/interactive-popover.d.ts.map +1 -1
  114. package/lib/components/interactive-popover.js +6 -0
  115. package/lib/components/interactive-popover.js.map +1 -1
  116. package/lib/components/item-action-controls.d.ts +6 -5
  117. package/lib/components/item-action-controls.d.ts.map +1 -1
  118. package/lib/components/item-action-controls.js +31 -4
  119. package/lib/components/item-action-controls.js.map +1 -1
  120. package/lib/components/keyline-card.d.ts +9 -2
  121. package/lib/components/keyline-card.d.ts.map +1 -1
  122. package/lib/components/leafygreen.d.ts +1 -1
  123. package/lib/components/leafygreen.js +8 -0
  124. package/lib/components/leafygreen.js.map +1 -1
  125. package/lib/components/links/link.js +2 -0
  126. package/lib/components/links/link.js.map +1 -1
  127. package/lib/components/loader.d.ts +1 -1
  128. package/lib/components/loader.d.ts.map +1 -1
  129. package/lib/components/modals/form-modal.d.ts +1 -1
  130. package/lib/components/modals/form-modal.d.ts.map +1 -1
  131. package/lib/components/modals/info-modal.d.ts +1 -1
  132. package/lib/components/modals/info-modal.d.ts.map +1 -1
  133. package/lib/components/modals/modal-body.js +2 -0
  134. package/lib/components/modals/modal-body.js.map +1 -1
  135. package/lib/components/modals/modal-footer-button.d.ts +2 -1
  136. package/lib/components/modals/modal-footer-button.d.ts.map +1 -1
  137. package/lib/components/modals/modal-header.d.ts +1 -1
  138. package/lib/components/modals/modal-header.d.ts.map +1 -1
  139. package/lib/components/modals/modal.js +8 -0
  140. package/lib/components/modals/modal.js.map +1 -1
  141. package/lib/components/options-toggle.js +5 -1
  142. package/lib/components/options-toggle.js.map +1 -1
  143. package/lib/components/placeholder.js +1 -0
  144. package/lib/components/placeholder.js.map +1 -1
  145. package/lib/components/resize-handle.js +4 -0
  146. package/lib/components/resize-handle.js.map +1 -1
  147. package/lib/components/resizeable-sidebar.js +2 -0
  148. package/lib/components/resizeable-sidebar.js.map +1 -1
  149. package/lib/components/signal-popover.d.ts +19 -0
  150. package/lib/components/signal-popover.d.ts.map +1 -1
  151. package/lib/components/signal-popover.js +43 -3
  152. package/lib/components/signal-popover.js.map +1 -1
  153. package/lib/components/signals.d.ts +4 -3
  154. package/lib/components/signals.d.ts.map +1 -1
  155. package/lib/components/tab-nav-bar.d.ts +11 -4
  156. package/lib/components/tab-nav-bar.d.ts.map +1 -1
  157. package/lib/components/tab-nav-bar.js +14 -11
  158. package/lib/components/tab-nav-bar.js.map +1 -1
  159. package/lib/components/toast-body.d.ts +2 -1
  160. package/lib/components/toast-body.d.ts.map +1 -1
  161. package/lib/components/toast-body.js +1 -0
  162. package/lib/components/toast-body.js.map +1 -1
  163. package/lib/components/virtual-grid.d.ts +43 -1
  164. package/lib/components/virtual-grid.d.ts.map +1 -1
  165. package/lib/components/virtual-grid.js +3 -0
  166. package/lib/components/virtual-grid.js.map +1 -1
  167. package/lib/components/virtual-list.d.ts +70 -1
  168. package/lib/components/virtual-list.d.ts.map +1 -1
  169. package/lib/components/virtual-list.js +9 -1
  170. package/lib/components/virtual-list.js.map +1 -1
  171. package/lib/components/workspace-container.d.ts +1 -1
  172. package/lib/components/workspace-container.d.ts.map +1 -1
  173. package/lib/components/workspace-container.js +10 -0
  174. package/lib/components/workspace-container.js.map +1 -1
  175. package/lib/components/workspace-tabs/tab.d.ts +1 -1
  176. package/lib/components/workspace-tabs/tab.d.ts.map +1 -1
  177. package/lib/components/workspace-tabs/tab.js +15 -1
  178. package/lib/components/workspace-tabs/tab.js.map +1 -1
  179. package/lib/components/workspace-tabs/workspace-tabs.d.ts +1 -1
  180. package/lib/components/workspace-tabs/workspace-tabs.d.ts.map +1 -1
  181. package/lib/components/workspace-tabs/workspace-tabs.js +5 -1
  182. package/lib/components/workspace-tabs/workspace-tabs.js.map +1 -1
  183. package/lib/hooks/use-confirmation.js +12 -1
  184. package/lib/hooks/use-confirmation.js.map +1 -1
  185. package/lib/hooks/use-default-action.d.ts +8 -0
  186. package/lib/hooks/use-default-action.d.ts.map +1 -1
  187. package/lib/hooks/use-default-action.js +11 -1
  188. package/lib/hooks/use-default-action.js.map +1 -1
  189. package/lib/hooks/use-effect-on-change.d.ts +6 -0
  190. package/lib/hooks/use-effect-on-change.d.ts.map +1 -1
  191. package/lib/hooks/use-effect-on-change.js +18 -1
  192. package/lib/hooks/use-effect-on-change.js.map +1 -1
  193. package/lib/hooks/use-focus-ring.d.ts +19 -0
  194. package/lib/hooks/use-focus-ring.d.ts.map +1 -1
  195. package/lib/hooks/use-focus-ring.js +21 -0
  196. package/lib/hooks/use-focus-ring.js.map +1 -1
  197. package/lib/hooks/use-hotkeys.d.ts +15 -1
  198. package/lib/hooks/use-hotkeys.d.ts.map +1 -1
  199. package/lib/hooks/use-hotkeys.js +18 -3
  200. package/lib/hooks/use-hotkeys.js.map +1 -1
  201. package/lib/hooks/use-persisted-state.d.ts +9 -0
  202. package/lib/hooks/use-persisted-state.d.ts.map +1 -1
  203. package/lib/hooks/use-persisted-state.js +9 -0
  204. package/lib/hooks/use-persisted-state.js.map +1 -1
  205. package/lib/hooks/use-scrollbars.d.ts +8 -1
  206. package/lib/hooks/use-scrollbars.d.ts.map +1 -1
  207. package/lib/hooks/use-scrollbars.js +19 -0
  208. package/lib/hooks/use-scrollbars.js.map +1 -1
  209. package/lib/hooks/use-sort.js +6 -0
  210. package/lib/hooks/use-sort.js.map +1 -1
  211. package/lib/hooks/use-stacked-component.d.ts +1 -1
  212. package/lib/hooks/use-stacked-component.d.ts.map +1 -1
  213. package/lib/hooks/use-stacked-component.js +1 -0
  214. package/lib/hooks/use-stacked-component.js.map +1 -1
  215. package/lib/hooks/use-theme.d.ts.map +1 -1
  216. package/lib/hooks/use-theme.js +10 -1
  217. package/lib/hooks/use-theme.js.map +1 -1
  218. package/lib/hooks/use-toast.d.ts +15 -0
  219. package/lib/hooks/use-toast.d.ts.map +1 -1
  220. package/lib/hooks/use-toast.js +30 -0
  221. package/lib/hooks/use-toast.js.map +1 -1
  222. package/lib/hooks/use-virtual-grid.d.ts +8 -0
  223. package/lib/hooks/use-virtual-grid.d.ts.map +1 -1
  224. package/lib/hooks/use-virtual-grid.js +29 -0
  225. package/lib/hooks/use-virtual-grid.js.map +1 -1
  226. package/lib/hooks/use-virtual-list-item-observer.js +23 -0
  227. package/lib/hooks/use-virtual-list-item-observer.js.map +1 -1
  228. package/lib/utils/format-date.js +2 -0
  229. package/lib/utils/format-date.js.map +1 -1
  230. package/lib/utils/merge-props.js +1 -0
  231. package/lib/utils/merge-props.js.map +1 -1
  232. package/lib/utils/rafraf.d.ts +10 -0
  233. package/lib/utils/rafraf.d.ts.map +1 -1
  234. package/lib/utils/rafraf.js +10 -0
  235. package/lib/utils/rafraf.js.map +1 -1
  236. package/package.json +10 -13
  237. package/lib/hooks/use-virtual-grid.test.d.ts +0 -2
  238. package/lib/hooks/use-virtual-grid.test.d.ts.map +0 -1
  239. package/lib/hooks/use-virtual-grid.test.js +0 -210
  240. package/lib/hooks/use-virtual-grid.test.js.map +0 -1
@@ -25,16 +25,30 @@ function getItemIndex(node) {
25
25
  }
26
26
  return Number(node.dataset.vlistItemIdx);
27
27
  }
28
+ /**
29
+ * Hook that adds support for the grid keyboard navigation while handling the
30
+ * focus using the roving tab index
31
+ *
32
+ * {@link https://www.w3.org/TR/wai-aria-1.1/#grid}
33
+ * {@link https://www.w3.org/TR/wai-aria-1.1/#gridcell}
34
+ * {@link https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_roving_tabindex}
35
+ */
28
36
  function useVirtualGridArrowNavigation({ colCount, rowCount, itemsCount, resetActiveItemOnBlur = true, pageSize = 3, defaultCurrentTabbable = 0, onFocusMove, }) {
29
37
  const rootNode = (0, react_1.useRef)(null);
30
38
  const [tabIndex, setTabIndex] = (0, react_1.useState)(0);
31
39
  const [currentTabbable, setCurrentTabbable] = (0, react_1.useState)(defaultCurrentTabbable);
32
40
  const onFocus = (0, react_1.useCallback)((evt) => {
41
+ // If we received focus on the grid container itself, this is a keyboard
42
+ // navigation, disable focus on the container to trigger a focus effect
43
+ // for the currentTabbable element
33
44
  if (evt.target === evt.currentTarget) {
34
45
  setTabIndex(-1);
35
46
  }
36
47
  else {
37
48
  const focusedItem = closest(evt.target, vgridItemSelector());
49
+ // If focus was received somewhere inside grid item, disable focus on
50
+ // the container and mark item that got the interaction as the
51
+ // `currentTabbable` item
38
52
  if (focusedItem) {
39
53
  setTabIndex(-1);
40
54
  setCurrentTabbable(getItemIndex(focusedItem));
@@ -43,6 +57,8 @@ function useVirtualGridArrowNavigation({ colCount, rowCount, itemsCount, resetAc
43
57
  }, [defaultCurrentTabbable]);
44
58
  const onBlur = (0, react_1.useCallback)(() => {
45
59
  const isFocusInside = closest(document.activeElement, (node) => node === rootNode.current) !== null;
60
+ // If focus is outside of the grid container, make the whole container
61
+ // focusable again and reset tabbable item if needed
46
62
  if (!isFocusInside) {
47
63
  setTabIndex(0);
48
64
  if (resetActiveItemOnBlur) {
@@ -52,8 +68,13 @@ function useVirtualGridArrowNavigation({ colCount, rowCount, itemsCount, resetAc
52
68
  }, [resetActiveItemOnBlur, defaultCurrentTabbable]);
53
69
  const onMouseDown = (0, react_1.useCallback)((evt) => {
54
70
  const gridItem = closest(evt.target, vgridItemSelector());
71
+ // If mousedown didn't originate in one of the grid items (we just clicked
72
+ // some empty space in the grid container), prevent default behavior to stop
73
+ // focus on the grid container from happening
55
74
  if (!gridItem) {
56
75
  evt.preventDefault();
76
+ // Simulate active element blur that normally happens when clicking a
77
+ // non-focusable element
57
78
  document.activeElement?.blur();
58
79
  }
59
80
  }, []);
@@ -130,11 +151,19 @@ function useVirtualGridArrowNavigation({ colCount, rowCount, itemsCount, resetAc
130
151
  }, [currentTabbable, itemsCount, rowCount, colCount, pageSize]);
131
152
  const activeCurrentTabbable = tabIndex === 0 ? -1 : currentTabbable;
132
153
  (0, react_1.useEffect)(() => {
154
+ // If we have an active current tabbable item (there is a focus somewhere in
155
+ // the grid container) ...
133
156
  if (activeCurrentTabbable >= 0) {
134
157
  const gridItem = closest(document.activeElement, vgridItemSelector());
135
158
  const shouldMoveFocus = !gridItem || getItemIndex(gridItem) !== activeCurrentTabbable;
159
+ // ... and this item is currently not focused ...
136
160
  if (shouldMoveFocus) {
161
+ // ... communicate that there will be a focus change happening (this is
162
+ // needed so that we can scroll invisible virtual item into view if
163
+ // needed) ...
137
164
  onFocusMove(activeCurrentTabbable);
165
+ // ... and trigger a focus on the element after a frame delay, so that
166
+ // the item has time to scroll into view and render if needed
138
167
  const cancel = (0, rafraf_1.rafraf)(() => {
139
168
  rootNode.current
140
169
  ?.querySelector(vgridItemSelector(currentTabbable))
@@ -1 +1 @@
1
- {"version":3,"file":"use-virtual-grid.js","sourceRoot":"","sources":["../../src/hooks/use-virtual-grid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-virtual-grid.js","sourceRoot":"","sources":["../../src/hooks/use-virtual-grid.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,16 @@ const useVirtualListItemObserver = ({ listRef, items, rowGap, estimateItemInitia
7
7
  const [itemsHeights, setItemsHeights] = (0, react_1.useState)(items.map(estimateItemInitialHeight));
8
8
  const itemsHeightsRef = (0, react_1.useRef)(itemsHeights);
9
9
  itemsHeightsRef.current = itemsHeights;
10
+ // A WeakMap of observed elements to their index in the virtual list so that
11
+ // when the observed element changes, we can update the respective index with
12
+ // the modified height.
10
13
  const observedElements = (0, react_1.useRef)(new WeakMap());
14
+ // It will happen from time to time that the observed element will change its
15
+ // height while the resize notification is being delivered. This results in
16
+ // endless loop which gets terminated with an error event. To avoid having the
17
+ // loop terminated error we perform the side effect on resizes (resizing the
18
+ // underlying element while notifying) in the next frame to allow the current
19
+ // notification to get delivered.
11
20
  const oldRaf = (0, react_1.useRef)();
12
21
  const resizeObserver = (0, react_1.useMemo)(() => {
13
22
  return new ResizeObserver((entries) => {
@@ -16,6 +25,9 @@ const useVirtualListItemObserver = ({ listRef, items, rowGap, estimateItemInitia
16
25
  oldRaf.current = undefined;
17
26
  }
18
27
  oldRaf.current = requestAnimationFrame(() => {
28
+ // We use a number list but as a sparse list so that only the indexes
29
+ // for which the heights actually changed gets applied on top of old
30
+ // recorded heights.
19
31
  const sparseModifiedIndexes = [];
20
32
  for (const { target, contentRect } of entries) {
21
33
  if (target instanceof HTMLDivElement) {
@@ -25,6 +37,11 @@ const useVirtualListItemObserver = ({ listRef, items, rowGap, estimateItemInitia
25
37
  }
26
38
  }
27
39
  }
40
+ // Instead of using the setState with a callback to update itemHeights
41
+ // state we rely on a ref to retrieve the current value of the
42
+ // itemHeights state because we also want to reset the VariableSizeList
43
+ // after the first modified index so that the list can pick up the new
44
+ // heights but only when there was actually an update otherwise not.
28
45
  const previousHeights = [...itemsHeightsRef.current];
29
46
  const newHeights = Object.assign(new Array(), previousHeights, sparseModifiedIndexes);
30
47
  if ((0, lodash_1.isEqual)(previousHeights, newHeights)) {
@@ -32,6 +49,9 @@ const useVirtualListItemObserver = ({ listRef, items, rowGap, estimateItemInitia
32
49
  return;
33
50
  }
34
51
  setItemsHeights(newHeights);
52
+ // Since we have sparse list holding the indexes that actually changed,
53
+ // we use that to find the first modified index after which the list
54
+ // should re-render with the updated height
35
55
  const indexToResetAfter = sparseModifiedIndexes.findIndex((height) => typeof height === 'number');
36
56
  if (indexToResetAfter !== -1) {
37
57
  listRef.current?.resetAfterIndex(indexToResetAfter);
@@ -41,6 +61,9 @@ const useVirtualListItemObserver = ({ listRef, items, rowGap, estimateItemInitia
41
61
  });
42
62
  }, []);
43
63
  const getItemSize = (0, react_1.useCallback)((idx) => {
64
+ // It can happen that there are new items added to the list (when docs per
65
+ // page changes) in which case we won't have their heights in our state
66
+ // hence we fallback to estimating initial document heights.
44
67
  const itemHeight = itemsHeights[idx] ?? estimateItemInitialHeight(items[idx]);
45
68
  if (rowGap !== undefined && idx !== items.length - 1) {
46
69
  return itemHeight + rowGap;
@@ -1 +1 @@
1
- {"version":3,"file":"use-virtual-list-item-observer.js","sourceRoot":"","sources":["../../src/hooks/use-virtual-list-item-observer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-virtual-list-item-observer.js","sourceRoot":"","sources":["../../src/hooks/use-virtual-list-item-observer.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,12 @@ const HOUR = MINUTE * 60;
7
7
  const DAY = HOUR * 24;
8
8
  const WEEK = DAY * 7;
9
9
  const MONTH = WEEK * 4;
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
11
  const relativeDateFormatter = new Intl.RelativeTimeFormat('en', {
11
12
  numeric: 'auto',
12
13
  });
13
14
  const absoluteDateFormatter = new Intl.DateTimeFormat('en', {
15
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
16
  dateStyle: 'long',
15
17
  });
16
18
  const formatScale = {
@@ -1 +1 @@
1
- {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../src/utils/format-date.ts"],"names":[],"mappings":";;;AAAA,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;AAGvB,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;IAC9D,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAE1D,SAAS,EAAE,MAAM;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAgB,UAAU,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,GAAoC,IAAI,CAAC;IAEvD,IAAI,QAAQ,GAAG,MAAM,EAAE;QACrB,UAAU,GAAG,QAAQ,CAAC;KACvB;SAAM,IAAI,QAAQ,GAAG,IAAI,EAAE;QAC1B,UAAU,GAAG,QAAQ,CAAC;KACvB;SAAM,IAAI,QAAQ,GAAG,GAAG,EAAE;QACzB,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM,IAAI,QAAQ,GAAG,IAAI,EAAE;QAC1B,UAAU,GAAG,KAAK,CAAC;KACpB;SAAM,IAAI,QAAQ,GAAG,KAAK,EAAE;QAC3B,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM;QACL,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3C;IAED,OAAO,qBAAqB,CAAC,MAAM,CACjC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,EAC/C,UAAU,CACX,CAAC;AACJ,CAAC;AAtBD,gCAsBC"}
1
+ {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../src/utils/format-date.ts"],"names":[],"mappings":";;;AAAA,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;AAEvB,6DAA6D;AAC7D,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;IAC9D,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC1D,6DAA6D;IAC7D,SAAS,EAAE,MAAM;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAgB,UAAU,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,GAAoC,IAAI,CAAC;IAEvD,IAAI,QAAQ,GAAG,MAAM,EAAE;QACrB,UAAU,GAAG,QAAQ,CAAC;KACvB;SAAM,IAAI,QAAQ,GAAG,IAAI,EAAE;QAC1B,UAAU,GAAG,QAAQ,CAAC;KACvB;SAAM,IAAI,QAAQ,GAAG,GAAG,EAAE;QACzB,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM,IAAI,QAAQ,GAAG,IAAI,EAAE;QAC1B,UAAU,GAAG,KAAK,CAAC;KACpB;SAAM,IAAI,QAAQ,GAAG,KAAK,EAAE;QAC3B,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM;QACL,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3C;IAED,OAAO,qBAAqB,CAAC,MAAM,CACjC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,EAC/C,UAAU,CACX,CAAC;AACJ,CAAC;AAtBD,gCAsBC"}
@@ -5,6 +5,7 @@ const utils_1 = require("@react-aria/utils");
5
5
  function mergeProps(...props) {
6
6
  const propsWithRefs = props.filter((prop) => prop.ref);
7
7
  return {
8
+ // This mergeProps method can handle callbacks and class names, but not refs
8
9
  ...(0, utils_1.mergeProps)(...props),
9
10
  ...(propsWithRefs.length > 0 && {
10
11
  ref(val) {
@@ -1 +1 @@
1
- {"version":3,"file":"merge-props.js","sourceRoot":"","sources":["../../src/utils/merge-props.ts"],"names":[],"mappings":";;;AACA,6CAA8D;AAE9D,SAAgB,UAAU,CACxB,GAAG,KAA2B;IAE9B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO;QAEL,GAAG,IAAA,kBAAW,EAAC,GAAG,KAAK,CAAC;QACxB,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI;YAC9B,GAAG,CAAC,GAAM;gBACR,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;oBAChC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;wBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC;qBACV;yBAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wBACxC,GAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;qBAClD;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAnBD,gCAmBC"}
1
+ {"version":3,"file":"merge-props.js","sourceRoot":"","sources":["../../src/utils/merge-props.ts"],"names":[],"mappings":";;;AACA,6CAA8D;AAE9D,SAAgB,UAAU,CACxB,GAAG,KAA2B;IAE9B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO;QACL,4EAA4E;QAC5E,GAAG,IAAA,kBAAW,EAAC,GAAG,KAAK,CAAC;QACxB,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI;YAC9B,GAAG,CAAC,GAAM;gBACR,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;oBAChC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;wBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC;qBACV;yBAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wBACxC,GAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;qBAClD;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAnBD,gCAmBC"}
@@ -1,2 +1,12 @@
1
+ /**
2
+ * Helper method to do something after skipping a few frames. Useful when
3
+ * something needs to happen after browser handled layout related operations,
4
+ * like focusing an element or repainting
5
+ *
6
+ * Scheduling one rAF inside another rAF ensures that we will wait until next
7
+ * frame, see https://medium.com/@paul_irish/requestanimationframe-scheduling-for-nerds-9c57f7438ef4
8
+ *
9
+ * Returns a function to abort fn
10
+ */
1
11
  export declare function rafraf(fn: FrameRequestCallback): () => void;
2
12
  //# sourceMappingURL=rafraf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rafraf.d.ts","sourceRoot":"","sources":["../../src/utils/rafraf.ts"],"names":[],"mappings":"AAUA,wBAAgB,MAAM,CAAC,EAAE,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAW3D"}
1
+ {"version":3,"file":"rafraf.d.ts","sourceRoot":"","sources":["../../src/utils/rafraf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAW3D"}
@@ -1,6 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rafraf = void 0;
4
+ /**
5
+ * Helper method to do something after skipping a few frames. Useful when
6
+ * something needs to happen after browser handled layout related operations,
7
+ * like focusing an element or repainting
8
+ *
9
+ * Scheduling one rAF inside another rAF ensures that we will wait until next
10
+ * frame, see https://medium.com/@paul_irish/requestanimationframe-scheduling-for-nerds-9c57f7438ef4
11
+ *
12
+ * Returns a function to abort fn
13
+ */
4
14
  function rafraf(fn) {
5
15
  const controller = new AbortController();
6
16
  requestAnimationFrame(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"rafraf.js","sourceRoot":"","sources":["../../src/utils/rafraf.ts"],"names":[],"mappings":";;;AAUA,SAAgB,MAAM,CAAC,EAAwB;IAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,qBAAqB,CAAC,GAAG,EAAE;QACzB,qBAAqB,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACtC,EAAE,CAAC,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAXD,wBAWC"}
1
+ {"version":3,"file":"rafraf.js","sourceRoot":"","sources":["../../src/utils/rafraf.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,SAAgB,MAAM,CAAC,EAAwB;IAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,qBAAqB,CAAC,GAAG,EAAE;QACzB,qBAAqB,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACtC,EAAE,CAAC,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE;QACV,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAXD,wBAWC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongodb-js/compass-components",
3
- "version": "1.29.3",
3
+ "version": "1.30.1",
4
4
  "description": "React Components used in Compass",
5
5
  "license": "SSPL",
6
6
  "main": "lib/index.js",
@@ -48,7 +48,7 @@
48
48
  "@leafygreen-ui/icon-button": "^15.0.20",
49
49
  "@leafygreen-ui/info-sprinkle": "^1.0.3",
50
50
  "@leafygreen-ui/inline-definition": "^6.0.14",
51
- "@leafygreen-ui/leafygreen-provider": "^3.1.11",
51
+ "@leafygreen-ui/leafygreen-provider": "^3.1.12",
52
52
  "@leafygreen-ui/lib": "^13.2.1",
53
53
  "@leafygreen-ui/logo": "^9.1.1",
54
54
  "@leafygreen-ui/marketing-modal": "^4.2.1",
@@ -76,10 +76,10 @@
76
76
  "@react-aria/interactions": "^3.9.1",
77
77
  "@react-aria/utils": "^3.13.1",
78
78
  "@react-aria/visually-hidden": "^3.3.1",
79
- "bson": "^6.7.0",
79
+ "bson": "^6.8.0",
80
80
  "focus-trap-react": "^9.0.2",
81
- "hadron-document": "^8.6.2",
82
- "hadron-type-checker": "^7.2.2",
81
+ "hadron-document": "^8.6.4",
82
+ "hadron-type-checker": "^7.2.3",
83
83
  "is-electron-renderer": "^2.0.1",
84
84
  "lodash": "^4.17.21",
85
85
  "polished": "^4.2.2",
@@ -92,14 +92,11 @@
92
92
  },
93
93
  "devDependencies": {
94
94
  "@emotion/css": "^11.11.2",
95
- "@mongodb-js/eslint-config-compass": "^1.1.6",
96
- "@mongodb-js/mocha-config-compass": "^1.4.1",
95
+ "@mongodb-js/eslint-config-compass": "^1.1.7",
96
+ "@mongodb-js/mocha-config-compass": "^1.4.2",
97
97
  "@mongodb-js/prettier-config-compass": "^1.0.2",
98
- "@mongodb-js/tsconfig-compass": "^1.0.4",
99
- "@testing-library/dom": "^8.20.1",
100
- "@testing-library/react": "^12.1.5",
101
- "@testing-library/react-hooks": "^7.0.2",
102
- "@testing-library/user-event": "^13.5.0",
98
+ "@mongodb-js/testing-library-compass": "^1.0.2",
99
+ "@mongodb-js/tsconfig-compass": "^1.0.5",
103
100
  "@types/chai": "^4.2.21",
104
101
  "@types/chai-dom": "^0.0.10",
105
102
  "@types/mocha": "^9.0.0",
@@ -121,5 +118,5 @@
121
118
  "publishConfig": {
122
119
  "access": "public"
123
120
  },
124
- "gitHead": "610f66813a9fa7e0b5240896a273be0e90e60d50"
121
+ "gitHead": "b35fb1b3fc1c73d009c0d2601fe1c3a4f699de29"
125
122
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=use-virtual-grid.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-virtual-grid.test.d.ts","sourceRoot":"","sources":["../../src/hooks/use-virtual-grid.test.tsx"],"names":[],"mappings":""}
@@ -1,210 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const react_2 = require("@testing-library/react");
8
- const user_event_1 = __importDefault(require("@testing-library/user-event"));
9
- const chai_1 = require("chai");
10
- const use_virtual_grid_1 = require("./use-virtual-grid");
11
- const TestGrid = ({ rowCount = 5, colCount = 3, onFocusMove = () => {
12
- }, defaultCurrentTabbable, }) => {
13
- const [arrowNavigationProps, currentTabbable] = (0, use_virtual_grid_1.useVirtualGridArrowNavigation)({
14
- rowCount,
15
- colCount,
16
- itemsCount: rowCount * colCount,
17
- defaultCurrentTabbable,
18
- onFocusMove,
19
- });
20
- return (react_1.default.createElement("div", { role: "grid", "aria-rowcount": rowCount, ...arrowNavigationProps }, Array.from({ length: rowCount }, (_, row) => (react_1.default.createElement("div", { key: row, role: "row", "aria-rowindex": row + 1 }, Array.from({ length: colCount }, (_, col) => {
21
- const idx = row * colCount + col;
22
- return (react_1.default.createElement("div", { role: "cell", "data-vlist-item-idx": idx, tabIndex: currentTabbable === idx ? 0 : -1 },
23
- row + 1,
24
- "-",
25
- col + 1));
26
- }))))));
27
- };
28
- describe('virtual grid keyboard navigation', function () {
29
- let originalRequestAnimationFrame;
30
- before(function () {
31
- originalRequestAnimationFrame = globalThis.requestAnimationFrame;
32
- globalThis.requestAnimationFrame = (fn) => fn();
33
- });
34
- after(function () {
35
- globalThis.requestAnimationFrame = originalRequestAnimationFrame;
36
- });
37
- afterEach(react_2.cleanup);
38
- it('should move focus to the first tabbable element on focus', function () {
39
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
40
- user_event_1.default.tab();
41
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
42
- });
43
- describe('Right Arrow', function () {
44
- it('should move focus one cell to the right', function () {
45
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
46
- user_event_1.default.tab();
47
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
48
- user_event_1.default.keyboard('{arrowright}');
49
- (0, chai_1.expect)(react_2.screen.getByText('1-2')).to.eq(document.activeElement);
50
- });
51
- it('when focus is on the right-most cell in the row, should move focus to the first cell in the following row', function () {
52
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 2 }));
53
- user_event_1.default.tab();
54
- (0, chai_1.expect)(react_2.screen.getByText('1-3')).to.eq(document.activeElement);
55
- user_event_1.default.keyboard('{arrowright}');
56
- (0, chai_1.expect)(react_2.screen.getByText('2-1')).to.eq(document.activeElement);
57
- });
58
- it('when focus is on the last cell in the grid, focus should not move', function () {
59
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 14 }));
60
- user_event_1.default.tab();
61
- (0, chai_1.expect)(react_2.screen.getByText('5-3')).to.eq(document.activeElement);
62
- user_event_1.default.keyboard('{arrowright}');
63
- (0, chai_1.expect)(react_2.screen.getByText('5-3')).to.eq(document.activeElement);
64
- });
65
- });
66
- describe('Left Arrow', function () {
67
- it('should move focus one cell to the left', function () {
68
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 1 }));
69
- user_event_1.default.tab();
70
- (0, chai_1.expect)(react_2.screen.getByText('1-2')).to.eq(document.activeElement);
71
- user_event_1.default.keyboard('{arrowleft}');
72
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
73
- });
74
- it('when focus is on the left-most cell in the row, should move focus to the last cell in the previous row', function () {
75
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 3 }));
76
- user_event_1.default.tab();
77
- (0, chai_1.expect)(react_2.screen.getByText('2-1')).to.eq(document.activeElement);
78
- user_event_1.default.keyboard('{arrowleft}');
79
- (0, chai_1.expect)(react_2.screen.getByText('1-3')).to.eq(document.activeElement);
80
- });
81
- it('when focus is on the first cell in the grid, focus should not move', function () {
82
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
83
- user_event_1.default.tab();
84
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
85
- user_event_1.default.keyboard('{arrowleft}');
86
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
87
- });
88
- });
89
- describe('Down Arrow', function () {
90
- it('should move focus to the next logical row', function () {
91
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
92
- user_event_1.default.tab();
93
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
94
- user_event_1.default.keyboard('{arrowdown}');
95
- (0, chai_1.expect)(react_2.screen.getByText('2-1')).to.eq(document.activeElement);
96
- });
97
- it('when focus is in the last logical row, focus should not move', function () {
98
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 12 }));
99
- user_event_1.default.tab();
100
- (0, chai_1.expect)(react_2.screen.getByText('5-1')).to.eq(document.activeElement);
101
- user_event_1.default.keyboard('{arrowdown}');
102
- (0, chai_1.expect)(react_2.screen.getByText('5-1')).to.eq(document.activeElement);
103
- });
104
- it('when there is only one logical row, focus moves to the next cell', function () {
105
- (0, react_2.render)(react_1.default.createElement(TestGrid, { rowCount: 1 }));
106
- user_event_1.default.tab();
107
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
108
- user_event_1.default.keyboard('{arrowdown}');
109
- (0, chai_1.expect)(react_2.screen.getByText('1-2')).to.eq(document.activeElement);
110
- });
111
- });
112
- describe('Up Arrow', function () {
113
- it('should move focus to the previous logical row', function () {
114
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 3 }));
115
- user_event_1.default.tab();
116
- (0, chai_1.expect)(react_2.screen.getByText('2-1')).to.eq(document.activeElement);
117
- user_event_1.default.keyboard('{arrowup}');
118
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
119
- });
120
- it('when focus is in the first logical row, focus should not move', function () {
121
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 1 }));
122
- user_event_1.default.tab();
123
- (0, chai_1.expect)(react_2.screen.getByText('1-2')).to.eq(document.activeElement);
124
- user_event_1.default.keyboard('{arrowup}');
125
- (0, chai_1.expect)(react_2.screen.getByText('1-2')).to.eq(document.activeElement);
126
- });
127
- it('when there is only one logical row, should move focus to the previous cell', function () {
128
- (0, react_2.render)(react_1.default.createElement(TestGrid, { rowCount: 1, defaultCurrentTabbable: 1 }));
129
- user_event_1.default.tab();
130
- (0, chai_1.expect)(react_2.screen.getByText('1-2')).to.eq(document.activeElement);
131
- user_event_1.default.keyboard('{arrowup}');
132
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
133
- });
134
- });
135
- describe('Page Down', function () {
136
- it('should move focus 3 rows down', function () {
137
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
138
- user_event_1.default.tab();
139
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
140
- user_event_1.default.keyboard('{pagedown}');
141
- (0, chai_1.expect)(react_2.screen.getByText('4-1')).to.eq(document.activeElement);
142
- });
143
- it('when focus is in the last row, focus should not move', function () {
144
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 12 }));
145
- user_event_1.default.tab();
146
- (0, chai_1.expect)(react_2.screen.getByText('5-1')).to.eq(document.activeElement);
147
- user_event_1.default.keyboard('{pagedown}');
148
- (0, chai_1.expect)(react_2.screen.getByText('5-1')).to.eq(document.activeElement);
149
- });
150
- });
151
- describe('Page Up', function () {
152
- it('should move focus 3 rows up', function () {
153
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 9 }));
154
- user_event_1.default.tab();
155
- (0, chai_1.expect)(react_2.screen.getByText('4-1')).to.eq(document.activeElement);
156
- user_event_1.default.keyboard('{pageup}');
157
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
158
- });
159
- it('when focus is in the first row, focus should not move', function () {
160
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
161
- user_event_1.default.tab();
162
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
163
- user_event_1.default.keyboard('{pageup}');
164
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
165
- });
166
- });
167
- describe('Home', function () {
168
- it('should move focus to the first cell in the row that contains focus', function () {
169
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 4 }));
170
- user_event_1.default.tab();
171
- (0, chai_1.expect)(react_2.screen.getByText('2-2')).to.eq(document.activeElement);
172
- user_event_1.default.keyboard('{home}');
173
- (0, chai_1.expect)(react_2.screen.getByText('2-1')).to.eq(document.activeElement);
174
- });
175
- });
176
- describe('End', function () {
177
- it('should move focus to the last cell in the row that contains focus', function () {
178
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 4 }));
179
- user_event_1.default.tab();
180
- (0, chai_1.expect)(react_2.screen.getByText('2-2')).to.eq(document.activeElement);
181
- user_event_1.default.keyboard('{end}');
182
- (0, chai_1.expect)(react_2.screen.getByText('2-3')).to.eq(document.activeElement);
183
- });
184
- });
185
- describe('Control + Home', function () {
186
- it('should move focus to the first cell in the first row', function () {
187
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 4 }));
188
- user_event_1.default.tab();
189
- (0, chai_1.expect)(react_2.screen.getByText('2-2')).to.eq(document.activeElement);
190
- user_event_1.default.keyboard('{ctrl}{home}{/ctrl}');
191
- (0, chai_1.expect)(react_2.screen.getByText('1-1')).to.eq(document.activeElement);
192
- });
193
- });
194
- describe('Control + End', function () {
195
- it('should move focus to the last cell in the last row', function () {
196
- (0, react_2.render)(react_1.default.createElement(TestGrid, { defaultCurrentTabbable: 4 }));
197
- user_event_1.default.tab();
198
- (0, chai_1.expect)(react_2.screen.getByText('2-2')).to.eq(document.activeElement);
199
- user_event_1.default.keyboard('{ctrl}{end}{/ctrl}');
200
- (0, chai_1.expect)(react_2.screen.getByText('5-3')).to.eq(document.activeElement);
201
- });
202
- });
203
- it('should keep focus on the element that was interacted with', function () {
204
- (0, react_2.render)(react_1.default.createElement(TestGrid, null));
205
- (0, chai_1.expect)(document.body).to.eq(document.activeElement);
206
- user_event_1.default.click(react_2.screen.getByText('2-3'));
207
- (0, chai_1.expect)(react_2.screen.getByText('2-3')).to.eq(document.activeElement);
208
- });
209
- });
210
- //# sourceMappingURL=use-virtual-grid.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-virtual-grid.test.js","sourceRoot":"","sources":["../../src/hooks/use-virtual-grid.test.tsx"],"names":[],"mappings":"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"}