diff --git a/src/components/modal.css b/src/components/modal.css index 83a54fd5..fca5a869 100644 --- a/src/components/modal.css +++ b/src/components/modal.css @@ -41,7 +41,6 @@ } } -/* stylelint-disable no-descending-specificity */ .modal { /* Public API (customizable component options) */ --_op-modal-width: calc(141 * var(--op-size-unit)); /* 564px */ @@ -87,63 +86,46 @@ gap: var(--op-space-small); } } -/* stylelint-enable no-descending-specificity */ dialog.modal { - position: fixed; - display: block; padding: 0; border: none; - inset: 0; + overscroll-behavior: contain; + transform: scale(0.7); + transition: + display var(--op-transition-modal-time) allow-discrete, + overlay var(--op-transition-modal-time) allow-discrete, + transform var(--op-transition-modal-time), + opacity var(--op-transition-modal-time); &::backdrop { - /* The Dialog backdrop does not inheret from :root so these need to be duplicated here. */ - --op-color-black: hsl(0deg 0% 0%); - --_op-modal-backdrop-active-opacity: 0.5; - --op-opacity-none: 0; - --op-opacity-full: 1; - - animation: show-backdrop 300ms ease-in; - background: var(--op-color-black); - opacity: var(--_op-modal-backdrop-active-opacity); + overflow: hidden; + background-color: var(--op-color-black); + opacity: var(--op-opacity-none); + overscroll-behavior: contain; + transition: + display var(--op-transition-modal-time) allow-discrete, + overlay var(--op-transition-modal-time) allow-discrete, + transform var(--op-transition-modal-time), + opacity var(--op-transition-modal-time); } &[open] { opacity: var(--op-opacity-full); transform: scale(1); - } - - &.modal--closing { - opacity: var(--op-opacity-none); - transform: scale(0.7); &::backdrop { - animation: hide-backdrop 300ms ease-in; - opacity: var(--op-opacity-none); + opacity: var(--op-opacity-half); } } } -/* Using the Dialog element */ - -/* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog */ - -@keyframes show-backdrop { - from { - opacity: var(--op-opacity-none); - } - - to { - opacity: var(--_op-modal-backdrop-active-opacity); - } -} - -@keyframes hide-backdrop { - from { - opacity: var(--_op-modal-backdrop-active-opacity); - } +@starting-style { + dialog.modal[open] { + transform: scale(0.7); - to { - opacity: var(--op-opacity-none); + &::backdrop { + opacity: var(--op-opacity-none); + } } } diff --git a/src/components/navbar.css b/src/components/navbar.css index db74452e..0f811f06 100644 --- a/src/components/navbar.css +++ b/src/components/navbar.css @@ -16,7 +16,9 @@ align-items: center; padding: var(--op-space-small) var(--_op-navbar-horizontal-spacing); background-color: var(--_op-navbar-background-color); - box-shadow: var(--op-border-bottom) var(--_op-navbar-border-color); + box-shadow: + var(--op-border-top) var(--_op-navbar-border-color), + var(--op-border-bottom) var(--_op-navbar-border-color); color: var(--_op-navbar-text-color); gap: var(--_op-navbar-content-spacing); diff --git a/src/components/sidebar.css b/src/components/sidebar.css index 7ea36eda..dd6f3384 100644 --- a/src/components/sidebar.css +++ b/src/components/sidebar.css @@ -31,7 +31,9 @@ display: flex; flex-direction: column; background-color: var(--_op-sidebar-background-color); - box-shadow: var(--op-border-right) var(--_op-sidebar-border-color); + box-shadow: + var(--op-border-left) var(--_op-sidebar-border-color), + var(--op-border-right) var(--_op-sidebar-border-color); color: var(--_op-sidebar-text-color); inline-size: var(--__op-sidebar-width); min-inline-size: var(--__op-sidebar-width); diff --git a/src/core/tokens/base_tokens.css b/src/core/tokens/base_tokens.css index c8127f8c..e51f8145 100644 --- a/src/core/tokens/base_tokens.css +++ b/src/core/tokens/base_tokens.css @@ -203,7 +203,8 @@ --op-transition-accordion-content: height 300ms ease, content-visibility 300ms ease allow-discrete; --op-transition-input: all 120ms ease-in; --op-transition-sidebar: all 200ms ease-in-out; - --op-transition-modal: all 300ms ease-in; + --op-transition-modal-time: 300ms; + --op-transition-modal: all var(--op-transition-modal-time) ease-in; --op-transition-panel: right 400ms ease-in; --op-transition-tooltip: all 300ms ease-in 300ms; diff --git a/src/stories/Components/Modal/Modal.js b/src/stories/Components/Modal/Modal.js index 925ad39a..2ad765cf 100644 --- a/src/stories/Components/Modal/Modal.js +++ b/src/stories/Components/Modal/Modal.js @@ -1,4 +1,8 @@ -export const createModal = ({ header, body, footer = '', inlineDemo = false }) => { +export const createModal = ({ header, body, footer = '', inlineDemo = false, dialog = false }) => { + if (dialog) { + return createDialogModal({ header, body, footer }) + } + const element = document.createElement('div') element.classList = `modal-wrapper modal-wrapper--active ${inlineDemo ? 'modal-wrapper--demo' : ''}` @@ -31,3 +35,39 @@ export const createModal = ({ header, body, footer = '', inlineDemo = false }) = return element } + +export const createDialogModal = ({ header, body, footer = '' }) => { + const example = document.createElement('div') + + const footerContents = + footer !== '' + ? footer + : ` +
+ + ` + + example.innerHTML = ` + + + ` + + return example +} diff --git a/src/stories/Components/Modal/Modal.mdx b/src/stories/Components/Modal/Modal.mdx index e8e2a0a3..b66b7530 100644 --- a/src/stories/Components/Modal/Modal.mdx +++ b/src/stories/Components/Modal/Modal.mdx @@ -51,85 +51,28 @@ Modal can be used as a standalone component, however, it does have a few depende [\