// Utils import { createNamespace, noop } from '../utils'; import { inherit } from '../utils/functional'; import { BORDER_BOTTOM } from '../utils/constant'; // Components import Icon from '../icon'; // Types import { CreateElement, RenderContext } from 'vue/types'; import { ScopedSlot, DefaultSlots } from '../utils/types'; export type NavBarProps = { title?: string; fixed?: boolean; zIndex: number; border: boolean; leftText?: string; rightText?: string; leftArrow?: boolean; }; export type NavBarSlots = DefaultSlots & { left?: ScopedSlot; title?: ScopedSlot; right?: ScopedSlot; }; export type NavBarEvents = { 'click-left'?(event: Event): void; 'click-right'?(event: Event): void; }; const [createComponent, bem] = createNamespace('nav-bar'); function NavBar( h: CreateElement, props: NavBarProps, slots: NavBarSlots, ctx: RenderContext ) { function LeftPart() { if (slots.left) { return slots.left(); } return [ props.leftArrow && , props.leftText && {props.leftText}, ]; } function RightPart() { if (slots.right) { return slots.right(); } if (props.rightText) { return {props.rightText}; } } return (
{LeftPart()}
{slots.title ? slots.title() : props.title}
{RightPart()}
); } NavBar.props = { title: String, fixed: Boolean, zIndex: [Number, String], leftText: String, rightText: String, leftArrow: Boolean, border: { type: Boolean, default: true, }, }; export default createComponent(NavBar);