@brightspace-ui/core 2.122.2 → 2.124.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.
@@ -86,13 +86,40 @@
86
86
  document.querySelector('#dialogFullscreen').opened = true;
87
87
  });
88
88
  document.querySelector('#dialogFullscreen').addEventListener('d2l-dialog-close', (e) => {
89
- console.log('confirm action:', e.detail.action);
89
+ console.log('dialog action:', e.detail.action);
90
+ });
91
+ </script>
92
+ </template>
93
+ </d2l-demo-snippet>
94
+
95
+ <h2>Fullscreen Dialog (no-padding)</h2>
96
+
97
+ <d2l-demo-snippet>
98
+ <template>
99
+ <d2l-button id="openNoPadding">Show Dialog</d2l-button>
100
+ <d2l-dialog-fullscreen id="dialogFullscreenNoPadding" title-text="Fullscreen Title" no-padding>
101
+ <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
102
+ <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
103
+ <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
104
+ <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
105
+ <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
106
+ <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
107
+
108
+ <d2l-button slot="footer" primary data-dialog-action="save">Save</d2l-button>
109
+ <d2l-button slot="footer" data-dialog-action>Cancel</d2l-button>
110
+ </d2l-dialog-fullscreen>
111
+ <script>
112
+ document.querySelector('#openNoPadding').addEventListener('click', () => {
113
+ document.querySelector('#dialogFullscreenNoPadding').opened = true;
114
+ });
115
+ document.querySelector('#dialogFullscreenNoPadding').addEventListener('d2l-dialog-close', (e) => {
116
+ console.log('dialog action:', e.detail.action);
90
117
  });
91
118
  </script>
92
119
  </template>
93
120
  </d2l-demo-snippet>
94
121
 
95
- <h2>Fullscreen Dialog with Content Overflow</h2>
122
+ <h2>Fullscreen Dialog (overflowing content)</h2>
96
123
 
97
124
  <d2l-demo-snippet>
98
125
  <template>
@@ -152,7 +179,7 @@
152
179
  document.querySelector('#dialogFullscreenOverflow').opened = true;
153
180
  });
154
181
  document.querySelector('#dialogFullscreenOverflow').addEventListener('d2l-dialog-close', (e) => {
155
- console.log('confirm action:', e.detail.action);
182
+ console.log('dialog action:', e.detail.action);
156
183
  });
157
184
  </script>
158
185
  </template>
@@ -180,7 +207,7 @@
180
207
  </template>
181
208
  </d2l-demo-snippet>
182
209
 
183
- <h2>Fullscreen Dialog using width property</h2>
210
+ <h2>Fullscreen Dialog (width)</h2>
184
211
 
185
212
  <d2l-demo-snippet>
186
213
  <template>
@@ -232,7 +259,7 @@
232
259
  document.querySelector('#dialogWidth').opened = true;
233
260
  });
234
261
  document.querySelector('#dialogWidth').addEventListener('d2l-dialog-close', (e) => {
235
- console.log('confirm action:', e.detail.action);
262
+ console.log('dialog action:', e.detail.action);
236
263
  });
237
264
  </script>
238
265
  </template>
