@brightspace-ui/core 3.73.0 → 3.74.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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",