UNPKG

@cometchat/chat-uikit-react-native

Version:

Ready-to-use Chat UI Components for React Native

35 lines 1.64 kB
import React, { useCallback, useMemo } from "react"; import { FlatList, Pressable, Text, } from "react-native"; import { useTheme } from "../../../theme"; import { Icon } from "../../icons/Icon"; import { Hooks } from "./hooks"; import { deepMerge } from "../../helper/helperFunctions"; const OptionListView = ({ id, title, icon, onPress, style, }) => { const theme = useTheme(); const renderIcon = useCallback(() => { return (<Icon icon={icon} imageStyle={style?.iconStyle} containerStyle={style?.iconContainerStyle}/>); }, [icon]); return (<Pressable key={id} onPress={onPress} style={({ pressed }) => [ style?.containerStyle, pressed && { backgroundColor: theme.color.background4 }, ]}> {renderIcon()} <Text style={style?.titleStyle}>{title}</Text> </Pressable>); }; export const CometChatActionSheet = (props) => { const [actionList, setActionList] = React.useState(props.actions); const theme = useTheme(); const actionSheetStyles = useMemo(() => { return deepMerge(theme.actionSheetStyle, props.style ?? {}); }, [theme.actionSheetStyle, props.style]); Hooks(props, setActionList); const _render = ({ item }) => { return (<OptionListView id={item.id} {...item} icon={item.icon} style={deepMerge(actionSheetStyles.optionsItemStyle, item?.style ?? {})}/>); }; const getList = () => { return (<FlatList key={"list"} keyExtractor={(item) => item.id} style={{ flex: 1 }} data={actionList} numColumns={1} renderItem={_render}/>); }; return getList(); }; //# sourceMappingURL=CometChatActionSheet.js.map