@@ -27,7 +27,11 @@ class DialogFullscreen extends LocalizeCoreElement(AsyncContainerMixin(DialogMix
27
27
  * @type {boolean}
28
28
  */
29
29
  async: { type: Boolean },
30
-
30
+ /**
31
+ * Render with no content padding
32
+ * @type {boolean}
33
+ */
34
+ noPadding: { type: Boolean, reflect: true, attribute: 'no-padding' },
31
35
  /**
32
36
  * The preferred width (unit-less) for the dialog. Maximum 1170.
33
37
  */
@@ -54,6 +58,10 @@ class DialogFullscreen extends LocalizeCoreElement(AsyncContainerMixin(DialogMix
54
58
  max-width: calc(100% - 3rem);
55
59
  }
56
60
 
61
+ :host([no-padding]) .d2l-dialog-content {
62
+ padding: 0;
63
+ }
64
+
57
65
  @media (min-width: 616px) {
58
66
 
59
67
  .d2l-dialog-header {
@@ -74,6 +82,10 @@ class DialogFullscreen extends LocalizeCoreElement(AsyncContainerMixin(DialogMix
74
82
  height: calc(100% - 1rem);
75
83
  }
76
84
 
85
+ :host([no-padding]) .d2l-dialog-content > div {
86
+ height: 100%;
87
+ }
88
+
77
89
  .d2l-dialog-header > div > d2l-button-icon {
78
90
  flex: none;
79
91
  margin: -2px -12px 0 0;
@@ -178,6 +190,7 @@ class DialogFullscreen extends LocalizeCoreElement(AsyncContainerMixin(DialogMix
178
190
  constructor() {
179
191
  super();
180
192
  this.async = false;
193
+ this.noPadding = false;
181
194
  this._autoSize = false;
182
195
  this._hasFooterContent = false;
183
196
  this._icon = 'tier1:close-large-thick';
@@ -98,6 +98,8 @@ export const dialogStyles = css`
98
98
  box-sizing: border-box;
99
99
  flex: none;
100
100
  padding: 19px 30px 23px 30px;
101
+ position: relative; /* stack header overflow shadow on top of content */
102
+ z-index: 1; /* stack header overflow shadow on top of content */
101
103
  }
102
104
 
103
105
  .d2l-dialog-outer.d2l-dialog-outer-overflow-top .d2l-dialog-header {
@@ -120,6 +122,10 @@ export const dialogStyles = css`
120
122
  padding: 0 30px;
121
123
  }
122
124
 
125
+ .d2l-dialog-content > div {
126
+ position: relative; /* make this the positioned parent for absolute positioned elements like d2l-template-primary-secondary */
127
+ }
128
+
123
129
  .d2l-dialog-outer-scroll .d2l-dialog-content {
124
130
  overflow: auto;
125
131
  }
@@ -128,6 +134,7 @@ export const dialogStyles = css`
128
134
  box-sizing: border-box;
129
135
  flex: none;
130
136
  padding: 30px 30px 12px 30px; /* 18px margin below footer children */
137
+ position: relative; /* stack footer overflow shadow on top of content */
131
138
  }
132
139
 
133
140
  .d2l-dialog-outer.d2l-dialog-outer-overflow-bottom .d2l-dialog-footer {
@@ -195,6 +195,7 @@ The `d2l-filter-dimension-set` component is the main dimension type that will wo
195
195
  | `loading` | Boolean | Whether the values for this dimension are still loading and a loading spinner should be displayed |
196
196
  | `search-type` | String, default: `automatic` | `automatic` provides basic case-insensitive text comparison searching, `none` disables the search input, and `manual` fires an event for the consumer to handle the search and pass the keys of the values to be displayed |
197
197
  | `select-all` | Boolean | Whether to show a select all checkbox and selection summary for this dimension |
198
+ | `selected-first` | Boolean | Whether to render the selected items at the top of the filter |
198
199
  | `selection-single` | Boolean | Whether only one value can be selected at a time for this dimension |
199
200
  | `text` | String, required | Text for the dimension in the menu |
200
201
  | `value-only-active-filter-text` | Boolean | Whether to hide the dimension in the text sent to active filter subscribers |
@@ -57,11 +57,11 @@
57
57
  </template>
58
58
  </d2l-demo-snippet>
59
59
 
60
- <h2>Single Set Dimension - Header Text</h2>
60
+ <h2>Single Set Dimension - Header Text and Selected First</h2>
61
61
  <d2l-demo-snippet>
62
62
  <template>
63
63
  <d2l-filter id="filter-single">
64
- <d2l-filter-dimension-set key="course" introductory-text="Filter content by courses. Start typing any course name to explore." header-text="Skills Promoted at Your Company" text="Course" select-all>
64
+ <d2l-filter-dimension-set key="course" introductory-text="Filter content by courses. Start typing any course name to explore." header-text="Skills Promoted at Your Company" text="Course" select-all selected-first>
65
65
  <d2l-filter-dimension-set-value key="art" text="Art" count="12"></d2l-filter-dimension-set-value>
66
66
  <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" count="2" selected></d2l-filter-dimension-set-value>
67
67
  <d2l-filter-dimension-set-value key="biology" text="Biology" count="15"></d2l-filter-dimension-set-value>
@@ -94,7 +94,7 @@
94
94
  <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft"></d2l-filter-dimension-set-value>
95
95
  <d2l-filter-dimension-set-empty-state slot="search-empty-state" description="Search returned no results." action-text="Do something" action-href="https://d2l.com/"></d2l-filter-dimension-set-empty-state>
96
96
  </d2l-filter-dimension-set>
97
- <d2l-filter-dimension-set key="role" text="Role">
97
+ <d2l-filter-dimension-set key="role" text="Role" selected-first>
98
98
  <d2l-filter-dimension-set-value key="admin" text="Admin" count="0"></d2l-filter-dimension-set-value>
99
99
  <d2l-filter-dimension-set-value key="instructor" text="Instructor" count="22"></d2l-filter-dimension-set-value>
100
100
  <d2l-filter-dimension-set-value key="student" text="Student" count="50"></d2l-filter-dimension-set-value>
@@ -41,6 +41,11 @@ class FilterDimensionSet extends LitElement {
41
41
  * @type {boolean}
42
42
  */
43
43
  selectAll: { type: Boolean, attribute: 'select-all' },
44
+ /**
45
+ * Whether to render the selected items at the top of the filter
46
+ * @type {boolean}
47
+ */
48
+ selectedFirst: { type: Boolean, attribute: 'selected-first' },
44
49
  /**
45
50
  * Whether only one value can be selected at a time for this dimension
46
51
  * @type {boolean}
@@ -66,6 +71,7 @@ class FilterDimensionSet extends LitElement {
66
71
  this.loading = false;
67
72
  this.searchType = 'automatic';
68
73
  this.selectAll = false;
74
+ this.selectedFirst = false;
69
75
  this.selectionSingle = false;
70
76
  this.text = '';
71
77
  this.valueOnlyActiveFilterText = false;
@@ -275,6 +275,18 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
275
275
  `;
276
276
  }
277
277
 
278
+ update(changedProperties) {
279
+ if (
280
+ changedProperties.has('opened')
281
+ && this.opened
282
+ && this._dimensions.length === 1
283
+ && this._dimensions[0].selectedFirst
284
+ ) {
285
+ this._updateDimensionShouldBubble(this._dimensions[0]);
286
+ }
287
+ super.update(changedProperties);
288
+ }
289
+
278
290
  requestFilterClearAll() {
279
291
  this._handleClearAll();
280
292
  }
@@ -505,6 +517,17 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
505
517
  listLabel = dimension.headerText;
506
518
  }
507
519
 
520
+ let selectedListItems = nothing;
521
+ let listItems = nothing;
522
+ if (dimension.selectedFirst) {
523
+ if (listLabel) listLabel = this.localize('components.filter.selectedFirstListLabel', { headerText: dimension.headerText });
524
+ selectedListItems = dimension.values.filter(item => item.shouldBubble).map(item => this._createSetDimensionItem(item));
525
+
526
+ listItems = dimension.values.filter(item => !item.shouldBubble).map(item => this._createSetDimensionItem(item));
527
+ } else {
528
+ listItems = dimension.values.map(item => this._createSetDimensionItem(item));
529
+ }
530
+
508
531
  return html`
509
532
  ${searchResults}
510
533
  <d2l-list
@@ -515,25 +538,30 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
515
538
  label="${ifDefined(listLabel)}"
516
539
  ?selection-single="${dimension.selectionSingle}"
517
540
  separators="between">
541
+ ${selectedListItems}
518
542
  ${listHeader}
519
- ${dimension.values.map(item => html`
520
- <d2l-list-item
521
- ?selection-disabled="${item.disabled}"
522
- ?hidden="${item.hidden}"
523
- key="${item.key}"
524
- label="${item.text}"
525
- selectable
526
- ?selected="${item.selected}">
527
- <div class="d2l-filter-dimension-set-value d2l-body-compact">
528
- <div class="d2l-filter-dimension-set-value-text">${item.text}</div>
529
- ${item.count !== undefined ? html`<div class="d2l-body-small">(${formatNumber(item.count)})</div>` : nothing}
530
- </div>
531
- </d2l-list-item>
532
- `)}
543
+ ${listItems}
533
544
  </d2l-list>
534
545
  `;
535
546
  }
536
547
 
548
+ _createSetDimensionItem(item) {
549
+ return html`
550
+ <d2l-list-item
551
+ ?selection-disabled="${item.disabled}"
552
+ ?hidden="${item.hidden}"
553
+ key="${item.key}"
554
+ label="${item.text}"
555
+ selectable
556
+ ?selected="${item.selected}">
557
+ <div class="d2l-filter-dimension-set-value d2l-body-compact">
558
+ <div class="d2l-filter-dimension-set-value-text">${item.text}</div>
559
+ ${item.count !== undefined ? html`<div class="d2l-body-small">(${formatNumber(item.count)})</div>` : nothing}
560
+ </div>
561
+ </d2l-list-item>
562
+ `;
563
+ }
564
+
537
565
  _dispatchChangeEvent(dimension, change) {
538
566
  this._setDimensionChangeEvent(dimension, change, false);
539
567
 
@@ -689,6 +717,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
689
717
  this._activeDimensionKey = e.detail.sourceView.getAttribute('data-key');
690
718
  const dimension = this._dimensions.find(dimension => dimension.key === this._activeDimensionKey);
691
719
  if (dimension.introductoryText) announce(dimension.introductoryText);
720
+ if (dimension.selectedFirst) this._updateDimensionShouldBubble(dimension);
692
721
  this._dispatchDimensionFirstOpenEvent(this._activeDimensionKey);
693
722
  }
694
723
 
@@ -720,6 +749,10 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
720
749
  const searchValue = e.detail.value.trim();
721
750
  dimension.searchValue = searchValue;
722
751
 
752
+ if (dimension.selectedFirst) {
753
+ this._updateDimensionShouldBubble(dimension);
754
+ }
755
+
723
756
  if (dimension.searchType === 'automatic' || searchValue === '') {
724
757
  this._performDimensionSearch(dimension);
725
758
  } else if (dimension.searchType === 'manual') {
@@ -763,6 +796,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
763
796
  info.introductoryText = dimension.introductoryText;
764
797
  info.searchType = dimension.searchType;
765
798
  info.searchValue = '';
799
+ info.selectedFirst = dimension.selectedFirst;
766
800
  info.selectionSingle = dimension.selectionSingle;
767
801
  if (dimension.selectAll && !dimension.selectionSingle) info.selectAllIdPrefix = SET_DIMENSION_ID_PREFIX;
768
802
  info.searchEmptyState = dimension.getSearchEmptyState();
@@ -917,6 +951,12 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
917
951
  subscribers.forEach(subscriber => subscriber.updateActiveFilters(this.id, this._activeFilters));
918
952
  }
919
953
 
954
+ _updateDimensionShouldBubble(dimension) {
955
+ for (const value of dimension.values) {
956
+ value.shouldBubble = value.selected;
957
+ }
958
+ }
959
+
920
960
  }
921
961
 
922
962
  customElements.define('d2l-filter', Filter);
@@ -1948,6 +1948,12 @@
1948
1948
  "type": "boolean",
1949
1949
  "default": "false"
1950
1950
  },
1951
+ {
1952
+ "name": "no-padding",
1953
+ "description": "Render with no content padding",
1954
+ "type": "boolean",
1955
+ "default": "false"
1956
+ },
1951
1957
  {
1952
1958
  "name": "width",
1953
1959
  "description": "The preferred width (unit-less) for the dialog. Maximum 1170.",
@@ -1974,6 +1980,13 @@
1974
1980
  "type": "boolean",
1975
1981
  "default": "false"
1976
1982
  },
1983
+ {
1984
+ "name": "noPadding",
1985
+ "attribute": "no-padding",
1986
+ "description": "Render with no content padding",
1987
+ "type": "boolean",
1988
+ "default": "false"
1989
+ },
1977
1990
  {
1978
1991
  "name": "width",
1979
1992
  "attribute": "width",
@@ -3796,6 +3809,12 @@
3796
3809
  "type": "boolean",
3797
3810
  "default": "false"
3798
3811
  },
3812
+ {
3813
+ "name": "selected-first",
3814
+ "description": "Whether to render the selected items at the top of the filter",
3815
+ "type": "boolean",
3816
+ "default": "false"
3817
+ },
3799
3818
  {
3800
3819
  "name": "selection-single",
3801
3820
  "description": "Whether only one value can be selected at a time for this dimension",
@@ -3857,6 +3876,13 @@
3857
3876
  "type": "boolean",
3858
3877
  "default": "false"
3859
3878
  },
3879
+ {
3880
+ "name": "selectedFirst",
3881
+ "attribute": "selected-first",
3882
+ "description": "Whether to render the selected items at the top of the filter",
3883
+ "type": "boolean",
3884
+ "default": "false"
3885
+ },
3860
3886
  {
3861
3887
  "name": "selectionSingle",
3862
3888
  "attribute": "selection-single",
package/lang/ar.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "عوامل التصفية",
22
22
  "components.filter.noFilters": "ما من عوامل تصفية متوفرة",
23
23
  "components.filter.searchResults": "{number, plural, =0 {ما من نتائج بحث} one {{number} نتيجة بحث}‏ other {{number} من نتائج البحث}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "التصفية حسب: {filterName}",
25
26
  "components.form-element.defaultError": "{label} غير صالحة.",
26
27
  "components.form-element.defaultFieldLabel": "الحقل",
package/lang/cy.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Hidlyddion",
22
22
  "components.filter.noFilters": "Dim hidlyddion ar gael",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Dim canlyniadau chwilio} one {{number} canlyniad chwilio} other {{number} canlyniadau chwilio}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Hidlo yn ôl: {filterName}",
25
26
  "components.form-element.defaultError": "Mae {label} yn annilys.",
26
27
  "components.form-element.defaultFieldLabel": "Maes",
package/lang/da.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtre",
22
22
  "components.filter.noFilters": "Ingen tilgængelige filtre",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Ingen søgeresultater} one {{number} søgeresultat} other {{number} søgeresultater}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrer efter: {filterName}",
25
26
  "components.form-element.defaultError": "{label} er ugyldigt.",
26
27
  "components.form-element.defaultFieldLabel": "Felt",
package/lang/de.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filter",
22
22
  "components.filter.noFilters": "Keine verfügbaren Filter",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Kein Suchergebnis} one {{number} Suchergebnis} other {{number} Suchergebnisse}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtern nach: {filterName}",
25
26
  "components.form-element.defaultError": "{label} ist ungültig.",
26
27
  "components.form-element.defaultFieldLabel": "Feld",
package/lang/en-gb.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filters",
22
22
  "components.filter.noFilters": "No available filters",
23
23
  "components.filter.searchResults": "{number, plural, =0 {No search results} one {{number} search result} other {{number} search results}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filter by: {filterName}",
25
26
  "components.form-element.defaultError": "{label} is invalid.",
26
27
  "components.form-element.defaultFieldLabel": "Field",
package/lang/en.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filters",
22
22
  "components.filter.noFilters": "No available filters",
23
23
  "components.filter.searchResults": "{number, plural, =0 {No search results} one {{number} search result} other {{number} search results}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filter by: {filterName}",
25
26
  "components.form-element.defaultError": "{label} is invalid.",
26
27
  "components.form-element.defaultFieldLabel": "Field",
package/lang/es-es.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtros",
22
22
  "components.filter.noFilters": "No hay filtros disponibles",
23
23
  "components.filter.searchResults": "{number, plural, =0 {No hay resultados de búsqueda} one {{number} resultado de búsqueda} other {{number} resultados de búsqueda}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrar por: {filterName}",
25
26
  "components.form-element.defaultError": "{label} no es válido.",
26
27
  "components.form-element.defaultFieldLabel": "Campo",
package/lang/es.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtros",
22
22
  "components.filter.noFilters": "No hay filtros disponibles",
23
23
  "components.filter.searchResults": "{number, plural, =0 {No se encontraron resultados de búsqueda} one {{number} resultado de búsqueda} other {{number} resultados de búsqueda}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrar por: {filterName}",
25
26
  "components.form-element.defaultError": "{label} no es válida.",
26
27
  "components.form-element.defaultFieldLabel": "Campo",
package/lang/fr-fr.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtres",
22
22
  "components.filter.noFilters": "Aucun filtre disponible",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Aucun résultat de recherche} one {{number} résultat de recherche} other {{number} résultats de recherche}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrer par : {filterName}",
25
26
  "components.form-element.defaultError": "{label} n'est pas valide.",
26
27
  "components.form-element.defaultFieldLabel": "Champ",
package/lang/fr.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtres",
22
22
  "components.filter.noFilters": "Aucun filtre disponible",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Aucun résultat de recherche} one {{number} résultat de recherche} other {{number} résultats de recherche}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrer par : {filterName}",
