/* tslint:disable:no-use-before-declare */
import { IconNames } from '@uifabric/icons';
import { DefaultButton } from 'office-ui-fabric-react/lib-commonjs/Button';
import * as React from 'react';
import { TopNav, TopNavPanels } from '../topNav';
import classNames from './mainNav.classNames';
/* tslint:enable:no-use-before-declare */
export interface Waffle {
href: string;
iconName: IconNames;
}
export interface MainNavProps {
waffles: Waffle[];
//tslint:disable:prefer-method-signature
renderFeedback?: () => JSX.Element;
renderFeedbackFooter?: () => JSX.Element;
renderNotifications?: () => JSX.Element;
renderSettings?: () => JSX.Element;
getPanelCounter?: (panel: TopNavPanels) => number;
}
function renderWaffles(waffles: Waffle[]): JSX.Element {
if (waffles.length === 0) {
return null;
}
const buttonClass = classNames().waffle;
const renderer = (w: Waffle) => (
Panel '{panel}' render not defined
; } function renderNavPanelFooter(props: MainNavProps, panel: TopNavPanels): JSX.Element { switch (panel) { case TopNavPanels.feedback: if (props.renderFeedbackFooter) { return props.renderFeedbackFooter(); } default: } return null; } function getPanelCounter(props: MainNavProps, panel: TopNavPanels): number { if (props.getPanelCounter) { return props.getPanelCounter(panel); } return 0; } export const MainNav = (props: MainNavProps) => { const renderNavPanel = renderNavPanelWithProps.bind(null, props); const renderFooter = renderNavPanelFooter.bind(null, props); const getCount = getPanelCounter.bind(null, props); const panels: TopNavPanels[] = []; if (props.renderFeedback) { panels.push(TopNavPanels.feedback); } if (props.renderNotifications) { panels.push(TopNavPanels.notification); } if (props.waffles.length) { panels.push(TopNavPanels.apps); } if (props.renderSettings) { panels.push(TopNavPanels.settings); } return (