@cdx-ui/components 0.0.1-beta.140 → 0.0.1-beta.142

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 (148) hide show
  1. package/lib/commonjs/components/BottomSheet/index.js +8 -2
  2. package/lib/commonjs/components/BottomSheet/index.js.map +1 -1
  3. package/lib/commonjs/components/Calendar/CalendarMonthHeader.js +96 -0
  4. package/lib/commonjs/components/Calendar/CalendarMonthHeader.js.map +1 -0
  5. package/lib/commonjs/components/Calendar/CalendarYearPickerGrid.js +74 -0
  6. package/lib/commonjs/components/Calendar/CalendarYearPickerGrid.js.map +1 -0
  7. package/lib/commonjs/components/Calendar/flashCalendarAdapter.js +298 -0
  8. package/lib/commonjs/components/Calendar/flashCalendarAdapter.js.map +1 -0
  9. package/lib/commonjs/components/Calendar/index.js +149 -0
  10. package/lib/commonjs/components/Calendar/index.js.map +1 -0
  11. package/lib/commonjs/components/Calendar/styles.js +70 -0
  12. package/lib/commonjs/components/Calendar/styles.js.map +1 -0
  13. package/lib/commonjs/components/DateField/index.js +147 -0
  14. package/lib/commonjs/components/DateField/index.js.map +1 -0
  15. package/lib/commonjs/components/DateField/styles.js +34 -0
  16. package/lib/commonjs/components/DateField/styles.js.map +1 -0
  17. package/lib/commonjs/components/DatePicker/index.js +163 -0
  18. package/lib/commonjs/components/DatePicker/index.js.map +1 -0
  19. package/lib/commonjs/components/DateRangePicker/index.js +177 -0
  20. package/lib/commonjs/components/DateRangePicker/index.js.map +1 -0
  21. package/lib/commonjs/components/DateTimeField/index.js +96 -0
  22. package/lib/commonjs/components/DateTimeField/index.js.map +1 -0
  23. package/lib/commonjs/components/DateTimeList/index.js +180 -0
  24. package/lib/commonjs/components/DateTimeList/index.js.map +1 -0
  25. package/lib/commonjs/components/DateTimeList/styles.js +55 -0
  26. package/lib/commonjs/components/DateTimeList/styles.js.map +1 -0
  27. package/lib/commonjs/components/DateTimePicker/index.js +187 -0
  28. package/lib/commonjs/components/DateTimePicker/index.js.map +1 -0
  29. package/lib/commonjs/components/MonthCalendar/index.js +229 -0
  30. package/lib/commonjs/components/MonthCalendar/index.js.map +1 -0
  31. package/lib/commonjs/components/MonthPicker/index.js +163 -0
  32. package/lib/commonjs/components/MonthPicker/index.js.map +1 -0
  33. package/lib/commonjs/components/RangeCalendar/index.js +165 -0
  34. package/lib/commonjs/components/RangeCalendar/index.js.map +1 -0
  35. package/lib/commonjs/components/index.js +120 -0
  36. package/lib/commonjs/components/index.js.map +1 -1
  37. package/lib/commonjs/components/picker/PickerTrigger.js +49 -0
  38. package/lib/commonjs/components/picker/PickerTrigger.js.map +1 -0
  39. package/lib/commonjs/components/picker/styles.js +15 -0
  40. package/lib/commonjs/components/picker/styles.js.map +1 -0
  41. package/lib/commonjs/components/picker/surfaces.js +141 -0
  42. package/lib/commonjs/components/picker/surfaces.js.map +1 -0
  43. package/lib/module/components/BottomSheet/index.js +8 -2
  44. package/lib/module/components/BottomSheet/index.js.map +1 -1
  45. package/lib/module/components/Calendar/CalendarMonthHeader.js +92 -0
  46. package/lib/module/components/Calendar/CalendarMonthHeader.js.map +1 -0
  47. package/lib/module/components/Calendar/CalendarYearPickerGrid.js +70 -0
  48. package/lib/module/components/Calendar/CalendarYearPickerGrid.js.map +1 -0
  49. package/lib/module/components/Calendar/flashCalendarAdapter.js +290 -0
  50. package/lib/module/components/Calendar/flashCalendarAdapter.js.map +1 -0
  51. package/lib/module/components/Calendar/index.js +145 -0
  52. package/lib/module/components/Calendar/index.js.map +1 -0
  53. package/lib/module/components/Calendar/styles.js +66 -0
  54. package/lib/module/components/Calendar/styles.js.map +1 -0
  55. package/lib/module/components/DateField/index.js +143 -0
  56. package/lib/module/components/DateField/index.js.map +1 -0
  57. package/lib/module/components/DateField/styles.js +30 -0
  58. package/lib/module/components/DateField/styles.js.map +1 -0
  59. package/lib/module/components/DatePicker/index.js +159 -0
  60. package/lib/module/components/DatePicker/index.js.map +1 -0
  61. package/lib/module/components/DateRangePicker/index.js +173 -0
  62. package/lib/module/components/DateRangePicker/index.js.map +1 -0
  63. package/lib/module/components/DateTimeField/index.js +92 -0
  64. package/lib/module/components/DateTimeField/index.js.map +1 -0
  65. package/lib/module/components/DateTimeList/index.js +176 -0
  66. package/lib/module/components/DateTimeList/index.js.map +1 -0
  67. package/lib/module/components/DateTimeList/styles.js +52 -0
  68. package/lib/module/components/DateTimeList/styles.js.map +1 -0
  69. package/lib/module/components/DateTimePicker/index.js +183 -0
  70. package/lib/module/components/DateTimePicker/index.js.map +1 -0
  71. package/lib/module/components/MonthCalendar/index.js +225 -0
  72. package/lib/module/components/MonthCalendar/index.js.map +1 -0
  73. package/lib/module/components/MonthPicker/index.js +159 -0
  74. package/lib/module/components/MonthPicker/index.js.map +1 -0
  75. package/lib/module/components/RangeCalendar/index.js +161 -0
  76. package/lib/module/components/RangeCalendar/index.js.map +1 -0
  77. package/lib/module/components/index.js +10 -0
  78. package/lib/module/components/index.js.map +1 -1
  79. package/lib/module/components/picker/PickerTrigger.js +45 -0
  80. package/lib/module/components/picker/PickerTrigger.js.map +1 -0
  81. package/lib/module/components/picker/styles.js +12 -0
  82. package/lib/module/components/picker/styles.js.map +1 -0
  83. package/lib/module/components/picker/surfaces.js +135 -0
  84. package/lib/module/components/picker/surfaces.js.map +1 -0
  85. package/lib/typescript/components/BottomSheet/index.d.ts +2 -2
  86. package/lib/typescript/components/BottomSheet/index.d.ts.map +1 -1
  87. package/lib/typescript/components/Calendar/CalendarMonthHeader.d.ts +14 -0
  88. package/lib/typescript/components/Calendar/CalendarMonthHeader.d.ts.map +1 -0
  89. package/lib/typescript/components/Calendar/CalendarYearPickerGrid.d.ts +12 -0
  90. package/lib/typescript/components/Calendar/CalendarYearPickerGrid.d.ts.map +1 -0
  91. package/lib/typescript/components/Calendar/flashCalendarAdapter.d.ts +18 -0
  92. package/lib/typescript/components/Calendar/flashCalendarAdapter.d.ts.map +1 -0
  93. package/lib/typescript/components/Calendar/index.d.ts +19 -0
  94. package/lib/typescript/components/Calendar/index.d.ts.map +1 -0
  95. package/lib/typescript/components/Calendar/styles.d.ts +23 -0
  96. package/lib/typescript/components/Calendar/styles.d.ts.map +1 -0
  97. package/lib/typescript/components/DateField/index.d.ts +43 -0
  98. package/lib/typescript/components/DateField/index.d.ts.map +1 -0
  99. package/lib/typescript/components/DateField/styles.d.ts +15 -0
  100. package/lib/typescript/components/DateField/styles.d.ts.map +1 -0
  101. package/lib/typescript/components/DatePicker/index.d.ts +40 -0
  102. package/lib/typescript/components/DatePicker/index.d.ts.map +1 -0
  103. package/lib/typescript/components/DateRangePicker/index.d.ts +45 -0
  104. package/lib/typescript/components/DateRangePicker/index.d.ts.map +1 -0
  105. package/lib/typescript/components/DateTimeField/index.d.ts +29 -0
  106. package/lib/typescript/components/DateTimeField/index.d.ts.map +1 -0
  107. package/lib/typescript/components/DateTimeList/index.d.ts +19 -0
  108. package/lib/typescript/components/DateTimeList/index.d.ts.map +1 -0
  109. package/lib/typescript/components/DateTimeList/styles.d.ts +17 -0
  110. package/lib/typescript/components/DateTimeList/styles.d.ts.map +1 -0
  111. package/lib/typescript/components/DateTimePicker/index.d.ts +40 -0
  112. package/lib/typescript/components/DateTimePicker/index.d.ts.map +1 -0
  113. package/lib/typescript/components/MonthCalendar/index.d.ts +29 -0
  114. package/lib/typescript/components/MonthCalendar/index.d.ts.map +1 -0
  115. package/lib/typescript/components/MonthPicker/index.d.ts +40 -0
  116. package/lib/typescript/components/MonthPicker/index.d.ts.map +1 -0
  117. package/lib/typescript/components/RangeCalendar/index.d.ts +19 -0
  118. package/lib/typescript/components/RangeCalendar/index.d.ts.map +1 -0
  119. package/lib/typescript/components/index.d.ts +10 -0
  120. package/lib/typescript/components/index.d.ts.map +1 -1
  121. package/lib/typescript/components/picker/PickerTrigger.d.ts +25 -0
  122. package/lib/typescript/components/picker/PickerTrigger.d.ts.map +1 -0
  123. package/lib/typescript/components/picker/styles.d.ts +4 -0
  124. package/lib/typescript/components/picker/styles.d.ts.map +1 -0
  125. package/lib/typescript/components/picker/surfaces.d.ts +28 -0
  126. package/lib/typescript/components/picker/surfaces.d.ts.map +1 -0
  127. package/package.json +6 -4
  128. package/src/components/BottomSheet/index.tsx +7 -1
  129. package/src/components/Calendar/CalendarMonthHeader.tsx +124 -0
  130. package/src/components/Calendar/CalendarYearPickerGrid.tsx +101 -0
  131. package/src/components/Calendar/flashCalendarAdapter.ts +362 -0
  132. package/src/components/Calendar/index.tsx +151 -0
  133. package/src/components/Calendar/styles.ts +80 -0
  134. package/src/components/DateField/index.tsx +196 -0
  135. package/src/components/DateField/styles.ts +51 -0
  136. package/src/components/DatePicker/index.tsx +187 -0
  137. package/src/components/DateRangePicker/index.tsx +202 -0
  138. package/src/components/DateTimeField/index.tsx +128 -0
  139. package/src/components/DateTimeList/index.tsx +187 -0
  140. package/src/components/DateTimeList/styles.ts +59 -0
  141. package/src/components/DateTimePicker/index.tsx +233 -0
  142. package/src/components/MonthCalendar/index.tsx +252 -0
  143. package/src/components/MonthPicker/index.tsx +188 -0
  144. package/src/components/RangeCalendar/index.tsx +162 -0
  145. package/src/components/index.ts +10 -0
  146. package/src/components/picker/PickerTrigger.tsx +65 -0
  147. package/src/components/picker/styles.ts +17 -0
  148. package/src/components/picker/surfaces.tsx +174 -0
