import {h} from 'preact'; import MaterialComponent from '../Base/MaterialComponent'; import Button from '../Button'; import Icon from '../Icon'; interface ICardActionsProps { 'full-bleed'?: boolean; } interface ICardActionsState {} export class CardActions extends MaterialComponent< ICardActionsProps, ICardActionsState > { protected componentName = 'card__actions'; protected mdcProps = ['full-bleed']; protected materialDom(props) { return
{this.props.children}
; } } export interface ICardMediaProps extends JSX.HTMLAttributes { square?: boolean; sixteenByNine?: boolean; } export interface ICardMediaState {} export class CardMedia extends MaterialComponent< ICardMediaProps, ICardMediaState > { protected componentName = 'card__media'; protected mdcProps = ['square', '16-9']; protected materialDom(props) { if (props.sixteenByNine) { props.className = 'mdc-card__media--16-9'; } return
{this.props.children}
; } } export class CardActionButton extends Button { protected componentName = 'card__action'; protected mdcProps = []; protected materialDom(props) { return ( ); } } export interface ICardActionIconsProps {} export interface ICardActionIconsState {} export class CardActionIcons extends MaterialComponent< ICardActionIconsProps, ICardActionIconsState > { protected componentName = 'card__action-icons'; protected mdcProps = []; protected materialDom(props) { return
{this.props.children}
; } } export class CardActionButtons extends CardActionIcons { protected componentName = 'card__action-buttons'; } export class CardActionIcon extends Icon { protected componentName = 'card__action'; protected mdcProps = []; protected materialDom(props) { if (props.className) { props.className += ' mdc-card__action--icon'; } else { props.className = 'mdc-card__action--icon'; } return super.materialDom(props); } } export interface ICardMediaContentProps {} export interface ICardMediaContentState {} export class CardMediaContent extends MaterialComponent< ICardMediaContentProps, ICardMediaContentState > { protected componentName = 'card__media-content'; protected mdcProps = []; protected materialDom(props) { return
{this.props.children}
; } } export interface ICardProps { outlined?: boolean; } export interface ICardState {} export class Card extends MaterialComponent { protected componentName = 'card'; protected mdcProps = ['outlined']; protected materialDom(props) { return
{this.props.children}
; } } export default class extends Card { public static readonly Actions = CardActions; public static readonly ActionButtons = CardActionButtons; public static readonly ActionButton = CardActionButton; public static readonly ActionIcons = CardActionIcons; public static readonly ActionIcon = CardActionIcon; public static readonly Media = CardMedia; public static readonly CardMediaContent = CardMediaContent; }