@tamagui/select 1.74.13 → 1.74.14

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 (64) hide show
  1. package/dist/cjs/Select.js +5 -45
  2. package/dist/cjs/Select.js.map +1 -1
  3. package/dist/cjs/Select.native.js +5 -45
  4. package/dist/cjs/Select.native.js.map +1 -1
  5. package/dist/cjs/SelectContent.js +3 -3
  6. package/dist/cjs/SelectContent.js.map +2 -2
  7. package/dist/cjs/SelectImpl.js +9 -24
  8. package/dist/cjs/SelectImpl.js.map +1 -1
  9. package/dist/cjs/SelectItem.js +17 -11
  10. package/dist/cjs/SelectItem.js.map +1 -1
  11. package/dist/cjs/SelectItem.native.js +17 -11
  12. package/dist/cjs/SelectItem.native.js.map +1 -1
  13. package/dist/cjs/SelectItemText.js +68 -0
  14. package/dist/cjs/SelectItemText.js.map +6 -0
  15. package/dist/cjs/SelectItemText.native.js +69 -0
  16. package/dist/cjs/SelectItemText.native.js.map +6 -0
  17. package/dist/esm/Select.js +2 -40
  18. package/dist/esm/Select.js.map +1 -1
  19. package/dist/esm/Select.native.js +2 -40
  20. package/dist/esm/Select.native.js.map +1 -1
  21. package/dist/esm/SelectContent.js +3 -2
  22. package/dist/esm/SelectContent.js.map +1 -1
  23. package/dist/esm/SelectImpl.js +10 -24
  24. package/dist/esm/SelectImpl.js.map +1 -1
  25. package/dist/esm/SelectItem.js +18 -12
  26. package/dist/esm/SelectItem.js.map +1 -1
  27. package/dist/esm/SelectItem.native.js +18 -12
  28. package/dist/esm/SelectItem.native.js.map +1 -1
  29. package/dist/esm/SelectItemText.js +44 -0
  30. package/dist/esm/SelectItemText.js.map +6 -0
  31. package/dist/esm/SelectItemText.native.js +44 -0
  32. package/dist/esm/SelectItemText.native.js.map +6 -0
  33. package/dist/jsx/Select.js +2 -51
  34. package/dist/jsx/Select.js.map +1 -1
  35. package/dist/jsx/Select.native.js +2 -51
  36. package/dist/jsx/Select.native.js.map +1 -1
  37. package/dist/jsx/SelectContent.js +3 -2
  38. package/dist/jsx/SelectContent.js.map +1 -1
  39. package/dist/jsx/SelectImpl.js +10 -24
  40. package/dist/jsx/SelectImpl.js.map +1 -1
  41. package/dist/jsx/SelectItem.js +18 -12
  42. package/dist/jsx/SelectItem.js.map +1 -1
  43. package/dist/jsx/SelectItem.native.js +18 -12
  44. package/dist/jsx/SelectItem.native.js.map +1 -1
  45. package/dist/jsx/SelectItemText.js +54 -0
  46. package/dist/jsx/SelectItemText.js.map +6 -0
  47. package/dist/jsx/SelectItemText.native.js +54 -0
  48. package/dist/jsx/SelectItemText.native.js.map +6 -0
  49. package/package.json +20 -20
  50. package/src/Select.tsx +1 -90
  51. package/src/SelectContent.tsx +6 -1
  52. package/src/SelectImpl.tsx +43 -49
  53. package/src/SelectItem.tsx +66 -56
  54. package/src/SelectItemText.tsx +92 -0
  55. package/types/Select.d.ts +167 -79
  56. package/types/Select.d.ts.map +1 -1
  57. package/types/SelectContent.d.ts.map +1 -1
  58. package/types/SelectImpl.d.ts.map +1 -1
  59. package/types/SelectItem.d.ts +136 -1
  60. package/types/SelectItem.d.ts.map +1 -1
  61. package/types/SelectItemText.d.ts +87 -0
  62. package/types/SelectItemText.d.ts.map +1 -0
  63. package/types/SelectViewport.d.ts +1 -36
  64. package/types/SelectViewport.d.ts.map +1 -1
