@sendbird/uikit-react-native-foundation
Version:
A foundational UI kit for building chat-enabled React Native apps.
58 lines • 1.62 kB
JavaScript
import React from 'react';
import { TouchableOpacity, useWindowDimensions } from 'react-native';
import { useSafeAreaPadding } from '@sendbird/uikit-utils';
import Modal from '../../components/Modal';
import useHeaderStyle from '../../styles/useHeaderStyle';
import DialogSheet from '../Dialog/DialogSheet';
const BottomSheet = ({
onDismiss,
onHide,
visible,
sheetItems,
HeaderComponent
}) => {
const {
statusBarTranslucent
} = useHeaderStyle();
const {
width
} = useWindowDimensions();
const safeArea = useSafeAreaPadding(['bottom', 'left', 'right']);
return /*#__PURE__*/React.createElement(Modal, {
type: 'slide',
onClose: onHide,
onDismiss: onDismiss,
statusBarTranslucent: statusBarTranslucent,
visible: visible,
backgroundStyle: {
alignItems: 'center',
justifyContent: 'flex-end'
}
}, /*#__PURE__*/React.createElement(DialogSheet, {
style: {
width,
paddingBottom: safeArea.paddingBottom
}
}, HeaderComponent && /*#__PURE__*/React.createElement(HeaderComponent, {
onClose: onHide
}), sheetItems.map(({
onPress,
...props
}, idx) => /*#__PURE__*/React.createElement(TouchableOpacity, {
activeOpacity: 0.75,
key: props.title + idx,
style: {
paddingStart: safeArea.paddingStart,
paddingEnd: safeArea.paddingEnd
},
disabled: props.disabled,
onPress: async () => {
await onHide();
try {
onPress();
} catch {}
}
}, /*#__PURE__*/React.createElement(DialogSheet.Item, props)))));
};
export default BottomSheet;
//# sourceMappingURL=index.js.map