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('Global Overlay System|Global Overlay', module) .add('Default', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', contentNode: fixtureSync(html`
`), }); return html` Anchor 1 Anchor 2 ${Array(50).fill( html`Lorem ipsum
`, )} `; }) .add('Option "preventsScroll"', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', preventsScroll: true, contentNode: fixtureSync(html` `), }); return html` ${Array(50).fill( html`Lorem ipsum
`, )} `; }) .add('Option "hasBackdrop"', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', hasBackdrop: true, contentNode: fixtureSync(html` `), }); return html` `; }) .add('Option "trapsKeyboardFocus"', () => { const overlayCtrl = new OverlayController({ placementMode: 'global', trapsKeyboardFocus: true, contentNode: fixtureSync(html` `), }); return html` Anchor 1 Anchor 2 `; }) .add('Option "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('Option "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('Option "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 }, }; } render() { return html`Overlay placement: ${this.placement}
`; } _togglePlacement() { const options = [ 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', 'center', ]; this.placement = options[(options.indexOf(this.placement) + 1) % 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`