25
26
  "components.form-element.defaultError": "{label} n'est pas valide.",
26
27
  "components.form-element.defaultFieldLabel": "Champ",
package/lang/hi.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "फ़िल्टर्स",
22
22
  "components.filter.noFilters": "कोई उपलब्ध फ़िल्टर्स नहीं",
23
23
  "components.filter.searchResults": "{number, plural, =0 {कोई खोज परिणाम नहीं} one {{number} खोज परिणाम} other {{number} खोज परिणाम}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "इसके अनुसार फ़िल्टर करें: {filterName}",
25
26
  "components.form-element.defaultError": "{label} अमान्य है।",
26
27
  "components.form-element.defaultFieldLabel": "फ़ील्ड",
package/lang/ja.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "フィルタ",
22
22
  "components.filter.noFilters": "使用可能なフィルタはありません",
23
23
  "components.filter.searchResults": "{number, plural, =0 {検索結果なし} other {{number} 件の検索結果}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "フィルタ条件: {filterName}",
25
26
  "components.form-element.defaultError": "{label} は無効です。",
26
27
  "components.form-element.defaultFieldLabel": "フィールド",
package/lang/ko.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "개 필터",
22
22
  "components.filter.noFilters": "사용 가능한 필터가 없습니다",
23
23
  "components.filter.searchResults": "{number, plural, =0 {검색 결과 없음} other {{number}개 검색 결과}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "필터 기준: {filterName}",
