import { storiesOf, html } from '@open-wc/demoing-storybook'; import { css, LitElement } from '@lion/core'; import { fixtureSync } from '@open-wc/testing-helpers'; import { OverlayController } from '../index.js'; const globalOverlayDemoStyle = css` .demo-overlay { background-color: white; width: 200px; border: 1px solid lightgrey; } `; storiesOf('Overlay System | Behavior Features', module) .add('preventsScroll', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', preventsScroll: true, contentNode: fixtureSync(html`
`), }); return html` ${Array(50).fill( html`Lorem ipsum
`, )} `; }) .add('hasBackdrop', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', hasBackdrop: true, contentNode: fixtureSync(html` `), }); return html` `; }) .add('trapsKeyboardFocus', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', trapsKeyboardFocus: true, contentNode: fixtureSync(html` `), }); return html` Anchor 1 Anchor 2 `; }) .add('trapsKeyboardFocus" (multiple)', () => { const overlayCtrl2 = new OverlayController({ placementMode: 'global', trapsKeyboardFocus: true, viewportConfig: { placement: 'left', }, contentNode: fixtureSync(html` `), }); const overlayCtrl1 = new OverlayController({ placementMode: 'global', trapsKeyboardFocus: true, contentNode: fixtureSync(html` `), }); return html` Anchor 1 Anchor 2 `; }) .add('isBlocking', () => { const blockingOverlayCtrl = new OverlayController({ placementMode: 'global', isBlocking: true, viewportConfig: { placement: 'left', }, contentNode: fixtureSync(html` `), }); const normalOverlayCtrl = new OverlayController({ placementMode: 'global', contentNode: fixtureSync(html` `), }); return html` `; }) .add('viewportConfig:placement', () => { const tagName = 'lion-overlay-placement-demo'; if (!customElements.get(tagName)) { customElements.define( tagName, class extends LitElement { static get properties() { return { // controller: { type: Object }, placement: { type: String }, }; } constructor() { super(); this.options = [ 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', 'center', ]; } render() { return html`Overlay placement: ${this.placement}
`; } _togglePlacement() { this.placement = this.options[ (this.options.indexOf(this.placement) + 1) % this.options.length ]; this.dispatchEvent( new CustomEvent('toggle-placement', { detail: this.placement, }), ); } }, ); } const initialPlacement = 'center'; const overlayCtrl = new OverlayController({ placementMode: 'global', viewportConfig: { placement: initialPlacement, }, contentNode: fixtureSync(html`