UNPKG

@material/web

Version:
87 lines 2.85 kB
/** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { __decorate } from "tslib"; import { html, LitElement, nothing } from 'lit'; import { property } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { mixinDelegatesAria } from '../../../internal/aria/delegate.js'; // Separate variable needed for closure. const navigationDrawerModalBaseClass = mixinDelegatesAria(LitElement); /** * b/265346501 - add docs * * @fires navigation-drawer-changed {CustomEvent<{opened: boolean}>} * Dispatched whenever the drawer opens or closes --bubbles --composed */ export class NavigationDrawerModal extends navigationDrawerModalBaseClass { constructor() { super(...arguments); this.opened = false; this.pivot = 'end'; } render() { const ariaExpanded = this.opened ? 'true' : 'false'; const ariaHidden = !this.opened ? 'true' : 'false'; // Needed for closure conformance const { ariaLabel, ariaModal } = this; return html ` <div class="md3-navigation-drawer-modal__scrim ${this.getScrimClasses()}" @click="${this.handleScrimClick}"> </div> <div aria-expanded=${ariaExpanded} aria-hidden=${ariaHidden} aria-label=${ariaLabel || nothing} aria-modal=${ariaModal || nothing} class="md3-navigation-drawer-modal ${this.getRenderClasses()}" @keydown="${this.handleKeyDown}" role="dialog" ><div class="md3-elevation-overlay"></div> <div class="md3-navigation-drawer-modal__slot-content"> <slot></slot> </div> </div> `; } getScrimClasses() { return classMap({ 'md3-navigation-drawer-modal--scrim-visible': this.opened, }); } getRenderClasses() { return classMap({ 'md3-navigation-drawer-modal--opened': this.opened, 'md3-navigation-drawer-modal--pivot-at-start': this.pivot === 'start', }); } updated(changedProperties) { if (changedProperties.has('opened')) { setTimeout(() => { this.dispatchEvent(new CustomEvent('navigation-drawer-changed', { detail: { opened: this.opened }, bubbles: true, composed: true, })); }, 250); } } handleKeyDown(event) { if (event.code === 'Escape') { this.opened = false; } } handleScrimClick() { this.opened = !this.opened; } } __decorate([ property({ type: Boolean }) ], NavigationDrawerModal.prototype, "opened", void 0); __decorate([ property() ], NavigationDrawerModal.prototype, "pivot", void 0); //# sourceMappingURL=navigation-drawer-modal.js.map