From 56dc07e30dfb899c64fe54cf447c5aee02864cd6 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Wed, 4 Dec 2024 12:39:03 -0500 Subject: [PATCH] backport SL-2189 --- docs/docs/resources/changelog.md | 1 + src/components/carousel/carousel.ts | 6 +++--- src/components/details/details.ts | 8 +++++--- src/components/image-comparer/image-comparer.ts | 9 ++++++--- src/components/menu-item/menu-item.ts | 4 +++- src/components/menu-item/submenu-controller.ts | 4 ++-- src/components/popup/popup.ts | 4 +++- src/components/range/range.ts | 2 +- src/components/rating/rating.ts | 9 ++++++--- src/components/split-panel/split-panel.ts | 4 ++-- src/components/tab-group/tab-group.ts | 7 +++---- src/components/tree-item/tree-item.ts | 2 +- src/components/tree/tree.ts | 4 +++- 13 files changed, 39 insertions(+), 25 deletions(-) diff --git a/docs/docs/resources/changelog.md b/docs/docs/resources/changelog.md index db5eb7cd0..f4662d9d8 100644 --- a/docs/docs/resources/changelog.md +++ b/docs/docs/resources/changelog.md @@ -32,6 +32,7 @@ During the alpha period, things might break! We take breaking changes very serio - Fixed a bug with certain bundlers when using dynamic imports - Improved alignment of the play icon in `` - Improved behavior of link buttons to not set `noreferrer noopener` by default +- Updated all checks for directionality to use `this.localize.dir()` instead of `el.matches(:dir(rtl))` so older browsers don't error out ## 3.0.0-alpha.3 diff --git a/src/components/carousel/carousel.ts b/src/components/carousel/carousel.ts index 18efc9a78..48e363441 100644 --- a/src/components/carousel/carousel.ts +++ b/src/components/carousel/carousel.ts @@ -176,7 +176,7 @@ export default class WaCarousel extends WebAwesomeElement { private handleKeyDown(event: KeyboardEvent) { if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) { const target = event.target as HTMLElement; - const isRtl = this.matches(':dir(rtl)'); + const isRtl = this.localize.dir() === 'rtl'; const isFocusInPagination = target.closest('[part~="pagination-item"]') !== null; const isNext = event.key === 'ArrowDown' || (!isRtl && event.key === 'ArrowRight') || (isRtl && event.key === 'ArrowLeft'); @@ -501,7 +501,7 @@ export default class WaCarousel extends WebAwesomeElement { : clamp(index, 0, slides.length - slidesPerPage); this.activeSlide = newActiveSlide; - const isRtl = this.matches(':dir(rtl)'); + const isRtl = this.localize.dir() === 'rtl'; // Get the index of the next slide. For looping carousel it adds `slidesPerPage` // to normalize the starting index in order to ignore the first nth clones. @@ -552,7 +552,7 @@ export default class WaCarousel extends WebAwesomeElement { } // We can't rely on `this.matches()` on the server. - const isRTL = isServer ? this.dir === 'rtl' : this.matches(':dir(rtl)'); + const isRTL = isServer ? this.dir === 'rtl' : this.localize.dir() === 'rtl'; return html`