@tamagui/select 1.0.1-beta.99 → 1.0.1-rc.0

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 +25 -33
  2. package/dist/cjs/BubbleSelect.js.map +1 -1
  3. package/dist/cjs/Select.js +391 -789
  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 +288 -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 +125 -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 +20 -33
  30. package/dist/esm/BubbleSelect.js.map +1 -1
  31. package/dist/esm/Select.js +379 -803
  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 +273 -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 +94 -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 +20 -18
  58. package/dist/jsx/BubbleSelect.js.map +1 -1
  59. package/dist/jsx/Select.js +259 -656
  60. package/dist/jsx/Select.js.map +3 -3
  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 +246 -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 +1 -0
  80. package/dist/jsx/index.js.map +2 -2
  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 -20
  86. package/src/Select.tsx +210 -906
  87. package/src/SelectContent.native.tsx +5 -0
  88. package/src/SelectContent.tsx +45 -0
  89. package/src/SelectImpl.tsx +344 -0
  90. package/src/SelectScrollButton.native.tsx +7 -0
  91. package/src/SelectScrollButton.tsx +168 -0
  92. package/src/SelectViewport.native.tsx +14 -0
  93. package/src/SelectViewport.tsx +104 -0
  94. package/src/constants.tsx +7 -0
  95. package/src/context.tsx +19 -0
  96. package/src/index.tsx +7 -0
  97. package/src/types.tsx +91 -0
  98. package/src/useSelectBreakpointActive.tsx +15 -0
  99. package/types/BubbleSelect.d.ts +2 -0
  100. package/types/Select.d.ts +449 -599
  101. package/types/SelectContent.d.ts +5 -0
  102. package/types/SelectContent.native.d.ts +4 -0
  103. package/types/SelectImpl.d.ts +9 -0
  104. package/types/SelectScrollButton.d.ts +6 -0
  105. package/types/SelectScrollButton.native.d.ts +4 -0
  106. package/types/SelectViewport.d.ts +127 -0
  107. package/types/SelectViewport.native.d.ts +7 -0
  108. package/types/constants.d.ts +8 -0
  109. package/types/context.d.ts +21 -0
  110. package/types/index.d.ts +2 -0
  111. package/types/types.d.ts +81 -0
  112. package/types/useSelectBreakpointActive.d.ts +4 -0
  113. package/types/Select.d.ts.map +0 -1
  114. package/types/index.d.ts.map +0 -1
@@ -0,0 +1,19 @@
1
+ import { createContextScope } from '@tamagui/create-context'
2
+
3
+ import { SELECT_NAME } from './constants'
4
+ import { ScopedProps, SelectContextValue } from './types'
5
+
6
+ export const [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME)
7
+
8
+ export const [SelectProvider, useSelectContext] =
9
+ createSelectContext<SelectContextValue>(SELECT_NAME)
10
+
11
+ export const ForwardSelectContext = (
12
+ props: ScopedProps<{ children?: any; context: SelectContextValue }>
13
+ ) => {
14
+ return (
15
+ <SelectProvider isInSheet scope={props.__scopeSelect} {...props.context}>
16
+ {props.children}
17
+ </SelectProvider>
18
+ )
19
+ }
package/src/index.tsx CHANGED
@@ -1 +1,8 @@
1
1
  export * from './Select'
2
+ export type {
3
+ SelectContentProps,
4
+ SelectProps,
5
+ SelectScrollButtonProps,
6
+ SelectViewportProps,
7
+ } from './types'
8
+ export * from './context'
package/src/types.tsx ADDED
@@ -0,0 +1,91 @@
1
+ import type {
2
+ ContextData,
3
+ FloatingContext,
4
+ ReferenceType,
5
+ } from '@floating-ui/react-dom-interactions'
6
+ import type { 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
+ }
29
+
30
+ export interface SelectContextValue {
31
+ dir?: Direction
32
+ scopeKey: string
33
+ sheetBreakpoint: any
34
+ size?: SizeTokens
35
+ value: any
36
+ selectedItem: ReactNode
37
+ setSelectedItem: (item: ReactNode) => void
38
+ selectedIndex: number
39
+ setSelectedIndex: (index: number) => void
40
+ activeIndex: number | null
41
+ setActiveIndex: (index: number | null) => void
42
+ setValueAtIndex: (index: number, value: string) => void
43
+ open: boolean
44
+ setOpen: (open: boolean) => void
45
+ onChange: (value: string) => void
46
+ valueNode: Element | null
47
+ onValueNodeChange(node: HTMLElement): void
48
+ valueNodeHasChildren: boolean
49
+ onValueNodeHasChildrenChange(hasChildren: boolean): void
50
+ forceUpdate: DispatchWithoutAction
51
+
52
+ // SheetImpl only:
53
+ isInSheet?: boolean
54
+
55
+ // InlineImpl only:
56
+ fallback: boolean
57
+ blockSelection: boolean
58
+ allowSelectRef?: MutableRefObject<boolean>
59
+ allowMouseUpRef?: MutableRefObject<boolean>
60
+ upArrowRef?: MutableRefObject<HTMLDivElement | null>
61
+ downArrowRef?: MutableRefObject<HTMLDivElement | null>
62
+ selectTimeoutRef?: MutableRefObject<any>
63
+ setScrollTop?: Function
64
+ setInnerOffset?: Function
65
+ dataRef?: MutableRefObject<ContextData>
66
+ controlledScrolling?: boolean
67
+ listRef?: MutableRefObject<Array<HTMLElement | null>>
68
+ floatingRef?: MutableRefObject<HTMLElement | null>
69
+ canScrollUp?: boolean
70
+ canScrollDown?: boolean
71
+ floatingContext?: FloatingContext<ReferenceType>
72
+ interactions?: {
73
+ getReferenceProps: (userProps?: HTMLProps<Element> | undefined) => any
74
+ getFloatingProps: (userProps?: HTMLProps<HTMLElement> | undefined) => any
75
+ getItemProps: (userProps?: HTMLProps<HTMLElement> | undefined) => any
76
+ }
77
+ }
78
+
79
+ export type SelectViewportProps = ThemeableStackProps & {
80
+ size?: SizeTokens
81
+ }
82
+
83
+ export type SelectContentProps = ScopedProps<{ children?: React.ReactNode; zIndex?: number }>
84
+
85
+ export interface SelectScrollButtonImplProps extends YStackProps {
86
+ dir: 'up' | 'down'
87
+ componentName: string
88
+ }
89
+
90
+ export interface SelectScrollButtonProps
91
+ 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