1 | import PropTypes from 'prop-types';
|
2 | import React, { useEffect, useState } from 'react';
|
3 | import { StyleSheet, View, Keyboard } from 'react-native';
|
4 | import { Composer } from './Composer';
|
5 | import { Send } from './Send';
|
6 | import { Actions } from './Actions';
|
7 | import Color from './Color';
|
8 | import { StylePropType } from './utils';
|
9 | const 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 | });
|
26 | export 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 | }
|
50 | InputToolbar.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 |