@expo/ui 55.0.2 → 55.0.4
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/CHANGELOG.md +42 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/ui/AnimatedVisibilityView.kt +130 -0
- package/android/src/main/java/expo/modules/ui/BottomSheetView.kt +91 -13
- package/android/src/main/java/expo/modules/ui/CardView.kt +138 -34
- package/android/src/main/java/expo/modules/ui/CheckboxView.kt +98 -0
- package/android/src/main/java/expo/modules/ui/ChipView.kt +267 -142
- package/android/src/main/java/expo/modules/ui/DatePickerView.kt +258 -70
- package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +209 -61
- package/android/src/main/java/expo/modules/ui/ModifierRegistry.kt +44 -1
- package/android/src/main/java/expo/modules/ui/ProgressView.kt +189 -89
- package/android/src/main/java/expo/modules/ui/RadioButtonView.kt +3 -7
- package/android/src/main/java/expo/modules/ui/SegmentedButtonView.kt +115 -0
- package/android/src/main/java/expo/modules/ui/SegmentedControlView.kt +35 -0
- package/android/src/main/java/expo/modules/ui/SliderView.kt +70 -12
- package/android/src/main/java/expo/modules/ui/SwitchView.kt +53 -161
- package/android/src/main/java/expo/modules/ui/TextInputView.kt +39 -15
- package/android/src/main/java/expo/modules/ui/ToggleButtonView.kt +95 -57
- package/android/src/main/java/expo/modules/ui/button/Button.kt +117 -158
- package/android/src/main/java/expo/modules/ui/button/FloatingActionButton.kt +92 -0
- package/android/src/main/java/expo/modules/ui/button/IconButton.kt +73 -86
- package/android/src/main/java/expo/modules/ui/menu/DropdownMenu.kt +39 -0
- package/android/src/main/java/expo/modules/ui/menu/DropdownMenuItem.kt +70 -0
- package/android/src/main/java/expo/modules/ui/menu/DropdownMenuRecords.kt +18 -0
- package/build/datetime-picker/DateTimePicker.android.d.ts +3 -0
- package/build/datetime-picker/DateTimePicker.android.d.ts.map +1 -0
- package/build/datetime-picker/DateTimePicker.d.ts +3 -0
- package/build/datetime-picker/DateTimePicker.d.ts.map +1 -0
- package/build/datetime-picker/DateTimePicker.web.d.ts +3 -0
- package/build/datetime-picker/DateTimePicker.web.d.ts.map +1 -0
- package/build/datetime-picker/index.d.ts +5 -0
- package/build/datetime-picker/index.d.ts.map +1 -0
- package/build/datetime-picker/types.d.ts +128 -0
- package/build/datetime-picker/types.d.ts.map +1 -0
- package/build/jetpack-compose/AnimatedVisibility/index.d.ts +134 -0
- package/build/jetpack-compose/AnimatedVisibility/index.d.ts.map +1 -0
- package/build/jetpack-compose/AnimatedVisibility/symbols.d.ts +3 -0
- package/build/jetpack-compose/AnimatedVisibility/symbols.d.ts.map +1 -0
- package/build/jetpack-compose/Button/index.d.ts +65 -51
- package/build/jetpack-compose/Button/index.d.ts.map +1 -1
- package/build/jetpack-compose/Card/index.d.ts +72 -14
- package/build/jetpack-compose/Card/index.d.ts.map +1 -1
- package/build/jetpack-compose/Checkbox/index.d.ts +73 -0
- package/build/jetpack-compose/Checkbox/index.d.ts.map +1 -0
- package/build/jetpack-compose/Chip/index.d.ts +247 -27
- package/build/jetpack-compose/Chip/index.d.ts.map +1 -1
- package/build/jetpack-compose/DatePicker/index.d.ts +38 -3
- package/build/jetpack-compose/DatePicker/index.d.ts.map +1 -1
- package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts +70 -0
- package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts.map +1 -0
- package/build/jetpack-compose/DropdownMenu/index.d.ts +68 -0
- package/build/jetpack-compose/DropdownMenu/index.d.ts.map +1 -0
- package/build/jetpack-compose/FloatingActionButton/index.d.ts +150 -0
- package/build/jetpack-compose/FloatingActionButton/index.d.ts.map +1 -0
- package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts +2 -2
- package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts.map +1 -1
- package/build/jetpack-compose/IconButton/index.d.ts +45 -29
- package/build/jetpack-compose/IconButton/index.d.ts.map +1 -1
- package/build/jetpack-compose/ModalBottomSheet/index.d.ts +65 -13
- package/build/jetpack-compose/ModalBottomSheet/index.d.ts.map +1 -1
- package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts +17 -0
- package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts.map +1 -0
- package/build/jetpack-compose/Progress/index.d.ts +78 -35
- package/build/jetpack-compose/Progress/index.d.ts.map +1 -1
- package/build/jetpack-compose/RadioButton/index.d.ts +2 -2
- package/build/jetpack-compose/RadioButton/index.d.ts.map +1 -1
- package/build/jetpack-compose/SegmentedButton/index.d.ts +74 -0
- package/build/jetpack-compose/SegmentedButton/index.d.ts.map +1 -0
- package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts +17 -0
- package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts.map +1 -0
- package/build/jetpack-compose/Slider/index.d.ts +34 -10
- package/build/jetpack-compose/Slider/index.d.ts.map +1 -1
- package/build/jetpack-compose/Switch/index.d.ts +10 -50
- package/build/jetpack-compose/Switch/index.d.ts.map +1 -1
- package/build/jetpack-compose/TextInput/index.d.ts +9 -0
- package/build/jetpack-compose/TextInput/index.d.ts.map +1 -1
- package/build/jetpack-compose/ToggleButton/index.d.ts +60 -32
- package/build/jetpack-compose/ToggleButton/index.d.ts.map +1 -1
- package/build/jetpack-compose/index.d.ts +5 -4
- package/build/jetpack-compose/index.d.ts.map +1 -1
- package/build/jetpack-compose/modifiers/index.d.ts +18 -1
- package/build/jetpack-compose/modifiers/index.d.ts.map +1 -1
- package/build/swift-ui/Link/index.d.ts +36 -0
- package/build/swift-ui/Link/index.d.ts.map +1 -0
- package/build/swift-ui/ProgressView/index.d.ts +1 -5
- package/build/swift-ui/ProgressView/index.d.ts.map +1 -1
- package/build/swift-ui/Stepper/index.d.ts +3 -3
- package/build/swift-ui/Stepper/index.d.ts.map +1 -1
- package/build/swift-ui/Text/index.d.ts +33 -1
- package/build/swift-ui/Text/index.d.ts.map +1 -1
- package/build/swift-ui/index.d.ts +1 -0
- package/build/swift-ui/index.d.ts.map +1 -1
- package/build/swift-ui/modifiers/environment.d.ts +16 -1
- package/build/swift-ui/modifiers/environment.d.ts.map +1 -1
- package/build/swift-ui/modifiers/index.d.ts +24 -7
- package/build/swift-ui/modifiers/index.d.ts.map +1 -1
- package/build/swift-ui/modifiers/shapes/index.d.ts +2 -2
- package/build/swift-ui/modifiers/widgets.d.ts +14 -0
- package/build/swift-ui/modifiers/widgets.d.ts.map +1 -0
- package/build/swift-ui/types.d.ts +7 -0
- package/build/swift-ui/types.d.ts.map +1 -1
- package/expo-module.config.json +1 -1
- package/ios/BottomSheetView.swift +1 -6
- package/ios/ClosedRangeDateRecord.swift +10 -0
- package/ios/ColorPickerView.swift +9 -8
- package/ios/ConfirmationDialog/ConfirmationDialog.swift +4 -6
- package/ios/DatePickerView.swift +7 -5
- package/ios/DisclosureGroupView.swift +5 -7
- package/ios/ExpoUIModule.swift +1 -0
- package/ios/LinkView.swift +29 -0
- package/ios/ListView.swift +6 -14
- package/ios/Modifiers/DefaultScrollAnchorForRoleModifier.swift +32 -0
- package/ios/Modifiers/DefaultScrollAnchorModifier.swift +16 -0
- package/ios/Modifiers/EnvironmentModifier.swift +14 -0
- package/ios/Modifiers/ViewModifierRegistry.swift +12 -0
- package/ios/Modifiers/WidgetModifiers.swift +12 -0
- package/ios/Picker/PickerView.swift +6 -10
- package/ios/Popover/PopoverView.swift +3 -5
- package/ios/ProgressView.swift +0 -5
- package/ios/SectionView.swift +3 -5
- package/ios/SliderView.swift +8 -6
- package/ios/StepperView.swift +12 -16
- package/ios/TextView.swift +37 -1
- package/ios/Toggle/ToggleView.swift +5 -7
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4-sources.jar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.aar.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.2/expo.modules.ui-55.0.2.module → 55.0.4/expo.modules.ui-55.0.4.module} +22 -22
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.module.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.2/expo.modules.ui-55.0.2.pom → 55.0.4/expo.modules.ui-55.0.4.pom} +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.md5 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.sha1 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.sha256 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.4/expo.modules.ui-55.0.4.pom.sha512 +1 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
- package/package.json +9 -2
- package/src/datetime-picker/DateTimePicker.android.tsx +126 -0
- package/src/datetime-picker/DateTimePicker.tsx +94 -0
- package/src/datetime-picker/DateTimePicker.web.tsx +5 -0
- package/src/datetime-picker/index.tsx +11 -0
- package/src/datetime-picker/types.tsx +147 -0
- package/src/jetpack-compose/AnimatedVisibility/index.tsx +206 -0
- package/src/jetpack-compose/AnimatedVisibility/symbols.ts +8 -0
- package/src/jetpack-compose/Button/index.tsx +69 -92
- package/src/jetpack-compose/Card/index.tsx +105 -29
- package/src/jetpack-compose/Checkbox/index.tsx +126 -0
- package/src/jetpack-compose/Chip/index.tsx +391 -51
- package/src/jetpack-compose/DatePicker/index.tsx +112 -7
- package/src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx +126 -0
- package/src/jetpack-compose/DropdownMenu/index.tsx +107 -0
- package/src/jetpack-compose/FloatingActionButton/index.tsx +207 -0
- package/src/jetpack-compose/HorizontalFloatingToolbar/index.tsx +4 -2
- package/src/jetpack-compose/IconButton/index.tsx +49 -56
- package/src/jetpack-compose/ModalBottomSheet/index.tsx +85 -15
- package/src/jetpack-compose/MultiChoiceSegmentedButtonRow/index.tsx +34 -0
- package/src/jetpack-compose/Progress/index.tsx +120 -62
- package/src/jetpack-compose/RadioButton/index.tsx +8 -9
- package/src/jetpack-compose/SegmentedButton/index.tsx +109 -0
- package/src/jetpack-compose/SingleChoiceSegmentedButtonRow/index.tsx +34 -0
- package/src/jetpack-compose/Slider/index.tsx +76 -29
- package/src/jetpack-compose/Switch/index.tsx +17 -87
- package/src/jetpack-compose/TextInput/index.tsx +10 -0
- package/src/jetpack-compose/ToggleButton/index.tsx +67 -43
- package/src/jetpack-compose/index.ts +5 -4
- package/src/jetpack-compose/modifiers/index.ts +26 -2
- package/src/swift-ui/Link/index.tsx +52 -0
- package/src/swift-ui/ProgressView/index.tsx +1 -3
- package/src/swift-ui/Stepper/index.tsx +7 -7
- package/src/swift-ui/Text/index.tsx +66 -2
- package/src/swift-ui/index.tsx +1 -0
- package/src/swift-ui/modifiers/environment.ts +17 -4
- package/src/swift-ui/modifiers/index.ts +44 -10
- package/src/swift-ui/modifiers/widgets.ts +18 -0
- package/src/swift-ui/types.ts +5 -0
- package/android/src/main/java/expo/modules/ui/FilterChipView.kt +0 -59
- package/android/src/main/java/expo/modules/ui/PickerView.kt +0 -161
- package/android/src/main/java/expo/modules/ui/TextButtonView.kt +0 -33
- package/android/src/main/java/expo/modules/ui/menu/ContextMenu.kt +0 -183
- package/android/src/main/java/expo/modules/ui/menu/ContextMenuRecords.kt +0 -64
- package/build/jetpack-compose/Button/types.d.ts +0 -5
- package/build/jetpack-compose/Button/types.d.ts.map +0 -1
- package/build/jetpack-compose/ContextMenu/Submenu.d.ts +0 -17
- package/build/jetpack-compose/ContextMenu/Submenu.d.ts.map +0 -1
- package/build/jetpack-compose/ContextMenu/index.d.ts +0 -65
- package/build/jetpack-compose/ContextMenu/index.d.ts.map +0 -1
- package/build/jetpack-compose/ContextMenu/utils.d.ts +0 -24
- package/build/jetpack-compose/ContextMenu/utils.d.ts.map +0 -1
- package/build/jetpack-compose/FilterChip/index.d.ts +0 -49
- package/build/jetpack-compose/FilterChip/index.d.ts.map +0 -1
- package/build/jetpack-compose/Picker/index.d.ts +0 -62
- package/build/jetpack-compose/Picker/index.d.ts.map +0 -1
- package/build/jetpack-compose/TextButton/index.d.ts +0 -29
- package/build/jetpack-compose/TextButton/index.d.ts.map +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar +0 -0
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha512 +0 -1
- package/src/jetpack-compose/Button/types.ts +0 -57
- package/src/jetpack-compose/ContextMenu/Submenu.tsx +0 -21
- package/src/jetpack-compose/ContextMenu/index.tsx +0 -149
- package/src/jetpack-compose/ContextMenu/utils.ts +0 -144
- package/src/jetpack-compose/FilterChip/index.tsx +0 -89
- package/src/jetpack-compose/Picker/index.tsx +0 -90
- package/src/jetpack-compose/TextButton/index.tsx +0 -55
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { Children, isValidElement, ReactElement, ReactNode } from 'react';
|
|
2
|
-
import { NativeSyntheticEvent } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { Submenu, SubmenuProps } from './Submenu';
|
|
5
|
-
import { ContextMenuElementBase, EventHandlers } from './index';
|
|
6
|
-
import { Button, ButtonProps, NativeButtonProps, transformButtonProps } from '../Button';
|
|
7
|
-
import { Picker, PickerProps } from '../Picker';
|
|
8
|
-
import { Switch, SwitchProps } from '../Switch';
|
|
9
|
-
|
|
10
|
-
// We use this slightly odd typing for the elements to make unpacking the elements easier on the native side
|
|
11
|
-
type ButtonMenuElement = {
|
|
12
|
-
button: NativeButtonProps;
|
|
13
|
-
} & ContextMenuElementBase;
|
|
14
|
-
|
|
15
|
-
type SwitchMenuElement = {
|
|
16
|
-
switch: SwitchProps;
|
|
17
|
-
} & ContextMenuElementBase;
|
|
18
|
-
|
|
19
|
-
type PickerMenuElement = {
|
|
20
|
-
picker: PickerProps;
|
|
21
|
-
} & ContextMenuElementBase;
|
|
22
|
-
|
|
23
|
-
type SubmenuElement = {
|
|
24
|
-
submenu: {
|
|
25
|
-
elements: MenuElement[];
|
|
26
|
-
button: NativeButtonProps;
|
|
27
|
-
};
|
|
28
|
-
} & ContextMenuElementBase;
|
|
29
|
-
|
|
30
|
-
export type MenuElement =
|
|
31
|
-
| ButtonMenuElement
|
|
32
|
-
| SwitchMenuElement
|
|
33
|
-
| PickerMenuElement
|
|
34
|
-
| SubmenuElement;
|
|
35
|
-
|
|
36
|
-
// Maps the react children to NativeMenuElement[] which is used to render out the native menu
|
|
37
|
-
// TODO: Ideally we want to pass the children directly to the native side without having to do this
|
|
38
|
-
export function transformChildrenToElementArray(
|
|
39
|
-
children: ReactNode,
|
|
40
|
-
eventHandlersMap: EventHandlers
|
|
41
|
-
): MenuElement[] {
|
|
42
|
-
return Children.toArray(children)
|
|
43
|
-
.map((child) => processChildElement(child, eventHandlersMap))
|
|
44
|
-
.filter((el): el is MenuElement => el !== null);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function processChildElement(
|
|
48
|
-
child: ReactNode,
|
|
49
|
-
eventHandlersMap: EventHandlers
|
|
50
|
-
): MenuElement | null {
|
|
51
|
-
if (!isValidElement(child)) return null;
|
|
52
|
-
|
|
53
|
-
const uuid = expo.uuidv4();
|
|
54
|
-
|
|
55
|
-
if (child.type === Button) {
|
|
56
|
-
// @ts-expect-error TODO TS2345: Argument of type unknown is not assignable to parameter of type SubmenuProps
|
|
57
|
-
return createButtonElement(uuid, child.props, eventHandlersMap);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (child.type === Switch) {
|
|
61
|
-
// @ts-expect-error TODO TS2345: Argument of type unknown is not assignable to parameter of type SubmenuProps
|
|
62
|
-
return createSwitchElement(uuid, child.props, eventHandlersMap);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (child.type === Picker) {
|
|
66
|
-
// @ts-expect-error TODO TS2345: Argument of type unknown is not assignable to parameter of type SubmenuProps
|
|
67
|
-
return createPickerElement(uuid, child.props, eventHandlersMap);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (isSubmenuComponent(child)) {
|
|
71
|
-
// @ts-expect-error TODO TS2345: Argument of type unknown is not assignable to parameter of type SubmenuProps
|
|
72
|
-
return createSubmenuElement(uuid, child.props, eventHandlersMap);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
console.warn('Unsupported child type in Menu: ', child.type);
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function createButtonElement(
|
|
80
|
-
uuid: string,
|
|
81
|
-
props: ButtonProps,
|
|
82
|
-
handlers: EventHandlers
|
|
83
|
-
): MenuElement {
|
|
84
|
-
if (props.onPress) {
|
|
85
|
-
handlers[uuid] = { onPress: props.onPress };
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
contextMenuElementID: uuid,
|
|
90
|
-
button: transformButtonProps(props),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function createSwitchElement(
|
|
95
|
-
uuid: string,
|
|
96
|
-
props: SwitchProps,
|
|
97
|
-
handlers: EventHandlers
|
|
98
|
-
): MenuElement {
|
|
99
|
-
if (props.onValueChange) {
|
|
100
|
-
handlers[uuid] = {
|
|
101
|
-
onValueChange: ({ nativeEvent: { value } }: NativeSyntheticEvent<{ value: boolean }>) => {
|
|
102
|
-
props.onValueChange?.(value);
|
|
103
|
-
},
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return {
|
|
108
|
-
contextMenuElementID: uuid,
|
|
109
|
-
switch: props,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function createPickerElement(
|
|
114
|
-
uuid: string,
|
|
115
|
-
props: PickerProps,
|
|
116
|
-
handlers: EventHandlers
|
|
117
|
-
): MenuElement {
|
|
118
|
-
if (props.onOptionSelected) {
|
|
119
|
-
handlers[uuid] = { onOptionSelected: props.onOptionSelected };
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return {
|
|
123
|
-
contextMenuElementID: uuid,
|
|
124
|
-
picker: props,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function createSubmenuElement(
|
|
129
|
-
uuid: string,
|
|
130
|
-
props: SubmenuProps,
|
|
131
|
-
handlers: EventHandlers
|
|
132
|
-
): MenuElement {
|
|
133
|
-
return {
|
|
134
|
-
contextMenuElementID: uuid,
|
|
135
|
-
submenu: {
|
|
136
|
-
button: transformButtonProps(props.button.props),
|
|
137
|
-
elements: transformChildrenToElementArray(props.children, handlers),
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
function isSubmenuComponent(child: ReactElement): boolean {
|
|
143
|
-
return child.type === Submenu;
|
|
144
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { requireNativeView } from 'expo';
|
|
2
|
-
|
|
3
|
-
import { ExpoModifier } from '../../types';
|
|
4
|
-
import { createViewModifierEventListener } from '../modifiers/utils';
|
|
5
|
-
|
|
6
|
-
export type FilterChipProps = {
|
|
7
|
-
/**
|
|
8
|
-
* Whether the chip is currently selected.
|
|
9
|
-
*/
|
|
10
|
-
selected: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* The text label to display on the chip.
|
|
13
|
-
*/
|
|
14
|
-
label: string;
|
|
15
|
-
/**
|
|
16
|
-
* Whether the chip is enabled and can be interacted with.
|
|
17
|
-
*/
|
|
18
|
-
enabled?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Callback fired when the chip is clicked.
|
|
21
|
-
*/
|
|
22
|
-
onPress?: () => void;
|
|
23
|
-
/**
|
|
24
|
-
* Modifiers for the component.
|
|
25
|
-
*/
|
|
26
|
-
modifiers?: ExpoModifier[];
|
|
27
|
-
/**
|
|
28
|
-
* Children containing LeadingIcon and TrailingIcon slots.
|
|
29
|
-
*/
|
|
30
|
-
children?: React.ReactNode;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
type SlotChildProps = {
|
|
34
|
-
children: React.ReactNode;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
type NativeFilterChipProps = FilterChipProps;
|
|
38
|
-
|
|
39
|
-
type NativeSlotViewProps = {
|
|
40
|
-
slotName: string;
|
|
41
|
-
children: React.ReactNode;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const FilterChipNativeView: React.ComponentType<NativeFilterChipProps> = requireNativeView(
|
|
45
|
-
'ExpoUI',
|
|
46
|
-
'FilterChipView'
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
const SlotNativeView: React.ComponentType<NativeSlotViewProps> = requireNativeView(
|
|
50
|
-
'ExpoUI',
|
|
51
|
-
'SlotView'
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Leading icon slot for FilterChip.
|
|
56
|
-
*/
|
|
57
|
-
function FilterChipLeadingIcon(props: SlotChildProps) {
|
|
58
|
-
return <SlotNativeView slotName="leadingIcon">{props.children}</SlotNativeView>;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Trailing icon slot for FilterChip.
|
|
63
|
-
*/
|
|
64
|
-
function FilterChipTrailingIcon(props: SlotChildProps) {
|
|
65
|
-
return <SlotNativeView slotName="trailingIcon">{props.children}</SlotNativeView>;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* A filter chip component following Material 3 design guidelines.
|
|
70
|
-
* Supports slot-based `LeadingIcon` and `TrailingIcon` children.
|
|
71
|
-
*/
|
|
72
|
-
function FilterChipComponent(props: FilterChipProps) {
|
|
73
|
-
const { children, modifiers, onPress, ...restProps } = props;
|
|
74
|
-
|
|
75
|
-
return (
|
|
76
|
-
<FilterChipNativeView
|
|
77
|
-
modifiers={modifiers}
|
|
78
|
-
{...(modifiers ? createViewModifierEventListener(modifiers) : undefined)}
|
|
79
|
-
{...restProps}
|
|
80
|
-
onPress={onPress}>
|
|
81
|
-
{children}
|
|
82
|
-
</FilterChipNativeView>
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
FilterChipComponent.LeadingIcon = FilterChipLeadingIcon;
|
|
87
|
-
FilterChipComponent.TrailingIcon = FilterChipTrailingIcon;
|
|
88
|
-
|
|
89
|
-
export { FilterChipComponent as FilterChip };
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { requireNativeView } from 'expo';
|
|
2
|
-
import { type ColorValue } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { ExpoModifier } from '../../types';
|
|
5
|
-
import { createViewModifierEventListener } from '../modifiers/utils';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Colors for picker's core elements.
|
|
9
|
-
*/
|
|
10
|
-
export type PickerElementColors = {
|
|
11
|
-
activeBorderColor?: ColorValue;
|
|
12
|
-
activeContentColor?: ColorValue;
|
|
13
|
-
inactiveBorderColor?: ColorValue;
|
|
14
|
-
inactiveContentColor?: ColorValue;
|
|
15
|
-
disabledActiveBorderColor?: ColorValue;
|
|
16
|
-
disabledActiveContentColor?: ColorValue;
|
|
17
|
-
disabledInactiveBorderColor?: ColorValue;
|
|
18
|
-
disabledInactiveContentColor?: ColorValue;
|
|
19
|
-
activeContainerColor?: ColorValue;
|
|
20
|
-
inactiveContainerColor?: ColorValue;
|
|
21
|
-
disabledActiveContainerColor?: ColorValue;
|
|
22
|
-
disabledInactiveContainerColor?: ColorValue;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export type PickerProps = {
|
|
26
|
-
/**
|
|
27
|
-
* An array of options to be displayed in the picker.
|
|
28
|
-
*/
|
|
29
|
-
options: string[];
|
|
30
|
-
/**
|
|
31
|
-
* The index of the currently selected option.
|
|
32
|
-
*/
|
|
33
|
-
selectedIndex: number | null;
|
|
34
|
-
/**
|
|
35
|
-
* Callback function that is called when an option is selected.
|
|
36
|
-
*/
|
|
37
|
-
onOptionSelected?: (event: { nativeEvent: { index: number; label: string } }) => void;
|
|
38
|
-
/**
|
|
39
|
-
* The variant of the picker, which determines its appearance and behavior.
|
|
40
|
-
* @default 'segmented'
|
|
41
|
-
*/
|
|
42
|
-
variant?: 'segmented' | 'radio';
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Colors for picker's core elements.
|
|
46
|
-
*/
|
|
47
|
-
elementColors?: PickerElementColors;
|
|
48
|
-
/**
|
|
49
|
-
* Picker color.
|
|
50
|
-
*/
|
|
51
|
-
color?: ColorValue;
|
|
52
|
-
/**
|
|
53
|
-
* Modifiers for the component.
|
|
54
|
-
*/
|
|
55
|
-
modifiers?: ExpoModifier[];
|
|
56
|
-
/** Modifiers for the individual buttons */
|
|
57
|
-
buttonModifiers?: ExpoModifier[];
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const PickerNativeView: React.ComponentType<PickerProps> = requireNativeView(
|
|
61
|
-
'ExpoUI',
|
|
62
|
-
'PickerView'
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
type NativePickerProps = PickerProps;
|
|
66
|
-
|
|
67
|
-
function transformPickerProps(props: PickerProps): NativePickerProps {
|
|
68
|
-
const { modifiers, ...restProps } = props;
|
|
69
|
-
return {
|
|
70
|
-
modifiers,
|
|
71
|
-
...(modifiers ? createViewModifierEventListener(modifiers) : undefined),
|
|
72
|
-
...restProps,
|
|
73
|
-
variant: props.variant ?? 'segmented',
|
|
74
|
-
elementColors: props.elementColors
|
|
75
|
-
? props.elementColors
|
|
76
|
-
: props.color
|
|
77
|
-
? {
|
|
78
|
-
activeContainerColor: props.color,
|
|
79
|
-
}
|
|
80
|
-
: undefined,
|
|
81
|
-
color: props.color,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Displays a native picker component. Depending on the variant it can be a segmented button, an inline picker, a list of choices or a radio button.
|
|
87
|
-
*/
|
|
88
|
-
export function Picker(props: PickerProps) {
|
|
89
|
-
return <PickerNativeView {...transformPickerProps(props)} />;
|
|
90
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { requireNativeView } from 'expo';
|
|
2
|
-
import { type ColorValue } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { ExpoModifier, ViewEvent } from '../../types';
|
|
5
|
-
import { getTextFromChildren } from '../../utils';
|
|
6
|
-
import { createViewModifierEventListener } from '../modifiers/utils';
|
|
7
|
-
|
|
8
|
-
export type TextButtonProps = {
|
|
9
|
-
/**
|
|
10
|
-
* The text content to display in the button.
|
|
11
|
-
*/
|
|
12
|
-
children?: string | string[] | React.JSX.Element;
|
|
13
|
-
/**
|
|
14
|
-
* The color of the button text.
|
|
15
|
-
*/
|
|
16
|
-
color?: ColorValue;
|
|
17
|
-
/**
|
|
18
|
-
* Whether the button is disabled.
|
|
19
|
-
*/
|
|
20
|
-
disabled?: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Callback that is called when the button is pressed.
|
|
23
|
-
*/
|
|
24
|
-
onPress?: () => void;
|
|
25
|
-
/**
|
|
26
|
-
* Modifiers for the component.
|
|
27
|
-
*/
|
|
28
|
-
modifiers?: ExpoModifier[];
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
type NativeTextButtonProps = Omit<TextButtonProps, 'children' | 'onPress'> & {
|
|
32
|
-
text: string;
|
|
33
|
-
} & ViewEvent<'onButtonPressed', void>;
|
|
34
|
-
|
|
35
|
-
const TextButtonNativeView: React.ComponentType<NativeTextButtonProps> = requireNativeView(
|
|
36
|
-
'ExpoUI',
|
|
37
|
-
'TextButtonView'
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
function transformProps(props: TextButtonProps): NativeTextButtonProps {
|
|
41
|
-
const { children, modifiers, onPress, ...restProps } = props;
|
|
42
|
-
return {
|
|
43
|
-
modifiers,
|
|
44
|
-
...(modifiers ? createViewModifierEventListener(modifiers) : undefined),
|
|
45
|
-
...restProps,
|
|
46
|
-
text: getTextFromChildren(children) ?? '',
|
|
47
|
-
onButtonPressed: onPress,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* A text button component that displays a clickable text label.
|
|
52
|
-
*/
|
|
53
|
-
export function TextButton(props: TextButtonProps) {
|
|
54
|
-
return <TextButtonNativeView {...transformProps(props)} />;
|
|
55
|
-
}
|