UNPKG

2.55 kBJavaScriptView Raw
1import PropTypes from 'prop-types';
2import React, { useEffect, useState } from 'react';
3import { StyleSheet, View, Keyboard } from 'react-native';
4import { Composer } from './Composer';
5import { Send } from './Send';
6import { Actions } from './Actions';
7import Color from './Color';
8import { StylePropType } from './utils';
9const styles = StyleSheet.create({
10 container: {
11 borderTopWidth: StyleSheet.hairlineWidth,
12 borderTopColor: Color.defaultColor,
13 backgroundColor: Color.white,
14 bottom: 0,
15 left: 0,
16 right: 0,
17 },
18 primary: {
19 flexDirection: 'row',
20 alignItems: 'flex-end',
21 },
22 accessory: {
23 height: 44,
24 },
25});
26export function InputToolbar(props) {
27 const [position, setPosition] = useState('absolute');
28 useEffect(() => {
29 const keyboardWillShowListener = Keyboard.addListener('keyboardWillShow', () => setPosition('relative'));
30 const keyboardWillHideListener = Keyboard.addListener('keyboardWillHide', () => setPosition('absolute'));
31 return () => {
32 keyboardWillShowListener === null || keyboardWillShowListener === void 0 ? void 0 : keyboardWillShowListener.remove();
33 keyboardWillHideListener === null || keyboardWillHideListener === void 0 ? void 0 : keyboardWillHideListener.remove();
34 };
35 }, []);
36 const { containerStyle, ...rest } = props;
37 const { renderActions, onPressActionButton, renderComposer, renderSend, renderAccessory, } = rest;
38 return (<View style={[styles.container, { position }, containerStyle]}>
39 <View style={[styles.primary, props.primaryStyle]}>
40 {(renderActions === null || renderActions === void 0 ? void 0 : renderActions(rest)) ||
41 (onPressActionButton && <Actions {...rest}/>)}
42 {(renderComposer === null || renderComposer === void 0 ? void 0 : renderComposer(props)) || <Composer {...props}/>}
43 {(renderSend === null || renderSend === void 0 ? void 0 : renderSend(props)) || <Send {...props}/>}
44 </View>
45 {renderAccessory && (<View style={[styles.accessory, props.accessoryStyle]}>
46 {renderAccessory(props)}
47 </View>)}
48 </View>);
49}
50InputToolbar.propTypes = {
51 renderAccessory: PropTypes.func,
52 renderActions: PropTypes.func,
53 renderSend: PropTypes.func,
54 renderComposer: PropTypes.func,
55 onPressActionButton: PropTypes.func,
56 containerStyle: StylePropType,
57 primaryStyle: StylePropType,
58 accessoryStyle: StylePropType,
59};
60//# sourceMappingURL=InputToolbar.js.map
\No newline at end of file