import { tag, WeElement, h, extractClass, classNames } from 'omi' import * as css from './index.scss' import { MDCSnackbar } from '@material/snackbar'; //@ts-ignore import '../theme.ts' interface Props { show?: boolean, stacked?: boolean, msg: string, buttonText?: string, leading?: boolean } interface Data { } @tag('m-snackbar') export default class Snackbar extends WeElement{ static css = css static defaultProps = { } static propTypes = { show: Boolean, stacked: Boolean, msg: String, buttonText: String, leading: Boolean } snackbar: MDCSnackbar installed() { const snackbar = new MDCSnackbar(this.shadowRoot.querySelector('.mdc-snackbar')) snackbar.listen('MDCSnackbar:opened', () => { this.fire('opened') }) snackbar.listen('MDCSnackbar:closed', () => { this.fire('closed') //直接改掉下次需要 diff 的 attr, html 模式下初始化没有这个属性?? this['__omiattr_'] && (this['__omiattr_'].show = false) }) this.snackbar = snackbar if (this.props.show) { this.snackbar.open() } else { this.snackbar.close() } } updated() { if (this.props.show) { this.snackbar.open() } else { this.snackbar.close() } } onButtonClick = (evt: Event) => { this.fire('buttonClick') } onIconButtonClick = (evt: Event) => { this.fire('iconButtonClick') } render(props) { return (
{props.msg}
) } }