@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
74 lines (72 loc) • 2.3 kB
JavaScript
import { ArrowLeftOutline } from '@fruits-chain/icons-react-native';
import isNil from 'lodash/isNil';
import React, { memo } from 'react';
import { View, TouchableOpacity } from 'react-native';
import { varCreator as varCreatorButton } from "../button/style.js";
import Divider from "../divider/index.js";
import { getDefaultValue, renderTextLikeJSX } from "../helpers/index.js";
import Theme from "../theme/index.js";
import { varCreator, styleCreator } from "./style.js";
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
const BACK_ARROW_HIT_SLOP = {
left: 10,
right: 10
// top: 0,
// bottom: 0,
};
/**
* NavBar 导航栏
*/
const NavBar = ({
testID,
style,
theme,
leftStyle,
rightStyle,
titleTextStyle,
title,
leftExtra,
rightExtra,
showBackArrow = true,
backArrowColor,
backArrowSize,
divider = true,
onPressBackArrow
}) => {
const [CV, STYLES] = Theme.useStyle({
varCreator,
styleCreator,
theme
});
const [CV_BUTTON] = Theme.useStyle({
varCreator: varCreatorButton
});
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__*/_jsxs(_Fragment, {
children: [/*#__PURE__*/_jsxs(View, {
style: [STYLES.bar, style],
testID: testID,
children: [showBackArrow || !isNil(leftExtra) ? /*#__PURE__*/_jsxs(View, {
style: [STYLES.left, leftStyle],
children: [showBackArrow ? /*#__PURE__*/_jsx(TouchableOpacity, {
style: STYLES.back_arrow,
onPress: onPressBackArrow,
activeOpacity: CV_BUTTON.button_active_opacity,
hitSlop: BACK_ARROW_HIT_SLOP,
children: /*#__PURE__*/_jsx(ArrowLeftOutline, {
size: backArrowSize,
color: backArrowColor
})
}) : null, leftExtra]
}) : null, !isNil(rightExtra) ? /*#__PURE__*/_jsx(View, {
style: [STYLES.right, rightStyle],
children: rightExtra
}) : null, titleJSX]
}), divider ? /*#__PURE__*/_jsx(Divider, {}) : null]
});
};
export default /*#__PURE__*/memo(NavBar);
//# sourceMappingURL=nav-bar.js.map
;