@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
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
3
|
+
import { FlatList, Pressable, StyleSheet, Text, TextInput, View } from 'react-native';
|
|
4
|
+
import { textStyle, usePickerTheme } from '../theme';
|
|
5
|
+
import { defaultFilter } from './filter';
|
|
6
|
+
export { defaultFilter };
|
|
7
|
+
export function SelectList(props) {
|
|
8
|
+
const { options, searchable, searchPlaceholder = 'Search', filterOption = defaultFilter, renderOption, renderGroupHeader, emptyText = 'No results', showCheckmarks = true, isEqual = Object.is, listHeight, autoFocusSearch, style, styles: slots, theme: themeOverride, testID, } = props;
|
|
9
|
+
const theme = usePickerTheme(themeOverride);
|
|
10
|
+
const c = theme.colors;
|
|
11
|
+
const [query, setQuery] = useState('');
|
|
12
|
+
const showSearch = searchable ?? options.length > 8;
|
|
13
|
+
const selectedValues = props.multiple ? props.value ?? [] : props.value !== undefined && props.value !== null ? [props.value] : [];
|
|
14
|
+
const isSelected = useCallback((v) => selectedValues.some((s) => isEqual(s, v)), [isEqual, selectedValues]);
|
|
15
|
+
const rows = useMemo(() => {
|
|
16
|
+
const filtered = query ? options.filter((o) => filterOption(o, query)) : options;
|
|
17
|
+
const out = [];
|
|
18
|
+
const order = [];
|
|
19
|
+
const byGroup = new Map();
|
|
20
|
+
for (const o of filtered) {
|
|
21
|
+
const g = o.group ?? '';
|
|
22
|
+
if (!byGroup.has(g)) {
|
|
23
|
+
byGroup.set(g, []);
|
|
24
|
+
order.push(g);
|
|
25
|
+
}
|
|
26
|
+
byGroup.get(g).push(o);
|
|
27
|
+
}
|
|
28
|
+
for (const g of order) {
|
|
29
|
+
if (g)
|
|
30
|
+
out.push({ type: 'header', group: g });
|
|
31
|
+
for (const o of byGroup.get(g))
|
|
32
|
+
out.push({ type: 'option', option: o });
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}, [filterOption, options, query]);
|
|
36
|
+
const toggle = useCallback((o) => {
|
|
37
|
+
if (!props.multiple) {
|
|
38
|
+
props.onChange?.(o.value, o);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const cur = props.value ?? [];
|
|
42
|
+
const has = cur.some((v) => isEqual(v, o.value));
|
|
43
|
+
if (!has && props.maxSelected !== undefined && cur.length >= props.maxSelected)
|
|
44
|
+
return;
|
|
45
|
+
const next = has ? cur.filter((v) => !isEqual(v, o.value)) : [...cur, o.value];
|
|
46
|
+
props.onChange?.(next, next.map((v) => options.find((x) => isEqual(x.value, v))).filter(Boolean));
|
|
47
|
+
}, [isEqual, options, props]);
|
|
48
|
+
const atMax = props.multiple && props.maxSelected !== undefined && (props.value?.length ?? 0) >= props.maxSelected;
|
|
49
|
+
const renderRow = ({ item }) => {
|
|
50
|
+
if (item.type === 'header') {
|
|
51
|
+
return renderGroupHeader ? (_jsx(_Fragment, { children: renderGroupHeader(item.group, theme) })) : (_jsx(View, { style: [{ paddingHorizontal: theme.spacing.lg, paddingTop: theme.spacing.md, paddingBottom: theme.spacing.xs }, slots?.groupHeader], children: _jsx(Text, { style: [textStyle(theme, 'xs', 'bold'), { color: c.textSecondary, textTransform: 'uppercase', letterSpacing: 0.6 }, slots?.groupHeaderText], children: item.group }) }));
|
|
52
|
+
}
|
|
53
|
+
const o = item.option;
|
|
54
|
+
const selected = isSelected(o.value);
|
|
55
|
+
const disabled = !!o.disabled || (!!atMax && !selected);
|
|
56
|
+
return (_jsx(Pressable, { onPress: disabled ? undefined : () => toggle(o), accessibilityRole: props.multiple ? 'checkbox' : 'button', accessibilityState: { selected, checked: props.multiple ? selected : undefined, disabled }, accessibilityLabel: o.label, style: ({ pressed }) => [
|
|
57
|
+
s.option,
|
|
58
|
+
{
|
|
59
|
+
paddingHorizontal: theme.spacing.lg,
|
|
60
|
+
marginHorizontal: theme.spacing.sm,
|
|
61
|
+
borderRadius: theme.radius.md,
|
|
62
|
+
backgroundColor: selected ? c.primaryMuted : pressed ? c.surface : 'transparent',
|
|
63
|
+
opacity: disabled ? 0.45 : 1,
|
|
64
|
+
},
|
|
65
|
+
slots?.option,
|
|
66
|
+
selected && slots?.selectedOption,
|
|
67
|
+
], children: renderOption ? (renderOption({ option: o, selected, disabled, theme })) : (_jsxs(_Fragment, { children: [o.icon ? _jsx(View, { style: { marginEnd: theme.spacing.md }, children: o.icon }) : null, _jsxs(View, { style: s.flex, children: [_jsx(Text, { numberOfLines: 1, style: [textStyle(theme, 'md', selected ? 'medium' : 'regular'), slots?.optionLabel, selected && slots?.selectedOptionLabel], children: o.label }), o.description ? (_jsx(Text, { numberOfLines: 2, style: [textStyle(theme, 'sm'), { color: c.textSecondary, marginTop: 2 }, slots?.optionDescription], children: o.description })) : null] }), showCheckmarks && (props.multiple || selected) ? (_jsx(Check, { selected: selected, multiple: !!props.multiple, theme: theme, style: slots?.check })) : null] })) }));
|
|
68
|
+
};
|
|
69
|
+
return (_jsxs(View, { style: [style, slots?.container], testID: testID, children: [showSearch && (_jsx(View, { style: [{ paddingHorizontal: theme.spacing.lg, paddingBottom: theme.spacing.sm }, slots?.search], children: _jsx(TextInput, { value: query, onChangeText: setQuery, placeholder: searchPlaceholder, placeholderTextColor: c.textSecondary, autoFocus: autoFocusSearch, autoCorrect: false, autoCapitalize: "none", clearButtonMode: "while-editing", accessibilityLabel: searchPlaceholder, style: [
|
|
70
|
+
textStyle(theme, 'md'),
|
|
71
|
+
{ backgroundColor: c.surface, borderRadius: theme.radius.md, paddingHorizontal: theme.spacing.md, height: 42 },
|
|
72
|
+
slots?.searchInput,
|
|
73
|
+
] }) })), _jsx(FlatList, { data: rows, keyExtractor: (r, i) => (r.type === 'header' ? `h:${r.group}` : `o:${i}:${r.option.label}`), renderItem: renderRow, keyboardShouldPersistTaps: "handled", style: [listHeight !== undefined ? { height: listHeight } : null, slots?.list], ListEmptyComponent: _jsx(View, { style: [{ padding: theme.spacing.xl, alignItems: 'center' }, slots?.empty], children: _jsx(Text, { style: [textStyle(theme, 'md'), { color: c.textSecondary }, slots?.emptyText], children: emptyText }) }) })] }));
|
|
74
|
+
}
|
|
75
|
+
function Check({ selected, multiple, theme, style }) {
|
|
76
|
+
const c = theme.colors;
|
|
77
|
+
if (!multiple) {
|
|
78
|
+
return _jsx(Text, { style: [textStyle(theme, 'md', 'bold'), { color: c.primary, marginStart: theme.spacing.md }, style], children: "\u2713" });
|
|
79
|
+
}
|
|
80
|
+
return (_jsx(View, { style: [
|
|
81
|
+
s.box,
|
|
82
|
+
{ marginStart: theme.spacing.md, borderRadius: 6, borderColor: selected ? c.primary : c.border, backgroundColor: selected ? c.primary : 'transparent' },
|
|
83
|
+
style,
|
|
84
|
+
], children: selected ? _jsx(Text, { style: { color: c.onPrimary, fontSize: 13, fontWeight: '700', lineHeight: 16 }, children: "\u2713" }) : null }));
|
|
85
|
+
}
|
|
86
|
+
const s = StyleSheet.create({
|
|
87
|
+
option: { flexDirection: 'row', alignItems: 'center', minHeight: 48, paddingVertical: 10, marginVertical: 1 },
|
|
88
|
+
flex: { flex: 1 },
|
|
89
|
+
box: { width: 22, height: 22, borderWidth: 2, alignItems: 'center', justifyContent: 'center' },
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=SelectList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectList.js","sourceRoot":"","sources":["../../src/select/SelectList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
import type { SheetChromeProps } from '../sheet/PickerSheet';
|
|
4
|
+
import type { SlotStyles } from '../types';
|
|
5
|
+
import type { SelectListBaseProps, SelectOption, SelectSlot, SelectValueProps } from './SelectList';
|
|
6
|
+
export type SelectTriggerSlot = 'trigger' | 'triggerText' | 'placeholder' | 'label' | 'chip' | 'chipText' | 'chevron' | 'clear';
|
|
7
|
+
export interface SelectTriggerInfo<T> {
|
|
8
|
+
open: () => void;
|
|
9
|
+
selected: SelectOption<T>[];
|
|
10
|
+
disabled: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type SelectPickerProps<T> = Omit<SelectListBaseProps<T>, 'style' | 'styles'> & SelectValueProps<T> & {
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
/** Label rendered above the field */
|
|
15
|
+
label?: string;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Show a clear (×) button when something is selected */
|
|
18
|
+
clearable?: boolean;
|
|
19
|
+
onClear?: () => void;
|
|
20
|
+
/** Show selected values as chips in multiple mode. Default: true */
|
|
21
|
+
chips?: boolean;
|
|
22
|
+
/** Single mode: close the sheet on select. Default: true */
|
|
23
|
+
closeOnSelect?: boolean;
|
|
24
|
+
/** Custom trigger: render anything and call `open()` */
|
|
25
|
+
renderTrigger?: (info: SelectTriggerInfo<T>) => React.ReactNode;
|
|
26
|
+
/** Sheet title. Default: `label` */
|
|
27
|
+
sheetTitle?: string;
|
|
28
|
+
sheet?: Partial<Omit<SheetChromeProps, 'visible' | 'onClose' | 'theme'>>;
|
|
29
|
+
onOpen?: () => void;
|
|
30
|
+
onClose?: () => void;
|
|
31
|
+
style?: StyleProp<ViewStyle>;
|
|
32
|
+
styles?: SlotStyles<SelectSlot | SelectTriggerSlot>;
|
|
33
|
+
};
|
|
34
|
+
export declare function SelectPicker<T>(props: SelectPickerProps<T>): React.JSX.Element;
|
|
35
|
+
//# sourceMappingURL=SelectPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectPicker.d.ts","sourceRoot":"","sources":["../../src/select/SelectPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpG,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhI,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GACjF,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAChE,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAC;CACrD,CAAC;AAEJ,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBAwJ1D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from 'react';
|
|
3
|
+
import { Pressable, StyleSheet, Text, View } from 'react-native';
|
|
4
|
+
import { PickerSheet } from '../sheet/PickerSheet';
|
|
5
|
+
import { textStyle, usePickerTheme } from '../theme';
|
|
6
|
+
import { SelectList } from './SelectList';
|
|
7
|
+
export function SelectPicker(props) {
|
|
8
|
+
const { placeholder = 'Select…', label, disabled = false, clearable, onClear, chips = true, closeOnSelect = true, renderTrigger, sheetTitle, sheet, onOpen, onClose, style, styles: slots, theme: themeOverride, options, isEqual = Object.is, ...listProps } = props;
|
|
9
|
+
const theme = usePickerTheme(themeOverride);
|
|
10
|
+
const c = theme.colors;
|
|
11
|
+
const [open, setOpen] = useState(false);
|
|
12
|
+
const selected = useMemo(() => {
|
|
13
|
+
const vals = props.multiple ? props.value ?? [] : props.value !== undefined && props.value !== null ? [props.value] : [];
|
|
14
|
+
return vals.map((v) => options.find((o) => isEqual(o.value, v))).filter((o) => !!o);
|
|
15
|
+
}, [isEqual, options, props.multiple, props.value]);
|
|
16
|
+
const show = () => {
|
|
17
|
+
if (disabled)
|
|
18
|
+
return;
|
|
19
|
+
setOpen(true);
|
|
20
|
+
onOpen?.();
|
|
21
|
+
};
|
|
22
|
+
const hide = () => {
|
|
23
|
+
setOpen(false);
|
|
24
|
+
onClose?.();
|
|
25
|
+
};
|
|
26
|
+
const onChange = props.multiple
|
|
27
|
+
? props.onChange
|
|
28
|
+
: (v, o) => {
|
|
29
|
+
props.onChange?.(v, o);
|
|
30
|
+
if (closeOnSelect)
|
|
31
|
+
hide();
|
|
32
|
+
};
|
|
33
|
+
const removeChip = (o) => {
|
|
34
|
+
if (!props.multiple)
|
|
35
|
+
return;
|
|
36
|
+
const next = (props.value ?? []).filter((v) => !isEqual(v, o.value));
|
|
37
|
+
props.onChange?.(next, selected.filter((s) => !isEqual(s.value, o.value)));
|
|
38
|
+
};
|
|
39
|
+
const [pressed, setPressed] = useState(false);
|
|
40
|
+
const trigger = renderTrigger ? (renderTrigger({ open: show, selected, disabled })) : (_jsxs(View, { style: [
|
|
41
|
+
s.trigger,
|
|
42
|
+
{
|
|
43
|
+
backgroundColor: c.background,
|
|
44
|
+
borderColor: open ? c.primary : c.border,
|
|
45
|
+
borderRadius: theme.radius.md,
|
|
46
|
+
paddingHorizontal: theme.spacing.md,
|
|
47
|
+
opacity: disabled ? 0.5 : pressed ? 0.8 : 1,
|
|
48
|
+
},
|
|
49
|
+
slots?.trigger,
|
|
50
|
+
], children: [_jsx(Pressable, { style: StyleSheet.absoluteFill, onPress: show, onPressIn: () => setPressed(true), onPressOut: () => setPressed(false), disabled: disabled, accessibilityRole: "button", accessibilityLabel: label ?? placeholder, accessibilityHint: selected.map((o) => o.label).join(', ') || undefined, accessibilityState: { disabled, expanded: open } }), _jsx(View, { style: s.triggerContent, pointerEvents: "box-none", children: selected.length === 0 ? (_jsx(Text, { pointerEvents: "none", style: [textStyle(theme, 'md'), { color: c.textSecondary }, slots?.placeholder], numberOfLines: 1, children: placeholder })) : props.multiple && chips ? (_jsx(View, { style: s.chips, pointerEvents: "box-none", children: selected.map((o) => (_jsx(Pressable, { onPress: () => removeChip(o), disabled: disabled, accessibilityRole: "button", accessibilityLabel: `Remove ${o.label}`, style: [s.chip, { backgroundColor: c.primaryMuted, borderRadius: theme.radius.full }, slots?.chip], children: _jsxs(Text, { style: [textStyle(theme, 'sm', 'medium'), { color: c.primary }, slots?.chipText], children: [o.label, " \u00D7"] }) }, String(o.label)))) })) : (_jsxs(View, { style: s.row, pointerEvents: "none", children: [!props.multiple && selected[0]?.icon ? _jsx(View, { style: { marginEnd: 8 }, children: selected[0].icon }) : null, _jsx(Text, { style: [textStyle(theme, 'md'), slots?.triggerText], numberOfLines: 1, children: selected.map((o) => o.label).join(', ') })] })) }), clearable && selected.length > 0 && !disabled ? (_jsx(Pressable, { hitSlop: 10, onPress: () => {
|
|
51
|
+
if (props.multiple)
|
|
52
|
+
props.onChange?.([], []);
|
|
53
|
+
onClear?.();
|
|
54
|
+
}, accessibilityRole: "button", accessibilityLabel: "Clear", children: _jsx(Text, { style: [textStyle(theme, 'lg'), { color: c.textSecondary, paddingHorizontal: 6 }, slots?.clear], children: "\u00D7" }) })) : null, _jsx(Text, { pointerEvents: "none", style: [textStyle(theme, 'sm'), { color: c.textSecondary, marginStart: 4 }, slots?.chevron], children: "\u25BE" })] }));
|
|
55
|
+
return (_jsxs(View, { style: style, children: [label ? _jsx(Text, { style: [textStyle(theme, 'sm', 'medium'), { color: c.textSecondary, marginBottom: 6 }, slots?.label], children: label }) : null, trigger, _jsx(PickerSheet, { visible: open, onClose: hide, title: sheetTitle ?? label, theme: themeOverride, showCancel: false, onConfirm: props.multiple || !closeOnSelect ? hide : undefined, ...sheet, children: _jsx(SelectList, { ...listProps, ...{ multiple: props.multiple, value: props.value, onChange, maxSelected: props.maxSelected }, options: options, isEqual: isEqual, theme: themeOverride, styles: slots }) })] }));
|
|
56
|
+
}
|
|
57
|
+
const s = StyleSheet.create({
|
|
58
|
+
trigger: { flexDirection: 'row', alignItems: 'center', minHeight: 48, borderWidth: 1, paddingVertical: 6 },
|
|
59
|
+
triggerContent: { flex: 1 },
|
|
60
|
+
row: { flexDirection: 'row', alignItems: 'center' },
|
|
61
|
+
chips: { flexDirection: 'row', flexWrap: 'wrap', gap: 6 },
|
|
62
|
+
chip: { paddingHorizontal: 10, paddingVertical: 4 },
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=SelectPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectPicker.js","sourceRoot":"","sources":["../../src/select/SelectPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/select/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AASjD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMvE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Lowercase and strip Latin diacritics and Hebrew niqqud. */
|
|
2
|
+
const fold = (s) => s
|
|
3
|
+
.toLowerCase()
|
|
4
|
+
.normalize('NFD')
|
|
5
|
+
.replace(/[̀-֑ͯ-ׇ]/g, '');
|
|
6
|
+
export function defaultFilter(o, q) {
|
|
7
|
+
const hay = fold([o.label, o.description ?? '', ...(o.keywords ?? [])].join(' '));
|
|
8
|
+
return fold(q)
|
|
9
|
+
.split(/\s+/)
|
|
10
|
+
.filter(Boolean)
|
|
11
|
+
.every((term) => hay.includes(term));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/select/filter.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CACzB,CAAC;KACE,WAAW,EAAE;KACb,SAAS,CAAC,KAAK,CAAC;KAChB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAE9B,MAAM,UAAU,aAAa,CAAI,CAAkB,EAAE,CAAS;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,CAAC,CAAC;SACX,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC;SACf,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SlotStyles, ThemableProps } from '../types';
|
|
3
|
+
export type BottomSheetSlot = 'backdrop' | 'sheet' | 'handle' | 'header' | 'title' | 'content' | 'footer';
|
|
4
|
+
export interface BottomSheetProps extends ThemableProps {
|
|
5
|
+
visible: boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
title?: React.ReactNode;
|
|
9
|
+
/** Rendered on the right side of the header (e.g. a Done button) */
|
|
10
|
+
headerRight?: React.ReactNode;
|
|
11
|
+
headerLeft?: React.ReactNode;
|
|
12
|
+
footer?: React.ReactNode;
|
|
13
|
+
/** Drag the sheet down to dismiss. Default: true */
|
|
14
|
+
enableSwipeToClose?: boolean;
|
|
15
|
+
/** Tap the backdrop to dismiss. Default: true */
|
|
16
|
+
closeOnBackdropPress?: boolean;
|
|
17
|
+
/** Max sheet height as a fraction of the window. Default: 0.9 */
|
|
18
|
+
maxHeightRatio?: number;
|
|
19
|
+
/** Fixed sheet height (px or fraction of the window when <= 1) */
|
|
20
|
+
height?: number;
|
|
21
|
+
/** Extra bottom padding for home indicators. Default: 24 on iOS, 12 elsewhere */
|
|
22
|
+
bottomInset?: number;
|
|
23
|
+
styles?: SlotStyles<BottomSheetSlot>;
|
|
24
|
+
onOpened?: () => void;
|
|
25
|
+
onClosed?: () => void;
|
|
26
|
+
testID?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function BottomSheet({ visible, onClose, children, title, headerLeft, headerRight, footer, enableSwipeToClose, closeOnBackdropPress, maxHeightRatio, height, bottomInset, styles: slots, theme: themeOverride, onOpened, onClosed, testID, }: BottomSheetProps): React.JSX.Element | null;
|
|
29
|
+
//# sourceMappingURL=BottomSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/sheet/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAexE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1G,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oEAAoE;IACpE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,OAAO,EACP,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,MAAM,EACN,kBAAyB,EACzB,oBAA2B,EAC3B,cAAoB,EACpB,MAAM,EACN,WAA6C,EAC7C,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,aAAa,EACpB,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,gBAAgB,4BA2HlB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { Animated, Easing, KeyboardAvoidingView, Modal, PanResponder, Platform, Pressable, StyleSheet, Text, View, useWindowDimensions, } from 'react-native';
|
|
4
|
+
import { textStyle, usePickerTheme } from '../theme';
|
|
5
|
+
export function BottomSheet({ visible, onClose, children, title, headerLeft, headerRight, footer, enableSwipeToClose = true, closeOnBackdropPress = true, maxHeightRatio = 0.9, height, bottomInset = Platform.OS === 'ios' ? 24 : 12, styles: slots, theme: themeOverride, onOpened, onClosed, testID, }) {
|
|
6
|
+
const theme = usePickerTheme(themeOverride);
|
|
7
|
+
const { height: windowHeight } = useWindowDimensions();
|
|
8
|
+
const [mounted, setMounted] = useState(visible);
|
|
9
|
+
const progress = useRef(new Animated.Value(0)).current; // 0 hidden, 1 shown
|
|
10
|
+
const drag = useRef(new Animated.Value(0)).current;
|
|
11
|
+
const sheetHeight = useRef(windowHeight);
|
|
12
|
+
const native = Platform.OS !== 'web';
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (visible) {
|
|
15
|
+
setMounted(true);
|
|
16
|
+
drag.setValue(0);
|
|
17
|
+
Animated.timing(progress, {
|
|
18
|
+
toValue: 1,
|
|
19
|
+
duration: theme.animation.duration + 60,
|
|
20
|
+
easing: Easing.out(Easing.cubic),
|
|
21
|
+
useNativeDriver: native,
|
|
22
|
+
}).start(({ finished }) => finished && onOpened?.());
|
|
23
|
+
}
|
|
24
|
+
else if (mounted) {
|
|
25
|
+
Animated.timing(progress, {
|
|
26
|
+
toValue: 0,
|
|
27
|
+
duration: theme.animation.duration,
|
|
28
|
+
easing: Easing.in(Easing.cubic),
|
|
29
|
+
useNativeDriver: native,
|
|
30
|
+
}).start(({ finished }) => {
|
|
31
|
+
if (finished) {
|
|
32
|
+
setMounted(false);
|
|
33
|
+
onClosed?.();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
+
}, [visible]);
|
|
39
|
+
const closeRef = useRef(onClose);
|
|
40
|
+
closeRef.current = onClose;
|
|
41
|
+
const pan = useRef(PanResponder.create({
|
|
42
|
+
onMoveShouldSetPanResponder: (_, g) => enableSwipeToClose && g.dy > 6 && Math.abs(g.dy) > Math.abs(g.dx),
|
|
43
|
+
onPanResponderMove: (_, g) => drag.setValue(Math.max(0, g.dy)),
|
|
44
|
+
onPanResponderRelease: (_, g) => {
|
|
45
|
+
if (g.dy > Math.min(140, sheetHeight.current * 0.3) || g.vy > 0.9) {
|
|
46
|
+
closeRef.current();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
Animated.spring(drag, { toValue: 0, useNativeDriver: native, bounciness: 4 }).start();
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
onPanResponderTerminate: () => {
|
|
53
|
+
Animated.spring(drag, { toValue: 0, useNativeDriver: native }).start();
|
|
54
|
+
},
|
|
55
|
+
})).current;
|
|
56
|
+
const onLayout = useCallback((e) => {
|
|
57
|
+
sheetHeight.current = e.nativeEvent.layout.height;
|
|
58
|
+
}, []);
|
|
59
|
+
if (!mounted)
|
|
60
|
+
return null;
|
|
61
|
+
const translateY = Animated.add(progress.interpolate({ inputRange: [0, 1], outputRange: [windowHeight, 0] }), drag);
|
|
62
|
+
const resolvedHeight = height === undefined ? undefined : height <= 1 ? windowHeight * height : height;
|
|
63
|
+
return (_jsx(Modal, { visible: true, transparent: true, animationType: "none", statusBarTranslucent: true, onRequestClose: onClose, testID: testID, children: _jsxs(KeyboardAvoidingView, { behavior: Platform.OS === 'ios' ? 'padding' : undefined, style: StyleSheet.absoluteFill, children: [_jsx(Animated.View, { style: [StyleSheet.absoluteFill, { backgroundColor: theme.colors.backdrop, opacity: progress }, slots?.backdrop], children: _jsx(Pressable, { style: StyleSheet.absoluteFill, onPress: closeOnBackdropPress ? onClose : undefined, accessibilityRole: "button", accessibilityLabel: "Close" }) }), _jsx(View, { style: s.container, pointerEvents: "box-none", children: _jsxs(Animated.View, { onLayout: onLayout, style: [
|
|
64
|
+
s.sheet,
|
|
65
|
+
{
|
|
66
|
+
backgroundColor: theme.colors.sheet,
|
|
67
|
+
borderTopLeftRadius: theme.radius.sheet,
|
|
68
|
+
borderTopRightRadius: theme.radius.sheet,
|
|
69
|
+
maxHeight: windowHeight * maxHeightRatio,
|
|
70
|
+
height: resolvedHeight,
|
|
71
|
+
paddingBottom: bottomInset,
|
|
72
|
+
transform: [{ translateY }],
|
|
73
|
+
},
|
|
74
|
+
slots?.sheet,
|
|
75
|
+
], accessibilityViewIsModal: true, children: [_jsxs(View, { ...pan.panHandlers, children: [_jsx(View, { style: s.handleArea, children: _jsx(View, { style: [s.handle, { backgroundColor: theme.colors.handle }, slots?.handle] }) }), (title || headerLeft || headerRight) && (_jsxs(View, { style: [s.header, { paddingHorizontal: theme.spacing.lg }, slots?.header], children: [_jsx(View, { style: s.headerSide, children: headerLeft }), _jsx(View, { style: s.headerCenter, children: typeof title === 'string' ? (_jsx(Text, { style: [textStyle(theme, 'md', 'bold'), slots?.title], numberOfLines: 1, accessibilityRole: "header", children: title })) : (title) }), _jsx(View, { style: [s.headerSide, s.headerRight], children: headerRight })] }))] }), _jsx(View, { style: [resolvedHeight ? s.flex : s.shrink, slots?.content], children: children }), footer ? _jsx(View, { style: [{ paddingHorizontal: theme.spacing.lg, paddingTop: theme.spacing.md }, slots?.footer], children: footer }) : null] }) })] }) }));
|
|
76
|
+
}
|
|
77
|
+
const s = StyleSheet.create({
|
|
78
|
+
container: { flex: 1, justifyContent: 'flex-end' },
|
|
79
|
+
sheet: { width: '100%', alignSelf: 'center', maxWidth: 640, overflow: 'hidden' },
|
|
80
|
+
handleArea: { alignItems: 'center', paddingTop: 8, paddingBottom: 6 },
|
|
81
|
+
handle: { width: 40, height: 5, borderRadius: 3 },
|
|
82
|
+
header: { flexDirection: 'row', alignItems: 'center', minHeight: 44, paddingBottom: 4 },
|
|
83
|
+
headerSide: { flex: 1, flexDirection: 'row', alignItems: 'center' },
|
|
84
|
+
headerRight: { justifyContent: 'flex-end' },
|
|
85
|
+
headerCenter: { flex: 2, alignItems: 'center' },
|
|
86
|
+
flex: { flex: 1 },
|
|
87
|
+
shrink: { flexShrink: 1 },
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=BottomSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomSheet.js","sourceRoot":"","sources":["../../src/sheet/BottomSheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BottomSheetProps } from './BottomSheet';
|
|
3
|
+
import type { ThemableProps } from '../types';
|
|
4
|
+
export interface SheetChromeProps extends ThemableProps {
|
|
5
|
+
visible: boolean;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
title?: React.ReactNode;
|
|
8
|
+
/** Default: 'Done' */
|
|
9
|
+
confirmLabel?: string;
|
|
10
|
+
/** Default: 'Cancel' */
|
|
11
|
+
cancelLabel?: string;
|
|
12
|
+
/** Show the cancel button. Default: true */
|
|
13
|
+
showCancel?: boolean;
|
|
14
|
+
/** Passed through to the underlying BottomSheet */
|
|
15
|
+
sheetProps?: Partial<Omit<BottomSheetProps, 'visible' | 'onClose' | 'children'>>;
|
|
16
|
+
}
|
|
17
|
+
export interface PickerSheetProps extends SheetChromeProps {
|
|
18
|
+
onConfirm?: () => void;
|
|
19
|
+
confirmDisabled?: boolean;
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
}
|
|
22
|
+
/** BottomSheet with Cancel / Done header buttons. */
|
|
23
|
+
export declare function PickerSheet({ visible, onClose, onConfirm, confirmDisabled, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme: themeOverride, children, }: PickerSheetProps): React.JSX.Element;
|
|
24
|
+
/** Draft state that resets to `value` every time the sheet opens. */
|
|
25
|
+
export declare function useDraft<V>(value: V, visible: boolean): [V, (v: V) => void];
|
|
26
|
+
//# sourceMappingURL=PickerSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PickerSheet.d.ts","sourceRoot":"","sources":["../../src/sheet/PickerSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sBAAsB;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,OAAO,EACP,SAAS,EACT,eAAe,EACf,KAAK,EACL,YAAqB,EACrB,WAAsB,EACtB,UAAiB,EACjB,UAAU,EACV,KAAK,EAAE,aAAa,EACpB,QAAQ,GACT,EAAE,gBAAgB,qBAiClB;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAS3E"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { Pressable, Text } from 'react-native';
|
|
4
|
+
import { BottomSheet } from './BottomSheet';
|
|
5
|
+
import { textStyle, usePickerTheme } from '../theme';
|
|
6
|
+
/** BottomSheet with Cancel / Done header buttons. */
|
|
7
|
+
export function PickerSheet({ visible, onClose, onConfirm, confirmDisabled, title, confirmLabel = 'Done', cancelLabel = 'Cancel', showCancel = true, sheetProps, theme: themeOverride, children, }) {
|
|
8
|
+
const theme = usePickerTheme(themeOverride);
|
|
9
|
+
const btn = (label, onPress, primary, disabled) => (_jsx(Pressable, { onPress: disabled ? undefined : onPress, hitSlop: 10, accessibilityRole: "button", accessibilityState: { disabled }, style: ({ pressed }) => ({ opacity: pressed ? 0.5 : 1, paddingVertical: 6 }), children: _jsx(Text, { style: [
|
|
10
|
+
textStyle(theme, 'md', primary ? 'bold' : 'regular'),
|
|
11
|
+
{ color: disabled ? theme.colors.textDisabled : primary ? theme.colors.primary : theme.colors.textSecondary },
|
|
12
|
+
], children: label }) }));
|
|
13
|
+
return (_jsx(BottomSheet, { visible: visible, onClose: onClose, title: title, theme: themeOverride, headerLeft: showCancel ? btn(cancelLabel, onClose, false) : undefined, headerRight: onConfirm ? btn(confirmLabel, onConfirm, true, confirmDisabled) : undefined, ...sheetProps, children: children }));
|
|
14
|
+
}
|
|
15
|
+
/** Draft state that resets to `value` every time the sheet opens. */
|
|
16
|
+
export function useDraft(value, visible) {
|
|
17
|
+
const [draft, setDraft] = useState(value);
|
|
18
|
+
const wasVisible = useRef(visible);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (visible && !wasVisible.current)
|
|
21
|
+
setDraft(value);
|
|
22
|
+
wasVisible.current = visible;
|
|
23
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
}, [visible]);
|
|
25
|
+
return [draft, setDraft];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=PickerSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PickerSheet.js","sourceRoot":"","sources":["../../src/sheet/PickerSheet.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAuBrD,qDAAqD;AACrD,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,OAAO,EACP,SAAS,EACT,eAAe,EACf,KAAK,EACL,YAAY,GAAG,MAAM,EACrB,WAAW,GAAG,QAAQ,EACtB,UAAU,GAAG,IAAI,EACjB,UAAU,EACV,KAAK,EAAE,aAAa,EACpB,QAAQ,GACS;IACjB,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,OAAmB,EAAE,OAAgB,EAAE,QAAkB,EAAE,EAAE,CAAC,CACxF,KAAC,SAAS,IACR,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EACvC,OAAO,EAAE,EAAE,EACX,iBAAiB,EAAC,QAAQ,EAC1B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,EAChC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,YAE5E,KAAC,IAAI,IACH,KAAK,EAAE;gBACL,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpD,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;aAC9G,YAEA,KAAK,GACD,GACG,CACb,CAAC;IACF,OAAO,CACL,KAAC,WAAW,IACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EACrE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,KACpF,UAAU,YAEb,QAAQ,GACG,CACf,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAI,KAAQ,EAAE,OAAgB;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,uDAAuD;IACzD,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SheetChromeProps } from './PickerSheet';
|
|
3
|
+
import type { CalendarBaseProps, DateRange } from '../date/Calendar';
|
|
4
|
+
import type { DateWheelPickerProps } from '../date/DateWheelPicker';
|
|
5
|
+
import type { TimePickerProps } from '../time/TimePicker';
|
|
6
|
+
import type { EmojiPickerProps } from '../emoji/EmojiPicker';
|
|
7
|
+
import type { WheelPickerProps } from '../wheel/WheelPicker';
|
|
8
|
+
type DateSheetSelection = {
|
|
9
|
+
mode?: 'single';
|
|
10
|
+
value?: Date | null;
|
|
11
|
+
onConfirm: (date: Date) => void;
|
|
12
|
+
} | {
|
|
13
|
+
mode: 'range';
|
|
14
|
+
value?: DateRange;
|
|
15
|
+
onConfirm: (range: DateRange) => void;
|
|
16
|
+
minRangeDays?: number;
|
|
17
|
+
maxRangeDays?: number;
|
|
18
|
+
} | {
|
|
19
|
+
mode: 'multiple';
|
|
20
|
+
value?: Date[];
|
|
21
|
+
onConfirm: (dates: Date[]) => void;
|
|
22
|
+
maxSelections?: number;
|
|
23
|
+
};
|
|
24
|
+
export type DatePickerSheetProps = SheetChromeProps & Omit<CalendarBaseProps, 'theme'> & DateSheetSelection & {
|
|
25
|
+
/** 'calendar' (default) or 'wheel' (single mode only) */
|
|
26
|
+
display?: 'calendar' | 'wheel';
|
|
27
|
+
wheelProps?: Partial<DateWheelPickerProps>;
|
|
28
|
+
/** Single mode: confirm as soon as a day is tapped. Default: false */
|
|
29
|
+
confirmOnSelect?: boolean;
|
|
30
|
+
};
|
|
31
|
+
export declare function DatePickerSheet(props: DatePickerSheetProps): React.JSX.Element;
|
|
32
|
+
export type TimePickerSheetProps = SheetChromeProps & Omit<TimePickerProps, 'value' | 'defaultValue' | 'onChange' | 'theme'> & {
|
|
33
|
+
value?: Date;
|
|
34
|
+
onConfirm: (date: Date) => void;
|
|
35
|
+
};
|
|
36
|
+
export declare function TimePickerSheet({ visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, value, onConfirm, ...rest }: TimePickerSheetProps): React.JSX.Element;
|
|
37
|
+
export type WheelPickerSheetProps<T> = SheetChromeProps & Omit<WheelPickerProps<T>, 'value' | 'defaultValue' | 'onChange' | 'theme'> & {
|
|
38
|
+
value?: T;
|
|
39
|
+
onConfirm: (value: T) => void;
|
|
40
|
+
};
|
|
41
|
+
export declare function WheelPickerSheet<T>({ visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, value, onConfirm, ...rest }: WheelPickerSheetProps<T>): React.JSX.Element;
|
|
42
|
+
export type EmojiPickerSheetProps = SheetChromeProps & Omit<EmojiPickerProps, 'theme'> & {
|
|
43
|
+
/** Close after picking an emoji. Default: true */
|
|
44
|
+
closeOnSelect?: boolean;
|
|
45
|
+
};
|
|
46
|
+
export declare function EmojiPickerSheet({ visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, closeOnSelect, onSelect, height, ...rest }: EmojiPickerSheetProps): React.JSX.Element;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=sheets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheets.d.ts","sourceRoot":"","sources":["../../src/sheet/sheets.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { PickerSheet, useDraft } from './PickerSheet';
|
|
4
|
+
import { Calendar } from '../date/Calendar';
|
|
5
|
+
import { DateWheelPicker } from '../date/DateWheelPicker';
|
|
6
|
+
import { TimePicker } from '../time/TimePicker';
|
|
7
|
+
import { WheelPicker } from '../wheel/WheelPicker';
|
|
8
|
+
import { EmojiPicker } from '../emoji/EmojiPicker';
|
|
9
|
+
const pad = (children, h = 16) => _jsx(View, { style: { paddingHorizontal: h, paddingBottom: 8 }, children: children });
|
|
10
|
+
export function DatePickerSheet(props) {
|
|
11
|
+
const { visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, display = 'calendar', wheelProps, confirmOnSelect, mode = 'single', value, onConfirm, ...calendarProps } = props;
|
|
12
|
+
const empty = mode === 'range' ? { start: null, end: null } : mode === 'multiple' ? [] : null;
|
|
13
|
+
const [draft, setDraft] = useDraft(value ?? (display === 'wheel' ? new Date() : empty), visible);
|
|
14
|
+
const ready = mode === 'single' ? draft instanceof Date : mode === 'range' ? !!draft.start && !!draft.end : true;
|
|
15
|
+
const confirm = () => {
|
|
16
|
+
if (!ready)
|
|
17
|
+
return;
|
|
18
|
+
onConfirm(draft);
|
|
19
|
+
onClose();
|
|
20
|
+
};
|
|
21
|
+
return (_jsx(PickerSheet, { visible: visible, onClose: onClose, title: title, confirmLabel: confirmLabel, cancelLabel: cancelLabel, showCancel: showCancel, sheetProps: sheetProps, theme: theme, onConfirm: confirmOnSelect && mode === 'single' && display === 'calendar' ? undefined : confirm, confirmDisabled: !ready, children: display === 'wheel'
|
|
22
|
+
? pad(_jsx(DateWheelPicker, { ...wheelProps, locale: calendarProps.locale, minDate: calendarProps.minDate, maxDate: calendarProps.maxDate, theme: theme, value: draft, onChange: setDraft }))
|
|
23
|
+
: pad(_jsx(Calendar, { ...calendarProps, theme: theme, ...{
|
|
24
|
+
mode,
|
|
25
|
+
value: draft,
|
|
26
|
+
onChange: (v) => {
|
|
27
|
+
setDraft(v);
|
|
28
|
+
if (confirmOnSelect && mode === 'single') {
|
|
29
|
+
onConfirm(v);
|
|
30
|
+
onClose();
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
} }), 8) }));
|
|
34
|
+
}
|
|
35
|
+
export function TimePickerSheet({ visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, value, onConfirm, ...rest }) {
|
|
36
|
+
const [draft, setDraft] = useDraft(value ?? new Date(), visible);
|
|
37
|
+
return (_jsx(PickerSheet, { visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, onConfirm: () => {
|
|
38
|
+
onConfirm(draft);
|
|
39
|
+
onClose();
|
|
40
|
+
}, children: pad(_jsx(TimePicker, { ...rest, theme: theme, value: draft, onChange: setDraft })) }));
|
|
41
|
+
}
|
|
42
|
+
export function WheelPickerSheet({ visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, value, onConfirm, ...rest }) {
|
|
43
|
+
const first = rest.items[0];
|
|
44
|
+
const firstValue = (first && typeof first === 'object' && 'value' in first ? first.value : first);
|
|
45
|
+
const [draft, setDraft] = useDraft(value ?? firstValue, visible);
|
|
46
|
+
return (_jsx(PickerSheet, { visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, onConfirm: () => {
|
|
47
|
+
onConfirm(draft);
|
|
48
|
+
onClose();
|
|
49
|
+
}, children: pad(_jsx(WheelPicker, { ...rest, theme: theme, value: draft, onChange: setDraft })) }));
|
|
50
|
+
}
|
|
51
|
+
export function EmojiPickerSheet({ visible, onClose, title, confirmLabel, cancelLabel, showCancel = false, sheetProps, theme, closeOnSelect = true, onSelect, height = 420, ...rest }) {
|
|
52
|
+
return (_jsx(PickerSheet, { visible, onClose, title, confirmLabel, cancelLabel, showCancel, sheetProps, theme, children: _jsx(EmojiPicker, { ...rest, height: height, theme: theme, onSelect: (ch, e) => {
|
|
53
|
+
onSelect(ch, e);
|
|
54
|
+
if (closeOnSelect)
|
|
55
|
+
onClose();
|
|
56
|
+
} }) }));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=sheets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheets.js","sourceRoot":"","sources":["../../src/sheet/sheets.tsx"],"names":[],"mappings":"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"}
|