1 | import { LeftOutline } from 'antd-mobile-icons';
|
2 | import classNames from 'classnames';
|
3 | import React from 'react';
|
4 | import { withNativeProps } from '../../utils/native-props';
|
5 | import { mergeProp, mergeProps } from '../../utils/with-default-props';
|
6 | import { useConfig } from '../config-provider';
|
7 | const classPrefix = `adm-nav-bar`;
|
8 | const defaultBackIcon = React.createElement(LeftOutline, null);
|
9 | export const NavBar = props => {
|
10 | const {
|
11 | navBar: componentConfig = {}
|
12 | } = useConfig();
|
13 | const mergedProps = mergeProps(componentConfig, props);
|
14 | const {
|
15 | back,
|
16 | backIcon,
|
17 | backArrow
|
18 | } = mergedProps;
|
19 | const mergedDefaultBackIcon = componentConfig.backIcon || defaultBackIcon;
|
20 | const mergedBackIcon = mergeProp(defaultBackIcon, componentConfig.backIcon, backArrow === true ? mergedDefaultBackIcon : backArrow, backIcon === true ? mergedDefaultBackIcon : backIcon);
|
21 | return withNativeProps(mergedProps, React.createElement("div", {
|
22 | className: classNames(classPrefix)
|
23 | }, React.createElement("div", {
|
24 | className: `${classPrefix}-left`,
|
25 | role: 'button'
|
26 | }, back !== null && React.createElement("div", {
|
27 | className: `${classPrefix}-back`,
|
28 | onClick: mergedProps.onBack
|
29 | }, mergedBackIcon && React.createElement("span", {
|
30 | className: `${classPrefix}-back-arrow`
|
31 | }, mergedBackIcon), React.createElement("span", {
|
32 | "aria-hidden": 'true'
|
33 | }, back)), mergedProps.left), React.createElement("div", {
|
34 | className: `${classPrefix}-title`
|
35 | }, mergedProps.children), React.createElement("div", {
|
36 | className: `${classPrefix}-right`
|
37 | }, mergedProps.right)));
|
38 | }; |
\ | No newline at end of file |