diff --git a/.storybook/main.js b/.storybook/main.js index 5e1d7b1b92..63ab1ecb38 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -2,6 +2,9 @@ const rollupJson = require('@rollup/plugin-json'); module.exports = { stories: ['../packages/*/stories/*.stories.js'], + nodeResolve: { + exportConditions: ['browser', 'development'], + }, rollupConfig(config) { // add a new plugin to the build diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index 77a7fe3791..e4e6cb0c2b 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -7,7 +7,6 @@ - + diff --git a/package.json b/package.json index 19954056a2..55ecf550c7 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "node-fetch": "^3.1.0", "npm-run-all": "^4.1.5", "patch-package": "^6.4.7", - "playwright": "^1.16.3", + "playwright": "^1.18.1", "postcss": "^8.4.5", "postcss-custom-properties": "^12.1.2", "postcss-focus-visible": "^6.0.3", diff --git a/packages/dialog/src/DialogWrapper.ts b/packages/dialog/src/DialogWrapper.ts index 418c38154e..c3c71a1edc 100644 --- a/packages/dialog/src/DialogWrapper.ts +++ b/packages/dialog/src/DialogWrapper.ts @@ -27,7 +27,8 @@ import '@spectrum-web-components/underlay/sp-underlay.js'; import '@spectrum-web-components/button/sp-button.js'; import '../sp-dialog.js'; -import styles from '@spectrum-web-components/modal/src/modal.css.js'; +import modalWrapperStyles from '@spectrum-web-components/modal/src/modal-wrapper.css.js'; +import modalStyles from '@spectrum-web-components/modal/src/modal.css.js'; import { Dialog } from './Dialog.js'; import { FocusVisiblePolyfillMixin } from '@spectrum-web-components/shared'; import { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focusable-in.js'; @@ -43,7 +44,7 @@ import { firstFocusableIn } from '@spectrum-web-components/shared/src/first-focu */ export class DialogWrapper extends FocusVisiblePolyfillMixin(SpectrumElement) { public static get styles(): CSSResultArray { - return [styles]; + return [modalWrapperStyles, modalStyles]; } @property({ type: Boolean, reflect: true }) @@ -88,6 +89,10 @@ export class DialogWrapper extends FocusVisiblePolyfillMixin(SpectrumElement) { @property({ type: Boolean }) public responsive = false; + private transitionPromise = Promise.resolve(); + + private resolveTransitionPromise!: () => void; + @property({ type: Boolean }) public underlay = false; @@ -156,6 +161,27 @@ export class DialogWrapper extends FocusVisiblePolyfillMixin(SpectrumElement) { ); } + protected handleUnderlayTransitionend(): void { + if (!this.open) { + this.resolveTransitionPromise(); + } + } + + protected handleModalTransitionend(): void { + if (this.open || !this.underlay) { + this.resolveTransitionPromise(); + } + } + + protected update(changes: PropertyValues): void { + if (changes.has('open') && changes.get('open') !== undefined) { + this.transitionPromise = new Promise( + (res) => (this.resolveTransitionPromise = res) + ); + } + super.update(changes); + } + protected render(): TemplateResult { return html` ${this.underlay @@ -163,10 +189,14 @@ export class DialogWrapper extends FocusVisiblePolyfillMixin(SpectrumElement) { ` : html``} -