vendor expo-ized emoji popup
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import {type EmojiPickerViewProps} from './EmojiPickerModule.types'
|
||||
import EmojiPickerNativeView from './EmojiPickerView'
|
||||
|
||||
const EmojiPicker = ({onEmojiSelected}: EmojiPickerViewProps) => {
|
||||
return (
|
||||
<EmojiPickerNativeView
|
||||
onEmojiSelected={emoji => {
|
||||
onEmojiSelected(emoji)
|
||||
}}
|
||||
style={styles}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const styles = {
|
||||
flex: 1,
|
||||
width: '100%',
|
||||
backgroundColor: 'white',
|
||||
} as const
|
||||
|
||||
export default EmojiPicker
|
||||
@@ -0,0 +1,15 @@
|
||||
import {type EmojiPickerViewProps} from './EmojiPickerModule.types'
|
||||
import EmojiPickerNativeView from './EmojiPickerView'
|
||||
|
||||
const EmojiPicker = ({children, onEmojiSelected}: EmojiPickerViewProps) => {
|
||||
return (
|
||||
<EmojiPickerNativeView
|
||||
onEmojiSelected={emoji => {
|
||||
onEmojiSelected(emoji)
|
||||
}}>
|
||||
{children}
|
||||
</EmojiPickerNativeView>
|
||||
)
|
||||
}
|
||||
|
||||
export default EmojiPicker
|
||||
@@ -0,0 +1,5 @@
|
||||
import {NativeModule, requireNativeModule} from 'expo'
|
||||
|
||||
declare class EmojiPickerModule extends NativeModule {}
|
||||
|
||||
export default requireNativeModule<EmojiPickerModule>('EmojiPicker')
|
||||
@@ -0,0 +1,20 @@
|
||||
import {type ViewProps} from 'react-native'
|
||||
|
||||
export type EmojiSelectionListener = (event: {
|
||||
nativeEvent: SelectionEvent
|
||||
}) => void
|
||||
|
||||
export type SelectionEvent = {
|
||||
emoji: string
|
||||
}
|
||||
|
||||
export type EmojiPickerViewProps = ViewProps & {
|
||||
/*
|
||||
* Callback that will be called when an emoji is selected.
|
||||
*/
|
||||
onEmojiSelected: (emoji: string) => void
|
||||
}
|
||||
|
||||
export type EmojiPickerNativeViewProps = ViewProps & {
|
||||
onEmojiSelected: EmojiSelectionListener
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import {requireNativeView} from 'expo'
|
||||
import type * as React from 'react'
|
||||
|
||||
import {
|
||||
type EmojiPickerNativeViewProps,
|
||||
type EmojiPickerViewProps,
|
||||
} from './EmojiPickerModule.types'
|
||||
|
||||
const NativeView: React.ComponentType<EmojiPickerNativeViewProps> =
|
||||
requireNativeView('EmojiPicker')
|
||||
|
||||
export default function EmojiPicker(props: EmojiPickerViewProps) {
|
||||
return (
|
||||
<NativeView
|
||||
{...props}
|
||||
onEmojiSelected={({nativeEvent}) => {
|
||||
props.onEmojiSelected(nativeEvent.emoji)
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user