@cometchat/chat-uikit-react-native
Version:
Ready-to-use Chat UI Components for React Native
35 lines • 1.64 kB
JavaScript
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