From 900705ecc9ee6f827b5aecdfb6d2f6f5d39b8202 Mon Sep 17 00:00:00 2001 From: Dave Batiste Date: Fri, 29 Nov 2024 13:31:46 -0500 Subject: [PATCH] Add block-start and block-end positioning to PopoverMixin (#5125) * WIP for popover positioning. * Use # for private members. * Implement block-start and block-end positioning for PopoverMixin. * Check for opener before trying to observe it. * Updating vdiff goldens (#5126) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Implement pointer positioning in PopoverMixin. * Updating vdiff goldens (#5127) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Avoid unnecessary rerender, and remove RtlMixin. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- components/popover/demo/popover.html | 259 +++++++- components/popover/popover-mixin.js | 606 ++++++++++++++++-- .../golden/popover-mixin/chromium/default.png | Bin 68656 -> 78143 bytes components/popover/test/popover.js | 137 +++- 4 files changed, 928 insertions(+), 74 deletions(-) diff --git a/components/popover/demo/popover.html b/components/popover/demo/popover.html index e58c0e12709..c262e23501d 100644 --- a/components/popover/demo/popover.html +++ b/components/popover/demo/popover.html @@ -6,10 +6,20 @@ @@ -20,41 +30,256 @@

Popover

+ + +

Popover (content width less than min-width)

+ + + + +

Popover (content width greater than min-width, less than max-width)

+ + + + +

Popover (content width greater than max-width)

+ + + + +

Popover (no pointer)

+ + + + +

Popover (custom max-width, single-line)

+ + + + +

Popover (custom max-width, multi-line)

+ + + + +

Popover (custom min-width)

+ + + + +

Popover (position location)

+ + + + +

Popover (position span)

+ + + + +

Popover (in a scrollable container)

+ + +

Popover (with DOM mutation)

+ + + + +

Popover (in a dialog)

+ + + + +

Popover (in another popover)

+ + + + +

Popover (trap-focus)

+ - + + + diff --git a/components/popover/popover-mixin.js b/components/popover/popover-mixin.js index 4aa5a42a743..bd23213c491 100644 --- a/components/popover/popover-mixin.js +++ b/components/popover/popover-mixin.js @@ -1,10 +1,19 @@ import '../colors/colors.js'; import '../focus-trap/focus-trap.js'; import { clearDismissible, setDismissible } from '../../helpers/dismissible.js'; -import { css, html } from 'lit'; +import { css, html, nothing } from 'lit'; import { getComposedActiveElement, getFirstFocusableDescendant, getPreviousFocusableAncestor } from '../../helpers/focus.js'; -import { isComposedAncestor } from '../../helpers/dom.js'; - +import { getComposedParent, isComposedAncestor } from '../../helpers/dom.js'; +import { _offscreenStyleDeclarations } from '../offscreen/offscreen.js'; +import { styleMap } from 'lit/directives/style-map.js'; + +const defaultPreferredPosition = { + location: 'block-end', // block-start, block-end + span: 'all', // start, end, all + allowFlip: true +}; +const pointerLength = 16; +const pointerRotatedLength = Math.SQRT2 * parseFloat(pointerLength); const isSupported = ('popover' in HTMLElement.prototype); // eslint-disable-next-line no-console @@ -14,11 +23,27 @@ export const PopoverMixin = superclass => class extends superclass { static get properties() { return { + _contentHeight: { state: true }, + _location: { type: String, reflect: true, attribute: '_location' }, + _margin: { state: true }, + _maxHeight: { state: true }, + _maxWidth: { state: true }, + _minHeight: { state: true }, + _minWidth: { state: true }, _noAutoClose: { state: true }, + _noAutoFit: { state: true }, _noAutoFocus: { state: true }, + _noPointer: { state: true }, + _offscreen: { type: Boolean, reflect: true, attribute: '_offscreen' }, + _offset: { state: true }, _opened: { type: Boolean, reflect: true, attribute: '_opened' }, + _pointerPosition: { state: true }, + _position: { state: true }, + _preferredPosition: { state: true }, + _rtl: { state: true }, _trapFocus: { state: true }, - _useNativePopover: { type: String, reflect: true, attribute: 'popover' } + _useNativePopover: { type: String, reflect: true, attribute: 'popover' }, + _width: { state: true } }; } @@ -31,18 +56,18 @@ export const PopoverMixin = superclass => class extends superclass { --d2l-popover-default-border-radius: 0.3rem; --d2l-popover-default-foreground-color: var(--d2l-color-ferrite); --d2l-popover-default-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.15); - background-color: transparent; - border: none; + background-color: transparent; /* override popover default */ + border: none; /* override popover */ box-sizing: border-box; color: var(--d2l-popover-foreground-color, var(--d2l-popover-default-foreground-color)); display: none; - height: fit-content; - inset: 0; - margin: auto; - overflow: visible; - padding: 0; - position: fixed; - width: fit-content; + height: fit-content; /* normalize popover */ + inset: 0; /* normalize popover */ + margin: 0; /* override popover */ + overflow: visible; /* override popover */ + padding: 0; /* override popover */ + position: fixed; /* normalize popover */ + width: fit-content; /* normalize popover */ } :host([hidden]) { display: none; @@ -53,14 +78,56 @@ export const PopoverMixin = superclass => class extends superclass { :host([_opened]) { display: inline-block; } + :host([_location="block-start"]) { + bottom: 0; + top: auto; + } - .content { + .content-position { + display: inline-block; + position: absolute; + } + .content-width { background-color: var(--d2l-popover-background-color, var(--d2l-popover-default-background-color)); border: 1px solid var(--d2l-popover-border-color, var(--d2l-popover-default-border-color)); border-radius: var(--d2l-popover-border-radius, var(--d2l-popover-default-border-radius)); box-shadow: var(--d2l-popover-shadow, var(--d2l-popover-default-shadow)); box-sizing: border-box; + max-width: 370px; + min-width: 70px; + width: 100vw; + } + .content-container { + box-sizing: border-box; + display: inline-block; + max-width: 100%; outline: none; + overflow-y: auto; + } + + .pointer { + clip: rect(-5px, 21px, 8px, -7px); + display: inline-block; + position: absolute; + z-index: 1; + } + + .pointer > div { + background-color: var(--d2l-popover-background-color, var(--d2l-popover-default-background-color)); + border: 1px solid var(--d2l-popover-border-color, var(--d2l-popover-default-border-color)); + border-radius: 0.1rem; + box-shadow: -4px -4px 12px -5px rgba(32, 33, 34, 0.2); /* ferrite */ + height: ${pointerLength}px; + transform: rotate(45deg); + width: ${pointerLength}px; + } + + :host([_location="block-start"]) .pointer { + clip: rect(9px, 21px, 22px, -3px); + } + + :host([_location="block-start"]) .pointer > div { + box-shadow: 4px 4px 12px -5px rgba(32, 33, 34, 0.2); /* ferrite */ } @keyframes d2l-popover-animation { @@ -72,6 +139,10 @@ export const PopoverMixin = superclass => class extends superclass { animation: var(--d2l-popover-animation-name, var(--d2l-popover-default-animation-name)) 300ms ease; } } + + :host([_offscreen]) { + ${_offscreenStyleDeclarations} + } `; } @@ -79,19 +150,26 @@ export const PopoverMixin = superclass => class extends superclass { super(); this.configure(); this._useNativePopover = isSupported ? 'manual' : undefined; - this._handleAutoCloseClick = this._handleAutoCloseClick.bind(this); - this._handleAutoCloseFocus = this._handleAutoCloseFocus.bind(this); + this.#handleAncestorMutationBound = this.#handleAncestorMutation.bind(this); + this.#handleAutoCloseClickBound = this.#handleAutoCloseClick.bind(this); + this.#handleAutoCloseFocusBound = this.#handleAutoCloseFocus.bind(this); + this.#handleResizeBound = this.#handleResize.bind(this); + this.#repositionBound = this.#reposition.bind(this); } connectedCallback() { super.connectedCallback(); - if (this._opened) this._addAutoCloseHandlers(); + if (this._opened) { + this.#addAutoCloseHandlers(); + this.#addRepositionHandlers(); + } } disconnectedCallback() { super.disconnectedCallback(); - this._removeAutoCloseHandlers(); - this._clearDismissible(); + this.#removeAutoCloseHandlers(); + this.#removeRepositionHandlers(); + this.#clearDismissible(); } async close() { @@ -102,22 +180,44 @@ export const PopoverMixin = superclass => class extends superclass { if (this._useNativePopover) this.hidePopover(); this._previousFocusableAncestor = null; - this._removeAutoCloseHandlers(); - this._clearDismissible(); + this.#removeAutoCloseHandlers(); + this.#removeRepositionHandlers(); + this.#clearDismissible(); await this.updateComplete; // wait before applying focus to opener - this._focusOpener(); + this.#focusOpener(); this.dispatchEvent(new CustomEvent('d2l-popover-close', { bubbles: true, composed: true })); + } configure(properties) { + this._margin = properties?.margin ?? 18; + this._maxHeight = properties?.maxHeight; + this._maxWidth = properties?.maxWidth; + this._minHeight = properties?.minHeight; + this._minWidth = properties?.minWidth; this._noAutoClose = properties?.noAutoClose ?? false; + this._noAutoFit = properties?.noAutoFit ?? false; this._noAutoFocus = properties?.noAutoFocus ?? false; + this._noPointer = properties?.noPointer ?? false; + this._offset = properties?.offset ?? 16; + if (!properties) { + this._preferredPosition = defaultPreferredPosition; + } else if (this._preferredPosition?.location !== properties.position?.location + || this._preferredPosition?.span !== properties.position?.span + || this._preferredPosition?.allowFlip !== properties.position?.allowFlip) { + this._preferredPosition = { + location: properties?.position?.location ?? 'block-end', + span: properties?.position?.span ?? 'all', + allowFlip: properties?.position?.allowFlip ?? true + }; + } this._trapFocus = properties?.trapFocus ?? false; } async open(applyFocus = true) { if (this._opened) return; + this._rtl = document.documentElement.getAttribute('dir') === 'rtl'; this._applyFocus = applyFocus !== undefined ? applyFocus : true; this._opened = true; @@ -127,10 +227,73 @@ export const PopoverMixin = superclass => class extends superclass { this._previousFocusableAncestor = getPreviousFocusableAncestor(this, false, false); this._opener = getComposedActiveElement(); - this._addAutoCloseHandlers(); + this.#addAutoCloseHandlers(); + + await this.#position(); + this._dismissibleId = setDismissible(() => this.close()); - this._focusContent(this); + + this.#focusContent(this); + + this.#addRepositionHandlers(); + this.dispatchEvent(new CustomEvent('d2l-popover-open', { bubbles: true, composed: true })); + + } + + renderPopover(content) { + + const stylesMap = this.#getStyleMaps(); + const widthStyle = stylesMap['width']; + const contentStyle = stylesMap['content']; + + content = html` +
+
${content}
+
+ `; + + if (this._trapFocus) { + content = html` + + ${content} + + `; + } + + const positionStyles = {}; + if (this._position) { + for (const prop in this._position) { + positionStyles[prop] = `${this._position[prop]}px`; + } + } + + content = html` +
+ ${content} +
+ `; + + const pointerPositionStyles = {}; + if (this._pointerPosition) { + for (const prop in this._pointerPosition) { + pointerPositionStyles[prop] = `${this._pointerPosition[prop]}px`; + } + } + + const pointer = !this._noPointer ? html` +
+
+
+ ` : nothing; + + return html`${content}${pointer}`; + + } + + async resize() { + if (!this._opened) return; + await this.#position(); } toggleOpen(applyFocus = true) { @@ -138,49 +301,289 @@ export const PopoverMixin = superclass => class extends superclass { else return this.open(!this._noAutoFocus && applyFocus); } - _addAutoCloseHandlers() { - this.addEventListener('blur', this._handleAutoCloseFocus, { capture: true }); - document.body.addEventListener('focus', this._handleAutoCloseFocus, { capture: true }); - document.addEventListener('click', this._handleAutoCloseClick, { capture: true }); + #handleAncestorMutationBound; + #handleAutoCloseClickBound; + #handleAutoCloseFocusBound; + #handleResizeBound; + #repositionBound; + + #addAutoCloseHandlers() { + this.addEventListener('blur', this.#handleAutoCloseFocusBound, { capture: true }); + document.body.addEventListener('focus', this.#handleAutoCloseFocusBound, { capture: true }); + document.addEventListener('click', this.#handleAutoCloseClickBound, { capture: true }); + } + + #addRepositionHandlers() { + + const isScrollable = (node, prop) => { + const value = window.getComputedStyle(node, null).getPropertyValue(prop); + return (value === 'scroll' || value === 'auto'); + }; + + this.#removeRepositionHandlers(); + + window.addEventListener('resize', this.#handleResizeBound); + + this._ancestorMutationObserver ??= new MutationObserver(this.#handleAncestorMutationBound); + const mutationConfig = { attributes: true, childList: true, subtree: true }; + + let node = this; + this._scrollablesObserved = []; + while (node) { + + // observe scrollables + let observeScrollable = false; + if (node.nodeType === Node.ELEMENT_NODE) { + observeScrollable = isScrollable(node, 'overflow-y') || isScrollable(node, 'overflow-x'); + } else if (node.nodeType === Node.DOCUMENT_NODE) { + observeScrollable = true; + } + if (observeScrollable) { + this._scrollablesObserved.push(node); + node.addEventListener('scroll', this.#repositionBound); + } + + // observe mutations on each DOM scope (excludes sibling scopes... can only do so much) + if (node.nodeType === Node.DOCUMENT_NODE || (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && node.host)) { + this._ancestorMutationObserver.observe(node, mutationConfig); + } + + node = getComposedParent(node); + } + + this._openerIntersectionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => this._offscreen = !entry.isIntersecting); + }, { threshold: 0 }); // 0-1 (0 -> intersection requires any pixel visible, 1 -> intersection requires all pixels visible) + if (this._opener) { + this._openerIntersectionObserver.observe(this._opener); + } + } - _clearDismissible() { + #clearDismissible() { if (!this._dismissibleId) return; clearDismissible(this._dismissibleId); this._dismissibleId = null; } - _focusContent(container) { + #constrainSpaceAround(spaceAround, spaceRequired, openerRect) { + const constrained = { ...spaceAround }; + + if ((this._preferredPosition.span === 'end' && !this._rtl) || (this._preferredPosition.span === 'start' && this._rtl)) { + constrained.left = Math.max(0, spaceRequired.width - (openerRect.width + spaceAround.right)); + } else if ((this._preferredPosition.span === 'end' && this._rtl) || (this._preferredPosition.span === 'start' && !this._rtl)) { + constrained.right = Math.max(0, spaceRequired.width - (openerRect.width + spaceAround.left)); + } + + return constrained; + } + + #focusContent(container) { if (this._noAutoFocus || this._applyFocus === false) return; const focusable = getFirstFocusableDescendant(container); if (focusable) { - // Removing the rAF call can allow infinite focus looping to happen in content using a focus trap + // removing the rAF call can allow infinite focus looping to happen in content using a focus trap requestAnimationFrame(() => focusable.focus()); } else { - const content = this._getContentContainer(); + const content = this.#getContentContainer(); content.setAttribute('tabindex', '-1'); content.focus(); } } - _focusOpener() { + #focusOpener() { if (!document.activeElement) return; if (!isComposedAncestor(this, getComposedActiveElement())) return; this?._opener.focus(); } - _getContentContainer() { - return this.shadowRoot.querySelector('.content'); + #getContentContainer() { + return this.shadowRoot.querySelector('.content-container'); + } + + #getLocation(spaceAround, spaceAroundScroll, spaceRequired) { + + const preferred = this._preferredPosition; + if (!preferred.allowFlip) { + return preferred.location; + } + + if (preferred.location === 'block-end') { + if (spaceAround.below >= spaceRequired.height) return 'block-end'; + if (spaceAround.above >= spaceRequired.height) return 'block-start'; + // if auto-fit is enabled, scroll will be enabled for the inner content so it will always fit in the available space so pick the largest space it can be displayed in + if (!this.noAutoFit) return spaceAround.above > spaceAround.below ? 'block-start' : 'block-end'; + if (spaceAroundScroll.below >= spaceRequired.height) return 'block-end'; + if (spaceAroundScroll.above >= spaceRequired.height) return 'block-start'; + } + + if (preferred.location === 'block-start') { + if (spaceAround.above >= spaceRequired.height) return 'block-start'; + if (spaceAround.below >= spaceRequired.height) return 'block-end'; + // if auto-fit is enabled, scroll will be enabled for the inner content so it will always fit in the available space so pick the largest space it can be displayed in + if (!this.noAutoFit) return spaceAround.above > spaceAround.below ? 'block-start' : 'block-end'; + if (spaceAroundScroll.above >= spaceRequired.height) return 'block-start'; + if (spaceAroundScroll.below >= spaceRequired.height) return 'block-end'; + } + + // todo: add location order for inline-start and inline-end + + // if auto-fit is disabled and it doesn't fit in the scrollable space above or below, always open down because it can add scrollable space + return 'block-end'; + } + + #getPointer() { + return this.shadowRoot.querySelector('.pointer'); + } + + #getPointerPosition(openerRect) { + const position = {}; + const pointer = this.#getPointer(); + if (!pointer) return position; + + const pointerRect = pointer.getBoundingClientRect(); + + if (this._preferredPosition.span !== 'all') { + const xAdjustment = Math.min(20 + ((pointerRotatedLength - pointerLength) / 2), (openerRect.width - pointerLength) / 2); + if (!this._rtl) { + if (this._preferredPosition.span === 'end') { + position.left = openerRect.left + xAdjustment; + } else { + position.right = (openerRect.right * -1) + xAdjustment; + } + } else { + if (this._preferredPosition.span === 'end') { + position.right = window.innerWidth - openerRect.right + xAdjustment; + } else { + position.left = (window.innerWidth - openerRect.left - xAdjustment) * -1; + } + } + } else { + if (!this._rtl) { + position.left = openerRect.left + ((openerRect.width - pointerRect.width) / 2); + } else { + position.right = window.innerWidth - openerRect.left - ((openerRect.width + pointerRect.width) / 2); + } + } + + if (this._location === 'block-start') { + position.bottom = window.innerHeight - openerRect.top + 8; + } else { + position.top = openerRect.top + openerRect.height + this._offset - 7; + } + + return position; + } + + #getPosition(spaceAround, openerRect, contentRect) { + const position = {}; + + if (this._location === 'block-end' || this._location === 'block-start') { + + const xAdjustment = this.#getPositionXAdjustment(spaceAround, openerRect, contentRect); + if (xAdjustment !== null) { + if (!this._rtl) { + position.left = openerRect.left + xAdjustment; + } else { + position.right = window.innerWidth - openerRect.left - openerRect.width + xAdjustment; + } + } + + if (this._location === 'block-start') { + position.bottom = window.innerHeight - openerRect.top + this._offset; + } else { + position.top = openerRect.top + openerRect.height + this._offset; + } + + } + + // todo: add position styles for inline-start and inline-end + + return position; + } + + #getPositionXAdjustment(spaceAround, openerRect, contentRect) { + + if (this._location === 'block-end' || this._location === 'block-start') { + + const centerDelta = contentRect.width - openerRect.width; + const contentXAdjustment = centerDelta / 2; + + if (this._preferredPosition.span === 'all' && centerDelta <= 0) { + // center with target (opener wider than content) + return contentXAdjustment * -1; + } + if (this._preferredPosition.span === 'all' && spaceAround.left > contentXAdjustment && spaceAround.right > contentXAdjustment) { + // center with target (content wider than opener and enough space around) + return contentXAdjustment * -1; + } + + if (!this._rtl) { + if (spaceAround.left < contentXAdjustment) { + // slide content right (not enough space to center) + return spaceAround.left * -1; + } else if (spaceAround.right < contentXAdjustment) { + // slide content left (not enough space to center) + return (centerDelta * -1) + spaceAround.right; + } + } else { + if (spaceAround.left < contentXAdjustment) { + // slide content right (not enough space to center) + return (centerDelta * -1) + spaceAround.left; + } else if (spaceAround.right < contentXAdjustment) { + // slide content left (not enough space to center) + return spaceAround.right * -1; + } + } + + if (this._preferredPosition.span !== 'all') { + // shift it (not enough space to align as requested) + const shift = Math.min((openerRect.width / 2) - (20 + pointerLength / 2), 0); // 20 ~= 1rem + if (this._preferredPosition.span === 'end') { + return shift; + } else { + return openerRect.width - contentRect.width - shift; + } + } + + } + + // todo: add position styles for inline-start and inline-end + + return null; + } + + #getStyleMaps() { + const widthStyle = { + maxWidth: this._maxWidth ? `${this._maxWidth}px` : undefined, + minWidth: this._minWidth ? `${this._minWidth}px` : undefined, + width: this._width ? `${this._width + 3}px` : undefined // add 3 to content to account for possible rounding and also scrollWidth does not include border + }; + + const contentStyle = { + maxHeight: this._contentHeight ? `${this._contentHeight}px` : undefined, + }; + + return { + 'width' : widthStyle, + 'content' : contentStyle + }; } - _handleAutoCloseClick(e) { + #handleAncestorMutation(mutations) { + if (!this._opener) return; + // ignore mutations that are within this popover + const reposition = !!mutations.find(mutation => !isComposedAncestor(this._opener, mutation.target)); + if (reposition) this.#reposition(); + } + #handleAutoCloseClick(e) { if (!this._opened || this._noAutoClose) return; const rootTarget = e.composedPath()[0]; - if (isComposedAncestor(this._getContentContainer(), rootTarget) + if (isComposedAncestor(this.#getContentContainer(), rootTarget) || (this._opener !== document.body && isComposedAncestor(this._opener, rootTarget))) { return; } @@ -188,7 +591,7 @@ export const PopoverMixin = superclass => class extends superclass { this.close(); } - _handleAutoCloseFocus() { + #handleAutoCloseFocus() { // todo: try to use relatedTarget instead - this logic is largely copied as-is from dropdown simply to mitigate risk of this fragile code setTimeout(() => { @@ -212,27 +615,130 @@ export const PopoverMixin = superclass => class extends superclass { } - _handleFocusTrapEnter() { - this._focusContent(this._getContentContainer()); + #handleFocusTrapEnter() { + this.#focusContent(this.#getContentContainer()); /** Dispatched when user focus enters the popover (trap-focus option only) */ this.dispatchEvent(new CustomEvent('d2l-popover-focus-enter', { detail: { applyFocus: this._applyFocus } })); } - _removeAutoCloseHandlers() { - this.removeEventListener('blur', this._handleAutoCloseFocus, { capture: true }); - document.body?.removeEventListener('focus', this._handleAutoCloseFocus, { capture: true }); // DE41322: document.body can be null in some scenarios - document.removeEventListener('click', this._handleAutoCloseClick, { capture: true }); + #handleResize() { + this.resize(); + } + + async #position(contentRect, options) { + if (!this._opener) return; + + options = Object.assign({ updateLocation: true, updateHeight: true }, options); + + const content = this.#getContentContainer(); + + if (!this._noAutoFit && options.updateHeight) { + this._contentHeight = null; + } + + // don't let popover content horizontally overflow viewport + this._width = null; + + await this.updateComplete; + + const adjustPosition = async() => { + + const scrollHeight = document.documentElement.scrollHeight; + const openerRect = this._opener.getBoundingClientRect(); + contentRect = contentRect ?? content.getBoundingClientRect(); + + const height = this._minHeight ?? Math.min(this._maxHeight ?? Number.MAX_VALUE, contentRect.height); + + const spaceRequired = { + height: height + 10, + width: contentRect.width + }; + + // space in viewport + const spaceAround = this.#constrainSpaceAround({ + // allow for opener offset + outer margin + above: openerRect.top - this._offset - this._margin, + // allow for opener offset + outer margin + below: window.innerHeight - openerRect.bottom - this._offset - this._margin, + // allow for outer margin + left: openerRect.left - 20, + // allow for outer margin + right: document.documentElement.clientWidth - openerRect.right - 15 + }, spaceRequired, openerRect); + + // space in document + const spaceAroundScroll = this.#constrainSpaceAround({ + above: openerRect.top + document.documentElement.scrollTop, + below: scrollHeight - openerRect.bottom - document.documentElement.scrollTop + }, spaceRequired, openerRect); + + if (options.updateLocation) { + this._location = this.#getLocation(spaceAround, spaceAroundScroll, spaceRequired); + } + + this._position = this.#getPosition(spaceAround, openerRect, contentRect); + if (!this._noPointer) this._pointerPosition = this.#getPointerPosition(openerRect); + + if (options.updateHeight) { + + // calculate height available to the popover contents for overflow because that is the only area capable of scrolling + const availableHeight = (this._location === 'block-start') ? spaceAround.above : spaceAround.below; + + if (!this._noAutoFit && availableHeight && availableHeight > 0) { + // only apply maximum if it's less than space available and the header/footer alone won't exceed it (content must be visible) + this._contentHeight = this._maxHeight !== null && availableHeight > this._maxHeight + ? this._maxHeight - 2 : availableHeight; + + // ensure the content height has updated when the __toggleScrollStyles event handler runs + await this.updateComplete; + } + + // todo: handle inline-start and inline-end locations + + } + + /** Dispatched when the popover position finishes adjusting */ + this.dispatchEvent(new CustomEvent('d2l-popover-position', { bubbles: true, composed: true })); + + }; + + const scrollWidth = content.scrollWidth; + const availableWidth = window.innerWidth - 40; + + this._width = (availableWidth > scrollWidth ? scrollWidth : availableWidth); + + await this.updateComplete; + + await adjustPosition(); + } - _renderPopover() { - const content = html`
`; + #removeAutoCloseHandlers() { + this.removeEventListener('blur', this.#handleAutoCloseFocusBound, { capture: true }); + document.body?.removeEventListener('focus', this.#handleAutoCloseFocusBound, { capture: true }); // DE41322: document.body can be null in some scenarios + document.removeEventListener('click', this.#handleAutoCloseClickBound, { capture: true }); + } - if (this._trapFocus) return html` - ${content} - `; + #removeRepositionHandlers() { + this._openerIntersectionObserver?.unobserve(this._opener); + this._scrollablesObserved?.forEach(node => { + node.removeEventListener('scroll', this.#repositionBound); + }); + this._scrollablesObserved = null; + this._ancestorMutationObserver?.disconnect(); + window.removeEventListener('resize', this.#handleResizeBound); + } - return content; + #reposition() { + // throttle repositioning (https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event#scroll_event_throttling) + if (!this._repositioning) { + requestAnimationFrame(() => { + this.#position(undefined, { updateLocation: false, updateHeight: false }); + this._repositioning = false; + }); + } + this._repositioning = true; } }; diff --git a/components/popover/test/golden/popover-mixin/chromium/default.png b/components/popover/test/golden/popover-mixin/chromium/default.png index cde4f55677e36ddb8f4cfbb3215fa17161b511ab..27b4d3ff1243cd918c25c6b4668c59bccf33f236 100644 GIT binary patch literal 78143 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

RSDtL88Q`C* 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

Llp_g)*TW| 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 diff --git a/components/popover/test/popover.js b/components/popover/test/popover.js index 0a146e6952a..890851afc9d 100644 --- a/components/popover/test/popover.js +++ b/components/popover/test/popover.js @@ -1,10 +1,32 @@ -import { LitElement } from 'lit'; +import { css, html, LitElement } from 'lit'; +import { classMap } from 'lit/directives/class-map.js'; import { PopoverMixin } from '../popover-mixin.js'; +import { styleMap } from 'lit/directives/style-map.js'; class Popover extends PopoverMixin(LitElement) { static get properties() { return { + /** + * Max-height. Note that the default behaviour is to be as tall as necessary within the viewport, so this property is usually not needed. + * @type {number} + */ + maxHeight: { type: Number, reflect: true, attribute: 'max-height' }, + /** + * Max-width (undefined). Specify a number that would be the px value. + * @type {number} + */ + maxWidth: { type: Number, reflect: true, attribute: 'max-width' }, + /** + * Min-height used when `no-auto-fit` is true. Specify a number that would be the px value. Note that the default behaviour is to be as tall as necessary within the viewport, so this property is usually not needed. + * @type {number} + */ + minHeight: { type: Number, reflect: true, attribute: 'min-height' }, + /** + * Min-width (undefined). Specify a number that would be the px value. + * @type {number} + */ + minWidth: { type: Number, reflect: true, attribute: 'min-width' }, /** * Whether to disable auto-close/light-dismiss * @type {boolean} @@ -15,46 +37,118 @@ class Popover extends PopoverMixin(LitElement) { * @type {boolean} */ noAutoFocus: { type: Boolean, reflect: true, attribute: 'no-auto-focus' }, + /** + * Render without a pointer + * @type {boolean} + */ + noPointer: { type: Boolean, reflect: true, attribute: 'no-pointer' }, /** * Whether the popover is open or not * @type {boolean} */ opened: { type: Boolean, reflect: true }, + /** + * Position the popover before or after the opener. Default is "block-end" (after). + * @type {'block-start'|'block-end'} + */ + positionLocation: { type: String, reflect: true, attribute: 'position-location' }, + /** + * Position the popover to span from the opener edge to this grid line. Default is "all" (centered). + * @type {'start'|'end'|'all'} + */ + positionSpan: { type: String, reflect: true, attribute: 'position-span' }, /** * Whether to render a d2l-focus-trap around the content * @type {boolean} */ - trapFocus: { type: Boolean, reflect: true, attribute: 'trap-focus' } + trapFocus: { type: Boolean, reflect: true, attribute: 'trap-focus' }, + _hasFooter: { state: true }, + _hasHeader: { state: true } }; } static get styles() { - return super.styles; + return [super.styles, css` + .test-content-layout { + align-items: flex-start; + display: flex; + flex-direction: column; + } + .test-content { + box-sizing: border-box; + max-width: 100%; + overflow-y: auto; + padding: 1rem; + } + .test-no-header { + display: none; + } + .test-no-footer { + display: none; + } + `]; } constructor() { super(); this.noAutoClose = false; this.noAutoFocus = false; + this.noPointer = false; this.opened = false; this.trapFocus = false; + + this._hasFooter = false; + this._hasHeader = false; } connectedCallback() { super.connectedCallback(); - this.addEventListener('d2l-popover-open', () => this.opened = true); - this.addEventListener('d2l-popover-close', () => this.opened = false); + this.addEventListener('d2l-popover-open', this.#handlePopoverOpen); + this.addEventListener('d2l-popover-close', this.#handlePopoverClose); } render() { - return this._renderPopover(); + + const headerClasses = { + 'test-header': true, + 'test-no-header': !this._hasHeader + }; + const headerStyle = {}; + + const footerClasses = { + 'test-footer': true, + 'test-no-footer': !this._hasFooter + }; + const footerStyle = {}; + + const content = html` +

+
+ +
+
+ +
+
+ +
+
+ `; + + return this.renderPopover(content); } willUpdate(changedProperties) { - if (changedProperties.has('noAutoClose') || changedProperties.has('noAutoFocus') || changedProperties.has('trapFocus')) { + if (changedProperties.has('maxHeight') || changedProperties.has('maxWidth') || changedProperties.has('minHeight') || changedProperties.has('minWidth') || changedProperties.has('noAutoClose') || changedProperties.has('noAutoFocus') || changedProperties.has('positionLocation') || changedProperties.has('positionSpan') || changedProperties.has('trapFocus')) { super.configure({ + maxHeight: this.maxHeight, + maxWidth: this.maxWidth, + minHeight: this.minHeight, + minWidth: this.minWidth, noAutoClose: this.noAutoClose, noAutoFocus: this.noAutoFocus, + noPointer: this.noPointer, + position: { location: this.positionLocation, span: this.positionSpan }, trapFocus: this.trapFocus }); } @@ -64,5 +158,34 @@ class Popover extends PopoverMixin(LitElement) { } } + #getContentContainer() { + return this.shadowRoot.querySelector('.test-content'); + } + + #handleContentScroll() { + console.log('handle content scroll'); + } + + #handleFooterSlotChange(e) { + this._hasFooter = e.target.assignedNodes().length !== 0; + } + + #handleHeaderSlotChange(e) { + this._hasHeader = e.target.assignedNodes().length !== 0; + } + + #handlePopoverClose() { + this.opened = false; + } + + #handlePopoverOpen() { + this.opened = true; + + const content = this.#getContentContainer(); + if (!this.noAutoFit && content) { + content.scrollTop ??= 0; + } + } + } customElements.define('d2l-test-popover', Popover);