@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
60 lines (57 loc) • 2.13 kB
JavaScript
import isNil from 'lodash/isNil';
import React, { memo } from 'react';
import { View, TouchableOpacity } from 'react-native';
import { varCreator as varCreatorButton } from '../button/style';
import Divider from '../divider';
import { getDefaultValue, renderTextLikeJSX } from '../helpers';
import ArrowLeftOutline from '../icon/arrow-left';
import Theme from '../theme';
import { varCreator, styleCreator } from './style';
const BACK_ARROW_HIT_SLOP = {
left: 10,
right: 10 // top: 0,
// bottom: 0,
};
/**
* NavBar 导航栏
*/
const NavBar = _ref => {
let {
style,
leftStyle,
rightStyle,
titleTextStyle,
title,
leftExtra,
rightExtra,
showBackArrow = true,
backArrowColor,
backArrowSize,
divider = true,
onPressBackArrow
} = _ref;
const TOKENS = Theme.useThemeTokens();
const CV = Theme.createVar(TOKENS, varCreator);
const CV_BUTTON = Theme.createVar(TOKENS, varCreatorButton);
const STYLES = Theme.createStyle(CV, styleCreator);
backArrowColor = getDefaultValue(backArrowColor, CV.nav_bar_icon_color);
backArrowSize = getDefaultValue(backArrowSize, CV.nav_bar_arrow_size);
const titleJSX = renderTextLikeJSX(title, [STYLES.title_text, titleTextStyle]);
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
style: [STYLES.bar, style]
}, showBackArrow || !isNil(leftExtra) ? /*#__PURE__*/React.createElement(View, {
style: [STYLES.left, leftStyle]
}, showBackArrow ? /*#__PURE__*/React.createElement(TouchableOpacity, {
style: STYLES.back_arrow,
onPress: onPressBackArrow,
activeOpacity: CV_BUTTON.button_active_opacity,
hitSlop: BACK_ARROW_HIT_SLOP
}, /*#__PURE__*/React.createElement(ArrowLeftOutline, {
size: backArrowSize,
color: backArrowColor
})) : null, leftExtra) : null, !isNil(rightExtra) ? /*#__PURE__*/React.createElement(View, {
style: [STYLES.right, rightStyle]
}, rightExtra) : null, titleJSX), divider ? /*#__PURE__*/React.createElement(Divider, null) : null);
};
export default /*#__PURE__*/memo(NavBar);
//# sourceMappingURL=index.js.map