navbar.tsx 1.7 KB
Newer Older
D
dushoujun 已提交
1 2 3
import React, { FunctionComponent } from 'react'
import Icon from '../icon'
import bem from '@/utils/bem'
O
oasis-cloud 已提交
4

B
bjdushoujun 已提交
5
import classNames from 'classnames'
D
dushoujun 已提交
6 7 8 9 10 11 12

export interface NavBarProps {
  title: string
  desc: string
  leftShow: boolean
  icon: string
  titIcon: string
B
bjdushoujun 已提交
13 14
  className: string
  style: React.CSSProperties
D
dushoujun 已提交
15 16 17 18
  onClickTitle: (e: React.MouseEvent<HTMLDivElement>) => void
  onClickIcon: (e: React.MouseEvent<HTMLDivElement>) => void
  onClickBack: (e: React.MouseEvent<HTMLElement>) => void
  onClickClear: (e: React.MouseEvent<HTMLDivElement>) => void
D
dushoujun 已提交
19 20 21 22 23 24 25
}
const defaultProps = {
  title: '',
  desc: '',
  leftShow: false,
  icon: '',
  titIcon: '',
B
bjdushoujun 已提交
26
  className: '',
D
dushoujun 已提交
27 28 29 30 31 32 33 34
} as NavBarProps
export const NavBar: FunctionComponent<Partial<NavBarProps>> = (props) => {
  const {
    desc,
    icon,
    title,
    titIcon,
    leftShow,
B
bjdushoujun 已提交
35 36
    className,
    style,
D
dushoujun 已提交
37 38 39 40 41 42 43 44 45 46
    onClickTitle,
    onClickIcon,
    onClickBack,
    onClickClear,
  } = {
    ...defaultProps,
    ...props,
  }
  const b = bem('navbar')
  return (
B
bjdushoujun 已提交
47
    <div className={`nut-navbar ${className}`} style={style}>
D
dushoujun 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
      {leftShow && (
        <i
          className={['nut-icon', 'nutui-iconfont', `${b('back')}`].join(' ')}
          onClick={(e) => onClickBack(e)}
        ></i>
      )}
      <div className={`${b('title')}`} onClick={(e) => onClickTitle(e)}>
        {title}
        {titIcon && <Icon name={titIcon} />}
      </div>
      <div className={`${b('desc')}`} onClick={(e) => onClickClear(e)}>
        {desc}
      </div>
      {icon && (
        <div className={`${b('icon')}`} onClick={(e) => onClickIcon(e)}>
          <Icon name={icon} />
        </div>
      )}
    </div>
  )
}

NavBar.defaultProps = defaultProps
NavBar.displayName = 'NutNavBar'