@brightspace-ui/core 3.16.0 → 3.17.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.
@@ -11,9 +11,13 @@
11
11
  import '../../filter/filter-dimension-set-empty-state.js';
12
12
  import '../../filter/filter-dimension-set-value.js';
13
13
  import '../../filter/filter-dimension-set-date-text-value.js';
14
+ import '../../filter/filter-dimension-set-date-time-range-value.js';
14
15
  import './filter-search-demo.js';
15
16
  import './filter-load-more-demo.js';
16
17
  </script>
18
+ <script>
19
+ window.D2L = { LP: { Web: { UI: { Flags: { Flag: () => true } } } } };
20
+ </script>
17
21
  <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1.0">
18
22
  <meta charset="UTF-8">
19
23
  </head>
@@ -162,11 +166,12 @@
162
166
  <template>
163
167
  <d2l-filter id="filter-single">
164
168
  <d2l-filter-dimension-set key="dates" text="Dates">
165
- <d2l-filter-dimension-set-value key="lastweek" text="Last Week"></d2l-filter-dimension-set-value>
166
- <d2l-filter-dimension-set-date-text-value key="lastHour" range="lastHour" selected></d2l-filter-dimension-set-date-text-value>
169
+ <d2l-filter-dimension-set-value key="lastweek" text="Last 7 days"></d2l-filter-dimension-set-value>
170
+ <d2l-filter-dimension-set-date-text-value key="lastHour" range="lastHour" ></d2l-filter-dimension-set-date-text-value>
167
171
  <d2l-filter-dimension-set-date-text-value key="48hours" range="48hours" disabled></d2l-filter-dimension-set-date-text-value>
168
- <d2l-filter-dimension-set-date-text-value key="14days" range="14days"></d2l-filter-dimension-set-date-text-value>
172
+ <d2l-filter-dimension-set-date-text-value key="today" range="today"></d2l-filter-dimension-set-date-text-value>
169
173
  <d2l-filter-dimension-set-date-text-value key="6months" range="6months"></d2l-filter-dimension-set-date-text-value>
174
+ <d2l-filter-dimension-set-date-time-range-value key="custom" ></d2l-filter-dimension-set-date-time-range-value>
170
175
  </d2l-filter-dimension-set>
171
176
  </d2l-filter>
172
177
  </template>
