@tamagui/select 1.0.1-beta.21 → 1.0.1-beta.211

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 (114) hide show
  1. package/dist/cjs/BubbleSelect.js +43 -0
  2. package/dist/cjs/BubbleSelect.js.map +7 -0
  3. package/dist/cjs/Select.js +412 -390
  4. package/dist/cjs/Select.js.map +3 -3
  5. package/dist/cjs/SelectContent.js +72 -0
  6. package/dist/cjs/SelectContent.js.map +7 -0
  7. package/dist/cjs/SelectContent.native.js +31 -0
  8. package/dist/cjs/SelectContent.native.js.map +7 -0
  9. package/dist/cjs/SelectImpl.js +286 -0
  10. package/dist/cjs/SelectImpl.js.map +7 -0
  11. package/dist/cjs/SelectScrollButton.js +157 -0
  12. package/dist/cjs/SelectScrollButton.js.map +7 -0
  13. package/dist/cjs/SelectScrollButton.native.js +32 -0
  14. package/dist/cjs/SelectScrollButton.native.js.map +7 -0
  15. package/dist/cjs/SelectViewport.js +126 -0
  16. package/dist/cjs/SelectViewport.js.map +7 -0
  17. package/dist/cjs/SelectViewport.native.js +41 -0
  18. package/dist/cjs/SelectViewport.native.js.map +7 -0
  19. package/dist/cjs/constants.js +47 -0
  20. package/dist/cjs/constants.js.map +7 -0
  21. package/dist/cjs/context.js +49 -0
  22. package/dist/cjs/context.js.map +7 -0
  23. package/dist/cjs/index.js +2 -0
  24. package/dist/cjs/index.js.map +2 -2
  25. package/dist/cjs/types.js +17 -0
  26. package/dist/cjs/types.js.map +7 -0
  27. package/dist/cjs/useSelectBreakpointActive.js +39 -0
  28. package/dist/cjs/useSelectBreakpointActive.js.map +7 -0
  29. package/dist/esm/BubbleSelect.js +24 -0
  30. package/dist/esm/BubbleSelect.js.map +7 -0
  31. package/dist/esm/Select.js +403 -358
  32. package/dist/esm/Select.js.map +3 -3
  33. package/dist/esm/SelectContent.js +48 -0
  34. package/dist/esm/SelectContent.js.map +7 -0
  35. package/dist/esm/SelectContent.native.js +7 -0
  36. package/dist/esm/SelectContent.native.js.map +7 -0
  37. package/dist/esm/SelectImpl.js +271 -0
  38. package/dist/esm/SelectImpl.js.map +7 -0
  39. package/dist/esm/SelectScrollButton.js +126 -0
  40. package/dist/esm/SelectScrollButton.js.map +7 -0
  41. package/dist/esm/SelectScrollButton.native.js +7 -0
  42. package/dist/esm/SelectScrollButton.native.js.map +7 -0
  43. package/dist/esm/SelectViewport.js +95 -0
  44. package/dist/esm/SelectViewport.js.map +7 -0
  45. package/dist/esm/SelectViewport.native.js +17 -0
  46. package/dist/esm/SelectViewport.native.js.map +7 -0
  47. package/dist/esm/constants.js +17 -0
  48. package/dist/esm/constants.js.map +7 -0
  49. package/dist/esm/context.js +21 -0
  50. package/dist/esm/context.js.map +7 -0
  51. package/dist/esm/index.js +1 -0
  52. package/dist/esm/index.js.map +2 -2
  53. package/dist/esm/types.js +1 -0
  54. package/dist/esm/types.js.map +7 -0
  55. package/dist/esm/useSelectBreakpointActive.js +14 -0
  56. package/dist/esm/useSelectBreakpointActive.js.map +7 -0
  57. package/dist/jsx/BubbleSelect.js +24 -0
  58. package/dist/jsx/BubbleSelect.js.map +7 -0
  59. package/dist/jsx/Select.js +283 -271
  60. package/dist/jsx/Select.js.map +7 -0
  61. package/dist/jsx/SelectContent.js +27 -0
  62. package/dist/jsx/SelectContent.js.map +7 -0
  63. package/dist/jsx/SelectContent.native.js +7 -0
  64. package/dist/jsx/SelectContent.native.js.map +7 -0
  65. package/dist/jsx/SelectImpl.js +244 -0
  66. package/dist/jsx/SelectImpl.js.map +7 -0
  67. package/dist/jsx/SelectScrollButton.js +99 -0
  68. package/dist/jsx/SelectScrollButton.js.map +7 -0
  69. package/dist/jsx/SelectScrollButton.native.js +7 -0
  70. package/dist/jsx/SelectScrollButton.native.js.map +7 -0
  71. package/dist/jsx/SelectViewport.js +72 -0
  72. package/dist/jsx/SelectViewport.js.map +7 -0
  73. package/dist/jsx/SelectViewport.native.js +13 -0
  74. package/dist/jsx/SelectViewport.native.js.map +7 -0
  75. package/dist/jsx/constants.js +17 -0
  76. package/dist/jsx/constants.js.map +7 -0
  77. package/dist/jsx/context.js +15 -0
  78. package/dist/jsx/context.js.map +7 -0
  79. package/dist/jsx/index.js +2 -0
  80. package/dist/jsx/index.js.map +7 -0
  81. package/dist/jsx/types.js +1 -0
  82. package/dist/jsx/types.js.map +7 -0
  83. package/dist/jsx/useSelectBreakpointActive.js +14 -0
  84. package/dist/jsx/useSelectBreakpointActive.js.map +7 -0
  85. package/package.json +26 -16
  86. package/src/BubbleSelect.tsx +46 -0
  87. package/src/Select.tsx +618 -0
  88. package/src/SelectContent.native.tsx +5 -0
  89. package/src/SelectContent.tsx +45 -0
  90. package/src/SelectImpl.tsx +342 -0
  91. package/src/SelectScrollButton.native.tsx +7 -0
  92. package/src/SelectScrollButton.tsx +168 -0
  93. package/src/SelectViewport.native.tsx +14 -0
  94. package/src/SelectViewport.tsx +104 -0
  95. package/src/constants.tsx +7 -0
  96. package/src/context.tsx +19 -0
  97. package/src/index.tsx +8 -0
  98. package/src/types.tsx +94 -0
  99. package/src/useSelectBreakpointActive.tsx +15 -0
  100. package/types/BubbleSelect.d.ts +2 -0
  101. package/types/Select.d.ts +753 -0
  102. package/types/SelectContent.d.ts +5 -0
  103. package/types/SelectContent.native.d.ts +4 -0
  104. package/types/SelectImpl.d.ts +9 -0
  105. package/types/SelectScrollButton.d.ts +6 -0
  106. package/types/SelectScrollButton.native.d.ts +4 -0
  107. package/types/SelectViewport.d.ts +127 -0
  108. package/types/SelectViewport.native.d.ts +7 -0
  109. package/types/constants.d.ts +8 -0
  110. package/types/context.d.ts +21 -0
  111. package/types/index.d.ts +2 -0
  112. package/types/types.d.ts +84 -0
  113. package/types/useSelectBreakpointActive.d.ts +4 -0
  114. package/types/index.d.ts.map +0 -1
