@brightspace-ui/core 2.151.0 → 2.152.1
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.
- package/components/alert/alert-toast.js +20 -7
- package/components/inputs/input-date-time-range.js +4 -4
- package/components/inputs/input-date-time.js +3 -1
- package/components/list/list-item-drag-handle.js +1 -1
- package/components/list/list-item-drag-image.js +2 -2
- package/mixins/localize/localize-mixin.js +1 -1
- package/package.json +1 -1
@@ -6,6 +6,13 @@ import ResizeObserver from 'resize-observer-polyfill/dist/ResizeObserver.es.js';
|
|
6
6
|
import { styleMap } from 'lit/directives/style-map.js';
|
7
7
|
|
8
8
|
const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
|
9
|
+
let activeReduceMotion = reduceMotion;
|
10
|
+
export function disableReducedMotionForTesting() {
|
11
|
+
activeReduceMotion = false;
|
12
|
+
}
|
13
|
+
export function restoreReducedMotionForTesting() {
|
14
|
+
activeReduceMotion = reduceMotion;
|
15
|
+
}
|
9
16
|
|
10
17
|
const states = {
|
11
18
|
CLOSED: 'closed', // the toast is closed
|
@@ -331,10 +338,10 @@ class AlertToast extends LitElement {
|
|
331
338
|
this._totalSiblingHeightBelow += e.detail.heightDifference;
|
332
339
|
if (e.detail.opening) {
|
333
340
|
this._numAlertsBelow += 1;
|
334
|
-
if (!
|
341
|
+
if (!activeReduceMotion) this._state = states.SLIDING;
|
335
342
|
} else if (e.detail.closing) {
|
336
343
|
this._numAlertsBelow -= 1;
|
337
|
-
if (!
|
344
|
+
if (!activeReduceMotion) this._state = states.SLIDING;
|
338
345
|
}
|
339
346
|
}
|
340
347
|
|
@@ -396,7 +403,7 @@ class AlertToast extends LitElement {
|
|
396
403
|
if (this._state === states.CLOSING) {
|
397
404
|
this._state = states.OPENING;
|
398
405
|
} else if (this._state === states.CLOSED) {
|
399
|
-
if (!
|
406
|
+
if (!activeReduceMotion) {
|
400
407
|
this._state = states.PREOPENING;
|
401
408
|
// pause before running the opening animation because transitions won't run when changing from 'diplay: none' to 'display: block'
|
402
409
|
this._preopenFrame = requestAnimationFrame(() => {
|
@@ -412,7 +419,7 @@ class AlertToast extends LitElement {
|
|
412
419
|
} else {
|
413
420
|
if (!this._innerContainer) return;
|
414
421
|
|
415
|
-
if (
|
422
|
+
if (activeReduceMotion || this._state === states.PREOPENING) {
|
416
423
|
cancelAnimationFrame(this._preopenFrame);
|
417
424
|
this.removeAttribute('role');
|
418
425
|
} else if (this._state === states.OPENING || this._state === states.OPEN || this._state === states.SLIDING) {
|
@@ -425,7 +432,7 @@ class AlertToast extends LitElement {
|
|
425
432
|
requestAnimationFrame(() => {
|
426
433
|
const bottom = this._innerContainer.getBoundingClientRect().bottom;
|
427
434
|
|
428
|
-
if (
|
435
|
+
if (activeReduceMotion || this._state === states.PREOPENING) {
|
429
436
|
this._state = states.CLOSED;
|
430
437
|
this._totalSiblingHeightBelow = 0;
|
431
438
|
this._numAlertsBelow = 0;
|
@@ -444,8 +451,14 @@ class AlertToast extends LitElement {
|
|
444
451
|
}
|
445
452
|
|
446
453
|
_stateChanged(newState, oldState) {
|
447
|
-
|
448
|
-
|
454
|
+
/**
|
455
|
+
* Opening state changes:
|
456
|
+
* - OPENING -> OPEN
|
457
|
+
* - OPENING -> SLIDING (multiple alerts opened rapidly)
|
458
|
+
* - CLOSED -> OPEN (prefers-reduced-motion)
|
459
|
+
*/
|
460
|
+
const newlyOpened = oldState === states.OPENING && (newState === states.OPEN || newState === states.SLIDING);
|
461
|
+
const newlyOpenedReduceMotion = oldState === states.CLOSED && newState === states.OPEN;
|
449
462
|
if (newlyOpened || newlyOpenedReduceMotion) {
|
450
463
|
this._closeTimerStart();
|
451
464
|
} else if (newState !== states.SLIDING && newState !== states.OPEN) {
|
@@ -217,8 +217,8 @@ class InputDateTimeRange extends FocusMixin(SkeletonMixin(FormElementMixin(RtlMi
|
|
217
217
|
const startDateTimeInput = this.shadowRoot && this.shadowRoot.querySelector('.d2l-input-date-time-range-start');
|
218
218
|
const endDateTimeInput = this.shadowRoot && this.shadowRoot.querySelector('.d2l-input-date-time-range-end');
|
219
219
|
|
220
|
-
const tooltipStart = (this.validationError && !this.startOpened && !this.childErrors.has(startDateTimeInput)) ? html`<d2l-tooltip align="start" announced for="${this._startInputId}" position="bottom" state="error">${this.validationError}</d2l-tooltip>` : null;
|
221
|
-
const tooltipEnd = (this.validationError && !this.endOpened && !this.childErrors.has(endDateTimeInput)) ? html`<d2l-tooltip align="start" announced for="${this._endInputId}" position="bottom" state="error">${this.validationError}</d2l-tooltip>` : null;
|
220
|
+
const tooltipStart = (this.validationError && !this.startOpened && !this.childErrors.has(startDateTimeInput)) ? html`<d2l-tooltip align="start" announced for="${this._startInputId}" position="bottom" state="error" class="vdiff-target">${this.validationError}</d2l-tooltip>` : null;
|
221
|
+
const tooltipEnd = (this.validationError && !this.endOpened && !this.childErrors.has(endDateTimeInput)) ? html`<d2l-tooltip align="start" announced for="${this._endInputId}" position="bottom" state="error" class="vdiff-target">${this.validationError}</d2l-tooltip>` : null;
|
222
222
|
return html`
|
223
223
|
${tooltipStart}
|
224
224
|
${tooltipEnd}
|
@@ -236,7 +236,7 @@ class InputDateTimeRange extends FocusMixin(SkeletonMixin(FormElementMixin(RtlMi
|
|
236
236
|
<d2l-input-date-time
|
237
237
|
?novalidate="${this.noValidate}"
|
238
238
|
@change="${this._handleChange}"
|
239
|
-
class="d2l-input-date-time-range-start"
|
239
|
+
class="d2l-input-date-time-range-start vdiff-target"
|
240
240
|
@d2l-input-date-time-dropdown-toggle="${this._handleDropdownToggle}"
|
241
241
|
?disabled="${this.disabled}"
|
242
242
|
.forceInvalid=${this.invalid}
|
@@ -258,7 +258,7 @@ class InputDateTimeRange extends FocusMixin(SkeletonMixin(FormElementMixin(RtlMi
|
|
258
258
|
<d2l-input-date-time
|
259
259
|
?novalidate="${this.noValidate}"
|
260
260
|
@change="${this._handleChange}"
|
261
|
-
class="d2l-input-date-time-range-end"
|
261
|
+
class="d2l-input-date-time-range-end vdiff-target"
|
262
262
|
@d2l-input-date-time-dropdown-toggle="${this._handleDropdownToggle}"
|
263
263
|
?disabled="${this.disabled}"
|
264
264
|
.forceInvalid=${this.invalid}
|
@@ -230,11 +230,12 @@ class InputDateTime extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMi
|
|
230
230
|
|
231
231
|
const dateOpened = this.opened && !this._timeOpened && !this.disabled && !this.skeleton;
|
232
232
|
const parsedValue = this.value ? (this.localized ? this.value : getLocalDateTimeFromUTCDateTime(this.value)) : '';
|
233
|
-
const tooltip = (this.validationError && !this.opened && this.childErrors.size === 0) ? html`<d2l-tooltip align="start" announced for="${this._inputId}" state="error">${this.validationError}</d2l-tooltip>` : null;
|
233
|
+
const tooltip = (this.validationError && !this.opened && this.childErrors.size === 0) ? html`<d2l-tooltip align="start" announced for="${this._inputId}" state="error" class="vdiff-target">${this.validationError}</d2l-tooltip>` : null;
|
234
234
|
const inputTime = !timeHidden ? html`<d2l-input-time
|
235
235
|
?novalidate="${this.noValidate}"
|
236
236
|
@blur="${this._handleInputTimeBlur}"
|
237
237
|
@change="${this._handleTimeChange}"
|
238
|
+
class="vdiff-target"
|
238
239
|
@d2l-input-time-dropdown-toggle="${this._handleDropdownToggle}"
|
239
240
|
default-value="${ifDefined(this.timeDefaultValue)}"
|
240
241
|
?disabled="${this.disabled}"
|
@@ -264,6 +265,7 @@ class InputDateTime extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMi
|
|
264
265
|
novalidateminmax
|
265
266
|
has-now
|
266
267
|
@change="${this._handleDateChange}"
|
268
|
+
class="vdiff-target"
|
267
269
|
@d2l-input-date-dropdown-toggle="${this._handleDropdownToggle}"
|
268
270
|
?disabled="${this.disabled}"
|
269
271
|
.forceInvalid=${this.invalid}
|
@@ -298,7 +298,7 @@ class ListItemDragHandle extends LocalizeCoreElement(FocusMixin(RtlMixin(LitElem
|
|
298
298
|
@keydown="${this._onMoveButtonKeydown}"
|
299
299
|
text="${this._defaultLabel}">
|
300
300
|
</d2l-button-move>
|
301
|
-
${this._displayKeyboardTooltip ? html`<d2l-tooltip align="start" announced for="${this._buttonId}" for-type="descriptor">${this._renderTooltipContent()}</d2l-tooltip>` : ''}
|
301
|
+
${this._displayKeyboardTooltip ? html`<d2l-tooltip class="vdiff-target" align="start" announced for="${this._buttonId}" for-type="descriptor">${this._renderTooltipContent()}</d2l-tooltip>` : ''}
|
302
302
|
`;
|
303
303
|
}
|
304
304
|
|
@@ -115,8 +115,8 @@ class ListItemDragImage extends LocalizeCoreElement(SkeletonMixin(RtlMixin(LitEl
|
|
115
115
|
<div class="line-2 d2l-skeletize"></div>
|
116
116
|
</div>
|
117
117
|
</div>
|
118
|
-
<div class="second"></div>
|
119
|
-
<div class="third"></div>
|
118
|
+
<div class="second vdiff-target"></div>
|
119
|
+
<div class="third vdiff-target"></div>
|
120
120
|
`;
|
121
121
|
}
|
122
122
|
|
@@ -231,7 +231,7 @@ export const LocalizeMixin = superclass => class extends _LocalizeMixinBase(supe
|
|
231
231
|
|
232
232
|
};
|
233
233
|
|
234
|
-
export const allowedTags = Object.freeze(['d2l-link', 'd2l-tooltip-help', 'p', 'br', 'b', 'strong', 'i', 'em']);
|
234
|
+
export const allowedTags = Object.freeze(['d2l-link', 'd2l-tooltip-help', 'p', 'br', 'b', 'strong', 'i', 'em', 'button']);
|
235
235
|
|
236
236
|
const markupError = `localizeHTML() rich-text replacements must use localizeMarkup templates with only the following allowed elements: ${allowedTags}. For more information, see: https://github.com/BrightspaceUI/core/blob/main/mixins/localize/`;
|
237
237
|
const validTerminators = '([>\\s/]|$)';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@brightspace-ui/core",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.152.1",
|
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",
|