@graphprotocol/gds-react 0.2.2 → 0.2.3

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 (56) hide show
  1. package/dist/components/Address.d.ts +2 -2
  2. package/dist/components/Address.d.ts.map +1 -1
  3. package/dist/components/Address.js.map +1 -1
  4. package/dist/components/Avatar.d.ts +2 -2
  5. package/dist/components/Avatar.d.ts.map +1 -1
  6. package/dist/components/Avatar.js.map +1 -1
  7. package/dist/components/Breadcrumbs.parts.d.ts +2 -2
  8. package/dist/components/Breadcrumbs.parts.d.ts.map +1 -1
  9. package/dist/components/Breadcrumbs.parts.js.map +1 -1
  10. package/dist/components/Button.d.ts +2 -2
  11. package/dist/components/Button.d.ts.map +1 -1
  12. package/dist/components/Button.js.map +1 -1
  13. package/dist/components/Card.d.ts +4 -6
  14. package/dist/components/Card.d.ts.map +1 -1
  15. package/dist/components/Card.js.map +1 -1
  16. package/dist/components/Chip.parts.d.ts +2 -2
  17. package/dist/components/Chip.parts.d.ts.map +1 -1
  18. package/dist/components/Chip.parts.js.map +1 -1
  19. package/dist/components/Cluster.d.ts +4 -6
  20. package/dist/components/Cluster.d.ts.map +1 -1
  21. package/dist/components/Cluster.js.map +1 -1
  22. package/dist/components/Icon.d.ts +2 -1
  23. package/dist/components/Icon.d.ts.map +1 -1
  24. package/dist/components/Icon.js.map +1 -1
  25. package/dist/components/Menu.parts.d.ts.map +1 -1
  26. package/dist/components/Menu.parts.js +112 -106
  27. package/dist/components/Menu.parts.js.map +1 -1
  28. package/dist/components/Modal.parts.d.ts.map +1 -1
  29. package/dist/components/Modal.parts.js +2 -2
  30. package/dist/components/Modal.parts.js.map +1 -1
  31. package/dist/components/Pane.parts.d.ts.map +1 -1
  32. package/dist/components/Pane.parts.js +8 -5
  33. package/dist/components/Pane.parts.js.map +1 -1
  34. package/dist/components/Tooltip.parts.d.ts.map +1 -1
  35. package/dist/components/Tooltip.parts.js +7 -6
  36. package/dist/components/Tooltip.parts.js.map +1 -1
  37. package/dist/components/base/ButtonOrLink.parts.d.ts.map +1 -1
  38. package/dist/components/base/ButtonOrLink.parts.js.map +1 -1
  39. package/dist/components/index.d.ts +1 -1
  40. package/dist/components/index.d.ts.map +1 -1
  41. package/dist/components/index.js.map +1 -1
  42. package/package.json +18 -18
  43. package/src/components/Address.tsx +3 -5
  44. package/src/components/Avatar.tsx +3 -5
  45. package/src/components/Breadcrumbs.parts.tsx +7 -5
  46. package/src/components/Button.tsx +3 -2
  47. package/src/components/Card.tsx +3 -5
  48. package/src/components/Chip.parts.tsx +3 -2
  49. package/src/components/Cluster.tsx +5 -8
  50. package/src/components/Icon.tsx +3 -1
  51. package/src/components/Menu.parts.tsx +37 -6
  52. package/src/components/Modal.parts.tsx +3 -2
  53. package/src/components/Pane.parts.tsx +13 -5
  54. package/src/components/Tooltip.parts.tsx +18 -15
  55. package/src/components/base/ButtonOrLink.parts.tsx +3 -6
  56. package/src/components/index.ts +1 -1
