@brightspace-ui/core 2.15.2 → 2.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,8 @@ import { tryGetIfrauBackdropService } from '../../helpers/ifrauBackdropService.j
14
14
  window.D2L = window.D2L || {};
15
15
  window.D2L.DialogMixin = window.D2L.DialogMixin || {};
16
16
 
17
+ // while implemented in Webkit, native <dialog> focus mangement across slotted content is buggy
18
+ // https://bugs.webkit.org/show_bug.cgi?id=233320
17
19
  window.D2L.DialogMixin.hasNative = (window.HTMLDialogElement !== undefined)
18
20
  && (navigator.vendor && navigator.vendor.toLowerCase().indexOf('apple') === -1);
19
21
  if (window.D2L.DialogMixin.preferNative === undefined) {
@@ -182,7 +184,16 @@ export const DialogMixin = superclass => class extends RtlMixin(superclass) {
182
184
  return;
183
185
  }
184
186
  }
185
- this.shadowRoot.querySelector('d2l-focus-trap').focus();
187
+ const focusTrap = this.shadowRoot.querySelector('d2l-focus-trap');
188
+ if (focusTrap) {
189
+ focusTrap.focus();
190
+ return;
191
+ }
192
+ const header = this.shadowRoot.querySelector('.d2l-dialog-header');
193
+ if (header) {
194
+ const firstFocusable = getNextFocusable(header);
195
+ if (firstFocusable) forceFocusVisible(firstFocusable);
196
+ }
186
197
  }
187
198
 
188
199
  _focusInitial() {
@@ -412,12 +423,6 @@ export const DialogMixin = superclass => class extends RtlMixin(superclass) {
412
423
  'd2l-dialog-fullscreen-within': this._fullscreenWithin !== 0
413
424
  };
414
425
 
415
- inner = html`<d2l-focus-trap
416
- @d2l-focus-trap-enter="${this._handleFocusTrapEnter}"
417
- ?trap="${this.opened}">
418
- ${inner}
419
- </d2l-focus-trap>`;
420
-
421
426
  return html`${this._useNative ?
422
427
  html`<dialog
423
428
  aria-describedby="${ifDefined(info.descId)}"
@@ -443,7 +448,9 @@ export const DialogMixin = superclass => class extends RtlMixin(superclass) {
443
448
  id="${this._dialogId}"
444
449
  role="${info.role}"
445
450
  style=${styleMap(styles)}>
446
- ${inner}
451
+ <d2l-focus-trap
452
+ @d2l-focus-trap-enter="${this._handleFocusTrapEnter}"
453
+ ?trap="${this.opened}">${inner}</d2l-focus-trap>
447
454
  </div>
448
455
  <d2l-backdrop for-target="${this._dialogId}" ?shown="${this._state === 'showing'}"></d2l-backdrop>`}
449
456
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "2.15.2",
3
+ "version": "2.15.3",
4
4
  "description": "A collection of accessible, free, open-source web components for building Brightspace applications",
5
5
  "type": "module",
6
6
  "repository": "https://github.com/BrightspaceUI/core.git",