25
26
  "components.form-element.defaultError": "{label}이(가) 잘못되었습니다.",
26
27
  "components.form-element.defaultFieldLabel": "필드",
package/lang/nl.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filters", // mfv-translated
22
22
  "components.filter.noFilters": "Geen beschikbare filters",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Geen zoekresultaten} one {{number} zoekresultaat} other {{number} zoekresultaten}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filter op {filterName}",
25
26
  "components.form-element.defaultError": "{label} is ongeldig.",
26
27
  "components.form-element.defaultFieldLabel": "Veld",
package/lang/pt.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtros",
22
22
  "components.filter.noFilters": "Não há filtros disponíveis",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Sem resultados para a pesquisa} one {{number} resultado para a pesquisa} other {{number} resultados para a pesquisa}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrar por: {filterName}",
25
26
  "components.form-element.defaultError": "{label} é inválido.",
26
27
  "components.form-element.defaultFieldLabel": "Campo",
package/lang/sv.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filter",
22
22
  "components.filter.noFilters": "Inga tillgängliga filter",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Inga sökresultat} one {{number} sökresultat} other {{number} sökresultat}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtrera efter: {filterName}",
25
26
  "components.form-element.defaultError": "{label} är ogiltig.",
26
27
  "components.form-element.defaultFieldLabel": "Fält",