@@ -1,18 +1,23 @@
1
1
  import { useComposedRefs } from "@tamagui/compose-refs";
2
2
  import { isWeb, useIsomorphicLayoutEffect } from "@tamagui/core";
3
- import { ListItem } from "@tamagui/list-item";
3
+ import { ListItemFrame, useListItem } from "@tamagui/list-item";
4
4
  import * as React from "react";
5
5
  import { createSelectContext, useSelectItemParentContext } from "./context";
6
- const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME), SelectItem = React.forwardRef(
7
- (props, forwardedRef) => {
6
+ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME), SelectItem = ListItemFrame.styleable(
7
+ function(props, forwardedRef) {
8
8
  const {
9
9
  __scopeSelect,
10
10
  value,
11
11
  disabled = !1,
12
12
  textValue: textValueProp,
13
13
  index,
14
- ...itemProps
15
- } = props, context = useSelectItemParentContext(ITEM_NAME, __scopeSelect), {
14
+ ...restProps
15
+ } = props, { props: listItemProps } = useListItem({
16
+ ...!props.unstyled && {
17
+ ellipse: !0
18
+ },
19
+ ...restProps
20
+ }), context = useSelectItemParentContext(ITEM_NAME, __scopeSelect), {
16
21
  setSelectedIndex,
17
22
  listRef,
18
23
  setOpen,
@@ -45,7 +50,7 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
45
50
  function handleSelect() {
46
51
  setSelectedIndex(index), onChange(value), setOpen(!1);
47
52
  }
48
- const selectItemProps = interactions ? interactions.getItemProps({
53
+ const selectItemProps = React.useMemo(() => interactions ? interactions.getItemProps({
49
54
  onTouchMove() {
50
55
  allowSelectRef.current = !0, allowMouseUpRef.current = !1;
51
56
  },
@@ -65,7 +70,7 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
65
70
  }
66
71
  }) : {
67
72
  onPress: handleSelect
68
- };
73
+ }, [handleSelect]);
69
74
  return useIsomorphicLayoutEffect(() => {
70
75
  isActive && listRef?.current[index]?.focus();
71
76
  }, [isActive]), <SelectItemContextProvider
@@ -73,7 +78,7 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
73
78
  value={value}
74
79
  textId={textId || ""}
75
80
  isSelected={isSelected}
76
- >{shouldRenderWebNative ? <option value={value}>{props.children}</option> : <ListItem
81
+ >{shouldRenderWebNative ? <option value={value}>{props.children}</option> : <ListItemFrame
77
82
  tag="div"
78
83
  componentName={ITEM_NAME}
79
84
  ref={composedRefs}
@@ -90,15 +95,16 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
90
95
  focusTheme: !0,
91
96
  cursor: "default",
92
97
  outlineWidth: 0,
93
- size,
94
- ellipse: !0
98
+ size
95
99
  }}
96
- {...itemProps}
100
+ {...listItemProps}
97
101
  {...selectItemProps}
98
102
  />}</SelectItemContextProvider>;
103
+ },
104
+ {
105
+ disableTheme: !0
99
106
  }
100
107
  );
101
- SelectItem.displayName = ITEM_NAME;
102
108
  export {
103
109
  SelectItem,
104
110
  SelectItemContextProvider,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectItem.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["isActive"]
6
6
  }
@@ -1,18 +1,23 @@
1
1
  import { useComposedRefs } from "@tamagui/compose-refs";
2
2
  import { isWeb, useIsomorphicLayoutEffect } from "@tamagui/core";
3
- import { ListItem } from "@tamagui/list-item";
3
+ import { ListItemFrame, useListItem } from "@tamagui/list-item";
4
4
  import * as React from "react";
5
5
  import { createSelectContext, useSelectItemParentContext } from "./context";
6
- const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME), SelectItem = React.forwardRef(
7
- (props, forwardedRef) => {
6
+ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME), SelectItem = ListItemFrame.styleable(
7
+ function(props, forwardedRef) {
8
8
  const {
9
9
  __scopeSelect,
10
10
  value,
11
11
  disabled = !1,
12
12
  textValue: textValueProp,
13
13
  index,
14
- ...itemProps
15
- } = props, context = useSelectItemParentContext(ITEM_NAME, __scopeSelect), {
14
+ ...restProps
15
+ } = props, { props: listItemProps } = useListItem({
16
+ ...!props.unstyled && {
17
+ ellipse: !0
18
+ },
19
+ ...restProps
20
+ }), context = useSelectItemParentContext(ITEM_NAME, __scopeSelect), {
16
21
  setSelectedIndex,
17
22
  listRef,
18
23
  setOpen,
@@ -45,7 +50,7 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
45
50
  function handleSelect() {
46
51
  setSelectedIndex(index), onChange(value), setOpen(!1);
47
52
  }
48
- const selectItemProps = interactions ? interactions.getItemProps({
53
+ const selectItemProps = React.useMemo(() => interactions ? interactions.getItemProps({
49
54
  onTouchMove() {
50
55
  allowSelectRef.current = !0, allowMouseUpRef.current = !1;
51
56
  },
@@ -65,7 +70,7 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
65
70
  }
66
71
  }) : {
67
72
  onPress: handleSelect
68
- };
73
+ }, [handleSelect]);
69
74
  return useIsomorphicLayoutEffect(() => {
70
75
  var _a;
71
76
  isActive && ((_a = listRef == null ? void 0 : listRef.current[index]) == null || _a.focus());
@@ -74,7 +79,7 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
74
79
  value={value}
75
80
  textId={textId || ""}
76
81
  isSelected={isSelected}
77
- >{shouldRenderWebNative ? <option value={value}>{props.children}</option> : <ListItem
82
+ >{shouldRenderWebNative ? <option value={value}>{props.children}</option> : <ListItemFrame
78
83
  tag="div"
79
84
  componentName={ITEM_NAME}
80
85
  ref={composedRefs}
@@ -91,15 +96,16 @@ const ITEM_NAME = "SelectItem", [SelectItemContextProvider, useSelectItemContext
91
96
  focusTheme: !0,
92
97
  cursor: "default",
93
98
  outlineWidth: 0,
94
- size,
95
- ellipse: !0
99
+ size
96
100
  }}
97
- {...itemProps}
101
+ {...listItemProps}
98
102
  {...selectItemProps}
99
103
  />}</SelectItemContextProvider>;
104
+ },
105
+ {
106
+ disableTheme: !0
100
107
  }
101
108
  );
102
- SelectItem.displayName = ITEM_NAME;
103
109
  export {
104
110
  SelectItem,
105
111
  SelectItemContextProvider,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectItem.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["isActive"]
6
6
  }
@@ -0,0 +1,54 @@
1
+ import { useComposedRefs } from "@tamagui/compose-refs";
2
+ import { styled } from "@tamagui/core";
3
+ import { SizableText } from "@tamagui/text";
4
+ import * as React from "react";
5
+ import { useSelectContext, useSelectItemParentContext } from "./context";
6
+ import { useSelectItemContext } from "./SelectItem";
7
+ const ITEM_TEXT_NAME = "SelectItemText", SelectItemTextFrame = styled(SizableText, {
8
+ name: ITEM_TEXT_NAME,
9
+ variants: {
10
+ unstyled: {
11
+ false: {
12
+ userSelect: "none",
13
+ color: "$color",
14
+ ellipse: !0
15
+ }
16
+ }
17
+ },
18
+ defaultVariants: {
19
+ unstyled: !1
20
+ }
21
+ }), SelectItemText = SelectItemTextFrame.styleable(function(props, forwardedRef) {
22
+ const { __scopeSelect, className, ...itemTextProps } = props, context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect), itemParentContext = useSelectItemParentContext(ITEM_TEXT_NAME, __scopeSelect), ref = React.useRef(null), composedRefs = useComposedRefs(forwardedRef, ref), itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect), contents = React.useRef();
23
+ return contents.current = <SelectItemTextFrame
24
+ className={className}
25
+ size={itemParentContext.size}
26
+ id={itemContext.textId}
27
+ {...itemTextProps}
28
+ ref={composedRefs}
29
+ />, React.useEffect(() => {
30
+ itemParentContext.initialValue === itemContext.value && !context.selectedIndex && context.setSelectedItem(contents.current);
31
+ }, []), React.useEffect(() => itemParentContext.valueSubscribe((val) => {
32
+ val === itemContext.value && context.setSelectedItem(contents.current);
33
+ }), [itemContext.value]), itemParentContext.shouldRenderWebNative ? <>{props.children}</> : <>
34
+ {contents.current}
35
+ {
36
+ /* Portal an option in the bubble select */
37
+ }
38
+ {
39
+ /* {context.bubbleSelect
40
+ ? ReactDOM.createPortal(
41
+ // we use `.textContent` because `option` only support `string` or `number`
42
+ <option value={itemContext.value}>{ref.current?.textContent}</option>,
43
+ context.bubbleSelect
44
+ )
45
+ : null} */
46
+ }
47
+ </>;
48
+ });
49
+ export {
50
+ ITEM_TEXT_NAME,
51
+ SelectItemText,
52
+ SelectItemTextFrame
53
+ };
54
+ //# sourceMappingURL=SelectItemText.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SelectItemText.tsx"],
4
+ "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAuC,cAAc;AACrD,SAAS,mBAAmB;AAC5B,YAAY,WAAW;AAEvB,SAAS,kBAAkB,kCAAkC;AAC7D,SAAS,4BAA4B;AAO9B,MAAM,iBAAiB,kBAEjB,sBAAsB,OAAO,aAAa;AAAA,EACrD,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC,GAIY,iBAAiB,oBAAoB,UAAU,SAC1D,OACA,cACA;AACA,QAAM,EAAE,eAAe,WAAW,GAAG,cAAc,IAAI,OACjD,UAAU,iBAAiB,gBAAgB,aAAa,GACxD,oBAAoB,2BAA2B,gBAAgB,aAAa,GAC5E,MAAM,MAAM,OAAkC,IAAI,GAClD,eAAe,gBAAgB,cAAc,GAAG,GAChD,cAAc,qBAAqB,gBAAgB,aAAa,GAChE,WAAW,MAAM,OAAwB;AA4B/C,SAxBA,SAAS,UACP,CAAC;AAAA,IACC,WAAW;AAAA,IACX,MAAM,kBAAkB;AAAA,IACxB,IAAI,YAAY;AAAA,QACZ;AAAA,IACJ,KAAK;AAAA,EACP,IAGF,MAAM,UAAU,MAAM;AACpB,IAAI,kBAAkB,iBAAiB,YAAY,SAAS,CAAC,QAAQ,iBACnE,QAAQ,gBAAgB,SAAS,OAAO;AAAA,EAE5C,GAAG,CAAC,CAAC,GAEL,MAAM,UAAU,MACP,kBAAkB,eAAe,CAAC,QAAQ;AAC/C,IAAI,QAAQ,YAAY,SACtB,QAAQ,gBAAgB,SAAS,OAAO;AAAA,EAE5C,CAAC,GACA,CAAC,YAAY,KAAK,CAAC,GAElB,kBAAkB,wBACb,GAAG,MAAM,SAAS,MAIzB;AAAA,KACG,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUZ;AAEJ,CAAC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,54 @@
1
+ import { useComposedRefs } from "@tamagui/compose-refs";
2
+ import { styled } from "@tamagui/core";
3
+ import { SizableText } from "@tamagui/text";
4
+ import * as React from "react";
5
+ import { useSelectContext, useSelectItemParentContext } from "./context";
6
+ import { useSelectItemContext } from "./SelectItem";
7
+ const ITEM_TEXT_NAME = "SelectItemText", SelectItemTextFrame = styled(SizableText, {
8
+ name: ITEM_TEXT_NAME,
9
+ variants: {
10
+ unstyled: {
11
+ false: {
12
+ userSelect: "none",
13
+ color: "$color",
14
+ ellipse: !0
15
+ }
16
+ }
17
+ },
18
+ defaultVariants: {
19
+ unstyled: !1
20
+ }
21
+ }), SelectItemText = SelectItemTextFrame.styleable(function(props, forwardedRef) {
22
+ const { __scopeSelect, className, ...itemTextProps } = props, context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect), itemParentContext = useSelectItemParentContext(ITEM_TEXT_NAME, __scopeSelect), ref = React.useRef(null), composedRefs = useComposedRefs(forwardedRef, ref), itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect), contents = React.useRef();
23
+ return contents.current = <SelectItemTextFrame
24
+ className={className}
25
+ size={itemParentContext.size}
26
+ id={itemContext.textId}
27
+ {...itemTextProps}
28
+ ref={composedRefs}
29
+ />, React.useEffect(() => {
30
+ itemParentContext.initialValue === itemContext.value && !context.selectedIndex && context.setSelectedItem(contents.current);
31
+ }, []), React.useEffect(() => itemParentContext.valueSubscribe((val) => {
32
+ val === itemContext.value && context.setSelectedItem(contents.current);
33
+ }), [itemContext.value]), itemParentContext.shouldRenderWebNative ? <>{props.children}</> : <>
34
+ {contents.current}
35
+ {
36
+ /* Portal an option in the bubble select */
37
+ }
38
+ {
39
+ /* {context.bubbleSelect
40
+ ? ReactDOM.createPortal(
41
+ // we use `.textContent` because `option` only support `string` or `number`
42
+ <option value={itemContext.value}>{ref.current?.textContent}</option>,
43
+ context.bubbleSelect
44
+ )
45
+ : null} */
46
+ }
47
+ </>;
48
+ });
49
+ export {
50
+ ITEM_TEXT_NAME,
51
+ SelectItemText,
52
+ SelectItemTextFrame
53
+ };
54
+ //# sourceMappingURL=SelectItemText.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SelectItemText.tsx"],
4
+ "mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAuC,cAAc;AACrD,SAAS,mBAAmB;AAC5B,YAAY,WAAW;AAEvB,SAAS,kBAAkB,kCAAkC;AAC7D,SAAS,4BAA4B;AAO9B,MAAM,iBAAiB,kBAEjB,sBAAsB,OAAO,aAAa;AAAA,EACrD,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC,GAIY,iBAAiB,oBAAoB,UAAU,SAC1D,OACA,cACA;AACA,QAAM,EAAE,eAAe,WAAW,GAAG,cAAc,IAAI,OACjD,UAAU,iBAAiB,gBAAgB,aAAa,GACxD,oBAAoB,2BAA2B,gBAAgB,aAAa,GAC5E,MAAM,MAAM,OAAkC,IAAI,GAClD,eAAe,gBAAgB,cAAc,GAAG,GAChD,cAAc,qBAAqB,gBAAgB,aAAa,GAChE,WAAW,MAAM,OAAwB;AA4B/C,SAxBA,SAAS,UACP,CAAC;AAAA,IACC,WAAW;AAAA,IACX,MAAM,kBAAkB;AAAA,IACxB,IAAI,YAAY;AAAA,QACZ;AAAA,IACJ,KAAK;AAAA,EACP,IAGF,MAAM,UAAU,MAAM;AACpB,IAAI,kBAAkB,iBAAiB,YAAY,SAAS,CAAC,QAAQ,iBACnE,QAAQ,gBAAgB,SAAS,OAAO;AAAA,EAE5C,GAAG,CAAC,CAAC,GAEL,MAAM,UAAU,MACP,kBAAkB,eAAe,CAAC,QAAQ;AAC/C,IAAI,QAAQ,YAAY,SACtB,QAAQ,gBAAgB,SAAS,OAAO;AAAA,EAE5C,CAAC,GACA,CAAC,YAAY,KAAK,CAAC,GAElB,kBAAkB,wBACb,GAAG,MAAM,SAAS,MAIzB;AAAA,KACG,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUZ;AAEJ,CAAC;",
5
+ "names": []
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/select",
3
- "version": "1.74.13",
3
+ "version": "1.74.14",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -34,24 +34,24 @@
34
34
  "@floating-ui/react": "^0.24.7",