@@ -0,0 +1,174 @@
1
+ import { useCallback, useEffect, useRef, useState, type ReactNode, type RefObject } from 'react';
2
+ import { ScrollView, View } from 'react-native';
3
+ import { FadeIn, FadeOut } from 'react-native-reanimated';
4
+ import {
5
+ OverlayContainer,
6
+ useAnchorPosition,
7
+ useDismissOverlay,
8
+ useEscapeKey,
9
+ useOverlayPosition,
10
+ } from '@cdx-ui/primitives';
11
+ import { cn } from '@cdx-ui/utils';
12
+ import { Dialog } from '../Dialog';
13
+ import { BottomSheet, useBottomSheet, type BottomSheetModalProps } from '../BottomSheet';
14
+ import { PICKER_POPOVER_Z_INDEX, pickerPopoverContentVariants } from './styles';
15
+
16
+ // Shared surface wiring for picker compound components.
17
+
18
+ export function PickerDialogSurface({
19
+ open,
20
+ setOpen,
21
+ registerSurface,
22
+ children,
23
+ }: {
24
+ open: boolean;
25
+ setOpen: (open: boolean) => void;
26
+ registerSurface: (type: 'dialog') => void;
27
+ children: ReactNode;
28
+ }) {
29
+ useEffect(() => {
30
+ registerSurface('dialog');
31
+ }, [registerSurface]);
32
+
33
+ return (
34
+ <Dialog isOpen={open} onOpenChange={setOpen}>
35
+ {children}
36
+ </Dialog>
37
+ );
38
+ }
39
+
40
+ type PickerBottomSheetSurfaceProps = {
41
+ open: boolean;
42
+ setOpen: (open: boolean) => void;
43
+ registerSurface: (type: 'bottomSheet') => void;
44
+ children: ReactNode;
45
+ } & Pick<BottomSheetModalProps, 'snapPoints' | 'enableDynamicSizing'>;
46
+
47
+ export function PickerBottomSheetSurface({
48
+ open,
49
+ setOpen,
50
+ registerSurface,
51
+ children,
52
+ snapPoints = ['70%', '90%'],
53
+ enableDynamicSizing = false,
54
+ }: PickerBottomSheetSurfaceProps) {
55
+ const { ref, dismiss } = useBottomSheet();
56
+ const isPresentedRef = useRef(false);
57
+
58
+ useEffect(() => {
59
+ registerSurface('bottomSheet');
60
+ }, [registerSurface]);
61
+
62
+ const handleDismiss = useCallback(() => {
63
+ isPresentedRef.current = false;
64
+ setOpen(false);
65
+ }, [setOpen]);
66
+
67
+ const tryPresent = useCallback(() => {
68
+ if (!open || isPresentedRef.current) {
69
+ return;
70
+ }
71
+ ref.current?.present();
72
+ isPresentedRef.current = true;
73
+ }, [open, ref]);
74
+
75
+ useEffect(() => {
76
+ if (!open) {
77
+ if (isPresentedRef.current) {
78
+ dismiss();
79
+ isPresentedRef.current = false;
80
+ }
81
+ return;
82
+ }
83
+
84
+ const frame = requestAnimationFrame(() => {
85
+ tryPresent();
86
+ });
87
+
88
+ return () => cancelAnimationFrame(frame);
89
+ }, [dismiss, open, tryPresent]);
90
+
91
+ return (
92
+ <BottomSheet.Modal
93
+ ref={ref}
94
+ onDismiss={handleDismiss}
95
+ snapPoints={snapPoints}
96
+ enableDynamicSizing={enableDynamicSizing}
97
+ >
98
+ <BottomSheet.View onLayout={tryPresent}>{children}</BottomSheet.View>
99
+ </BottomSheet.Modal>
100
+ );
101
+ }
102
+
103
+ interface PickerPopoverSurfaceProps {
104
+ open: boolean;
105
+ setOpen: (open: boolean) => void;
106
+ registerSurface: (type: 'popover') => void;
107
+ anchorRef: RefObject<View | null>;
108
+ triggerRef?: RefObject<View | null>;
109
+ children: ReactNode;
110
+ className?: string;
111
+ }
112
+
113
+ export function PickerPopoverSurface({
114
+ open,
115
+ setOpen,
116
+ registerSurface,
117
+ anchorRef,
118
+ triggerRef,
119
+ children,
120
+ className,
121
+ }: PickerPopoverSurfaceProps) {
122
+ const contentRef = useRef<View>(null);
123
+ const [dismissEnabled, setDismissEnabled] = useState(false);
124
+
125
+ useEffect(() => {
126
+ registerSurface('popover');
127
+ }, [registerSurface]);
128
+
129
+ useEffect(() => {
130
+ if (!open) {
131
+ setDismissEnabled(false);
132
+ return;
133
+ }
134
+
135
+ const frame = requestAnimationFrame(() => {
136
+ setDismissEnabled(true);
137
+ });
138
+
139
+ return () => cancelAnimationFrame(frame);
140
+ }, [open]);
141
+
142
+ const dismiss = useCallback(() => setOpen(false), [setOpen]);
143
+
144
+ const anchorLayout = useAnchorPosition(anchorRef, open);
145
+ const position = useOverlayPosition(anchorLayout);
146
+
147
+ const excludeRefs = triggerRef ? [anchorRef, triggerRef] : [anchorRef];
148
+ useDismissOverlay(dismissEnabled, contentRef, excludeRefs, dismiss);
149
+ useEscapeKey(open, dismiss);
150
+
151
+ if (!open || !position) {
152
+ return null;
153
+ }
154
+
155
+ return (
156
+ <OverlayContainer
157
+ onDismiss={dismiss}
158
+ entering={FadeIn.duration(150)}
159
+ exiting={FadeOut.duration(100)}
160
+ style={[position.style, { zIndex: PICKER_POPOVER_Z_INDEX }]}
161
+ >
162
+ <View
163
+ ref={contentRef}
164
+ className={cn(pickerPopoverContentVariants(), className)}
165
+ style={{ maxHeight: position.maxHeight }}
166
+ accessibilityViewIsModal
167
+ >
168
+ <ScrollView scrollEventThrottle={16} showsVerticalScrollIndicator={false}>
169
+ {children}
170
+ </ScrollView>
171
+ </View>
172
+ </OverlayContainer>
173
+ );
174
+ }