@brightspace-ui/core 3.73.0 → 3.74.0

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.
@@ -1,6 +1,6 @@
1
1
  # Backdrops
2
2
 
3
- The `d2l-backdrop` element is a web component to display a semi-transparent backdrop behind a specified sibling element. It also hides elements other than the target from assistive technologies by applying `role="presentation"` and `aria-hidden="true"`.
3
+ The `d2l-backdrop` element displays a semi-transparent backdrop behind a specified sibling target element. It also hides elements other than the target from assistive technologies by applying `aria-hidden="true"`.
4
4
 
5
5
  ## Backdrop [d2l-backdrop]
6
6
 
@@ -9,7 +9,6 @@ The `d2l-backdrop` element is a web component to display a semi-transparent back
9
9
  <script type="module">
10
10
  import '@brightspace-ui/core/components/button/button.js';
11
11
  import '@brightspace-ui/core/components/backdrop/backdrop.js';
12
- import '@brightspace-ui/core/components/switch/switch.js';
13
12
 
14
13
  const backdrop = document.querySelector('d2l-backdrop');
15
14
  document.querySelector('#target > d2l-button').addEventListener('click', () => {
@@ -36,3 +35,11 @@ The `d2l-backdrop` element is a web component to display a semi-transparent back
36
35
  | `shown` | Boolean | Used to control whether the backdrop is shown |
37
36
  | `slow-transition` | Boolean | Increases the fade transition time to 1200ms (default is 200ms) |
38
37
  <!-- docs: end hidden content -->
38
+
39
+ ### Focus Management
40
+
41
+ Elements with `aria-hidden` applied (as well as their descendants) are completely hidden from assistive technologies. It's therefore very important that the element with active focus be within the backdrop target.
42
+
43
+ **When showing a backdrop**: first move focus inside the target, then set the `shown` attribute on the backdrop.
44
+
45
+ **When hiding a backdrop**: first remove the `shown` attribute on the backdrop, then if appropriate move focus outside the target.
@@ -1,6 +1,7 @@
1
1
  import '../colors/colors.js';
2
2
  import { css, html, LitElement } from 'lit';
3
- import { cssEscape, getComposedChildren, getComposedParent, isVisible } from '../../helpers/dom.js';
3
+ import { cssEscape, getComposedChildren, getComposedParent, isComposedAncestor, isVisible } from '../../helpers/dom.js';
4
+ import { getComposedActiveElement } from '../../helpers/focus.js';
4
5
 
5
6
  const BACKDROP_HIDDEN = 'data-d2l-backdrop-hidden';
6
7
  const BACKDROP_ARIA_HIDDEN = 'data-d2l-backdrop-aria-hidden';
@@ -12,7 +13,7 @@ const modals = new Set();
12
13
  let scrollOverflow = null;
13
14
 
14
15
  /**
15
- * A component for displaying a semi-transparent backdrop behind a specified sibling element. It also hides elements other than the target from assistive technologies by applying 'role="presentation"' and 'aria-hidden="true"'.
16
+ * A component for displaying a semi-transparent backdrop behind a specified sibling element. It also hides elements other than the target from assistive technologies by applying 'aria-hidden="true"'.
16
17
  */
17
18
  class Backdrop extends LitElement {
18
19
 
@@ -85,10 +86,8 @@ class Backdrop extends LitElement {
85
86
  disconnectedCallback() {
86
87
  // allow body scrolling, show hidden elements, if backdrop is removed from the DOM
87
88
  allowBodyScroll(this);
88
- if (this._hiddenElements) {
89
- showAccessible(this._hiddenElements);
90
- this._hiddenElements = null;
91
- }
89
+ showAccessible(this._hiddenElements);
90
+ this._hiddenElements = null;
92
91
  this._state = null;
93
92
  super.disconnectedCallback();
94
93
  }
@@ -106,7 +105,12 @@ class Backdrop extends LitElement {
106
105
 
107
106
  if (this._state === null) {
108
107
  preventBodyScroll(this);
109
- this._hiddenElements = hideAccessible(this.parentNode.querySelector(`#${cssEscape(this.forTarget)}`));
108
+ const target = this.parentNode.querySelector(`#${cssEscape(this.forTarget)}`);
109
+ // aria-hidden elements cannot have focus, so wait for focus to be within target
110
+ waitForFocusWithinTarget(target, Date.now() + 200).then(() => {
111
+ if (!this.shown || this._state !== 'showing') return;
112
+ this._hiddenElements = hideAccessible(target);
113
+ });
110
114
  }
111
115
  this._state = 'showing';
112
116
 
@@ -188,6 +192,7 @@ function hideAccessible(target) {
188
192
  }
189
193
 
190
194
  function showAccessible(elems) {
195
+ if (!elems) return;
191
196
  for (let i = 0; i < elems.length; i++) {
192
197
  const elem = elems[i];
193
198
  if (elem.hasAttribute(BACKDROP_ARIA_HIDDEN)) {
@@ -200,4 +205,18 @@ function showAccessible(elems) {
200
205
  }
201
206
  }
202
207
 
208
+ async function waitForFocusWithinTarget(target, expireTime) {
209
+
210
+ if (Date.now() > expireTime) return;
211
+
212
+ const activeElem = getComposedActiveElement();
213
+ const targetIsAncestor = isComposedAncestor(target, activeElem);
214
+
215
+ if (targetIsAncestor) return;
216
+
217
+ await new Promise(resolve => requestAnimationFrame(resolve));
218
+ return waitForFocusWithinTarget(target, expireTime);
219
+
220
+ }
221
+
203
222
  customElements.define('d2l-backdrop', Backdrop);
@@ -26,10 +26,10 @@
26
26
  </template>
27
27
  </d2l-demo-snippet>
28
28
 
29
- <h2>Min and Max Value</h2>
29
+ <h2>Min and Max Value, Required</h2>
30
30
  <d2l-demo-snippet>
31
31
  <template>
32
- <d2l-input-date label="Date" max-value="2018-09-30" min-value="2018-08-27" value="2018-09-08"></d2l-input-date>
32
+ <d2l-input-date label="Date" max-value="2018-09-30" min-value="2018-08-27" value="2018-08-27" required></d2l-input-date>
33
33
  </template>
34
34
  </d2l-demo-snippet>
35
35
 
@@ -89,7 +89,9 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
89
89
  _formattedValue: { type: String },
90
90
  _inputTextFocusShowTooltip: { type: Boolean },
91
91
  _showInfoTooltip: { type: Boolean },
92
- _shownValue: { type: String }
92
+ _shownValue: { type: String },
93
+ _showRevertInstructions: { state: true },
94
+ _showRevertTooltip: { state: true }
93
95
  };
94
96
  }
95
97
 
@@ -159,10 +161,11 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
159
161
  this._inputId = getUniqueId();
160
162
  this._inputTextFocusMouseup = false;
161
163
  this._inputTextFocusShowTooltip = true; // true by default so hover triggers tooltip
162
- this._namespace = 'components.input-date';
163
164
  this._openCalendarOnly = false;
164
165
  this._openedOnKeydown = false;
165
166
  this._showInfoTooltip = true;
167
+ this._showRevertInstructions = false;
168
+ this._showRevertTooltip = false;
166
169
  this._shownValue = '';
167
170
 
168
171
  this._dateTimeDescriptor = getDateTimeDescriptor();
@@ -183,11 +186,11 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
183
186
  const minDate = this.minValue ? formatDate(getDateFromISODate(this.minValue), { format: 'medium' }) : null;
184
187
  const maxDate = this.maxValue ? formatDate(getDateFromISODate(this.maxValue), { format: 'medium' }) : null;
185
188
  if (minDate && maxDate) {
186
- return this.localize(`${this._namespace}.errorOutsideRange`, { minDate, maxDate });
189
+ return this.localize('components.input-date.errorOutsideRange', { minDate, maxDate });
187
190
  } else if (maxDate) {
188
- return this.localize(`${this._namespace}.errorMaxDateOnly`, { maxDate });
191
+ return this.localize('components.input-date.errorMaxDateOnly', { maxDate });
189
192
  } else if (this.minValue) {
190
- return this.localize(`${this._namespace}.errorMinDateOnly`, { minDate });
193
+ return this.localize('components.input-date.errorMinDateOnly', { minDate });
191
194
  }
192
195
  }
193
196
  return super.validationMessage;
@@ -237,12 +240,17 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
237
240
  const formattedWideDate = formatISODateInUserCalDescriptor('2323-12-23');
238
241
  const shortDateFormat = (this._dateTimeDescriptor.formats.dateFormats.short).toUpperCase();
239
242
 
240
- const clearButton = !this.required ? html`<d2l-button-subtle text="${this.localize(`${this._namespace}.clear`)}" @click="${this._handleClear}"></d2l-button-subtle>` : null;
241
- const nowButton = this.hasNow ? html`<d2l-button-subtle text="${this.localize(`${this._namespace}.now`)}" @click="${this._handleSetToNow}"></d2l-button-subtle>` : null;
243
+ const clearButton = !this.required ? html`<d2l-button-subtle text="${this.localize('components.input-date.clear')}" @click="${this._handleClear}"></d2l-button-subtle>` : null;
244
+ const nowButton = this.hasNow ? html`<d2l-button-subtle text="${this.localize('components.input-date.now')}" @click="${this._handleSetToNow}"></d2l-button-subtle>` : null;
242
245
  const icon = (this.invalid || this.childErrors.size > 0)
243
246
  ? html`<d2l-icon icon="tier1:alert" slot="left" style="${styleMap({ color: 'var(--d2l-color-cinnabar)' })}"></d2l-icon>`
244
247
  : html`<d2l-icon icon="tier1:calendar" slot="left"></d2l-icon>`;
245
- const errorTooltip = (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;
248
+
249
+ const tooltip = this._getErrorTooltip() || this._getRevertTooltip(shortDateFormat);
250
+
251
+ const inputTextInstructions = (this._showInfoTooltip && !tooltip && !this.invalid && this.childErrors.size === 0 && this._inputTextFocusShowTooltip)
252
+ ? this.localize('components.input-date.openInstructions', { format: shortDateFormat })
253
+ : undefined;
246
254
 
247
255
  const dropdownContent = this._dropdownFirstOpened ? html`
248
256
  <d2l-dropdown-content
@@ -265,7 +273,7 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
265
273
  min-value="${ifDefined(this.minValue)}"
266
274
  selected-value="${ifDefined(this._shownValue)}">
267
275
  <div class="d2l-calendar-slot-buttons">
268
- <d2l-button-subtle text="${this.localize(`${this._namespace}.today`)}" @click="${this._handleSetToToday}"></d2l-button-subtle>
276
+ <d2l-button-subtle text="${this.localize('components.input-date.today')}" @click="${this._handleSetToToday}"></d2l-button-subtle>
269
277
  ${nowButton}
270
278
  ${clearButton}
271
279
  </div>
@@ -276,7 +284,7 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
276
284
  <div>${formattedWideDate}</div>
277
285
  <div>${shortDateFormat}</div>
278
286
  </div>
279
- ${errorTooltip}
287
+ ${tooltip}
280
288
  <d2l-dropdown ?disabled="${this.disabled || this.skeleton}" no-auto-open ?prefer-fixed-positioning="${this.preferFixedPositioning}">
281
289
  <d2l-input-text
282
290
  ?novalidate="${this.noValidate}"
@@ -284,7 +292,7 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
284
292
  @blur="${this._handleInputTextBlur}"
285
293
  @change="${this._handleChange}"
286
294
  class="d2l-dropdown-opener vdiff-target"
287
- instructions="${ifDefined((this._showInfoTooltip && !errorTooltip && !this.invalid && this.childErrors.size === 0 && this._inputTextFocusShowTooltip) ? this.localize(`${this._namespace}.openInstructions`, { format: shortDateFormat }) : undefined)}"
295
+ instructions="${ifDefined(inputTextInstructions)}"
288
296
  ?disabled="${this.disabled}"
289
297
  @focus="${this._handleInputTextFocus}"
290
298
  @keydown="${this._handleKeydown}"
@@ -349,15 +357,62 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
349
357
  this._dropdown.close();
350
358
  }
351
359
 
360
+ _getErrorTooltip() {
361
+ if (!this.validationError || this.opened || this.childErrors.size > 0) return null;
362
+
363
+ const message = (this._showRevertTooltip || this._showRevertInstructions)
364
+ ? html`
365
+ <div>${this.localize('components.input-date.revert', { label: this.label })}</div>
366
+ <br>
367
+ <div>${this.validationError}</div>`
368
+ : this.validationError;
369
+
370
+ return html`
371
+ <d2l-tooltip
372
+ align="start"
373
+ announced
374
+ class="vdiff-target"
375
+ for="${this._inputId}"
376
+ ?force-show="${this._showRevertTooltip}"
377
+ state="error">
378
+ ${message}
379
+ </d2l-tooltip>
380
+ `;
381
+ }
382
+
383
+ _getRevertTooltip(shortDateFormat) {
384
+ if (this.opened || this.invalid || (!this._showRevertInstructions && !this._showRevertTooltip)) return null;
385
+
386
+ const revertMessage = this.localize('components.input-date.revert', { label: this.label });
387
+ const secondaryMessage = this._showRevertInstructions
388
+ ? this.localize('components.input-date.openInstructions', { format: shortDateFormat })
389
+ : this.localize('components.input-date.useDateFormat', { format: shortDateFormat });
390
+
391
+ return html`
392
+ <d2l-tooltip
393
+ align="start"
394
+ announced
395
+ class="vdiff-target"
396
+ for="${this._inputId}"
397
+ ?force-show="${this._showRevertTooltip}">
398
+ <div>${revertMessage}</div>
399
+ <br>
400
+ <div>${secondaryMessage}</div>
401
+ </d2l-tooltip>
402
+ `;
403
+ }
404
+
352
405
  _handleBlur() {
353
406
  this._showInfoTooltip = true;
354
407
  this.requestValidate(true);
355
408
  }
356
409
 
357
410
  async _handleChange() {
411
+ this._showRevertTooltip = false;
358
412
  const value = this._textInput.value;
413
+ const isNewVal = value !== this.value;
359
414
  if (!value && !this.required) {
360
- if (value !== this.value) {
415
+ if (isNewVal) {
361
416
  await this._updateValueDispatchEvent('');
362
417
  if (this._calendar) {
363
418
  await this.updateComplete;
@@ -373,6 +428,7 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
373
428
  await this._updateValueDispatchEvent(formatDateInISO({ year: date.getFullYear(), month: (parseInt(date.getMonth()) + 1), date: date.getDate() }));
374
429
  } catch {
375
430
  // leave value the same when invalid input
431
+ if (isNewVal) this._showRevertTooltip = true;
376
432
  }
377
433
  this._setFormattedValue(); // keep out here in case parseDate is same date, e.g., user adds invalid text to end of parseable date
378
434
  if (this._calendar) {
@@ -390,6 +446,7 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
390
446
  }
391
447
 
392
448
  async _handleDateSelected(e) {
449
+ this._showRevertTooltip = false;
393
450
  const value = e.target.selectedValue;
394
451
  await this._updateValueDispatchEvent(value);
395
452
  if (this._dropdown) {
@@ -448,9 +505,15 @@ class InputDate extends FocusMixin(LabelledMixin(SkeletonMixin(FormElementMixin(
448
505
  _handleInputTextBlur() {
449
506
  this._inputTextFocusMouseup = false;
450
507
  this._inputTextFocusShowTooltip = true;
508
+ this._showRevertInstructions = false;
451
509
  }
452
510
 
453
- _handleInputTextFocus() {
511
+ async _handleInputTextFocus() {
512
+ if (this._showRevertTooltip) {
513
+ this._showRevertTooltip = false;
514
+ await this.updateComplete;
515
+ this._showRevertInstructions = true;
516
+ }
454
517
  this._formattedValue = this._shownValue ? formatISODateInUserCalDescriptor(this._shownValue) : '';
455
518
 
456
519
  // hide tooltip when focus, wait to see if click happened, then show
@@ -189,7 +189,7 @@
189
189
  {
190
190
  "name": "d2l-backdrop",
191
191
  "path": "./components/backdrop/backdrop.js",
192
- "description": "A component for displaying a semi-transparent backdrop behind a specified sibling element. It also hides elements other than the target from assistive technologies by applying 'role=\"presentation\"' and 'aria-hidden=\"true\"'.",
192
+ "description": "A component for displaying a semi-transparent backdrop behind a specified sibling element. It also hides elements other than the target from assistive technologies by applying 'aria-hidden=\"true\"'.",
193
193
  "attributes": [
194
194
  {
195
195
  "name": "for-target",
package/lang/ar.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "يجب أن يكون التاريخ بين {minDate} و{maxDate}",
70
70
  "components.input-date.openInstructions": "استخدم تنسيق التاريخ {format}. انتقل إلى الأسفل أو اضغط على Enter للوصول إلى التقويم المصغّر.",
71
71
  "components.input-date.now": "الآن",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "اليوم",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "يقبل هذا الحقل قيم الأعداد الصحيحة فقط (بدون أعداد عشرية)",
74
76
  "components.input-number.hintDecimalDuplicate": "يوجد عدد عشري في هذا الرقم",
75
77
  "components.input-number.hintDecimalIncorrectComma": "لإضافة عدد عشري، استخدم حرف الفاصلة \",\"",
package/lang/cy.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Rhaid i'r dyddiad fod rhwng {minDate} a {maxDate}",
70
70
  "components.input-date.openInstructions": "Defnyddio fformat dyddiad {format}. Pwyswch saeth i lawr neu Enter i gael mynediad at galendr bach.",
71
71
  "components.input-date.now": "Nawr",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Heddiw",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Mae'r maes hwn yn derbyn gwerthoedd cyfanrif yn unig (dim degolion)",
74
76
  "components.input-number.hintDecimalDuplicate": "Mae degol eisoes yn y nifer hwn",
75
77
  "components.input-number.hintDecimalIncorrectComma": "I ychwanegu degol defnyddiwch y nod coma \",”",
package/lang/da.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Datoen skal være mellem {minDate} og {maxDate}",
70
70
  "components.input-date.openInstructions": "Brug datoformatet {format}. Tryk på Pil ned eller Enter for at få adgang til minikalender.",
71
71
  "components.input-date.now": "Nu",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "I dag",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Dette felt accepterer kun heltalsværdier (ingen decimaler)",
74
76
  "components.input-number.hintDecimalDuplicate": "Der er allerede en decimal i dette tal",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Hvis du vil tilføje en decimal, skal du bruge komma-tegnet \",\"",
package/lang/de.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Datum muss zwischen {minDate} und {maxDate} liegen",
70
70
  "components.input-date.openInstructions": "Das Datumsformat {format} verwenden. Minikalender durch Abwärtspfeil oder durch Drücken der Eingabetaste aufrufen.",
71
71
  "components.input-date.now": "Jetzt",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Heute",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Dieses Feld akzeptiert nur Ganzzahlen (keine Dezimalstellen)",
74
76
  "components.input-number.hintDecimalDuplicate": "Diese Zahl enthält bereits eine Dezimale",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Verwenden Sie zum Hinzufügen einer Dezimalstelle das Komma \",“",
package/lang/en-gb.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Date must be between {minDate} and {maxDate}",
70
70
  "components.input-date.openInstructions": "Use date format {format}. Arrow down or press enter to access mini-calendar.",
71
71
  "components.input-date.now": "Now",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Today",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "This field only accepts integer values (no decimals)",
74
76
  "components.input-number.hintDecimalDuplicate": "There's already a decimal in this number",
75
77
  "components.input-number.hintDecimalIncorrectComma": "To add a decimal use the comma \",\" character",
package/lang/en.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Date must be between {minDate} and {maxDate}",
70
70
  "components.input-date.openInstructions": "Use date format {format}. Arrow down or press enter to access mini-calendar.",
71
71
  "components.input-date.now": "Now",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Today",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "This field only accepts integer values (no decimals)",
74
76
  "components.input-number.hintDecimalDuplicate": "There's already a decimal in this number",
75
77
  "components.input-number.hintDecimalIncorrectComma": "To add a decimal use the comma \",\" character",
package/lang/es-es.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "La fecha debe estar entre el {minDate} y el {maxDate}",
70
70
  "components.input-date.openInstructions": "Usar formato de fecha {format}. Use la fecha hacia abajo o pulse Intro para acceder al minicalendario.",
71
71
  "components.input-date.now": "Ahora",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Hoy",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Este campo sólo acepta valores enteros (sin decimales)",
74
76
  "components.input-number.hintDecimalDuplicate": "Ya hay un decimal en este número",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Para agregar un decimal, utilice la coma \",\"",
package/lang/es.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "La fecha debe estar entre {minDate} y {maxDate}",
70
70
  "components.input-date.openInstructions": "Utilice el formato de fecha {format}. Presione la flecha hacia abajo o Intro para acceder al minicalendario.",
71
71
  "components.input-date.now": "Ahora",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Hoy",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Este campo solo acepta valores enteros (sin decimales)",
74
76
  "components.input-number.hintDecimalDuplicate": "Ya hay un decimal en este número",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Para agregar un decimal, use el carácter coma (“,”)",
package/lang/fr-fr.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "La date doit être comprise entre {minDate} et {maxDate}",
70
70
  "components.input-date.openInstructions": "Utiliser le format de date {format}. Utilisez la flèche vers le bas ou appuyez sur Entrée pour accéder au mini-calendrier.",
71
71
  "components.input-date.now": "Maintenant",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Aujourd’hui",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Ce champ accepte uniquement les valeurs entières (pas de décimales)",
74
76
  "components.input-number.hintDecimalDuplicate": "Il existe déjà une décimale dans ce nombre",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Pour ajouter une décimale, utilisez la virgule « , »",
package/lang/fr.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "La date doit être comprise entre {minDate} et {maxDate}",
70
70
  "components.input-date.openInstructions": "Utiliser le format de date {format}. Utiliser la flèche vers le bas ou la touche d'entrée pour accéder au mini-calendrier.",
71
71
  "components.input-date.now": "Maintenant",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Aujourd'hui",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Ce champ accepte uniquement les valeurs entières (sans décimales)",
74
76
  "components.input-number.hintDecimalDuplicate": "Ce nombre comporte déjà une décimale",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Pour ajouter une décimale, utilisez la virgule « , »",
package/lang/hi.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "तारीख़ {minDate} और {maxDate} के बीच होनी चाहिए",
70
70
  "components.input-date.openInstructions": "तारीख़ फ़ॉर्मेट {format} का उपयोग करें। लघु-कैलेंडर तक पहुँचने के लिए तीर नीचे या एंटर दबाएँ।",
71
71
  "components.input-date.now": "अभी",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "आज",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "यह फ़ील्ड केवल पूर्णांक मानों (कोई दशमलव नहीं) को स्वीकार करती है",
74
76
  "components.input-number.hintDecimalDuplicate": "इस संख्या में पहले से ही कोई दशमलव है",
75
77
  "components.input-number.hintDecimalIncorrectComma": "दशमलव जोड़ने के लिए, अल्पविराम \",\" वर्ण उपयोग करें",
package/lang/ja.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "日付は {minDate} から {maxDate} の間にする必要があります",
70
70
  "components.input-date.openInstructions": "日付形式 {format} を使用します。ミニカレンダーにアクセスするには下矢印を使うか Enter を押します。",
71
71
  "components.input-date.now": "現在",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "今日",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "このフィールドには整数値のみ入力できます(小数不可)。",
74
76
  "components.input-number.hintDecimalDuplicate": "この数値にはすでに小数があります",
75
77
  "components.input-number.hintDecimalIncorrectComma": "小数を追加するには、カンマ「,」文字を使用します",
package/lang/ko.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "날짜는 {minDate}와 {maxDate} 사이여야 합니다.",
70
70
  "components.input-date.openInstructions": "{format} 날짜 형식을 사용하십시오. 미니 달력에 접근하려면 아래쪽 화살표를 누르거나 Enter 키를 누르십시오.",
71
71
  "components.input-date.now": "현재",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "오늘",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "이 필드는 정수 값만 허용합니다(소수점 없음)",
74
76
  "components.input-number.hintDecimalDuplicate": "이 숫자에 이미 소수점이 있습니다",
75
77
  "components.input-number.hintDecimalIncorrectComma": "소수점을 추가하려면 쉼표 \",\" 문자를 사용합니다",
package/lang/nl.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Datum moet tussen {minDate} en {maxDate} liggen",
70
70
  "components.input-date.openInstructions": "Gebruik datumnotatie {format}. Gebruik Pijl omlaag of druk op Enter om de mini-agenda te openen.",
71
71
  "components.input-date.now": "Nu",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Vandaag",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Dit veld accepteert alleen gehele getallen (geen decimalen)",
74
76
  "components.input-number.hintDecimalDuplicate": "Dit getal bevat al een decimaal",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Als u een decimaal wilt toevoegen, gebruikt u het teken ','",
package/lang/pt.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "A data precisa estar entre {minDate} e {maxDate}",
70
70
  "components.input-date.openInstructions": "Adote o formato de data {format}. Use a tecla de seta para baixo ou pressione Enter para acessar o minicalendário.",
71
71
  "components.input-date.now": "Agora",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Hoje",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Este campo aceita apenas valores inteiros (não decimais)",
74
76
  "components.input-number.hintDecimalDuplicate": "Já existe um decimal neste número",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Para adicionar um decimal, use o caractere vírgula “,”",
package/lang/sv.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Datumet ska vara mellan {minDate} och {maxDate}",
70
70
  "components.input-date.openInstructions": "Använd datumformatet {format}. Om du vill visa minikalendern trycker du på nedåtpil eller Enter.",
71
71
  "components.input-date.now": "Nu",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Idag",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "I det här fältet accepteras endast heltalsvärden (inga decimaler)",
74
76
  "components.input-number.hintDecimalDuplicate": "Det finns redan en decimal i det här talet",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Om du vill lägga till en decimal använder du kommatecknet \",\"",
package/lang/tr.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "Tarih, {minDate} ile {maxDate} arasında olmalıdır",
70
70
  "components.input-date.openInstructions": "{format} tarih formatını kullanın. Küçük takvime erişmek için aşağı okunu kullanın veya enter tuşuna basın.",
71
71
  "components.input-date.now": "Şimdi",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "Bugün",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "Bu alanda yalnızca tam sayı değerleri kabul edilir (ondalık sayı kabul edilmez)",
74
76
  "components.input-number.hintDecimalDuplicate": "Bu sayıda zaten bir ondalık var",
75
77
  "components.input-number.hintDecimalIncorrectComma": "Ondalık sayı eklemek için virgül \",\" karakterini kullanın",
package/lang/zh-cn.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "日期必须介于 {minDate} 和 {maxDate} 之间",
70
70
  "components.input-date.openInstructions": "使用日期格式 {format}。利用向下箭头键或按 Enter 键访问迷你日历。",
71
71
  "components.input-date.now": "现在",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "今天",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "此字段只接受整数值(无小数)",
74
76
  "components.input-number.hintDecimalDuplicate": "此数中已有一个小数",
75
77
  "components.input-number.hintDecimalIncorrectComma": "要添加小数,请使用逗号“,”字符",
package/lang/zh-tw.js CHANGED
@@ -69,7 +69,9 @@ export default {
69
69
  "components.input-date.errorOutsideRange": "日期必須介於 {minDate} 與 {maxDate} 之間",
70
70
  "components.input-date.openInstructions": "使用日期格式 {format}。按向下箭頭,或按下「Enter」以存取迷你行事曆。",
71
71
  "components.input-date.now": "立即",
72
+ "components.input-date.revert": "{label} reverted to previous value.",
72
73
  "components.input-date.today": "今天",
74
+ "components.input-date.useDateFormat": "Use date format {format}.",
73
75
  "components.input-number.hintInteger": "此欄位僅接受整數值 (無小數位數)",
74
76
  "components.input-number.hintDecimalDuplicate": "這個數字已經有一個小數位數",
75
77
  "components.input-number.hintDecimalIncorrectComma": "若要新增小數位數,請使用逗號「,」字元",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "3.73.0",
3
+ "version": "3.74.0",
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",