@elik56a/react-native-pickers 0.0.0-stage → 0.1.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.
- package/LICENSE +21 -0
- package/README.md +288 -2
- package/lib/date/Calendar.d.ts +89 -0
- package/lib/date/Calendar.d.ts.map +1 -0
- package/lib/date/Calendar.js +250 -0
- package/lib/date/Calendar.js.map +1 -0
- package/lib/date/DatePicker.d.ts +14 -0
- package/lib/date/DatePicker.d.ts.map +1 -0
- package/lib/date/DatePicker.js +17 -0
- package/lib/date/DatePicker.js.map +1 -0
- package/lib/date/DateWheelPicker.d.ts +29 -0
- package/lib/date/DateWheelPicker.d.ts.map +1 -0
- package/lib/date/DateWheelPicker.js +83 -0
- package/lib/date/DateWheelPicker.js.map +1 -0
- package/lib/emoji/EmojiPicker.d.ts +47 -0
- package/lib/emoji/EmojiPicker.d.ts.map +1 -0
- package/lib/emoji/EmojiPicker.js +161 -0
- package/lib/emoji/EmojiPicker.js.map +1 -0
- package/lib/emoji/data.d.ts +2 -0
- package/lib/emoji/data.d.ts.map +1 -0
- package/lib/emoji/data.js +4 -0
- package/lib/emoji/data.js.map +1 -0
- package/lib/emoji/emojis.d.ts +23 -0
- package/lib/emoji/emojis.d.ts.map +1 -0
- package/lib/emoji/emojis.js +100 -0
- package/lib/emoji/emojis.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +17 -0
- package/lib/index.js.map +1 -0
- package/lib/select/SelectList.d.ts +60 -0
- package/lib/select/SelectList.d.ts.map +1 -0
- package/lib/select/SelectList.js +91 -0
- package/lib/select/SelectList.js.map +1 -0
- package/lib/select/SelectPicker.d.ts +35 -0
- package/lib/select/SelectPicker.d.ts.map +1 -0
- package/lib/select/SelectPicker.js +64 -0
- package/lib/select/SelectPicker.js.map +1 -0
- package/lib/select/filter.d.ts +3 -0
- package/lib/select/filter.d.ts.map +1 -0
- package/lib/select/filter.js +13 -0
- package/lib/select/filter.js.map +1 -0
- package/lib/sheet/BottomSheet.d.ts +29 -0
- package/lib/sheet/BottomSheet.d.ts.map +1 -0
- package/lib/sheet/BottomSheet.js +89 -0
- package/lib/sheet/BottomSheet.js.map +1 -0
- package/lib/sheet/PickerSheet.d.ts +26 -0
- package/lib/sheet/PickerSheet.d.ts.map +1 -0
- package/lib/sheet/PickerSheet.js +27 -0
- package/lib/sheet/PickerSheet.js.map +1 -0
- package/lib/sheet/sheets.d.ts +48 -0
- package/lib/sheet/sheets.d.ts.map +1 -0
- package/lib/sheet/sheets.js +58 -0
- package/lib/sheet/sheets.js.map +1 -0
- package/lib/theme.d.ts +81 -0
- package/lib/theme.d.ts.map +1 -0
- package/lib/theme.js +96 -0
- package/lib/theme.js.map +1 -0
- package/lib/time/TimePicker.d.ts +41 -0
- package/lib/time/TimePicker.d.ts.map +1 -0
- package/lib/time/TimePicker.js +105 -0
- package/lib/time/TimePicker.js.map +1 -0
- package/lib/types.d.ts +9 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/OwnScroll.d.ts +10 -0
- package/lib/utils/OwnScroll.d.ts.map +1 -0
- package/lib/utils/OwnScroll.js +13 -0
- package/lib/utils/OwnScroll.js.map +1 -0
- package/lib/utils/date.d.ts +30 -0
- package/lib/utils/date.d.ts.map +1 -0
- package/lib/utils/date.js +115 -0
- package/lib/utils/date.js.map +1 -0
- package/lib/wheel/MultiWheelPicker.d.ts +26 -0
- package/lib/wheel/MultiWheelPicker.d.ts.map +1 -0
- package/lib/wheel/MultiWheelPicker.js +28 -0
- package/lib/wheel/MultiWheelPicker.js.map +1 -0
- package/lib/wheel/WheelPicker.d.ts +59 -0
- package/lib/wheel/WheelPicker.d.ts.map +1 -0
- package/lib/wheel/WheelPicker.js +257 -0
- package/lib/wheel/WheelPicker.js.map +1 -0
- package/lib/wheel/typeToSelect.d.ts +8 -0
- package/lib/wheel/typeToSelect.d.ts.map +1 -0
- package/lib/wheel/typeToSelect.js +10 -0
- package/lib/wheel/typeToSelect.js.map +1 -0
- package/package.json +81 -4
- package/src/date/Calendar.tsx +586 -0
- package/src/date/DatePicker.tsx +22 -0
- package/src/date/DateWheelPicker.tsx +149 -0
- package/src/emoji/EmojiPicker.tsx +410 -0
- package/src/emoji/data.ts +3 -0
- package/src/emoji/emojis.ts +127 -0
- package/src/index.ts +16 -0
- package/src/select/SelectList.tsx +266 -0
- package/src/select/SelectPicker.tsx +203 -0
- package/src/select/filter.ts +17 -0
- package/src/sheet/BottomSheet.tsx +199 -0
- package/src/sheet/PickerSheet.tsx +86 -0
- package/src/sheet/sheets.tsx +218 -0
- package/src/theme.tsx +160 -0
- package/src/time/TimePicker.tsx +199 -0
- package/src/types.ts +10 -0
- package/src/utils/OwnScroll.tsx +14 -0
- package/src/utils/date.ts +131 -0
- package/src/wheel/MultiWheelPicker.tsx +96 -0
- package/src/wheel/WheelPicker.tsx +534 -0
- package/src/wheel/typeToSelect.ts +12 -0
package/lib/theme.d.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TextStyle } from 'react-native';
|
|
3
|
+
export interface PickerTheme {
|
|
4
|
+
dark: boolean;
|
|
5
|
+
colors: {
|
|
6
|
+
/** Picker surface background */
|
|
7
|
+
background: string;
|
|
8
|
+
/** Secondary surfaces: search inputs, chips, hovered rows */
|
|
9
|
+
surface: string;
|
|
10
|
+
/** Bottom sheet background */
|
|
11
|
+
sheet: string;
|
|
12
|
+
text: string;
|
|
13
|
+
textSecondary: string;
|
|
14
|
+
textDisabled: string;
|
|
15
|
+
primary: string;
|
|
16
|
+
onPrimary: string;
|
|
17
|
+
/** Soft primary tint: range fill, selected row background */
|
|
18
|
+
primaryMuted: string;
|
|
19
|
+
border: string;
|
|
20
|
+
backdrop: string;
|
|
21
|
+
/** Wheel selection band */
|
|
22
|
+
indicator: string;
|
|
23
|
+
handle: string;
|
|
24
|
+
};
|
|
25
|
+
radius: {
|
|
26
|
+
sm: number;
|
|
27
|
+
md: number;
|
|
28
|
+
lg: number;
|
|
29
|
+
full: number;
|
|
30
|
+
sheet: number;
|
|
31
|
+
};
|
|
32
|
+
spacing: {
|
|
33
|
+
xs: number;
|
|
34
|
+
sm: number;
|
|
35
|
+
md: number;
|
|
36
|
+
lg: number;
|
|
37
|
+
xl: number;
|
|
38
|
+
};
|
|
39
|
+
typography: {
|
|
40
|
+
fontFamily?: string;
|
|
41
|
+
fontFamilyMedium?: string;
|
|
42
|
+
sizes: {
|
|
43
|
+
xs: number;
|
|
44
|
+
sm: number;
|
|
45
|
+
md: number;
|
|
46
|
+
lg: number;
|
|
47
|
+
xl: number;
|
|
48
|
+
};
|
|
49
|
+
weights: {
|
|
50
|
+
regular: TextStyle['fontWeight'];
|
|
51
|
+
medium: TextStyle['fontWeight'];
|
|
52
|
+
bold: TextStyle['fontWeight'];
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
animation: {
|
|
56
|
+
duration: number;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export declare const lightTheme: PickerTheme;
|
|
60
|
+
export declare const darkTheme: PickerTheme;
|
|
61
|
+
export type DeepPartial<T> = {
|
|
62
|
+
[K in keyof T]?: T[K] extends object ? (T[K] extends Function ? T[K] : DeepPartial<T[K]>) : T[K];
|
|
63
|
+
};
|
|
64
|
+
export declare function mergeTheme<T>(base: T, override?: DeepPartial<T>): T;
|
|
65
|
+
/** Build a full theme from overrides on top of the light (or dark) base. */
|
|
66
|
+
export declare function createTheme(overrides: DeepPartial<PickerTheme>, base?: PickerTheme): PickerTheme;
|
|
67
|
+
export interface PickersProviderProps {
|
|
68
|
+
children: React.ReactNode;
|
|
69
|
+
/** 'auto' follows the OS appearance. Default: 'auto' */
|
|
70
|
+
colorScheme?: 'auto' | 'light' | 'dark';
|
|
71
|
+
/** Overrides applied to the light theme (or a full theme) */
|
|
72
|
+
theme?: DeepPartial<PickerTheme>;
|
|
73
|
+
/** Overrides applied to the dark theme */
|
|
74
|
+
darkTheme?: DeepPartial<PickerTheme>;
|
|
75
|
+
}
|
|
76
|
+
export declare function PickersProvider({ children, colorScheme, theme, darkTheme: dark }: PickersProviderProps): React.JSX.Element;
|
|
77
|
+
/** Resolves the active theme, applying a component-level override if given. */
|
|
78
|
+
export declare function usePickerTheme(override?: DeepPartial<PickerTheme>): PickerTheme;
|
|
79
|
+
/** Text style helper used across components. */
|
|
80
|
+
export declare function textStyle(theme: PickerTheme, size: keyof PickerTheme['typography']['sizes'], weight?: 'regular' | 'medium' | 'bold'): TextStyle;
|
|
81
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.tsx"],"names":[],"mappings":"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"}
|
package/lib/theme.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
3
|
+
import { useColorScheme } from 'react-native';
|
|
4
|
+
const shared = {
|
|
5
|
+
radius: { sm: 8, md: 12, lg: 16, full: 999, sheet: 24 },
|
|
6
|
+
spacing: { xs: 4, sm: 8, md: 12, lg: 16, xl: 24 },
|
|
7
|
+
typography: {
|
|
8
|
+
sizes: { xs: 11, sm: 13, md: 16, lg: 19, xl: 22 },
|
|
9
|
+
weights: { regular: '400', medium: '500', bold: '600' },
|
|
10
|
+
},
|
|
11
|
+
animation: { duration: 240 },
|
|
12
|
+
};
|
|
13
|
+
export const lightTheme = {
|
|
14
|
+
dark: false,
|
|
15
|
+
colors: {
|
|
16
|
+
background: '#FFFFFF',
|
|
17
|
+
surface: '#F2F3F7',
|
|
18
|
+
sheet: '#FFFFFF',
|
|
19
|
+
text: '#14151A',
|
|
20
|
+
textSecondary: '#6B6F7B',
|
|
21
|
+
textDisabled: '#B9BCC6',
|
|
22
|
+
primary: '#4F46E5',
|
|
23
|
+
onPrimary: '#FFFFFF',
|
|
24
|
+
primaryMuted: 'rgba(79,70,229,0.12)',
|
|
25
|
+
border: '#E6E7EC',
|
|
26
|
+
backdrop: 'rgba(10,11,16,0.45)',
|
|
27
|
+
indicator: 'rgba(20,21,26,0.06)',
|
|
28
|
+
handle: '#D5D7DE',
|
|
29
|
+
},
|
|
30
|
+
...shared,
|
|
31
|
+
};
|
|
32
|
+
export const darkTheme = {
|
|
33
|
+
dark: true,
|
|
34
|
+
colors: {
|
|
35
|
+
background: '#16171C',
|
|
36
|
+
surface: '#22242B',
|
|
37
|
+
sheet: '#1B1C22',
|
|
38
|
+
text: '#F3F4F7',
|
|
39
|
+
textSecondary: '#9A9EAA',
|
|
40
|
+
textDisabled: '#4E515B',
|
|
41
|
+
primary: '#8B85FF',
|
|
42
|
+
onPrimary: '#0E0E14',
|
|
43
|
+
primaryMuted: 'rgba(139,133,255,0.18)',
|
|
44
|
+
border: '#2C2E36',
|
|
45
|
+
backdrop: 'rgba(0,0,0,0.6)',
|
|
46
|
+
indicator: 'rgba(255,255,255,0.07)',
|
|
47
|
+
handle: '#3A3D47',
|
|
48
|
+
},
|
|
49
|
+
...shared,
|
|
50
|
+
};
|
|
51
|
+
function isPlainObject(v) {
|
|
52
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
53
|
+
}
|
|
54
|
+
export function mergeTheme(base, override) {
|
|
55
|
+
if (!override)
|
|
56
|
+
return base;
|
|
57
|
+
const out = { ...base };
|
|
58
|
+
for (const key of Object.keys(override)) {
|
|
59
|
+
const o = override[key];
|
|
60
|
+
const b = out[key];
|
|
61
|
+
out[key] = isPlainObject(o) && isPlainObject(b) ? mergeTheme(b, o) : o;
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
/** Build a full theme from overrides on top of the light (or dark) base. */
|
|
66
|
+
export function createTheme(overrides, base) {
|
|
67
|
+
return mergeTheme(base ?? (overrides.dark ? darkTheme : lightTheme), overrides);
|
|
68
|
+
}
|
|
69
|
+
const ThemeContext = createContext(null);
|
|
70
|
+
export function PickersProvider({ children, colorScheme = 'auto', theme, darkTheme: dark }) {
|
|
71
|
+
const value = useMemo(() => ({
|
|
72
|
+
light: mergeTheme(lightTheme, theme),
|
|
73
|
+
dark: mergeTheme(darkTheme, dark ?? theme),
|
|
74
|
+
colorScheme,
|
|
75
|
+
}), [theme, dark, colorScheme]);
|
|
76
|
+
return _jsx(ThemeContext.Provider, { value: value, children: children });
|
|
77
|
+
}
|
|
78
|
+
/** Resolves the active theme, applying a component-level override if given. */
|
|
79
|
+
export function usePickerTheme(override) {
|
|
80
|
+
const ctx = useContext(ThemeContext);
|
|
81
|
+
const system = useColorScheme();
|
|
82
|
+
const scheme = ctx?.colorScheme ?? 'auto';
|
|
83
|
+
const isDark = scheme === 'auto' ? system === 'dark' : scheme === 'dark';
|
|
84
|
+
const base = isDark ? ctx?.dark ?? darkTheme : ctx?.light ?? lightTheme;
|
|
85
|
+
return useMemo(() => mergeTheme(base, override), [base, override]);
|
|
86
|
+
}
|
|
87
|
+
/** Text style helper used across components. */
|
|
88
|
+
export function textStyle(theme, size, weight = 'regular') {
|
|
89
|
+
return {
|
|
90
|
+
fontSize: theme.typography.sizes[size],
|
|
91
|
+
fontWeight: theme.typography.weights[weight],
|
|
92
|
+
fontFamily: weight === 'regular' ? theme.typography.fontFamily : theme.typography.fontFamilyMedium ?? theme.typography.fontFamily,
|
|
93
|
+
color: theme.colors.text,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=theme.js.map
|
package/lib/theme.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
import type { MultiWheelSlot } from '../wheel/MultiWheelPicker';
|
|
4
|
+
import type { SlotStyles, ThemableProps } from '../types';
|
|
5
|
+
export interface TimePickerProps extends ThemableProps {
|
|
6
|
+
/** Selected time (the date part is preserved). */
|
|
7
|
+
value?: Date;
|
|
8
|
+
defaultValue?: Date;
|
|
9
|
+
onChange?: (date: Date) => void;
|
|
10
|
+
/** Fires on every tick while scrolling (for haptics). */
|
|
11
|
+
onValueChanging?: (date: Date) => void;
|
|
12
|
+
/** Default: 'auto' (from locale) */
|
|
13
|
+
format?: '12h' | '24h' | 'auto';
|
|
14
|
+
locale?: string;
|
|
15
|
+
/** Minute step: 1, 5, 15... Default: 1 */
|
|
16
|
+
minuteInterval?: number;
|
|
17
|
+
showSeconds?: boolean;
|
|
18
|
+
secondInterval?: number;
|
|
19
|
+
/** Earliest selectable time of day */
|
|
20
|
+
minTime?: Date;
|
|
21
|
+
/** Latest selectable time of day */
|
|
22
|
+
maxTime?: Date;
|
|
23
|
+
/** Infinite hour/minute wheels. Default: true */
|
|
24
|
+
loop?: boolean;
|
|
25
|
+
/** Zero-pad hours. Default: true for 24h, false for 12h */
|
|
26
|
+
padHours?: boolean;
|
|
27
|
+
/** Labels for AM/PM. Default: from locale */
|
|
28
|
+
dayPeriodLabels?: [string, string];
|
|
29
|
+
/** Put AM/PM before the hours (e.g. zh, ko). Default: false */
|
|
30
|
+
dayPeriodFirst?: boolean;
|
|
31
|
+
/** Separator between columns. Default: ':' */
|
|
32
|
+
separator?: React.ReactNode;
|
|
33
|
+
itemHeight?: number;
|
|
34
|
+
visibleItems?: number;
|
|
35
|
+
variant?: '3d' | 'flat';
|
|
36
|
+
style?: StyleProp<ViewStyle>;
|
|
37
|
+
styles?: SlotStyles<MultiWheelSlot>;
|
|
38
|
+
testID?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function TimePicker({ value, defaultValue, onChange, onValueChanging, format, locale, minuteInterval, showSeconds, secondInterval, minTime, maxTime, loop, padHours, dayPeriodLabels, dayPeriodFirst, separator, itemHeight, visibleItems, variant, style, styles, theme, testID, }: TimePickerProps): React.JSX.Element;
|
|
41
|
+
//# sourceMappingURL=TimePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../src/time/TimePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,kDAAkD;IAClD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,yDAAyD;IACzD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,oCAAoC;IACpC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,MAAe,EACf,MAAM,EACN,cAAkB,EAClB,WAAmB,EACnB,cAAkB,EAClB,OAAO,EACP,OAAO,EACP,IAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAsB,EACtB,SAAe,EACf,UAAU,EACV,YAAY,EACZ,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAM,GACP,EAAE,eAAe,qBA6HjB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
3
|
+
import { MultiWheelPicker } from '../wheel/MultiWheelPicker';
|
|
4
|
+
import { getDayPeriods, uses12HourClock } from '../utils/date';
|
|
5
|
+
const pad2 = (n) => String(n).padStart(2, '0');
|
|
6
|
+
const range = (count, step = 1) => Array.from({ length: Math.ceil(count / step) }, (_, i) => i * step);
|
|
7
|
+
const secondsOfDay = (d) => d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds();
|
|
8
|
+
export function TimePicker({ value, defaultValue, onChange, onValueChanging, format = 'auto', locale, minuteInterval = 1, showSeconds = false, secondInterval = 1, minTime, maxTime, loop = true, padHours, dayPeriodLabels, dayPeriodFirst = false, separator = ':', itemHeight, visibleItems, variant, style, styles, theme, testID, }) {
|
|
9
|
+
const [inner, setInner] = useState(() => value ?? defaultValue ?? new Date());
|
|
10
|
+
const date = value ?? inner;
|
|
11
|
+
const is12 = format === 'auto' ? uses12HourClock(locale) : format === '12h';
|
|
12
|
+
const periods = useMemo(() => dayPeriodLabels ?? getDayPeriods(locale), [dayPeriodLabels, locale]);
|
|
13
|
+
const padH = padHours ?? !is12;
|
|
14
|
+
const h24 = date.getHours();
|
|
15
|
+
const minute = Math.floor(date.getMinutes() / minuteInterval) * minuteInterval;
|
|
16
|
+
const second = Math.floor(date.getSeconds() / secondInterval) * secondInterval;
|
|
17
|
+
const isPM = h24 >= 12;
|
|
18
|
+
const minS = minTime ? secondsOfDay(minTime) : 0;
|
|
19
|
+
const maxS = maxTime ? secondsOfDay(maxTime) : 86399;
|
|
20
|
+
const build = useCallback((patch) => {
|
|
21
|
+
const d = new Date(date);
|
|
22
|
+
d.setHours(patch.h24 ?? h24, patch.m ?? minute, showSeconds ? patch.s ?? second : 0, 0);
|
|
23
|
+
return d;
|
|
24
|
+
}, [date, h24, minute, second, showSeconds]);
|
|
25
|
+
const commit = useCallback((d) => {
|
|
26
|
+
// Clamp to [minTime, maxTime]
|
|
27
|
+
const sec = secondsOfDay(d);
|
|
28
|
+
if (sec < minS || sec > maxS) {
|
|
29
|
+
const target = sec < minS ? minS : maxS;
|
|
30
|
+
d = new Date(d);
|
|
31
|
+
d.setHours(Math.floor(target / 3600), Math.floor((target % 3600) / 60), showSeconds ? target % 60 : 0, 0);
|
|
32
|
+
}
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
setInner(d);
|
|
35
|
+
onChange?.(d);
|
|
36
|
+
}, [maxS, minS, onChange, showSeconds, value]);
|
|
37
|
+
const columns = useMemo(() => {
|
|
38
|
+
const cols = [];
|
|
39
|
+
const hourOutOfRange = (h) => h * 3600 + 3599 < minS || h * 3600 > maxS;
|
|
40
|
+
const hourItems = is12
|
|
41
|
+
? range(12).map((i) => {
|
|
42
|
+
const display = i === 0 ? 12 : i;
|
|
43
|
+
const real = (isPM ? 12 : 0) + i;
|
|
44
|
+
return { value: i, label: padH ? pad2(display) : String(display), disabled: hourOutOfRange(real) };
|
|
45
|
+
})
|
|
46
|
+
: range(24).map((h) => ({ value: h, label: padH ? pad2(h) : String(h), disabled: hourOutOfRange(h) }));
|
|
47
|
+
const minuteItems = range(60, minuteInterval).map((m) => {
|
|
48
|
+
const t = h24 * 3600 + m * 60;
|
|
49
|
+
return { value: m, label: pad2(m), disabled: t + 59 < minS || t > maxS };
|
|
50
|
+
});
|
|
51
|
+
const toH24 = (hv, pm) => (is12 ? (pm ? 12 : 0) + hv : hv);
|
|
52
|
+
const mk = (pick) => ({
|
|
53
|
+
onChange: (v) => commit(pick(v)),
|
|
54
|
+
onValueChanging: onValueChanging ? (v) => onValueChanging(pick(v)) : undefined,
|
|
55
|
+
});
|
|
56
|
+
const periodCol = {
|
|
57
|
+
key: 'period',
|
|
58
|
+
items: [
|
|
59
|
+
{ value: 0, label: periods[0], disabled: minS >= 12 * 3600 },
|
|
60
|
+
{ value: 1, label: periods[1], disabled: maxS < 12 * 3600 },
|
|
61
|
+
],
|
|
62
|
+
value: isPM ? 1 : 0,
|
|
63
|
+
flex: 1,
|
|
64
|
+
...mk((v) => build({ h24: (h24 % 12) + (v ? 12 : 0) })),
|
|
65
|
+
};
|
|
66
|
+
if (is12 && dayPeriodFirst)
|
|
67
|
+
cols.push(periodCol);
|
|
68
|
+
cols.push({
|
|
69
|
+
key: 'hour',
|
|
70
|
+
items: hourItems,
|
|
71
|
+
value: is12 ? h24 % 12 : h24,
|
|
72
|
+
loop,
|
|
73
|
+
flex: 1,
|
|
74
|
+
...mk((v) => build({ h24: toH24(v, isPM) })),
|
|
75
|
+
});
|
|
76
|
+
cols.push({
|
|
77
|
+
key: 'minute',
|
|
78
|
+
items: minuteItems,
|
|
79
|
+
value: minute,
|
|
80
|
+
loop,
|
|
81
|
+
flex: 1,
|
|
82
|
+
...mk((v) => build({ m: v })),
|
|
83
|
+
});
|
|
84
|
+
if (showSeconds) {
|
|
85
|
+
cols.push({
|
|
86
|
+
key: 'second',
|
|
87
|
+
items: range(60, secondInterval).map((sv) => ({ value: sv, label: pad2(sv) })),
|
|
88
|
+
value: second,
|
|
89
|
+
loop,
|
|
90
|
+
flex: 1,
|
|
91
|
+
...mk((v) => build({ s: v })),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (is12 && !dayPeriodFirst)
|
|
95
|
+
cols.push(periodCol);
|
|
96
|
+
return cols;
|
|
97
|
+
}, [build, commit, dayPeriodFirst, h24, is12, isPM, loop, maxS, minS, minute, minuteInterval, onValueChanging, padH, periods, second, secondInterval, showSeconds]);
|
|
98
|
+
const sep = useCallback((left) => {
|
|
99
|
+
const leftKey = columns[left]?.key;
|
|
100
|
+
const rightKey = columns[left + 1]?.key;
|
|
101
|
+
return leftKey === 'period' || rightKey === 'period' ? null : separator;
|
|
102
|
+
}, [columns, separator]);
|
|
103
|
+
return (_jsx(MultiWheelPicker, { columns: columns, separator: sep, itemHeight: itemHeight, visibleItems: visibleItems, variant: variant, style: style, styles: styles, theme: theme, testID: testID }));
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=TimePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["../../src/time/TimePicker.tsx"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StyleProp, TextStyle } from 'react-native';
|
|
2
|
+
import type { DeepPartial, PickerTheme } from './theme';
|
|
3
|
+
/** Per-slot style overrides. Every component exposes its own slot names. */
|
|
4
|
+
export type SlotStyles<K extends string> = Partial<Record<K, StyleProp<TextStyle>>>;
|
|
5
|
+
export interface ThemableProps {
|
|
6
|
+
/** Component-level theme override, merged on top of the provider theme */
|
|
7
|
+
theme?: DeepPartial<PickerTheme>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,4EAA4E;AAC5E,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;CAClC"}
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Wraps a fixed-height list that scrolls on its own. Its windowing never depends on an outer
|
|
4
|
+
* ScrollView, so hiding that parent silences VirtualizedList's "should never be nested" warning
|
|
5
|
+
* (the context is only read for that warning).
|
|
6
|
+
*/
|
|
7
|
+
export declare function OwnScroll({ children }: {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}): React.JSX.Element;
|
|
10
|
+
//# sourceMappingURL=OwnScroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnScroll.d.ts","sourceRoot":"","sources":["../../src/utils/OwnScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAEpE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ScrollView } from 'react-native';
|
|
3
|
+
// Absent on react-native-web.
|
|
4
|
+
const ParentScrollContext = ScrollView.Context;
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a fixed-height list that scrolls on its own. Its windowing never depends on an outer
|
|
7
|
+
* ScrollView, so hiding that parent silences VirtualizedList's "should never be nested" warning
|
|
8
|
+
* (the context is only read for that warning).
|
|
9
|
+
*/
|
|
10
|
+
export function OwnScroll({ children }) {
|
|
11
|
+
return ParentScrollContext ? _jsx(ParentScrollContext.Provider, { value: null, children: children }) : _jsx(_Fragment, { children: children });
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=OwnScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnScroll.js","sourceRoot":"","sources":["../../src/utils/OwnScroll.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8BAA8B;AAC9B,MAAM,mBAAmB,GAAI,UAA8D,CAAC,OAAO,CAAC;AAEpG;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAiC;IACnE,OAAO,mBAAmB,CAAC,CAAC,CAAC,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAAG,QAAQ,GAAgC,CAAC,CAAC,CAAC,4BAAG,QAAQ,GAAI,CAAC;AACtI,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Pure date helpers. All operate in local time and never mutate inputs. */
|
|
2
|
+
export declare const startOfDay: (d: Date) => Date;
|
|
3
|
+
export declare const startOfMonth: (d: Date) => Date;
|
|
4
|
+
export declare const daysInMonth: (year: number, month: number) => number;
|
|
5
|
+
export declare function addMonths(d: Date, months: number): Date;
|
|
6
|
+
export declare const addDays: (d: Date, days: number) => Date;
|
|
7
|
+
export declare const isSameDay: (a?: Date | null, b?: Date | null) => boolean;
|
|
8
|
+
export declare const isSameMonth: (a: Date, b: Date) => boolean;
|
|
9
|
+
export declare const compareDay: (a: Date, b: Date) => number;
|
|
10
|
+
export declare function isBetweenDays(d: Date, start?: Date | null, end?: Date | null): boolean;
|
|
11
|
+
export declare function isOutOfRange(d: Date, min?: Date | null, max?: Date | null): boolean;
|
|
12
|
+
export declare function clampDate(d: Date, min?: Date | null, max?: Date | null): Date;
|
|
13
|
+
/** `YYYY-MM-DD` key in local time. */
|
|
14
|
+
export declare const toDateKey: (d: Date) => string;
|
|
15
|
+
/**
|
|
16
|
+
* 6x7 (or fewer rows) grid of dates for a month view.
|
|
17
|
+
* `firstDayOfWeek`: 0 = Sunday ... 6 = Saturday.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildMonthGrid(year: number, month: number, firstDayOfWeek?: number, fixedWeeks?: boolean): Date[][];
|
|
20
|
+
export declare function getMonthNames(locale?: string, width?: 'long' | 'short'): string[];
|
|
21
|
+
/** Weekday names indexed by JS day (0 = Sunday). */
|
|
22
|
+
export declare function getWeekdayNames(locale?: string, width?: 'long' | 'short' | 'narrow'): string[];
|
|
23
|
+
export declare function formatMonthYear(d: Date, locale?: string): string;
|
|
24
|
+
export declare function formatDate(d: Date, locale?: string, opts?: Intl.DateTimeFormatOptions): string;
|
|
25
|
+
/** True when the locale prefers a 12-hour clock. */
|
|
26
|
+
export declare function uses12HourClock(locale?: string): boolean;
|
|
27
|
+
/** Best-effort first day of week from the locale (Intl.Locale weekInfo). */
|
|
28
|
+
export declare function getFirstDayOfWeek(locale?: string): number;
|
|
29
|
+
export declare function getDayPeriods(locale?: string): [string, string];
|
|
30
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,SAAyD,CAAC;AAC5F,eAAO,MAAM,YAAY,GAAI,GAAG,IAAI,SAA+C,CAAC;AACpF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,WAA2C,CAAC;AAEnG,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIvD;AAED,eAAO,MAAM,OAAO,GAAI,GAAG,IAAI,EAAE,MAAM,MAAM,SAA8F,CAAC;AAE5I,eAAO,MAAM,SAAS,GAAI,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,YACyD,CAAC;AAEpH,eAAO,MAAM,WAAW,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,YAAyE,CAAC;AAEtH,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,WAAsD,CAAC;AAElG,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,WAI5E;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,WAEzE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,QAItE;AAED,sCAAsC;AACtC,eAAO,MAAM,SAAS,GAAI,GAAG,IAAI,WAC0E,CAAC;AAE5G;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,SAAI,EAAE,UAAU,UAAO,GAAG,IAAI,EAAE,EAAE,CAY3G;AA+BD,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,OAAgB,GAAG,MAAM,EAAE,CAEzF;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,OAAO,GAAG,QAAkB,GAAG,MAAM,EAAE,CAGvG;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,UAEvD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,IAAI,CAAC,qBAA6E,UAE5I;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CASzD;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAI/D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** Pure date helpers. All operate in local time and never mutate inputs. */
|
|
2
|
+
export const startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
3
|
+
export const startOfMonth = (d) => new Date(d.getFullYear(), d.getMonth(), 1);
|
|
4
|
+
export const daysInMonth = (year, month) => new Date(year, month + 1, 0).getDate();
|
|
5
|
+
export function addMonths(d, months) {
|
|
6
|
+
const target = new Date(d.getFullYear(), d.getMonth() + months, 1);
|
|
7
|
+
const day = Math.min(d.getDate(), daysInMonth(target.getFullYear(), target.getMonth()));
|
|
8
|
+
return new Date(target.getFullYear(), target.getMonth(), day, d.getHours(), d.getMinutes(), d.getSeconds());
|
|
9
|
+
}
|
|
10
|
+
export const addDays = (d, days) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + days, d.getHours(), d.getMinutes());
|
|
11
|
+
export const isSameDay = (a, b) => !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
12
|
+
export const isSameMonth = (a, b) => a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
|
|
13
|
+
export const compareDay = (a, b) => startOfDay(a).getTime() - startOfDay(b).getTime();
|
|
14
|
+
export function isBetweenDays(d, start, end) {
|
|
15
|
+
if (!start || !end)
|
|
16
|
+
return false;
|
|
17
|
+
const t = startOfDay(d).getTime();
|
|
18
|
+
return t > startOfDay(start).getTime() && t < startOfDay(end).getTime();
|
|
19
|
+
}
|
|
20
|
+
export function isOutOfRange(d, min, max) {
|
|
21
|
+
return (!!min && compareDay(d, min) < 0) || (!!max && compareDay(d, max) > 0);
|
|
22
|
+
}
|
|
23
|
+
export function clampDate(d, min, max) {
|
|
24
|
+
if (min && d.getTime() < min.getTime())
|
|
25
|
+
return new Date(min);
|
|
26
|
+
if (max && d.getTime() > max.getTime())
|
|
27
|
+
return new Date(max);
|
|
28
|
+
return d;
|
|
29
|
+
}
|
|
30
|
+
/** `YYYY-MM-DD` key in local time. */
|
|
31
|
+
export const toDateKey = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
|
|
32
|
+
/**
|
|
33
|
+
* 6x7 (or fewer rows) grid of dates for a month view.
|
|
34
|
+
* `firstDayOfWeek`: 0 = Sunday ... 6 = Saturday.
|
|
35
|
+
*/
|
|
36
|
+
export function buildMonthGrid(year, month, firstDayOfWeek = 0, fixedWeeks = true) {
|
|
37
|
+
const first = new Date(year, month, 1);
|
|
38
|
+
const lead = (first.getDay() - firstDayOfWeek + 7) % 7;
|
|
39
|
+
const count = daysInMonth(year, month);
|
|
40
|
+
const weeks = fixedWeeks ? 6 : Math.ceil((lead + count) / 7);
|
|
41
|
+
const grid = [];
|
|
42
|
+
for (let w = 0; w < weeks; w++) {
|
|
43
|
+
const row = [];
|
|
44
|
+
for (let i = 0; i < 7; i++)
|
|
45
|
+
row.push(new Date(year, month, 1 - lead + w * 7 + i));
|
|
46
|
+
grid.push(row);
|
|
47
|
+
}
|
|
48
|
+
return grid;
|
|
49
|
+
}
|
|
50
|
+
// ---------- Locale ----------
|
|
51
|
+
const fmtCache = new Map();
|
|
52
|
+
function fmt(locale, opts) {
|
|
53
|
+
const key = `${locale ?? ''}|${JSON.stringify(opts)}`;
|
|
54
|
+
let f = fmtCache.get(key);
|
|
55
|
+
if (!f) {
|
|
56
|
+
try {
|
|
57
|
+
f = new Intl.DateTimeFormat(locale, opts);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
f = new Intl.DateTimeFormat('en-US', opts);
|
|
61
|
+
}
|
|
62
|
+
fmtCache.set(key, f);
|
|
63
|
+
}
|
|
64
|
+
return f;
|
|
65
|
+
}
|
|
66
|
+
const EN_MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
67
|
+
const EN_DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
68
|
+
function safe(fn, fallback) {
|
|
69
|
+
try {
|
|
70
|
+
const v = fn();
|
|
71
|
+
return v ?? fallback;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return fallback;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export function getMonthNames(locale, width = 'long') {
|
|
78
|
+
return EN_MONTHS.map((en, m) => safe(() => fmt(locale, { month: width }).format(new Date(2021, m, 1)), width === 'long' ? en : en.slice(0, 3)));
|
|
79
|
+
}
|
|
80
|
+
/** Weekday names indexed by JS day (0 = Sunday). */
|
|
81
|
+
export function getWeekdayNames(locale, width = 'short') {
|
|
82
|
+
// 2021-08-01 is a Sunday
|
|
83
|
+
return EN_DAYS.map((en, i) => safe(() => fmt(locale, { weekday: width }).format(new Date(2021, 7, 1 + i)), en));
|
|
84
|
+
}
|
|
85
|
+
export function formatMonthYear(d, locale) {
|
|
86
|
+
return safe(() => fmt(locale, { month: 'long', year: 'numeric' }).format(d), `${EN_MONTHS[d.getMonth()]} ${d.getFullYear()}`);
|
|
87
|
+
}
|
|
88
|
+
export function formatDate(d, locale, opts = { dateStyle: 'medium' }) {
|
|
89
|
+
return safe(() => fmt(locale, opts).format(d), toDateKey(d));
|
|
90
|
+
}
|
|
91
|
+
/** True when the locale prefers a 12-hour clock. */
|
|
92
|
+
export function uses12HourClock(locale) {
|
|
93
|
+
return safe(() => {
|
|
94
|
+
const parts = fmt(locale, { hour: 'numeric' }).formatToParts(new Date(2021, 0, 1, 15));
|
|
95
|
+
return parts.some((p) => p.type === 'dayPeriod');
|
|
96
|
+
}, false);
|
|
97
|
+
}
|
|
98
|
+
/** Best-effort first day of week from the locale (Intl.Locale weekInfo). */
|
|
99
|
+
export function getFirstDayOfWeek(locale) {
|
|
100
|
+
return safe(() => {
|
|
101
|
+
const L = Intl.Locale;
|
|
102
|
+
if (!L || !locale)
|
|
103
|
+
return 0;
|
|
104
|
+
const loc = new L(locale);
|
|
105
|
+
const info = loc.getWeekInfo?.() ?? loc.weekInfo;
|
|
106
|
+
if (!info?.firstDay)
|
|
107
|
+
return 0;
|
|
108
|
+
return info.firstDay % 7; // Intl uses 1 = Monday ... 7 = Sunday
|
|
109
|
+
}, 0);
|
|
110
|
+
}
|
|
111
|
+
export function getDayPeriods(locale) {
|
|
112
|
+
const get = (h, fb) => safe(() => fmt(locale, { hour: 'numeric', hour12: true }).formatToParts(new Date(2021, 0, 1, h)).find((p) => p.type === 'dayPeriod')?.value ?? fb, fb);
|
|
113
|
+
return [get(9, 'AM'), get(15, 'PM')];
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
import type { SlotStyles, ThemableProps } from '../types';
|
|
4
|
+
import type { WheelPickerProps, WheelPickerSlot } from './WheelPicker';
|
|
5
|
+
export type WheelColumn<T = any> = Omit<WheelPickerProps<T>, 'itemHeight' | 'visibleItems' | 'variant' | 'showIndicator' | 'theme'> & {
|
|
6
|
+
key: string;
|
|
7
|
+
/** Flex weight of the column. Default: 1 */
|
|
8
|
+
flex?: number;
|
|
9
|
+
/** Fixed column width */
|
|
10
|
+
width?: number;
|
|
11
|
+
};
|
|
12
|
+
export type MultiWheelSlot = 'container' | 'indicator' | 'separator' | WheelPickerSlot;
|
|
13
|
+
export interface MultiWheelPickerProps extends ThemableProps {
|
|
14
|
+
columns: WheelColumn[];
|
|
15
|
+
/** Text/node rendered between columns, e.g. ':' for time */
|
|
16
|
+
separator?: React.ReactNode | ((leftIndex: number) => React.ReactNode);
|
|
17
|
+
itemHeight?: number;
|
|
18
|
+
visibleItems?: number;
|
|
19
|
+
variant?: '3d' | 'flat';
|
|
20
|
+
style?: StyleProp<ViewStyle>;
|
|
21
|
+
styles?: SlotStyles<MultiWheelSlot>;
|
|
22
|
+
testID?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Several wheels sharing one selection band (time, date, units...). */
|
|
25
|
+
export declare function MultiWheelPicker({ columns, separator, itemHeight, visibleItems, variant, style, styles: slots, theme: themeOverride, testID, }: MultiWheelPickerProps): React.JSX.Element;
|
|
26
|
+
//# sourceMappingURL=MultiWheelPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiWheelPicker.d.ts","sourceRoot":"","sources":["../../src/wheel/MultiWheelPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,OAAO,CAAC,GAAG;IACpI,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;AAEvF,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,SAAS,EACT,UAAe,EACf,YAAgB,EAChB,OAAc,EACd,KAAK,EACL,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,aAAa,EACpB,MAAM,GACP,EAAE,qBAAqB,qBAiDvB"}
|