diff --git a/blocks/canvas/ew-canvas-header/ew-canvas-header.css b/blocks/canvas/ew-canvas-header/ew-canvas-header.css index fd3e6b5c7..d45f2311f 100644 --- a/blocks/canvas/ew-canvas-header/ew-canvas-header.css +++ b/blocks/canvas/ew-canvas-header/ew-canvas-header.css @@ -4,8 +4,8 @@ font-family: var( --s2-font-family, adobe-clean, - "Source Sans Pro", - "Trebuchet MS", + 'Source Sans Pro', + 'Trebuchet MS', sans-serif ); font-size: var(--s2-body-size-s, 0.875rem); @@ -119,48 +119,3 @@ overflow: hidden; } } - -.bar { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - box-sizing: border-box; - height: var(--ew-canvas-header-height); - padding: 0 12px; - background-color: light-dark(#fff, var(--s2-gray-25)); - border-bottom: 1px solid var(--s2-gray-200); -} - -.group { - display: flex; - align-items: center; - gap: 4px; - flex-shrink: 0; -} - -.group-center { - flex: 1; - justify-content: center; - min-width: 0; -} - -@media (width < 480px) { - .bar { - flex-wrap: wrap; - justify-content: center; - padding-block: 8px; - row-gap: 8px; - } - - .group-center { - order: 0; - flex: 1 1 100%; - justify-content: center; - } - - .group-start, - .group-end { - order: 1; - } -} diff --git a/blocks/canvas/ew-canvas-header/ew-canvas-header.js b/blocks/canvas/ew-canvas-header/ew-canvas-header.js index bc2c4563f..0210d33d4 100644 --- a/blocks/canvas/ew-canvas-header/ew-canvas-header.js +++ b/blocks/canvas/ew-canvas-header/ew-canvas-header.js @@ -2,6 +2,8 @@ import { LitElement, html } from 'da-lit'; import { getNx } from '../../../scripts/utils.js'; +import '../../shared/ew-canvas-header-base/ew-canvas-header-base.js'; + const { loadStyle } = await import(`${getNx()}/utils/utils.js`); const style = await loadStyle(import.meta.url); @@ -9,7 +11,6 @@ const style = await loadStyle(import.meta.url); const ICONS = { undo: '/img/icons/s2-icon-undo-20-n.svg', redo: '/img/icons/s2-icon-redo-20-n.svg', - splitLeft: '/img/icons/s2-icon-splitleft-20-n.svg', splitRight: '/img/icons/s2-icon-splitright-20-n.svg', gridCompare: '/img/icons/s2-icon-gridcompare-20-n.svg', }; @@ -76,58 +77,44 @@ class EWCanvasHeader extends LitElement { render() { return html` -
-
- - + this._openPanel('before')} + > + + + +
-
- -
-
- - - -
+ class="segment ${this.editorView === 'layout' ? 'is-selected' : ''}" + aria-pressed=${this.editorView === 'layout'} + @click=${() => this._setEditorView('layout')} + >Layout + +
-
- -
-
+ + `; } } diff --git a/blocks/shared/ew-canvas-header-base/ew-canvas-header-base.css b/blocks/shared/ew-canvas-header-base/ew-canvas-header-base.css new file mode 100644 index 000000000..b302a68d0 --- /dev/null +++ b/blocks/shared/ew-canvas-header-base/ew-canvas-header-base.css @@ -0,0 +1,92 @@ +:host { + display: block; + box-sizing: border-box; + font-family: var( + --s2-font-family, + adobe-clean, + 'Source Sans Pro', + 'Trebuchet MS', + sans-serif + ); + font-size: var(--s2-body-size-s, 0.875rem); + color: var(--s2-gray-800); +} + +.bar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + box-sizing: border-box; + height: var(--ew-canvas-header-height, 48px); + padding: 0 12px; + background-color: light-dark(#fff, var(--s2-gray-25)); + border-bottom: 1px solid var(--s2-gray-200); +} + +.group { + display: flex; + align-items: center; + gap: 4px; + flex-shrink: 0; +} + +.group-center { + flex: 1; + justify-content: center; + min-width: 0; +} + +.icon-btn { + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + min-width: 24px; + min-height: 24px; + padding: 0 4px; + margin: 0; + border: none; + border-radius: 8px; + font: inherit; + color: var(--s2-gray-800); + background: transparent; + cursor: pointer; +} + +.icon-btn:hover { + background-color: var(--s2-gray-75); +} + +.icon-btn:focus-visible { + outline: 2px solid var(--s2-blue-800); + outline-offset: 2px; +} + +.icon-btn svg.icon { + display: block; + flex-shrink: 0; + width: 16px; + height: 16px; + overflow: hidden; +} + +@media (width < 480px) { + .bar { + flex-wrap: wrap; + justify-content: center; + padding-block: 8px; + row-gap: 8px; + } + + .group-center { + order: 0; + flex: 1 1 100%; + justify-content: center; + } + + .group-start, + .group-end { + order: 1; + } +} diff --git a/blocks/shared/ew-canvas-header-base/ew-canvas-header-base.js b/blocks/shared/ew-canvas-header-base/ew-canvas-header-base.js new file mode 100644 index 000000000..d6b639c0d --- /dev/null +++ b/blocks/shared/ew-canvas-header-base/ew-canvas-header-base.js @@ -0,0 +1,55 @@ +import { LitElement, html } from 'da-lit'; + +import { getNx } from '../../../scripts/utils.js'; + +const { loadStyle } = await import(`${getNx()}/utils/utils.js`); + +const style = await loadStyle(import.meta.url); + +const ICONS = { splitLeft: '/img/icons/s2-icon-splitleft-20-n.svg' }; + +class EwCanvasHeaderBase extends LitElement { + connectedCallback() { + super.connectedCallback(); + this.shadowRoot.adoptedStyleSheets = [style]; + } + + _toggleBefore() { + this.dispatchEvent( + new CustomEvent('header-toggle-before', { bubbles: true, composed: true }), + ); + } + + _renderIcon(name) { + return html``; + } + + render() { + return html` +
+
+ + +
+ +
+ +
+ +
+ +
+
+ `; + } +} + +customElements.define('ew-canvas-header-base', EwCanvasHeaderBase);