35
35
  "@floating-ui/react-dom": "^2.0.1",
36
36
  "@floating-ui/react-native": "^0.10.1",
37
- "@tamagui/adapt": "1.74.13",
38
- "@tamagui/animate-presence": "1.74.13",
39
- "@tamagui/compose-refs": "1.74.13",
40
- "@tamagui/core": "1.74.13",
41
- "@tamagui/create-context": "1.74.13",
42
- "@tamagui/dismissable": "1.74.13",
43
- "@tamagui/focus-scope": "1.74.13",
44
- "@tamagui/get-token": "1.74.13",
45
- "@tamagui/list-item": "1.74.13",
46
- "@tamagui/portal": "1.74.13",
47
- "@tamagui/remove-scroll": "1.74.13",
48
- "@tamagui/separator": "1.74.13",
49
- "@tamagui/sheet": "1.74.13",
50
- "@tamagui/stacks": "1.74.13",
51
- "@tamagui/text": "1.74.13",
52
- "@tamagui/use-controllable-state": "1.74.13",
53
- "@tamagui/use-event": "1.74.13",
54
- "@tamagui/use-previous": "1.74.13",
37
+ "@tamagui/adapt": "1.74.14",
38
+ "@tamagui/animate-presence": "1.74.14",
39
+ "@tamagui/compose-refs": "1.74.14",
40
+ "@tamagui/core": "1.74.14",
41
+ "@tamagui/create-context": "1.74.14",
42
+ "@tamagui/dismissable": "1.74.14",
43
+ "@tamagui/focus-scope": "1.74.14",
44
+ "@tamagui/get-token": "1.74.14",
45
+ "@tamagui/list-item": "1.74.14",
46
+ "@tamagui/portal": "1.74.14",
47
+ "@tamagui/remove-scroll": "1.74.14",
48
+ "@tamagui/separator": "1.74.14",
49
+ "@tamagui/sheet": "1.74.14",
50
+ "@tamagui/stacks": "1.74.14",
51
+ "@tamagui/text": "1.74.14",
52
+ "@tamagui/use-controllable-state": "1.74.14",
53
+ "@tamagui/use-event": "1.74.14",
54
+ "@tamagui/use-previous": "1.74.14",
55
55
  "react-dom": "^18.2.0"