package/src/types.tsx ADDED
@@ -0,0 +1,94 @@
1
+ import type {
2
+ ContextData,
3
+ FloatingContext,
4
+ ReferenceType,
5
+ } from '@floating-ui/react-dom-interactions'
6
+ import type { MediaQueryKey, SizeTokens } from '@tamagui/core'
7
+ import type { Scope } from '@tamagui/create-context'
8
+ import type { ThemeableStackProps, YStackProps } from '@tamagui/stacks'
9
+ import type { DispatchWithoutAction, HTMLProps, MutableRefObject, ReactNode } from 'react'
10
+
11
+ export type Direction = 'ltr' | 'rtl'
12
+
13
+ export type ScopedProps<P> = P & { __scopeSelect?: Scope }
14
+
15
+ export interface SelectProps {
16
+ id?: string
17
+ children?: ReactNode
18
+ value?: string
19
+ defaultValue?: string
20
+ onValueChange?(value: string): void
21
+ open?: boolean
22
+ defaultOpen?: boolean
23
+ onOpenChange?(open: boolean): void
24
+ dir?: Direction
25
+ name?: string
26
+ autoComplete?: string
27
+ size?: SizeTokens
28
+ sheetBreakpoint?: MediaQueryKey | false
29
+ }
30
+
31
+ type NonNull<A> = Exclude<A, void | null>
32
+
33
+ export interface SelectContextValue {
34
+ dir?: Direction
35
+ scopeKey: string
36
+ sheetBreakpoint: NonNull<SelectProps['sheetBreakpoint']>
37
+ size?: SizeTokens
38
+ value: any
39
+ selectedItem: ReactNode
40
+ setSelectedItem: (item: ReactNode) => void
41
+ selectedIndex: number
42
+ setSelectedIndex: (index: number) => void
43
+ activeIndex: number | null
44
+ setActiveIndex: (index: number | null) => void
45
+ setValueAtIndex: (index: number, value: string) => void
46
+ open: boolean
47
+ setOpen: (open: boolean) => void
48
+ onChange: (value: string) => void
49
+ valueNode: Element | null
50
+ onValueNodeChange(node: HTMLElement): void
51
+ valueNodeHasChildren: boolean
52
+ onValueNodeHasChildrenChange(hasChildren: boolean): void
53
+ forceUpdate: DispatchWithoutAction
54
+
55
+ // SheetImpl only:
56
+ isInSheet?: boolean
57
+
58
+ // InlineImpl only:
59
+ fallback: boolean
60
+ blockSelection: boolean
61
+ allowSelectRef?: MutableRefObject<boolean>
62
+ allowMouseUpRef?: MutableRefObject<boolean>
63
+ upArrowRef?: MutableRefObject<HTMLDivElement | null>
64
+ downArrowRef?: MutableRefObject<HTMLDivElement | null>
65
+ selectTimeoutRef?: MutableRefObject<any>
66
+ setScrollTop?: Function
67
+ setInnerOffset?: Function
68
+ dataRef?: MutableRefObject<ContextData>
69
+ controlledScrolling?: boolean
70
+ listRef?: MutableRefObject<Array<HTMLElement | null>>
71
+ floatingRef?: MutableRefObject<HTMLElement | null>
72
+ canScrollUp?: boolean
73
+ canScrollDown?: boolean
74
+ floatingContext?: FloatingContext<ReferenceType>
75
+ interactions?: {
76
+ getReferenceProps: (userProps?: HTMLProps<Element> | undefined) => any
77
+ getFloatingProps: (userProps?: HTMLProps<HTMLElement> | undefined) => any
78
+ getItemProps: (userProps?: HTMLProps<HTMLElement> | undefined) => any
79
+ }
80
+ }
81
+
82
+ export type SelectViewportProps = ThemeableStackProps & {
83
+ size?: SizeTokens
84
+ }
85
+
86
+ export type SelectContentProps = ScopedProps<{ children?: React.ReactNode; zIndex?: number }>
87
+
88
+ export interface SelectScrollButtonImplProps extends YStackProps {
89
+ dir: 'up' | 'down'
90
+ componentName: string
91
+ }
92
+
93
+ export interface SelectScrollButtonProps
94
+ extends Omit<SelectScrollButtonImplProps, 'dir' | 'componentName'> {}
@@ -0,0 +1,15 @@
1
+ import { useMedia } from '@tamagui/core'
2
+
3
+ import { SelectContextValue } from './types'
4
+
5
+ export const useSelectBreakpointActive = (
6
+ sheetBreakpoint: SelectContextValue['sheetBreakpoint']
7
+ ) => {
8
+ const media = useMedia()
9
+ return sheetBreakpoint ? media[sheetBreakpoint] : false
10
+ }
11
+
12
+ export const useShowSelectSheet = (context: SelectContextValue) => {
13
+ const breakpointActive = useSelectBreakpointActive(context.sheetBreakpoint)
14
+ return context.open === false ? false : breakpointActive
15
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BubbleSelect.d.ts.map