diff --git a/express/code/libs/color-components/components/color-swatch-rail/index.js b/express/code/libs/color-components/components/color-swatch-rail/index.js
index 50cc0cae2..d80ddafa2 100644
--- a/express/code/libs/color-components/components/color-swatch-rail/index.js
+++ b/express/code/libs/color-components/components/color-swatch-rail/index.js
@@ -1324,7 +1324,7 @@ export class ColorSwatchRail extends LitElement {
const stackedContent = html`
${showEdit ? html` this._onNativePickerChange(index, ev)} @change=${() => this._markNativePickerClosedSoon(50)} @blur=${() => this._markNativePickerClosedSoon(50)} />` : ''}
- ${f.hexCode ? ((showEdit || f.copyFromHex) ? html`` : html`${swatch.hex}`) : ''}
+ ${f.hexCode ? ((showEdit || f.copyFromHex) ? html`` : html`${swatch.hex}`) : ''}
${stackedIcons}
`;
diff --git a/express/code/libs/color-components/components/color-swatch-rail/styles.css.js b/express/code/libs/color-components/components/color-swatch-rail/styles.css.js
index 001f49b27..971108d7c 100644
--- a/express/code/libs/color-components/components/color-swatch-rail/styles.css.js
+++ b/express/code/libs/color-components/components/color-swatch-rail/styles.css.js
@@ -1021,11 +1021,17 @@ export const style = css`
height: 32px;
border-radius: var(--Corner-radius-corner-radius-100);
}
- .swatch-column[data-contrast="dark"] button.hex-code:hover,
+ @media (hover: hover) {
+ .swatch-column[data-contrast="dark"] button.hex-code:hover {
+ background-color: rgba(255, 255, 255, 0.12);
+ }
+ .swatch-column[data-contrast="light"] button.hex-code:hover {
+ background-color: rgba(0, 0, 0, 0.12);
+ }
+ }
.swatch-column[data-contrast="dark"] button.hex-code.hex-code--editor-open {
background-color: rgba(255, 255, 255, 0.12);
}
- .swatch-column[data-contrast="light"] button.hex-code:hover,
.swatch-column[data-contrast="light"] button.hex-code.hex-code--editor-open {
background-color: rgba(0, 0, 0, 0.12);
}
@@ -1063,11 +1069,13 @@ export const style = css`
- .swatch-column[data-contrast="dark"] .icon-button:hover {
- background-color: rgba(255, 255, 255, 0.12);
- }
- .swatch-column[data-contrast="light"] .icon-button:hover {
- background-color: rgba(0, 0, 0, 0.12);
+ @media (hover: hover) {
+ .swatch-column[data-contrast="dark"] .icon-button:hover {
+ background-color: rgba(255, 255, 255, 0.12);
+ }
+ .swatch-column[data-contrast="light"] .icon-button:hover {
+ background-color: rgba(0, 0, 0, 0.12);
+ }
}
diff --git a/express/code/scripts/color-shared/renderers/createStripContainerRenderer.js b/express/code/scripts/color-shared/renderers/createStripContainerRenderer.js
index 30b7d98a9..9e9e6e4b6 100644
--- a/express/code/scripts/color-shared/renderers/createStripContainerRenderer.js
+++ b/express/code/scripts/color-shared/renderers/createStripContainerRenderer.js
@@ -576,15 +576,29 @@ export function createStripContainerRenderer(options) {
return anchorElement.getBoundingClientRect();
}
+ function getStickyHeaderBottom() {
+ const selectors = ['header.global-navigation', '.feds-localnav'];
+ return selectors.reduce((max, sel) => {
+ const el = document.querySelector(sel);
+ if (!el) return max;
+ return Math.max(max, el.getBoundingClientRect().bottom);
+ }, 0);
+ }
+
function positionPopover(popover, anchorRect, container) {
const gap = 4;
const popRect = popover.getBoundingClientRect();
const containerRect = container.getBoundingClientRect();
- let viewportTop = anchorRect.bottom + gap;
- if (viewportTop + popRect.height > window.innerHeight) {
- viewportTop = anchorRect.top - popRect.height - gap;
- }
+ const belowTop = anchorRect.bottom + gap;
+ const aboveTop = anchorRect.top - popRect.height - gap;
+ const headerBottom = getStickyHeaderBottom();
+
+ const fitsBelow = belowTop + popRect.height <= window.innerHeight;
+ const fitsAbove = aboveTop >= headerBottom;
+
+ let viewportTop = belowTop;
+ if (!fitsBelow && fitsAbove) viewportTop = aboveTop;
let viewportLeft = anchorRect.left;
if (viewportLeft + popRect.width > window.innerWidth - gap) {