import { storiesOf, html } from '@open-wc/demoing-storybook'; import { css } from '@lion/core'; import { LionLitElement } from '@lion/core/src/LionLitElement.js'; import { overlays, GlobalOverlayController } from '../index.js'; const globalOverlayDemoStyle = css` .demo-overlay { background-color: white; position: absolute; top: 20px; left: 20px; width: 200px; border: 1px solid blue; } .demo-overlay--2 { left: 240px; } .demo-overlay--toast { left: initial; right: 20px; } `; storiesOf('Global Overlay System|Global Overlay', module) .add('Default', () => { const overlayCtrl = overlays.add( new GlobalOverlayController({ contentTemplate: () => html`
`, }), ); return html` Anchor 1 Anchor 2 ${Array(50).fill( html`Lorem ipsum
`, )} `; }) .add('Option "preventsScroll"', () => { const overlayCtrl = overlays.add( new GlobalOverlayController({ preventsScroll: true, contentTemplate: () => html` `, }), ); return html` ${Array(50).fill( html`Lorem ipsum
`, )} `; }) .add('Option "hasBackdrop"', () => { const overlayCtrl = overlays.add( new GlobalOverlayController({ hasBackdrop: true, contentTemplate: () => html` `, }), ); return html` `; }) .add('Option "trapsKeyboardFocus"', () => { const overlayCtrl = overlays.add( new GlobalOverlayController({ trapsKeyboardFocus: true, contentTemplate: () => html` `, }), ); return html` Anchor 1 Anchor 2 `; }) .add('Option "trapsKeyboardFocus" (multiple)', () => { const overlayCtrl2 = overlays.add( new GlobalOverlayController({ trapsKeyboardFocus: true, contentTemplate: () => html` `, }), ); const overlayCtrl1 = overlays.add( new GlobalOverlayController({ trapsKeyboardFocus: true, contentTemplate: () => html` `, }), ); return html` Anchor 1 Anchor 2 `; }) .add('Option "isBlocking"', () => { const blockingOverlayCtrl = overlays.add( new GlobalOverlayController({ isBlocking: true, contentTemplate: () => html` `, }), ); const normalOverlayCtrl = overlays.add( new GlobalOverlayController({ contentTemplate: () => html` `, }), ); return html` `; }) .add('Sync', () => { const overlayCtrl = overlays.add( new GlobalOverlayController({ contentTemplate: ({ title = 'default' } = {}) => html` `, }), ); return html` `; }) .add('In web components', () => { class EditUsernameOverlay extends LionLitElement { static get properties() { return { username: { type: String }, }; } static get styles() { return css` :host { position: fixed; left: 20px; top: 20px; display: block; width: 300px; padding: 24px; background-color: white; border: 1px solid blue; } .close-button { position: absolute; top: 8px; right: 8px; } `; } render() { return html`Your username is: ${this.username}
`; } firstUpdated() { this._editOverlay = overlays.add( new GlobalOverlayController({ focusElementAfterHide: this.shadowRoot.querySelector('button'), contentTemplate: ({ username = 'standard' } = {}) => html`