import {bind} from 'bind-decorator'; import {h} from 'preact'; import MaterialComponent from '../Base/MaterialComponent'; import Icon from '../Icon'; function notEmptyString(val: string) { return val !== ''; } // TODO: Lacks documentation export interface IGridListTilesProps {} export interface IGridListTilesState {} export class GridListTiles extends MaterialComponent< IGridListTilesProps, IGridListTilesState > { protected componentName = 'grid-list__tiles'; protected mdcProps = []; @bind protected materialDom(props) { return ; } } // TODO: Lacks documentation export interface IGridListTileProps {} export interface IGridListTileState {} export class GridListTile extends MaterialComponent< IGridListTileProps, IGridListTileState > { protected componentName = 'grid-tile'; protected mdcProps = []; @bind protected materialDom(props) { return
  • {props.children}
  • ; } } // TODO: Lacks documentation export interface IGridListPrimaryTileProps {} export interface IGridListPrimaryTileState {} export class GridListPrimaryTile extends MaterialComponent< IGridListPrimaryTileProps, IGridListPrimaryTileState > { protected componentName = 'grid-tile__primary'; protected mdcProps = []; @bind protected materialDom(props) { return
    {props.children}
    ; } } // TODO: Lacks documentation export interface IGridListPrimaryContentTileProps { src: string; } export interface IGridListPrimaryContentTileState {} export class GridListPrimaryContentTile extends MaterialComponent< IGridListPrimaryContentTileProps, IGridListPrimaryContentTileState > { protected componentName = 'grid-tile__primary-content'; protected mdcProps = []; @bind protected materialDom(allprops) { const {src, ...props} = allprops; return ; } } // TODO: Lacks documentation export interface IGridListSecondaryTileProps {} export interface IGridListSecondaryTileState {} export class GridListSecondaryTile extends MaterialComponent< IGridListSecondaryTileProps, IGridListSecondaryTileState > { protected componentName = 'grid-tile__secondary'; protected mdcProps = []; @bind protected materialDom(props) { return {props.children}; } } // TODO: Lacks documentation export interface IGridListTitleTileProps {} export interface IGridListTitleTileState {} export class GridListTitleTile extends MaterialComponent< IGridListTitleTileProps, IGridListTitleTileState > { protected componentName = 'grid-tile__title'; protected mdcProps = []; @bind protected materialDom(props) { return {props.children}; } } // TODO: Lacks documentation export interface IGridListSupportTextTileProps {} export interface IGridListSupportTextTileState {} export class GridListSupportTextTile extends MaterialComponent< IGridListSupportTextTileProps, IGridListSupportTextTileState > { protected componentName = 'grid-tile__support-text'; protected mdcProps = []; @bind protected materialDom(props) { return {props.children}; } } class GridListIconTile extends Icon { protected componentName = 'grid-tile__icon'; } export interface IGridListProps { 'tile-gutter-1'?: boolean; 'header-caption'?: boolean; 'twoline-caption'?: boolean; 'with-icon-align'?: 'start' | 'end'; 'tile-aspect'?: '1x1' | '16x9' | '2x3' | '3x2' | '4x3' | '3x4'; } export interface IGridListState {} export class GridList extends MaterialComponent< IGridListProps, IGridListState > { protected static validationValuesByKey = { 'tile-aspect': ['1x1', '16x9', '2x3', '3x2', '4x3', '3x4'], 'with-icon-align': ['start', 'end'] }; protected componentName = 'grid-list'; protected mdcProps = ['header-caption', 'twoline-caption', 'tile-gutter-1']; protected isValidValue(validationValues, testValue) { return ( validationValues && validationValues.findIndex(val => val === testValue) >= 0 ); } protected mapClassName(propKey, props) { const propValue = props[propKey]; const validationValues = GridList.validationValuesByKey[propKey]; return this.isValidValue(validationValues, propValue) ? `mdc-${this.componentName}--${propKey}-${propValue}` : ''; } protected materialDom(props) { const className = Object.keys(GridList.validationValuesByKey) .map(key => { return this.mapClassName(key, props); }) .filter(notEmptyString) .join(' '); return (
    {props.children}
    ); } } export default class extends GridList { public static readonly Tiles = GridListTiles; public static readonly Tile = GridListTile; public static readonly PrimaryTile = GridListPrimaryTile; public static readonly PrimaryContentTile = GridListPrimaryContentTile; public static readonly SecondaryTile = GridListSecondaryTile; public static readonly TitleTile = GridListTitleTile; public static readonly SupportTextTile = GridListSupportTextTile; public static readonly IconTile = GridListIconTile; }