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 (
);
}
}
export default class extends TabBar {
public static readonly Tab = Tab;
public static readonly TabLabel = TabLabel;
public static readonly TabIcon = TabIcon;
}