UNPKG

create-expo-cljs-app

Version:

Create a react native application with Expo and Shadow-CLJS!

73 lines (68 loc) 1.97 kB
/** * Copyright (c) Nicolas Gallagher. * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ import type { PlatformMethods } from '../../types'; import type { ViewProps } from '../View'; import * as React from 'react'; import createElement from '../createElement'; import useMergeRefs from '../../modules/useMergeRefs'; import usePlatformMethods from '../../modules/usePlatformMethods'; import PickerItem from './PickerItem'; import StyleSheet from '../StyleSheet'; type PickerProps = { ...ViewProps, children?: typeof PickerItem | Array<typeof PickerItem>, enabled?: boolean, onValueChange?: (number | string, number) => void, selectedValue?: number | string, style?: any, /* compat */ itemStyle?: any, mode?: string, prompt?: string, }; const Picker: React.AbstractComponent<PickerProps, HTMLElement & PlatformMethods> = React.forwardRef((props, forwardedRef) => { const { children, enabled, onValueChange, selectedValue, style, testID, /* eslint-disable */ itemStyle, mode, prompt, /* eslint-enable */ ...other } = props; const hostRef = React.useRef(null); declare function handleChange(e: Object): any; // $FlowFixMe const supportedProps: any = { children, disabled: enabled === false ? true : undefined, onChange: handleChange, style: [styles.initial, style], testID, value: selectedValue, ...other }; const platformMethodsRef = usePlatformMethods(supportedProps); const setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef); supportedProps.ref = setRef; return createElement('select', supportedProps); }); // $FlowFixMe Picker.Item = PickerItem; const styles = StyleSheet.create({ initial: { fontFamily: 'System', fontSize: 'inherit', margin: 0 } }); export default Picker;