package/lang/tr.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "Filtre",
22
22
  "components.filter.noFilters": "Uygun filtre yok",
23
23
  "components.filter.searchResults": "{number, plural, =0 {Arama sonucu yok} one {{number} arama sonucu} other {{number} arama sonucu}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "Filtreleme ölçütü: {filterName}",
25
26
  "components.form-element.defaultError": "{label} geçersiz.",
26
27
  "components.form-element.defaultFieldLabel": "Alan",
package/lang/zh-cn.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "个筛选条件",
22
22
  "components.filter.noFilters": "无可用筛选器",
23
23
  "components.filter.searchResults": "{number, plural, =0 {无搜索结果} other {{number} 个搜索结果}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "筛选依据:{filterName}",
25
26
  "components.form-element.defaultError": "{label} 无效。",
26
27
  "components.form-element.defaultFieldLabel": "字段",
package/lang/zh-tw.js CHANGED
@@ -21,6 +21,7 @@ export default {
21
21
  "components.filter.filters": "篩選器",
22
22
  "components.filter.noFilters": "沒有可用的篩選條件",
23
23
  "components.filter.searchResults": "{number, plural, =0 {無搜尋結果} other {{number} 個搜尋結果}}",
24
+ "components.filter.selectedFirstListLabel": "{headerText}. Selected filters appear first.",
24
25
  "components.filter.singleDimensionDescription": "按此條件篩選:{filterName}",
25
26
  "components.form-element.defaultError": "{label} 無效。",
26
27
  "components.form-element.defaultFieldLabel": "欄位",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "2.122.2",
3
+ "version": "2.124.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",
@@ -55,8 +55,7 @@
55
55
 
56
56
  <d2l-list item-count="50" extend-separators>
57
57
  <d2l-list-controls slot="controls" select-all-pages-allowed>
58
- <d2l-button-icon icon="tier1:gear" id="openMainDialog" text="Open"></d2l-button-icon>
59
- <d2l-selection-action icon="tier1:plus-default" text="Add"></d2l-selection-action>
58
+ <d2l-selection-action id="openMainDialog" icon="tier1:plus-default" text="Add"></d2l-selection-action>
60
59
  <d2l-selection-action-dropdown text="Move To" requires-selection>
61
60
  <d2l-dropdown-menu>
62
61
  <d2l-menu label="Move To Options">
@@ -342,19 +341,33 @@
342
341
  </d2l-list-item>
343
342
  </d2l-list>
344
343
 
345
- <d2l-dialog-fullscreen id="dialogMain" title-text="Dialog Title">
346
- <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
347
- <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
348
- <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
349
- <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
350
- <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
351
- <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
344
+ <d2l-dialog-fullscreen id="dialogMain" title-text="Dialog Title" no-padding>
345
+ <d2l-template-primary-secondary resizable storage-key="demo-dialog">
346
+ <div slot="header" style="background-color: #dddddd; padding: 1rem;">Primary/Secondary Controls</div>
347
+ <div slot="primary" style="padding: 1rem;">
348
+ <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
349
+ <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
350
+ <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
351
+ <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
352
+ <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
353
+ <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
354
+ </div>
355
+ <div slot="secondary" style="padding: 1rem;">
356
+ <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
357
+ <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
358
+ <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
359
+ <p>Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker</p>
360
+ <p>Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.</p>
361
+ <p>Trysail Sail ho Corsair red ensign hulk smartly boom jib rum gangway. Case shot Shiver me timbers gangplank crack Jennys tea cup ballast Blimey lee snow crow's nest rutters. Fluke jib scourge of the seven seas boatswain schooner gaff booty Jack Tar transom spirits.</p>
362
+ </div>
363
+ <div slot="footer">Primary/Secondary Footer</div>
364
+ </d2l-template-primary-secondary>
352
365
  <d2l-button slot="footer" primary data-dialog-action="save">Save</d2l-button>
353
366
  <d2l-button slot="footer" data-dialog-action>Cancel</d2l-button>
354
367
  </d2l-dialog-fullscreen>
355
368
 
356
369
  <script>
357
- document.querySelector('#openMainDialog').addEventListener('click', () => {
370
+ document.querySelector('#openMainDialog').addEventListener('d2l-selection-action-click', () => {
358
371
  document.querySelector('#dialogMain').opened = true;
359
372
  });
360
373
  document.querySelector('#dialogMain').addEventListener('d2l-dialog-close', (e) => {