@tamagui/select 1.30.29 → 1.31.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 (45) hide show
  1. package/dist/cjs/Select.js +15 -3
  2. package/dist/cjs/Select.js.map +2 -2
  3. package/dist/cjs/SelectImpl.js +13 -7
  4. package/dist/cjs/SelectImpl.js.map +1 -1
  5. package/dist/cjs/SelectScrollButton.js +17 -35
  6. package/dist/cjs/SelectScrollButton.js.map +1 -1
  7. package/dist/cjs/SelectViewport.js +6 -1
  8. package/dist/cjs/SelectViewport.js.map +1 -1
  9. package/dist/esm/Select.js +15 -3
  10. package/dist/esm/Select.js.map +2 -2
  11. package/dist/esm/SelectImpl.js +13 -8
  12. package/dist/esm/SelectImpl.js.map +1 -1
  13. package/dist/esm/SelectScrollButton.js +17 -35
  14. package/dist/esm/SelectScrollButton.js.map +1 -1
  15. package/dist/esm/SelectViewport.js +7 -2
  16. package/dist/esm/SelectViewport.js.map +1 -1
  17. package/dist/jsx/Select.js +13 -3
  18. package/dist/jsx/Select.js.map +1 -1
  19. package/dist/jsx/Select.mjs +13 -3
  20. package/dist/jsx/Select.mjs.map +1 -1
  21. package/dist/jsx/SelectImpl.js +13 -8
  22. package/dist/jsx/SelectImpl.js.map +1 -1
  23. package/dist/jsx/SelectImpl.mjs +13 -8
  24. package/dist/jsx/SelectImpl.mjs.map +1 -1
  25. package/dist/jsx/SelectScrollButton.js +15 -33
  26. package/dist/jsx/SelectScrollButton.js.map +1 -1
  27. package/dist/jsx/SelectScrollButton.mjs +15 -33
  28. package/dist/jsx/SelectScrollButton.mjs.map +1 -1
  29. package/dist/jsx/SelectViewport.js +6 -2
  30. package/dist/jsx/SelectViewport.js.map +1 -1
  31. package/dist/jsx/SelectViewport.mjs +6 -2
  32. package/dist/jsx/SelectViewport.mjs.map +1 -1
  33. package/package.json +20 -20
  34. package/src/Select.tsx +15 -4
  35. package/src/SelectImpl.tsx +13 -6
  36. package/src/SelectScrollButton.tsx +16 -36
  37. package/src/SelectViewport.tsx +6 -2
  38. package/src/types.tsx +0 -1
  39. package/types/Select.d.ts +204 -162
  40. package/types/Select.d.ts.map +1 -1
  41. package/types/SelectImpl.d.ts.map +1 -1
  42. package/types/SelectViewport.d.ts +38 -14
  43. package/types/SelectViewport.d.ts.map +1 -1
  44. package/types/types.d.ts +0 -1
  45. package/types/types.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectScrollButton.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,6 +1,5 @@
1
1
  import { autoUpdate, offset, useFloating } from "@floating-ui/react";
2
2
  import { useComposedRefs } from "@tamagui/compose-refs";
3
- import { useIsomorphicLayoutEffect } from "@tamagui/core";
4
3
  import { YStack } from "@tamagui/stacks";
5
4
  import * as React from "react";
6
5
  import { flushSync } from "react-dom";
