@brightspace-ui/core 2.15.1 → 2.15.4

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
  `;
@@ -106,7 +106,6 @@ class Dialog extends LocalizeCoreElement(AsyncContainerMixin(DialogMixin(LitElem
106
106
  this.describeContent = false;
107
107
  this.width = 600;
108
108
  this._handleResize = this._handleResize.bind(this);
109
- this._handleResize();
110
109
  }
111
110
 
112
111
  get asyncContainerCustom() {
@@ -123,6 +122,11 @@ class Dialog extends LocalizeCoreElement(AsyncContainerMixin(DialogMixin(LitElem
123
122
  super.disconnectedCallback();
124
123
  }
125
124
 
125
+ firstUpdated(changedProperties) {
126
+ super.firstUpdated(changedProperties);
127
+ this._handleResize();
128
+ }
129
+
126
130
  render() {
127
131
 
128
132
  let loading = null;
@@ -56,19 +56,24 @@ export class HtmlBlockMathRenderer {
56
56
 
57
57
  await loadMathJax(mathJaxConfig);
58
58
 
59
+ // MathJax 3 does not support newlines, but it does persist styles, so add custom styles to mimic a linebreak
60
+ // This work-around should be removed when linebreaks are natively supported.
61
+ // MathJax issue: https://github.com/mathjax/MathJax/issues/2312
62
+ // A duplicate that explains our exact issue: https://github.com/mathjax/MathJax/issues/2495
63
+ const lineBreakStyle = 'display: block; height: 0.5rem;';
64
+
59
65
  // If we're opting out of deferred rendering, we need to rely
60
66
  // on the global MathJax install for rendering.
61
67
  if (options.noDeferredRendering) {
68
+ elem.querySelectorAll('mspace[linebreak="newline"]').forEach(elm => {
69
+ elm.setAttribute('style', lineBreakStyle);
70
+ });
62
71
  await window.MathJax.startup.promise;
63
72
  window.MathJax.typeset([elem]);
64
73
  return elem;
65
74
  }
66
75
 
67
- // MathJax 3 does not support newlines, but it does persist styles, so add custom styles to mimic a linebreak
68
- // This work-around should be removed when linebreaks are natively supported.
69
- // MathJax issue: https://github.com/mathjax/MathJax/issues/2312
70
- // A duplicate that explains our exact issue: https://github.com/mathjax/MathJax/issues/2495
71
- const inner = elem.innerHTML.replaceAll('<mspace linebreak="newline">', '<mspace linebreak="newline" style="display: block; height: 0.5rem;">');
76
+ const inner = elem.innerHTML.replaceAll('<mspace linebreak="newline">', `<mspace linebreak="newline" style="${lineBreakStyle}">`);
72
77
 
73
78
  const temp = document.createElement('div');
74
79
  temp.style.display = 'none';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "2.15.1",
3
+ "version": "2.15.4",
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",