import {MDCTabBar} from '@material/tab-bar'; import {h} from 'preact'; import MaterialComponent from '../Base/MaterialComponent'; export interface ITabLabelProps {} export interface ITabLabelState {} export class TabLabel extends MaterialComponent< ITabLabelProps, ITabLabelState > { protected componentName = 'tab__text-label'; protected mdcProps = []; protected materialDom(props) { return {props.children}; } } export interface ITabIconProps {} export interface ITabIconState {} export class TabIcon extends MaterialComponent { protected componentName = 'tab__icon'; protected mdcProps = []; protected materialDom(props) { return ( {props.children} ); } } export interface ITabProps { active?: boolean; } export interface ITabState {} export class Tab extends MaterialComponent { protected componentName = 'tab'; protected mdcProps = ['active']; protected mdcNotifyProps = ['active']; protected materialDom(props) { return ( ); } } export interface ITabsProps { activeTabIndex?: number; // TODO: Fix type in docs } export interface ITabsState {} export class TabBar extends MaterialComponent { public MDComponent?: MDCTabBar; protected componentName = 'tab-bar'; protected mdcProps = []; protected mdcNotifyProps = ['activeTabIndex']; public componentDidMount() { super.componentDidMount(); if (this.control) { this.MDComponent = new MDCTabBar(this.control); } this.afterComponentDidMount(); } public componentWillUnmount() { super.componentWillUnmount(); if (this.MDComponent) { this.MDComponent.destroy(); } } protected materialDom(props) { return (
{props.children}
); } } export default class extends TabBar { public static readonly Tab = Tab; public static readonly TabLabel = TabLabel; public static readonly TabIcon = TabIcon; }