@@ -123,8 +123,8 @@ export function TooltipRoot({
123
123
  const triggerPassedRef = useMergedRefs(
124
124
  /**
125
125
  * Conditionally setting the ref to force the tooltip to refresh its position when `enabled`
126
- * changes, preventing it from moving to the viewport's top-left corner in some cases (e.g. when
127
- * `CopyButton` returns to its default tooltip).
126
+ * changes, preventing it from moving to the top left corner of the viewport in some cases (e.g.
127
+ * when `CopyButton` returns to its default tooltip).
128
128
  */
129
129
  enabled ? triggerRef : undefined,
130
130
  (passedTriggerProps === 'forward' ? passedRef : passedTriggerProps?.ref) as
@@ -207,10 +207,22 @@ export function TooltipRoot({
207
207
  render={children}
208
208
  {...renderProps}
209
209
  disabled={triggerDisabled}
210
- onClick={triggerProps?.onClick} // Prevent the tooltip re-opening after clicking e.g. a `Menu` trigger
210
+ onClick={triggerProps?.onClick} // Prevent re-opening the tooltip after clicking e.g. a `Menu` trigger
211
211
  />
212
212
  )}
213
213
  />
214
+ {/* Ensure changes to CSS props are detected even when the tooltip is not mounted */}
215
+ <Portal>
216
+ <span
217
+ ref={cssPropsPolyfillRef}
218
+ className={cn('gds-tooltip i:invisible i:block', className)}
219
+ {...cssPropsAttributes}
220
+ {...cssPropsPolyfillAttributes}
221
+ {...dirProps}
222
+ {...popupProps}
223
+ hidden={undefined}
224
+ />
225
+ </Portal>
214
226
  <Tooltip.Portal>
215
227
  <Tooltip.Positioner
216
228
  key={getReactNodeKey(content)} // Refresh the tooltip's position when the content changes (see `WithDynamicContent` story)
@@ -224,9 +236,10 @@ export function TooltipRoot({
224
236
  sideOffset={twToPx(cssProps.gap)}
225
237
  align={cssProps.align}
226
238
  alignOffset={twToPx(cssProps.alignOffset)}
227
- collisionPadding={8}
228
- disableAnchorTracking // Prevent the tooltip from moving to the viewport's top-left corner when the trigger is unmounted
239
+ collisionPadding={4}
240
+ disableAnchorTracking // Feels weird for a tooltip to follow e.g. a pane's X button when closing the pane
229
241
  {...dirProps}
242
+ className="i:data-anchor-hidden:hidden" // Prevent moving to the top left corner when the trigger is hidden or unmounted
230
243
  >
231
244
  <Tooltip.Popup
232
245
  ref={popupRef}
@@ -251,16 +264,6 @@ export function TooltipRoot({
251
264
  </Tooltip.Popup>
252
265
  </Tooltip.Positioner>
253
266
  </Tooltip.Portal>
254
- {/* Ensure changes to CSS props are detected even when the tooltip is not mounted */}
255
- <Portal>
256
- <span
257
- ref={cssPropsPolyfillRef}
258
- className={cn('gds-tooltip i:invisible', className)}
259
- {...cssPropsAttributes}
260
- {...cssPropsPolyfillAttributes}
261
- {...popupProps}
262
- />
263
- </Portal>
264
267
  </Tooltip.Root>
265
268
  </TooltipContext.Provider>
266
269
  )
@@ -135,15 +135,12 @@ type WithContextComponent<T extends ElementType> = (
135
135
  props: Merge<ComponentProps<T>, ButtonOrLinkRenderElementProps>,
136
136
  ) => ReactElement
137
137
 
138
- const memoizedWithContextComponents = new Map<ElementType, WithContextComponent<ElementType>>()
138
+ const memoizedWithContextComponents = new Map<ElementType, unknown>()
139
139
 
140
140
  function withContext<T extends ElementType>(Element: T): WithContextComponent<T> {
141
141
  const cached = memoizedWithContextComponents.get(Element)
142
- if (cached) return cached
143
- const newWithContextComponent: WithContextComponent<ElementType> = ({
144
- buttonOrLinkState,
145
- ...props
146
- }) => (
142
+ if (cached) return cached as WithContextComponent<T>
143
+ const newWithContextComponent: WithContextComponent<T> = ({ buttonOrLinkState, ...props }) => (
147
144
  <ButtonOrLinkContext.Provider value={buttonOrLinkState}>
148
145
  <Element {...(props as ComponentProps<T>)} />
149
146
  </ButtonOrLinkContext.Provider>
@@ -34,7 +34,7 @@ export {
34
34
  export { DescriptionListItemMeta, DescriptionListMeta } from './DescriptionList.meta.ts'
35
35
  export { Divider, type DividerProps } from './Divider.tsx'
36
36
  export { DividerMeta } from './Divider.meta.ts'
37
- export { Icon, type IconProps, type IconPropsWithSrc } from './Icon.tsx'
37
+ export { Icon, type IconProps, type IconSrc, type IconPropsWithSrc } from './Icon.tsx'
38
38
  export { IconMeta } from './Icon.meta.ts'
39
39
  export { Input, type InputProps, type InputState } from './Input.tsx'
40
40
  export { InputMeta } from './Input.meta.ts'