@@ -0,0 +1,134 @@
1
+ import '../inputs/input-date-time-range.js';
2
+ import { html, LitElement } from 'lit';
3
+ import { ifDefined } from 'lit/directives/if-defined.js';
4
+ import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
5
+
6
+ /**
7
+ * A component to represent a possible custom date range or date-time range value that can be selected for a dimension set (the main filter dimension type).
8
+ * The start-value and end-value will be included in the d2l-filter-change event and formatted as an ISO string in UTC time.
9
+ * This component does not render anything, but instead gathers data needed for the d2l-filter.
10
+ */
11
+ class FilterDimensionSetDateTimeRangeValue extends LocalizeCoreElement(LitElement) {
12
+
13
+ static get properties() {
14
+ return {
15
+ /**
16
+ * Whether this value in the filter is disabled or not
17
+ * @type {boolean}
18
+ */
19
+ disabled: { type: Boolean, reflect: true },
20
+ /**
21
+ * @ignore
22
+ */
23
+ endValue: { type: String, attribute: 'end-value' },
24
+ /**
25
+ * REQUIRED: Unique key to represent this value in the dimension
26
+ * @type {string}
27
+ */
28
+ key: { type: String },
29
+ /**
30
+ * Whether this value in the filter is selected or not
31
+ * @type {boolean}
32
+ */
33
+ selected: { type: Boolean, reflect: true },
34
+ /**
35
+ * @ignore
36
+ */
37
+ startValue: { type: String, attribute: 'start-value' },
38
+ /**
39
+ * Defaults to "Custom Date Range" (localized). Can be overridden if desired.
40
+ * @type {string}
41
+ */
42
+ text: { type: String, reflect: true }
43
+ };
44
+ }
45
+
46
+ constructor() {
47
+ super();
48
+ this.disabled = false;
49
+ this.selected = false;
50
+ this._dispatchFilterChangeEvent = false;
51
+ this._enforceSingleSelection = true;
52
+ this._filterSetValue = true;
53
+ this._minWidth = 375;
54
+ this._noSearchSupport = true;
55
+
56
+ this._handleDateChange = this._handleDateChange.bind(this);
57
+ }
58
+
59
+ firstUpdated(changedProperties) {
60
+ super.firstUpdated(changedProperties);
61
+
62
+ this.text = this.text || this.localize('components.filter-dimension-set-date-time-range-value.text');
63
+ }
64
+
65
+ updated(changedProperties) {
66
+ super.updated(changedProperties);
67
+
68
+ const changes = new Map();
69
+ let shouldDispatchChangeEvent = false;
70
+ changedProperties.forEach((oldValue, prop) => {
71
+ if (oldValue === undefined && (prop === 'selected' || prop === 'disabled')) return;
72
+ if (this._dispatchFilterChangeEvent && (prop === 'startValue' || prop === 'endValue')) shouldDispatchChangeEvent = true;
73
+
74
+ if (prop === 'disabled' || prop === 'selected' || prop === 'startValue' || prop === 'endValue' || prop === 'text') {
75
+ changes.set(prop, this[prop]);
76
+ }
77
+ });
78
+ if (changes.size > 0) {
79
+ /** @ignore */
80
+ this.dispatchEvent(new CustomEvent('d2l-filter-dimension-set-value-data-change', {
81
+ detail: { valueKey: this.key, changes: changes, dispatchChangeEvent: shouldDispatchChangeEvent },
82
+ bubbles: true,
83
+ composed: false
84
+ }));
85
+ this._dispatchFilterChangeEvent = false;
86
+ }
87
+ }
88
+
89
+ getValueDetails() {
90
+ return {
91
+ disabled: this.disabled,
92
+ key: this.key,
93
+ selected: this.selected,
94
+ text: this.text,
95
+ additionalContent: this._getAdditionalContent.bind(this),
96
+ getAdditionalEventDetails: this._getAdditionalEventDetails.bind(this),
97
+ clearProperties: this._clearProperties.bind(this)
98
+ };
99
+ }
100
+
101
+ _clearProperties() {
102
+ this.startValue = undefined;
103
+ this.endValue = undefined;
104
+ }
105
+
106
+ _getAdditionalContent() {
107
+ return html`
108
+ <d2l-input-date-time-range
109
+ @change="${this._handleDateChange}"
110
+ child-labels-hidden
111
+ data-dimensionvaluekey="${this.key}"
112
+ end-value="${ifDefined(this.endValue)}"
113
+ label="Custom Range"
114
+ label-hidden
115
+ prefer-fixed-positioning
116
+ start-value="${ifDefined(this.startValue)}"
117
+ ></d2l-input-date-time-range>
118
+ `;
119
+ }
120
+
121
+ _getAdditionalEventDetails(selected) {
122
+ if (!selected) return {};
123
+ return { startValue: this.startValue, endValue: this.endValue };
124
+ }
125
+
126
+ async _handleDateChange(e) {
127
+ this.startValue = e.target.startValue;
128
+ this.endValue = e.target.endValue;
129
+
130
+ this._dispatchFilterChangeEvent = true;
131
+ }
132
+ }
133
+
134
+ customElements.define('d2l-filter-dimension-set-date-time-range-value', FilterDimensionSetDateTimeRangeValue);
@@ -36,6 +36,10 @@ class FilterDimensionSet extends LitElement {
36
36
  * @type {boolean}
37
37
  */
38
38
  loading: { type: Boolean },
39
+ /**
40
+ * @ignore
41
+ */
42
+ minWidth: { type: Number },
39
43
  /**
40
44
  * Whether to hide the search input, perform a simple text search, or fire an event on search
41
45
  * @type {'none'|'automatic'|'manual'}
@@ -138,14 +142,17 @@ class FilterDimensionSet extends LitElement {
138
142
  const valueNodes = this._getSlottedNodes();
139
143
  let noSearchSupport = false;
140
144
  let enforceSingleSelection = false;
145
+ let minWidth = undefined;
141
146
  const values = valueNodes.map(value => {
142
147
  if (value._noSearchSupport) noSearchSupport = true;
143
148
  if (value._enforceSingleSelection) enforceSingleSelection = true;
149
+ if (value._minWidth) minWidth = value._minWidth;
144
150
 
145
151
  return value.getValueDetails();
146
152
  });
147
153
  if (noSearchSupport) this.searchType = 'none';
148
154
  if (enforceSingleSelection) this.selectionSingle = true;
155
+ if (minWidth) this.minWidth = minWidth;
149
156
  return values;
150
157
  }
151
158
 
@@ -182,7 +189,7 @@ class FilterDimensionSet extends LitElement {
182
189
 
183
190
  _handleDimensionSetValueDataChange(e) {
184
191
  e.stopPropagation();
185
- this._dispatchDataChangeEvent({ dimensionKey: this.key, valueKey: e.detail.valueKey, changes: e.detail.changes });
192
+ this._dispatchDataChangeEvent({ dimensionKey: this.key, valueKey: e.detail.valueKey, changes: e.detail.changes, dispatchChangeEvent: e.detail.dispatchChangeEvent });
186
193
  }
187
194
 
188
195
  _handleSearchEmptyStateSlotChange(e) {
@@ -34,6 +34,7 @@ import { SubscriberRegistryController } from '../../controllers/subscriber/subsc
34
34
 
35
35
  const ARROWLEFT_KEY_CODE = 37;
36
36
  const ESCAPE_KEY_CODE = 27;
37
+ const FILTER_CONTENT_CLASS = 'd2l-filter-dropdown-content';
37
38
  const SET_DIMENSION_ID_PREFIX = 'list-';
38
39
 
39
40
  /**
@@ -67,6 +68,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
67
68
  text: { type: String },
68
69
  _activeDimensionKey: { type: String, attribute: false },
69
70
  _dimensions: { type: Array, attribute: false },
71
+ _minWidth: { type: Number, attribute: false },
70
72
  _totalAppliedCount: { type: Number, attribute: false }
71
73
  };
72
74
  }
@@ -144,8 +146,8 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
144
146
  flex-shrink: 0;
145
147
  }
146
148
  d2l-expand-collapse-content[expanded] {
149
+ margin-inline-start: -2rem;
147
150
  padding-block: 0.5rem;
148
- padding-inline: 0.2rem;
149
151
  }
150
152
 
151
153
  .d2l-filter-dimension-set-value-text {
@@ -206,6 +208,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
206
208
  this.opened = false;
207
209
  this._changeEventsToDispatch = new Map();
208
210
  this._dimensions = [];
211
+ this._minWidth = 285;
209
212
  this._openedDimensions = [];
210
213
  this._totalAppliedCount = 0;
211
214
 
@@ -244,27 +247,29 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
244
247
 
245
248
  const dropdownContent = singleDimension ? html`
246
249
  <d2l-dropdown-content
247
- class="vdiff-target"
248
- min-width="285"
250
+ class="vdiff-target ${FILTER_CONTENT_CLASS}"
251
+ min-width="${this._minWidth}"
249
252
  max-width="420"
250
253
  mobile-tray="right"
251
254
  mobile-breakpoint="768"
252
255
  no-padding-header
253
256
  no-padding
254
257
  ?opened="${this.opened}"
258
+ prefer-fixed-positioning
255
259
  ?trap-focus="${!this._isDimensionEmpty(this._dimensions[0])}">
256
260
  ${header}
257
261
  ${dimensions}
258
262
  </d2l-dropdown-content>`
259
263
  : html`
260
264
  <d2l-dropdown-menu
261
- class="vdiff-target"
262
- min-width="285"
265
+ class="vdiff-target ${FILTER_CONTENT_CLASS}"
266
+ min-width="${this._minWidth}"
263
267
  max-width="420"
264
268
  mobile-tray="right"
265
269
  mobile-breakpoint="768"
266
270
  no-padding-header
267
271
  ?opened="${this.opened}"
272
+ prefer-fixed-positioning
268
273
  trap-focus>
269
274
  ${header}
270
275
  <d2l-menu label="${this.localize('components.filter.filters')}">
@@ -289,7 +294,8 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
289
294
  @d2l-dropdown-open="${this._handleDropdownOpen}"
290
295
  @d2l-dropdown-position="${this._stopPropagation}"
291
296
  class="vdiff-target"
292
- ?disabled="${this.disabled}">
297
+ ?disabled="${this.disabled}"
298
+ prefer-fixed-positioning>
293
299
  <d2l-button-subtle
294
300
  class="d2l-dropdown-opener"
295
301
  description="${description}"
@@ -496,6 +502,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
496
502
  `;
497
503
  }
498
504
 
505
+ if (dimension.minWidth) this._minWidth = dimension.minWidth;
499
506
  if (this._isDimensionEmpty(dimension)) {
500
507
  const emptyState = dimension.setEmptyState
501
508
  ? this._createEmptyState(dimension.setEmptyState, dimension.key)
@@ -633,6 +640,12 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
633
640
  this._activeFiltersSubscribers.updateSubscribers();
634
641
  }
635
642
 
643
+ _dispatchChangeEventValueDataChange(dimension, value, valueKey) {
644
+ const details = { valueKey: valueKey, selected: value.selected };
645
+ if (value.getAdditionalEventDetails) Object.assign(details, value.getAdditionalEventDetails(value.selected));
646
+ this._dispatchChangeEvent(dimension, details);
647
+ }
648
+
636
649
  _dispatchDimensionFirstOpenEvent(dimension) {
637
650
  if (!this._openedDimensions.includes(dimension.key)) {
638
651
  this.dispatchEvent(new CustomEvent('d2l-filter-dimension-first-open', { bubbles: true, composed: false, detail: { key: dimension.key } }));
@@ -746,6 +759,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
746
759
  if (shouldResizeDropdown) {
747
760
  this._requestDropdownResize();
748
761
  }
762
+ if (e.detail.dispatchChangeEvent) this._dispatchChangeEventValueDataChange(dimension, value, e.detail.valueKey);
749
763
  }
750
764
 
751
765
  _handleDimensionHide() {
@@ -798,12 +812,16 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
798
812
  }
799
813
 
800
814
  _handleDropdownClose(e) {
815
+ if (!e.target.classList?.contains(FILTER_CONTENT_CLASS)) return;
816
+
801
817
  this.opened = false;
802
818
  this._activeDimensionKey = null;
803
819
  this._stopPropagation(e);
804
820
  }
805
821
 
806
822
  _handleDropdownOpen(e) {
823
+ if (!e.target.classList?.contains(FILTER_CONTENT_CLASS)) return;
824
+
807
825
  this.opened = true;
808
826
  if (this._dimensions.length === 1) {
809
827
  const dimension = this._dimensions[0];
@@ -846,6 +864,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
846
864
  info.headerText = dimension.headerText;
847
865
  info.introductoryText = dimension.introductoryText;
848
866
  info.hasMore = dimension.hasMore;
867
+ info.minWidth = dimension.minWidth;
849
868
  info.searchType = dimension.searchType;
850
869
  info.searchValue = '';
851
870
  info.selectedFirst = dimension.selectedFirst;
@@ -907,6 +926,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
907
926
  value.selected = false;
908
927
  this._setDimensionChangeEvent(dimension, { valueKey: value.key, selected: false }, true);
909
928
  }
929
+ if (value.clearProperties) value.clearProperties();
910
930
  });
911
931
  break;
912
932
  }
@@ -2,6 +2,7 @@ import '../colors/colors.js';
2
2
  import '../scroll-wrapper/scroll-wrapper.js';
3
3
  import { css, html, LitElement, nothing } from 'lit';
4
4
  import { cssSizes } from '../inputs/input-checkbox.js';
5
+ import { getComposedParent } from '../../helpers/dom.js';
5
6
  import { PageableMixin } from '../paging/pageable-mixin.js';
6
7
  import ResizeObserver from 'resize-observer-polyfill/dist/ResizeObserver.es.js';
7
8
  import { RtlMixin } from '../../mixins/rtl/rtl-mixin.js';
@@ -252,6 +253,10 @@ export const tableStyles = css`
252
253
  d2l-table-wrapper[sticky-headers][sticky-headers-scroll-wrapper] .d2l-table > tbody {
253
254
  display: block;
254
255
  }
256
+
257
+ [data-popover-count] {
258
+ z-index: 6 !important; /* if opened above, we want to stack on top of sticky table-controls */
259
+ }
255
260
  `;
256
261
 
257
262
  /**
@@ -370,9 +375,19 @@ export class TableWrapper extends RtlMixin(PageableMixin(SelectionMixin(LitEleme
370
375
  this._tableScrollers = {};
371
376
  }
372
377
 
378
+ connectedCallback() {
379
+ super.connectedCallback();
380
+
381
+ this.addEventListener('d2l-dropdown-open', this._handlePopoverOpen);
382
+ this.addEventListener('d2l-dropdown-close', this._handlePopoverClose);
383
+ }
384
+
373
385
  disconnectedCallback() {
374
386
  super.disconnectedCallback();
375
387
 
388
+ this.removeEventListener('d2l-dropdown-open', this._handlePopoverOpen);
389
+ this.removeEventListener('d2l-dropdown-close', this._handlePopoverClose);
390
+
376
391
  this._controlsMutationObserver?.disconnect();
377
392
  this._controlsScrolledMutationObserver?.disconnect();
378
393
  this._tableMutationObserver?.disconnect();
@@ -499,6 +514,14 @@ export class TableWrapper extends RtlMixin(PageableMixin(SelectionMixin(LitEleme
499
514
  this._handleControlsChange();
500
515
  }
501
516
 
517
+ _handlePopoverClose(e) {
518
+ this._updateStickyAncestor(e.target, false);
519
+ }
520
+
521
+ _handlePopoverOpen(e) {
522
+ this._updateStickyAncestor(e.target, true);
523
+ }
524
+
502
525
  _handleSlotChange(e) {
503
526
  this._table = e.target.assignedNodes({ flatten: true }).find(
504
527
  node => (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'TABLE' && node.classList.contains('d2l-table'))
@@ -589,6 +612,30 @@ export class TableWrapper extends RtlMixin(PageableMixin(SelectionMixin(LitEleme
589
612
  }
590
613
  }
591
614
 
615
+ _updateStickyAncestor(node, popoverOpened) {
616
+ if (!this.stickyHeaders) return;
617
+
618
+ node = getComposedParent(node);
619
+ while (node) {
620
+ if (node === this) break;
621
+ if (node.nodeType === Node.ELEMENT_NODE) {
622
+ const style = window.getComputedStyle(node, null);
623
+ if (style.getPropertyValue('position') === 'sticky') {
624
+
625
+ let popoverCount = Number.parseInt(node.getAttribute('data-popover-count'));
626
+ if (Number.isNaN(popoverCount)) popoverCount = 0;
627
+ popoverOpened ? popoverCount++ : popoverCount--;
628
+
629
+ if (popoverCount > 0) node.setAttribute('data-popover-count', popoverCount);
630
+ else node.removeAttribute('data-popover-count');
631
+
632
+ return;
633
+ }
634
+ }
635
+ node = getComposedParent(node);
636
+ }
637
+ }
638
+
592
639
  _updateStickyTops() {
593
640
  const hasStickyControls = this._controls && !this._controls.noSticky;
594
641
  let rowTop = hasStickyControls ? this._controls.offsetHeight + 6 : 0; // +6 for the internal `margin-bottom`.
@@ -3868,6 +3868,67 @@
3868
3868
  }
3869
3869
  ]
3870
3870
  },
3871
+ {
3872
+ "name": "d2l-filter-dimension-set-date-time-range-value",
3873
+ "path": "./components/filter/filter-dimension-set-date-time-range-value.js",
3874
+ "description": "A component to represent a possible custom date range or date-time range value that can be selected for a dimension set (the main filter dimension type).\nThe start-value and end-value will be included in the d2l-filter-change event and formatted as an ISO string in UTC time.\nThis component does not render anything, but instead gathers data needed for the d2l-filter.",
3875
+ "attributes": [
3876
+ {
3877
+ "name": "key",
3878
+ "description": "REQUIRED: Unique key to represent this value in the dimension",
3879
+ "type": "string"
3880
+ },
3881
+ {
3882
+ "name": "text",
3883
+ "description": "Defaults to \"Custom Date Range\" (localized). Can be overridden if desired.",
3884
+ "type": "string"
3885
+ },
3886
+ {
3887
+ "name": "disabled",
3888
+ "description": "Whether this value in the filter is disabled or not",
3889
+ "type": "boolean",
3890
+ "default": "false"
3891
+ },
3892
+ {
3893
+ "name": "selected",
3894
+ "description": "Whether this value in the filter is selected or not",
3895
+ "type": "boolean",
3896
+ "default": "false"
3897
+ }
3898
+ ],
3899
+ "properties": [
3900
+ {
3901
+ "name": "key",
3902
+ "attribute": "key",
3903
+ "description": "REQUIRED: Unique key to represent this value in the dimension",
3904
+ "type": "string"
3905
+ },
3906
+ {
3907
+ "name": "text",
3908
+ "attribute": "text",
3909
+ "description": "Defaults to \"Custom Date Range\" (localized). Can be overridden if desired.",
3910
+ "type": "string"
3911
+ },
3912
+ {
3913
+ "name": "disabled",
3914
+ "attribute": "disabled",
3915
+ "description": "Whether this value in the filter is disabled or not",
3916
+ "type": "boolean",
3917
+ "default": "false"
3918
+ },
3919
+ {
3920
+ "name": "selected",
3921
+ "attribute": "selected",
3922
+ "description": "Whether this value in the filter is selected or not",
3923
+ "type": "boolean",
3924
+ "default": "false"
3925
+ },
3926
+ {
3927
+ "name": "documentLocaleSettings",
3928
+ "default": "\"getDocumentLocaleSettings()\""
3929
+ }
3930
+ ]
3931
+ },
3871
3932
  {
3872
3933
  "name": "d2l-filter-dimension-set-empty-state",
3873
3934
  "path": "./components/filter/filter-dimension-set-empty-state.js",
package/lang/ar.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} غير صالحة.",
32
33
  "components.form-element.defaultFieldLabel": "الحقل",
33
34
  "components.form-element.input.email.typeMismatch": "البريد الإلكتروني غير صالح",
package/lang/cy.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "Mae {label} yn annilys.",
32
33
  "components.form-element.defaultFieldLabel": "Maes",
33
34
  "components.form-element.input.email.typeMismatch": "Nid yw'r e-bost yn ddilys",
package/lang/da.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} er ugyldigt.",
32
33
  "components.form-element.defaultFieldLabel": "Felt",
33
34
  "components.form-element.input.email.typeMismatch": "E-mail er ikke gyldig",
package/lang/de.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} ist ungültig.",
32
33
  "components.form-element.defaultFieldLabel": "Feld",
33
34
  "components.form-element.input.email.typeMismatch": "Die E-Mail-Adresse ist ungültig",
package/lang/en-gb.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} is invalid.",
32
33
  "components.form-element.defaultFieldLabel": "Field",
33
34
  "components.form-element.input.email.typeMismatch": "Email is not valid",
package/lang/en.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} is invalid.",
32
33
  "components.form-element.defaultFieldLabel": "Field",
33
34
  "components.form-element.input.email.typeMismatch": "Email is not valid",
package/lang/es-es.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} no es válido.",
32
33
  "components.form-element.defaultFieldLabel": "Campo",
33
34
  "components.form-element.input.email.typeMismatch": "El correo electrónico no es válido",
package/lang/es.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} no es válida.",
32
33
  "components.form-element.defaultFieldLabel": "Campo",
33
34
  "components.form-element.input.email.typeMismatch": "El correo electrónico no es válido",
package/lang/fr-fr.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} n'est pas valide.",
32
33
  "components.form-element.defaultFieldLabel": "Champ",
33
34
  "components.form-element.input.email.typeMismatch": "L'adresse e-mail n'est pas valide.",
package/lang/fr.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} n'est pas valide.",
32
33
  "components.form-element.defaultFieldLabel": "Champ",
33
34
  "components.form-element.input.email.typeMismatch": "L'adresse courriel n'est pas valide",
package/lang/hi.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} अमान्य है।",
32
33
  "components.form-element.defaultFieldLabel": "फ़ील्ड",
33
34
  "components.form-element.input.email.typeMismatch": "ईमेल मान्य नहीं है",
package/lang/ja.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} は無効です。",
32
33
  "components.form-element.defaultFieldLabel": "フィールド",
33
34
  "components.form-element.input.email.typeMismatch": "電子メールが無効です",
package/lang/ko.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label}이(가) 잘못되었습니다.",
32
33
  "components.form-element.defaultFieldLabel": "필드",
33
34
  "components.form-element.input.email.typeMismatch": "이메일이 유효하지 않습니다.",
package/lang/nl.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} is ongeldig.",
32
33
  "components.form-element.defaultFieldLabel": "Veld",
33
34
  "components.form-element.input.email.typeMismatch": "E-mailadres is ongeldig",
package/lang/pt.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} é inválido.",
32
33
  "components.form-element.defaultFieldLabel": "Campo",
33
34
  "components.form-element.input.email.typeMismatch": "E-mail inválido",
package/lang/sv.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} är ogiltig.",
32
33
  "components.form-element.defaultFieldLabel": "Fält",
33
34
  "components.form-element.input.email.typeMismatch": "E-postadressen är ogiltig",
package/lang/tr.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, one {Last hour} other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} one {Last {num} days} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} geçersiz.",
32
33
  "components.form-element.defaultFieldLabel": "Alan",
33
34
  "components.form-element.input.email.typeMismatch": "E-posta geçerli değil",
package/lang/zh-cn.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} 无效。",
32
33
  "components.form-element.defaultFieldLabel": "字段",
33
34
  "components.form-element.input.email.typeMismatch": "电子邮件无效",
package/lang/zh-tw.js CHANGED
@@ -28,6 +28,7 @@ export default {
28
28
  "components.filter-dimension-set-date-text-value.textHours": "{num, plural, other {Last {num} hours}}",
29
29
  "components.filter-dimension-set-date-text-value.textDays": "{num, plural, =0 {Today} other {Last {num} days}}",
30
30
  "components.filter-dimension-set-date-text-value.textMonths": "Last {num} months",
31
+ "components.filter-dimension-set-date-time-range-value.text": "Custom date range",
31
32
  "components.form-element.defaultError": "{label} 無效。",
32
33
  "components.form-element.defaultFieldLabel": "欄位",
33
34
  "components.form-element.input.email.typeMismatch": "電子郵件無效",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "3.16.0",
3
+ "version": "3.17.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",