56
56
  },
57
57
  "peerDependencies": {
@@ -59,7 +59,7 @@
59
59
  "react-native": "*"
60
60
  },
61
61
  "devDependencies": {
62
- "@tamagui/build": "1.74.13",
62
+ "@tamagui/build": "1.74.14",
63
63
  "react": "^18.2.0",
64
64
  "react-native": "^0.72.1"
65
65
  },
package/src/Select.tsx CHANGED
@@ -4,7 +4,6 @@ import {
4
4
  FontSizeTokens,
5
5
  GetProps,
6
6
  TamaguiElement,
7
- TamaguiTextElement,
8
7
  getVariableValue,
9
8
  isWeb,
10
9
  styled,
@@ -34,6 +33,7 @@ import {
34
33
  import { SelectContent } from './SelectContent'
35
34
  import { SelectInlineImpl } from './SelectImpl'
36
35
  import { SelectItem, useSelectItemContext } from './SelectItem'
36
+ import { ITEM_TEXT_NAME, SelectItemText } from './SelectItemText'
37
37
  import { SelectScrollDownButton, SelectScrollUpButton } from './SelectScrollButton'
38
38
  import { SelectTrigger } from './SelectTrigger'
39
39
  import { SelectViewport } from './SelectViewport'
@@ -117,95 +117,6 @@ export const SelectIcon = styled(XStack, {
117
117
  children: <Paragraph>▼</Paragraph>,
118
118
  })
119
119
 
120
- /* -------------------------------------------------------------------------------------------------
121
- * SelectItemText
122
- * -----------------------------------------------------------------------------------------------*/
123
-
124
- const ITEM_TEXT_NAME = 'SelectItemText'
125
-
126
- export const SelectItemTextFrame = styled(SizableText, {
127
- name: ITEM_TEXT_NAME,
128
-
129
- variants: {
130
- unstyled: {
131
- false: {
132
- userSelect: 'none',
133
- color: '$color',
134
- ellipse: true,
135
- },
136
- },
137
- } as const,
138
-
139
- defaultVariants: {
140
- unstyled: false,
141
- },
142
- })
143
-
144
- type SelectItemTextProps = GetProps<typeof SelectItemTextFrame>
145
-
146
- const SelectItemText = React.forwardRef<TamaguiTextElement, SelectItemTextProps>(
147
- (props: ScopedProps<SelectItemTextProps>, forwardedRef) => {
148
- const { __scopeSelect, className, ...itemTextProps } = props
149
- const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect)
150
- const itemParentContext = useSelectItemParentContext(ITEM_TEXT_NAME, __scopeSelect)
151
- const ref = React.useRef<TamaguiTextElement | null>(null)
152
- const composedRefs = useComposedRefs(forwardedRef, ref)
153
- const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect)
154
-
155
- const contents = React.useMemo(
156
- () => (
157
- <SelectItemTextFrame
158
- className={className}
159
- size={itemParentContext.size as any}
160
- id={itemContext.textId}
161
- {...itemTextProps}
162
- ref={composedRefs}
163
- />
164
- ),
165
- // eslint-disable-next-line react-hooks/exhaustive-deps
166
- [props, itemParentContext.size, className, itemContext.textId]
167
- )
168
-
169
- React.useEffect(() => {
170
- if (
171
- itemParentContext.initialValue === itemContext.value &&
172
- !context.selectedIndex
173
- ) {
174
- context.setSelectedItem(contents)
175
- }
176
- }, [])
177
-
178
- React.useEffect(() => {
179
- return itemParentContext.valueSubscribe((val) => {
180
- if (val === itemContext.value) {
181
- context.setSelectedItem(contents)
182
- }
183
- })
184
- }, [itemContext.value])
185
-
186
- if (itemParentContext.shouldRenderWebNative) {
187
- return <>{props.children}</>
188
- }
189
-
190
- return (
191
- <>
192
- {contents}
193
-
194
- {/* Portal an option in the bubble select */}
195
- {/* {context.bubbleSelect
196
- ? ReactDOM.createPortal(
197
- // we use `.textContent` because `option` only support `string` or `number`
198
- <option value={itemContext.value}>{ref.current?.textContent}</option>,
199
- context.bubbleSelect
200
- )
201
- : null} */}
202
- </>
203
- )
204
- }
205
- )
206
-
207
- SelectItemText.displayName = ITEM_TEXT_NAME
208
-
209
120
  /* -------------------------------------------------------------------------------------------------
210
121
  * SelectItemIndicator
211
122
  * -----------------------------------------------------------------------------------------------*/