@@ -29,51 +28,33 @@ const SelectScrollButtonImpl = React.memo(
29
28
  React.forwardRef(
30
29
  (props, forwardedRef) => {
31
30
  const { __scopeSelect, dir, componentName, ...scrollIndicatorProps } = props;
32
- const {
33
- floatingRef,
34
- forceUpdate,
35
- open,
36
- fallback,
37
- setScrollTop,
38
- setInnerOffset,
39
- ...context
40
- } = useSelectContext(componentName, __scopeSelect);
41
- const [element, setElement] = React.useState(null);
31
+ const { forceUpdate, open, fallback, setScrollTop, setInnerOffset, ...context } = useSelectContext(componentName, __scopeSelect);
32
+ const floatingRef = context.floatingContext?.refs.floating;
42
33
  const statusRef = React.useRef("idle");
43
34
  const isVisible = context[dir === "down" ? "canScrollDown" : "canScrollUp"];
44
35
  const frameRef = React.useRef();
45
- const { x, y, reference, floating, strategy, update, refs } = useFloating({
36
+ const { x, y, refs, strategy } = useFloating({
46
37
  open: open && isVisible,
47
38
  strategy: "fixed",
39
+ elements: {
40
+ reference: floatingRef?.current
41
+ },
48
42
  placement: dir === "up" ? "top" : "bottom",
49
43
  middleware: [offset(({ rects }) => -rects.floating.height)],
50
44
  whileElementsMounted: (...args) => autoUpdate(...args, { animationFrame: true })
51
45
  });
52
- const composedRef = useComposedRefs(forwardedRef, floating);
53
- if (floatingRef) {
54
- if (open) {
55
- if (element !== floatingRef.current) {
56
- setElement(floatingRef.current);
57
- reference(floatingRef.current);
58
- requestAnimationFrame(update);
59
- }
60
- } else {
61
- cancelAnimationFrame(frameRef.current);
62
- }
63
- }
64
- useIsomorphicLayoutEffect(() => {
65
- return () => {
66
- cancelAnimationFrame(frameRef.current);
67
- };
68
- }, []);
69
- if (!(isVisible && floatingRef)) {
46
+ const composedRef = useComposedRefs(forwardedRef, refs.setFloating);
47
+ if (!isVisible) {
70
48
  return null;
71
49
  }
72
50
  const onScroll = (amount) => {
51
+ const floating = floatingRef;
52
+ if (!floating)
53
+ return;
73
54
  if (fallback) {
74
- if (refs.floating.current) {
75
- refs.floating.current.scrollTop -= amount;
76
- flushSync(() => setScrollTop(refs.floating.current?.scrollTop ?? 0));
55
+ if (floating.current) {
56
+ floating.current.scrollTop -= amount;
57
+ flushSync(() => setScrollTop(floating.current?.scrollTop ?? 0));
77
58
  }
78
59
  } else {
79
60
  flushSync(() => setInnerOffset((value) => value - amount));
@@ -93,6 +74,7 @@ const SelectScrollButtonImpl = React.memo(
93
74
  statusRef.current = "active";
94
75
  let prevNow = Date.now();
95
76
  function frame() {
77
+ const element = floatingRef?.current;
96
78
  if (element) {
97
79
  const currentNow = Date.now();
98
80
  const msElapsed = currentNow - prevNow;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectScrollButton.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,5 +1,5 @@
1
1
  import { FloatingFocusManager } from "@floating-ui/react";
2
- import { isWeb } from "@tamagui/core";
2
+ import { composeRefs, isWeb } from "@tamagui/core";
3
3
  import { styled } from "@tamagui/core";
4
4
  import { PortalItem } from "@tamagui/portal";
5
5
  import { ThemeableStack } from "@tamagui/stacks";
@@ -32,6 +32,10 @@ const SelectViewport = React.forwardRef(
32
32
  const { __scopeSelect, children, disableScroll, ...viewportProps } = props;
33
33
  const context = useSelectContext(VIEWPORT_NAME, __scopeSelect);
34
34
  const breakpointActive = useSelectBreakpointActive(context.sheetBreakpoint);
35
+ const composedRefs = composeRefs(
36
+ forwardedRef,
37
+ context.floatingContext?.refs.setFloating
38
+ );
35
39
  if (context.shouldRenderWebNative) {
36
40
  return <>{children}</>;
37
41
  }
@@ -58,7 +62,7 @@ const SelectViewport = React.forwardRef(
58
62
  size={context.size}
59
63
  role="presentation"
60
64
  {...viewportProps}
61
- ref={forwardedRef}
65
+ ref={composedRefs}
62
66
  {...floatingProps}
63
67
  {...restStyle}
64
68
  overflow={disableScroll ? void 0 : overflow ?? "scroll"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectViewport.tsx"],
4
- "mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAyB,aAAa;AACtC,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB,wBAAwB;AAEvD,SAAS,iCAAiC;AAMnC,MAAM,sBAAsB,OAAO,gBAAgB;AAAA,EACxD,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,EAAE,OAAO,MAAM;AAC9B,eAAO;AAAA,UACL,cAAc,OAAO,OAAO,GAAG,KAAK;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAEM,MAAM,iBAAiB,MAAM;AAAA,EAClC,CAAC,OAAyC,iBAAiB;AACzD,UAAM,EAAE,eAAe,UAAU,eAAe,GAAG,cAAc,IAAI;AACrE,UAAM,UAAU,iBAAiB,eAAe,aAAa;AAC7D,UAAM,mBAAmB,0BAA0B,QAAQ,eAAe;AAE1E,QAAI,QAAQ,uBAAuB;AACjC,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,QAAI,oBAAoB,CAAC,OAAO;AAC9B,aACE,CAAC,WAAW,UAAU,GAAG,QAAQ,yBAC/B,CAAC,qBAAqB,SAAS,UAAU,SAAS,EAAjD,qBACH,EAFC;AAAA,IAIL;AAEA,QAAI,CAAC,QAAQ,iBAAiB;AAC5B,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,MAAM;AACjB,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,UAAM;AAAA,MACJ,OAAO,EAAE,gBAAgB,eAAe,UAAU,GAAG,UAAU;AAAA,MAC/D,GAAG;AAAA,IACL,IAAI,QAAQ,aAAc,iBAAiB;AAE3C,WACE;AAAA,OACG,CAAC,iBACA,CAAC;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MAEF,CAAC,qBAAqB,SAAS,QAAQ,iBACrC,CAAC;AAAA,QACC,MAAM,QAAQ;AAAA,QAEd,KAAK;AAAA,YACD;AAAA,QACJ,KAAK;AAAA,YACD;AAAA,YACA;AAAA,QACJ,UAAU,gBAAgB,SAAY,YAAY;AAAA,QAEjD,SACH,EAXC,oBAYH,EAbC;AAAA,IAcH;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;AAE7B,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAyB,aAAa,aAAa;AACnD,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB,wBAAwB;AAEvD,SAAS,iCAAiC;AAMnC,MAAM,sBAAsB,OAAO,gBAAgB;AAAA,EACxD,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,EAAE,OAAO,MAAM;AAC9B,eAAO;AAAA,UACL,cAAc,OAAO,OAAO,GAAG,KAAK;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAEM,MAAM,iBAAiB,MAAM;AAAA,EAClC,CAAC,OAAyC,iBAAiB;AACzD,UAAM,EAAE,eAAe,UAAU,eAAe,GAAG,cAAc,IAAI;AACrE,UAAM,UAAU,iBAAiB,eAAe,aAAa;AAC7D,UAAM,mBAAmB,0BAA0B,QAAQ,eAAe;AAE1E,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,QAAQ,iBAAiB,KAAK;AAAA,IAChC;AACA,QAAI,QAAQ,uBAAuB;AACjC,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,QAAI,oBAAoB,CAAC,OAAO;AAC9B,aACE,CAAC,WAAW,UAAU,GAAG,QAAQ,yBAC/B,CAAC,qBAAqB,SAAS,UAAU,SAAS,EAAjD,qBACH,EAFC;AAAA,IAIL;AAEA,QAAI,CAAC,QAAQ,iBAAiB;AAC5B,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,MAAM;AACjB,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,UAAM;AAAA,MACJ,OAAO,EAAE,gBAAgB,eAAe,UAAU,GAAG,UAAU;AAAA,MAC/D,GAAG;AAAA,IACL,IAAI,QAAQ,aAAc,iBAAiB;AAE3C,WACE;AAAA,OACG,CAAC,iBACA,CAAC;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MAEF,CAAC,qBAAqB,SAAS,QAAQ,iBACrC,CAAC;AAAA,QACC,MAAM,QAAQ;AAAA,QAEd,KAAK;AAAA,YACD;AAAA,QACJ,KAAK;AAAA,YACD;AAAA,YACA;AAAA,QACJ,UAAU,gBAAgB,SAAY,YAAY;AAAA,QAEjD,SACH,EAXC,oBAYH,EAbC;AAAA,IAcH;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;AAE7B,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -1,5 +1,5 @@
1
1
  import { FloatingFocusManager } from "@floating-ui/react";
2
- import { isWeb } from "@tamagui/core";
2
+ import { composeRefs, isWeb } from "@tamagui/core";
3
3
  import { styled } from "@tamagui/core";
4
4
  import { PortalItem } from "@tamagui/portal";
5
5
  import { ThemeableStack } from "@tamagui/stacks";
@@ -32,6 +32,10 @@ const SelectViewport = React.forwardRef(
32
32
  const { __scopeSelect, children, disableScroll, ...viewportProps } = props;
33
33
  const context = useSelectContext(VIEWPORT_NAME, __scopeSelect);
34
34
  const breakpointActive = useSelectBreakpointActive(context.sheetBreakpoint);
35
+ const composedRefs = composeRefs(
36
+ forwardedRef,
37
+ context.floatingContext?.refs.setFloating
38
+ );
35
39
  if (context.shouldRenderWebNative) {
36
40
  return <>{children}</>;
37
41
  }
@@ -58,7 +62,7 @@ const SelectViewport = React.forwardRef(
58
62
  size={context.size}
59
63
  role="presentation"
60
64
  {...viewportProps}
61
- ref={forwardedRef}
65
+ ref={composedRefs}
62
66
  {...floatingProps}
63
67
  {...restStyle}
64
68
  overflow={disableScroll ? void 0 : overflow ?? "scroll"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectViewport.tsx"],
4
- "mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAyB,aAAa;AACtC,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB,wBAAwB;AAEvD,SAAS,iCAAiC;AAMnC,MAAM,sBAAsB,OAAO,gBAAgB;AAAA,EACxD,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,EAAE,OAAO,MAAM;AAC9B,eAAO;AAAA,UACL,cAAc,OAAO,OAAO,GAAG,KAAK;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAEM,MAAM,iBAAiB,MAAM;AAAA,EAClC,CAAC,OAAyC,iBAAiB;AACzD,UAAM,EAAE,eAAe,UAAU,eAAe,GAAG,cAAc,IAAI;AACrE,UAAM,UAAU,iBAAiB,eAAe,aAAa;AAC7D,UAAM,mBAAmB,0BAA0B,QAAQ,eAAe;AAE1E,QAAI,QAAQ,uBAAuB;AACjC,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,QAAI,oBAAoB,CAAC,OAAO;AAC9B,aACE,CAAC,WAAW,UAAU,GAAG,QAAQ,yBAC/B,CAAC,qBAAqB,SAAS,UAAU,SAAS,EAAjD,qBACH,EAFC;AAAA,IAIL;AAEA,QAAI,CAAC,QAAQ,iBAAiB;AAC5B,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,MAAM;AACjB,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,UAAM;AAAA,MACJ,OAAO,EAAE,gBAAgB,eAAe,UAAU,GAAG,UAAU;AAAA,MAC/D,GAAG;AAAA,IACL,IAAI,QAAQ,aAAc,iBAAiB;AAE3C,WACE;AAAA,OACG,CAAC,iBACA,CAAC;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MAEF,CAAC,qBAAqB,SAAS,QAAQ,iBACrC,CAAC;AAAA,QACC,MAAM,QAAQ;AAAA,QAEd,KAAK;AAAA,YACD;AAAA,QACJ,KAAK;AAAA,YACD;AAAA,YACA;AAAA,QACJ,UAAU,gBAAgB,SAAY,YAAY;AAAA,QAEjD,SACH,EAXC,oBAYH,EAbC;AAAA,IAcH;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;AAE7B,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAyB,aAAa,aAAa;AACnD,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB,wBAAwB;AAEvD,SAAS,iCAAiC;AAMnC,MAAM,sBAAsB,OAAO,gBAAgB;AAAA,EACxD,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EAEd,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,EAAE,OAAO,MAAM;AAC9B,eAAO;AAAA,UACL,cAAc,OAAO,OAAO,GAAG,KAAK;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAEM,MAAM,iBAAiB,MAAM;AAAA,EAClC,CAAC,OAAyC,iBAAiB;AACzD,UAAM,EAAE,eAAe,UAAU,eAAe,GAAG,cAAc,IAAI;AACrE,UAAM,UAAU,iBAAiB,eAAe,aAAa;AAC7D,UAAM,mBAAmB,0BAA0B,QAAQ,eAAe;AAE1E,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,QAAQ,iBAAiB,KAAK;AAAA,IAChC;AACA,QAAI,QAAQ,uBAAuB;AACjC,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,QAAI,oBAAoB,CAAC,OAAO;AAC9B,aACE,CAAC,WAAW,UAAU,GAAG,QAAQ,yBAC/B,CAAC,qBAAqB,SAAS,UAAU,SAAS,EAAjD,qBACH,EAFC;AAAA,IAIL;AAEA,QAAI,CAAC,QAAQ,iBAAiB;AAC5B,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,MAAM;AACjB,aAAO,GAAG,SAAS;AAAA,IACrB;AAEA,UAAM;AAAA,MACJ,OAAO,EAAE,gBAAgB,eAAe,UAAU,GAAG,UAAU;AAAA,MAC/D,GAAG;AAAA,IACL,IAAI,QAAQ,aAAc,iBAAiB;AAE3C,WACE;AAAA,OACG,CAAC,iBACA,CAAC;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MAEF,CAAC,qBAAqB,SAAS,QAAQ,iBACrC,CAAC;AAAA,QACC,MAAM,QAAQ;AAAA,QAEd,KAAK;AAAA,YACD;AAAA,QACJ,KAAK;AAAA,YACD;AAAA,YACA;AAAA,QACJ,UAAU,gBAAgB,SAAY,YAAY;AAAA,QAEjD,SACH,EAXC,oBAYH,EAbC;AAAA,IAcH;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;AAE7B,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/select",
3
- "version": "1.30.29",
3
+ "version": "1.31.1",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -31,25 +31,25 @@
31
31
  }
32
32
  },
33
33
  "dependencies": {
34
- "@floating-ui/react": "~0.19.1",
35
- "@floating-ui/react-dom": "~1.2.2",
36
- "@floating-ui/react-native": "~0.9.0",
34
+ "@floating-ui/react": "^0.24.2",
35
+ "@floating-ui/react-dom": "^2.0.0",
36
+ "@floating-ui/react-native": "^0.10.0",
37
37
  "@radix-ui/react-use-previous": "^1.0.0",
38
- "@tamagui/adapt": "1.30.29",
39
- "@tamagui/compose-refs": "1.30.29",
40
- "@tamagui/core": "1.30.29",
41
- "@tamagui/create-context": "1.30.29",
42
- "@tamagui/dismissable": "1.30.29",
43
- "@tamagui/focus-scope": "1.30.29",
44
- "@tamagui/get-token": "1.30.29",
45
- "@tamagui/list-item": "1.30.29",
46
- "@tamagui/portal": "1.30.29",
47
- "@tamagui/separator": "1.30.29",
48
- "@tamagui/sheet": "1.30.29",
49
- "@tamagui/stacks": "1.30.29",
50
- "@tamagui/text": "1.30.29",
51
- "@tamagui/use-controllable-state": "1.30.29",
52
- "@tamagui/use-event": "1.30.29"
38
+ "@tamagui/adapt": "1.31.1",
39
+ "@tamagui/compose-refs": "1.31.1",
40
+ "@tamagui/core": "1.31.1",
41
+ "@tamagui/create-context": "1.31.1",
42
+ "@tamagui/dismissable": "1.31.1",
43
+ "@tamagui/focus-scope": "1.31.1",
44
+ "@tamagui/get-token": "1.31.1",
45
+ "@tamagui/list-item": "1.31.1",
46
+ "@tamagui/portal": "1.31.1",
47
+ "@tamagui/separator": "1.31.1",
48
+ "@tamagui/sheet": "1.31.1",
49
+ "@tamagui/stacks": "1.31.1",
50
+ "@tamagui/text": "1.31.1",
51
+ "@tamagui/use-controllable-state": "1.31.1",
52
+ "@tamagui/use-event": "1.31.1"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "react": "*",
@@ -57,7 +57,7 @@
57
57
  "react-native": "*"
58
58
  },
59
59
  "devDependencies": {
60
- "@tamagui/build": "1.30.29",
60
+ "@tamagui/build": "1.31.1",
61
61
  "react": "^18.2.0",
62
62
  "react-dom": "^18.2.0",
63
63
  "react-native": "^0.71.7"
package/src/Select.tsx CHANGED
@@ -45,11 +45,16 @@ export const SelectTrigger = React.forwardRef<TamaguiElement, SelectTriggerProps
45
45
  const { __scopeSelect, disabled = false, ...triggerProps } = props
46
46
 
47
47
  const context = useSelectContext(TRIGGER_NAME, __scopeSelect)
48
- // const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange)
48
+ const composedRefs = useComposedRefs(
49
+ forwardedRef,
50
+ context.floatingContext?.refs.setReference as any
51
+ )
49
52
  // const getItems = useCollection(__scopeSelect)
50
53
  // const labelId = useLabelContext(context.trigger)
51
54
  // const labelledBy = ariaLabelledby || labelId
52
55
 
56
+ // console.log('wtf', context.interactions.getReferenceProps())
57
+
53
58
  if (context.shouldRenderWebNative) {
54
59
  return null
55
60
  }
@@ -76,9 +81,15 @@ export const SelectTrigger = React.forwardRef<TamaguiElement, SelectTriggerProps
76
81
  disabled={disabled}
77
82
  data-disabled={disabled ? '' : undefined}
78
83
  {...triggerProps}
79
- ref={forwardedRef}
84
+ ref={composedRefs}
80
85
  {...(process.env.TAMAGUI_TARGET === 'web' && context.interactions
81
- ? context.interactions.getReferenceProps()
86
+ ? {
87
+ ...context.interactions.getReferenceProps(),
88
+ onMouseDown() {
89
+ context.floatingContext?.update()
90
+ context.setOpen(!context.open)
91
+ },
92
+ }
82
93
  : {
83
94
  onPress() {
84
95
  context.setOpen(!context.open)
@@ -462,7 +473,7 @@ const NativeSelectFrame = styled(ThemeableStack, {
462
473
  paddingRight: paddingHorizontal + 20,
463
474
  paddingLeft: paddingHorizontal,
464
475
  paddingVertical: getSpace(val, {
465
- shift: -4,
476
+ shift: -3,
466
477
  }),
467
478
  }
468
479
  },
@@ -111,10 +111,9 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
111
111
  padding: WINDOW_PADDING,
112
112
  })
113
113
 
114
- const { x, y, reference, floating, strategy, context, refs } = useFloating({
114
+ const { x, y, strategy, context, refs, update } = useFloating({
115
115
  open,
116
116
  onOpenChange: setOpen,
117
- whileElementsMounted: autoUpdate,
118
117
  placement: 'bottom-start',
119
118
  middleware: fallback
120
119
  ? [
@@ -141,6 +140,14 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
141
140
  ],
142
141
  })
143
142
 
143
+ React.useLayoutEffect(() => {
144
+ window.addEventListener('resize', update)
145
+ if (open) {
146
+ update()
147
+ }
148
+ return () => window.removeEventListener('resize', update)
149
+ }, [update, open])
150
+
144
151
  const floatingRef = refs.floating
145
152
 
146
153
  const showUpArrow = open && scrollTop > SCROLL_ARROW_THRESHOLD
@@ -160,6 +167,7 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
160
167
  enabled: !fallback,
161
168
  onChange: setInnerOffset,
162
169
  overflowRef,
170
+ scrollRef: refs.floating,
163
171
  }),
164
172
  useListNavigation(context, {
165
173
  listRef: listItemsRef,
@@ -180,7 +188,7 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
180
188
  ...interactions,
181
189
  getReferenceProps() {
182
190
  return interactions.getReferenceProps({
183
- ref: reference,
191
+ ref: refs.reference as any,
184
192
  className: 'SelectTrigger',
185
193
  onKeyDown(event) {
186
194
  if (
@@ -195,7 +203,7 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
195
203
  },
196
204
  getFloatingProps(props) {
197
205
  return interactions.getFloatingProps({
198
- ref: floating,
206
+ ref: refs.floating,
199
207
  className: 'Select',
200
208
  ...props,
201
209
  style: {
@@ -232,7 +240,7 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
232
240
  })
233
241
  },
234
242
  }
235
- }, [floating, y, x, interactions])
243
+ }, [refs.reference.current, refs.floating.current, y, x, interactions])
236
244
 
237
245
  // effects
238
246
 
@@ -319,7 +327,6 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
319
327
  {...(selectContext as Required<typeof selectContext>)}
320
328
  setScrollTop={setScrollTop}
321
329
  setInnerOffset={setInnerOffset}
322
- floatingRef={floatingRef}
323
330
  setValueAtIndex={(index, value) => {
324
331
  listContentRef.current[index] = value
325
332
  }}
@@ -62,59 +62,38 @@ const SelectScrollButtonImpl = React.memo(
62
62
  React.forwardRef<SelectScrollButtonImplElement, SelectScrollButtonImplProps>(
63
63
  (props: ScopedProps<SelectScrollButtonImplProps>, forwardedRef) => {
64
64
  const { __scopeSelect, dir, componentName, ...scrollIndicatorProps } = props
65
- const {
66
- floatingRef,
67
- forceUpdate,
68
- open,
69
- fallback,
70
- setScrollTop,
71
- setInnerOffset,
72
- ...context
73
- } = useSelectContext(componentName, __scopeSelect)
74
-
75
- const [element, setElement] = React.useState<HTMLElement | null>(null)
65
+ const { forceUpdate, open, fallback, setScrollTop, setInnerOffset, ...context } =
66
+ useSelectContext(componentName, __scopeSelect)
67
+ const floatingRef = context.floatingContext?.refs.floating
68
+
76
69
  const statusRef = React.useRef<'idle' | 'active'>('idle')
77
70
  const isVisible = context[dir === 'down' ? 'canScrollDown' : 'canScrollUp']
78
71
  const frameRef = React.useRef<any>()
79
72
 
80
- const { x, y, reference, floating, strategy, update, refs } = useFloating({
73
+ const { x, y, refs, strategy } = useFloating({
81
74
  open: open && isVisible,
82
75
  strategy: 'fixed',
76
+ elements: {
77
+ reference: floatingRef?.current,
78
+ },
83
79
  placement: dir === 'up' ? 'top' : 'bottom',
84
80
  middleware: [offset(({ rects }) => -rects.floating.height)],
85
81
  whileElementsMounted: (...args) => autoUpdate(...args, { animationFrame: true }),
86
82
  })
87
83
 
88
- const composedRef = useComposedRefs(forwardedRef, floating)
89
-
90
- if (floatingRef) {
91
- if (open) {
92
- if (element !== floatingRef.current) {
93
- setElement(floatingRef.current)
94
- reference(floatingRef.current)
95
- requestAnimationFrame(update)
96
- }
97
- } else {
98
- cancelAnimationFrame(frameRef.current)
99
- }
100
- }
101
-
102
- useIsomorphicLayoutEffect(() => {
103
- return () => {
104
- // eslint-disable-next-line react-hooks/exhaustive-deps
105
- cancelAnimationFrame(frameRef.current)
106
- }
107
- }, [])
84
+ const composedRef = useComposedRefs(forwardedRef, refs.setFloating)
108
85
 
109
- if (!(isVisible && floatingRef)) {
86
+ if (!isVisible) {
110
87
  return null
111
88
  }
112
89
 
113
90
  const onScroll = (amount: number) => {
91
+ const floating = floatingRef
92
+ if (!floating) return
114
93
  if (fallback) {
115
- if (refs.floating.current) {
116
- refs.floating.current.scrollTop -= amount
117
- flushSync(() => setScrollTop!(refs.floating.current?.scrollTop ?? 0))
94
+ if (floating.current) {
95
+ floating.current.scrollTop -= amount
96
+ flushSync(() => setScrollTop!(floating.current?.scrollTop ?? 0))
118
97
  }
119
98
  } else {
120
99
  flushSync(() => setInnerOffset!((value) => value - amount))
@@ -138,6 +117,7 @@ const SelectScrollButtonImpl = React.memo(
138
117
  let prevNow = Date.now()
139
118
 
140
119
  function frame() {
120
+ const element = floatingRef?.current
141
121
  if (element) {
142
122
  const currentNow = Date.now()
143
123
  const msElapsed = currentNow - prevNow
@@ -1,5 +1,5 @@
1
1
  import { FloatingFocusManager } from '@floating-ui/react'
2
- import { TamaguiElement, isWeb } from '@tamagui/core'
2
+ import { TamaguiElement, composeRefs, isWeb } from '@tamagui/core'
3
3
  import { styled } from '@tamagui/core'
4
4
  import { PortalItem } from '@tamagui/portal'
5
5
  import { ThemeableStack } from '@tamagui/stacks'
@@ -43,6 +43,10 @@ export const SelectViewport = React.forwardRef<TamaguiElement, SelectViewportPro
43
43
  const context = useSelectContext(VIEWPORT_NAME, __scopeSelect)
44
44
  const breakpointActive = useSelectBreakpointActive(context.sheetBreakpoint)
45
45
 
46
+ const composedRefs = composeRefs(
47
+ forwardedRef,
48
+ context.floatingContext?.refs.setFloating
49
+ )
46
50
  if (context.shouldRenderWebNative) {
47
51
  return <>{children}</>
48
52
  }
@@ -83,7 +87,7 @@ export const SelectViewport = React.forwardRef<TamaguiElement, SelectViewportPro
83
87
  // @ts-ignore
84
88
  role="presentation"
85
89
  {...viewportProps}
86
- ref={forwardedRef}
90
+ ref={composedRefs}
87
91
  {...floatingProps}
88
92
  {...restStyle}
89
93
  overflow={disableScroll ? undefined : overflow ?? 'scroll'}
package/src/types.tsx CHANGED
@@ -69,7 +69,6 @@ export interface SelectContextValue {
69
69
  dataRef?: MutableRefObject<ContextData>
70
70
  controlledScrolling?: boolean
71
71
  listRef?: MutableRefObject<Array<HTMLElement | null>>
72
- floatingRef?: MutableRefObject<HTMLElement | null>
73
72
  canScrollUp?: boolean
74
73
  canScrollDown?: boolean
75
74
  floatingContext?: FloatingContext<ReferenceType>