@@ -1,6 +1,7 @@
1
1
  import { FloatingOverlay, FloatingPortal } from '@floating-ui/react'
2
2
  import { Theme, useIsTouchDevice, useThemeName } from '@tamagui/core'
3
3
  import { FocusScope, FocusScopeProps } from '@tamagui/focus-scope'
4
+ import { useMemo } from 'react'
4
5
 
5
6
  import { useSelectContext, useSelectItemParentContext } from './context'
6
7
  import { SelectContentProps } from './types'
@@ -31,6 +32,10 @@ export const SelectContent = ({
31
32
 
32
33
  const touch = useIsTouchDevice()
33
34
 
35
+ const overlayStyle = useMemo(() => {
36
+ return { zIndex, pointerEvents: context.open ? 'auto' : 'none' } as const
37
+ }, [context.open])
38
+
34
39
  if (itemParentContext.shouldRenderWebNative) {
35
40
  return <>{children}</>
36
41
  }
@@ -45,7 +50,7 @@ export const SelectContent = ({
45
50
  return (
46
51
  <FloatingPortal>
47
52
  <FloatingOverlay
48
- style={{ zIndex, pointerEvents: context.open ? 'auto' : 'none' }}
53
+ style={overlayStyle}
49
54
  lockScroll={!context.disablePreventBodyScroll && !!context.open && !touch}
50
55
  >
51
56
  <FocusScope loop enabled={!!context.open} trapped {...focusScopeProps}>
@@ -17,6 +17,8 @@ import {
17
17
  import {
18
18
  isClient,
19
19
  isWeb,
20
+ useEvent,
21
+ useGet,
20
22
  useIsTouchDevice,
21
23
  useIsomorphicLayoutEffect,
22
24
  } from '@tamagui/core'
@@ -110,51 +112,31 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
110
112
  open,
111
113
  onOpenChange: setOpen,
112
114
  placement: 'bottom-start',
113
- middleware: fallback
114
- ? [
115
- offset(5),
116
- ...flipOrShiftMiddlewares,
117
- size({
118
- apply({
119
- availableHeight,
120
- rects: {
121
- reference: { width },
122
- },
123
- }) {
124
- floatingStyle.current = {
125
- width: width,
126
- maxHeight: availableHeight,
127
- minWidth: width + 8,
128
- }
129
- },
130
- padding: WINDOW_PADDING,
131
- }),
132
- ]
133
- : [
134
- size({
135
- apply({
136
- rects: {
137
- reference: { width },
138
- },
139
- }) {
140
- floatingStyle.current = {
141
- minWidth: width + 8,
142
- }
143
- },
144
- }),
145
- ...flipOrShiftMiddlewares,
146
- inner({
147
- listRef: listItemsRef,
148
- overflowRef,
149
- index: selectedIndex,
150
- offset: innerOffset,
151
- onFallbackChange: setFallback,
152
- padding: 10,
153
- minItemsVisible: touch ? 10 : 4,
154
- referenceOverflowThreshold: 20,
155
- }),
156
- offset({ crossAxis: -5 }),
157
- ],
115
+ middleware: [
116
+ size({
117
+ apply({
118
+ rects: {
119
+ reference: { width },
120
+ },
121
+ }) {
122
+ floatingStyle.current = {
123
+ minWidth: width + 8,
124
+ }
125
+ },
126
+ }),
127
+ ...flipOrShiftMiddlewares,
128
+ inner({
129
+ listRef: listItemsRef,
130
+ overflowRef,
131
+ index: selectedIndex,
132
+ offset: innerOffset,
133
+ // onFallbackChange: setFallback,
134
+ padding: 10,
135
+ minItemsVisible: touch ? 10 : 4,
136
+ referenceOverflowThreshold: 20,
137
+ }),
138
+ offset({ crossAxis: -5 }),
139
+ ],
158
140
  })
159
141
 
160
142
  useIsomorphicLayoutEffect(() => {
@@ -176,7 +158,12 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
176
158
  floatingRef.current.clientHeight -
177
159
  SCROLL_ARROW_THRESHOLD
178
160
 
179
- const interactions = useInteractions([
161
+ const onMatch = useEvent((index: number) => {
162
+ const fn = open ? setActiveIndex : setSelectedIndex
163
+ return fn(index)
164
+ })
165
+
166
+ const interactionsProps = [
180
167
  useClick(context, { event: 'mousedown' }),
181
168
  useDismiss(context, { outsidePress: false }),
182
169
  useRole(context, { role: 'listbox' }),
@@ -194,11 +181,18 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
194
181
  }),
195
182
  useTypeahead(context, {
196
183
  listRef: listContentRef,
197
- onMatch: open ? setActiveIndex : setSelectedIndex,
184
+ onMatch,
198
185
  selectedIndex,
199
186
  activeIndex,
200
187
  }),
201
- ])
188
+ ]
189
+
190
+ const interactions = useInteractions(
191
+ // unfortunately these memos will just always break due to floating-ui context always changing :/
192
+ React.useMemo(() => {
193
+ return interactionsProps
194
+ }, interactionsProps)
195
+ )
202
196
 
203
197
  const interactionsContext = React.useMemo(() => {
204
198
  return {
@@ -257,7 +251,7 @@ export const SelectInlineImpl = (props: SelectImplProps) => {
257
251
  })
258
252
  },
259
253
  }
260
- }, [refs.reference.current, refs.floating.current, y, x, interactions])
254
+ }, [refs.reference.current, x, y, refs.floating.current, interactions])
261
255
 
262
256
  // effects
263
257