@brightspace-ui/core 2.52.1 → 2.53.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.
@@ -159,7 +159,7 @@ The filter will announce changes to filter selections, search results, and when
159
159
 
160
160
  <!-- docs: end hidden content -->
161
161
 
162
- ## Filter Dimension: Set [d2l-filter-dimension-set]
162
+ ## Dimension Set [d2l-filter-dimension-set]
163
163
 
164
164
  The `d2l-filter-dimension-set` component is the main dimension type that will work for most use cases. Used alongside the [d2l-filter-dimension-set-value](#d2l-filter-dimension-set-value), this will give you a selectable list of filter values.
165
165
 
@@ -197,7 +197,7 @@ The `d2l-filter-dimension-set` component is the main dimension type that will wo
197
197
  | `value-only-active-filter-text` | Boolean | Whether to hide the dimension in the text sent to active filter subscribers |
198
198
  <!-- docs: end hidden content -->
199
199
 
200
- ## Filter Dimension: Set Value [d2l-filter-dimension-set-value]
200
+ ## Dimension Set Value [d2l-filter-dimension-set-value]
201
201
 
202
202
  This component is built to be used alongside the [d2l-filter-dimension-set](#d2l-filter-dimension-set) component, this will give you a selectable list of filter values.
203
203
 
@@ -210,8 +210,9 @@ This component is built to be used alongside the [d2l-filter-dimension-set](#d2l
210
210
  </script>
211
211
  <d2l-filter>
212
212
  <d2l-filter-dimension-set key="course" text="Course" >
213
- <d2l-filter-dimension-set-value key="art" text="Art" selected></d2l-filter-dimension-set-value>
214
- <d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
213
+ <d2l-filter-dimension-set-value key="art" text="Art" count="1" selected></d2l-filter-dimension-set-value>
214
+ <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" count="3" disabled></d2l-filter-dimension-set-value>
215
+ <d2l-filter-dimension-set-value key="biology" text="Biology" count="5"></d2l-filter-dimension-set-value>
215
216
  </d2l-filter-dimension-set>
216
217
  </d2l-filter>
217
218
  ```
@@ -220,12 +221,43 @@ This component is built to be used alongside the [d2l-filter-dimension-set](#d2l
220
221
 
221
222
  | Property | Type | Description |
222
223
  |---|---|---|
224
+ | `count` | Number | Count for the value in the list. If no count is provided, no count will be displayed |
223
225
  | `disabled` | Boolean, default: `false` | Whether the value in the filter is disabled or not |
224
226
  | `key` | String, required | Unique identifier within a dimension for the value |
225
227
  | `text` | String, required | Text for the value in the list |
226
228
  | `selected` | Boolean, default: `false` | Whether the value in the filter is selected or not |
227
229
  <!-- docs: end hidden content -->
228
230
 
231
+ ## Counts [d2l-filter-dimension-set-value]
232
+
233
+ The `count` property displays a count next to each filter value to indicate the number of results a value will yield. This helps users more effectively explore data and make selections, so it’s a good idea to provide these counts if it can be done performantly.
234
+
235
+ Note that when using multiple filter dimensions, the counts should be updated when selections are made across dimensions so that they always reflect the number of results a filter will yield.
236
+
237
+ <!-- docs: demo code align:start autoOpen:true autoSize:false size:large -->
238
+ ```html
239
+ <script type="module">
240
+ import '@brightspace-ui/core/components/filter/filter.js';
241
+ import '@brightspace-ui/core/components/filter/filter-dimension-set.js';
242
+ import '@brightspace-ui/core/components/filter/filter-dimension-set-value.js';
243
+ </script>
244
+ <d2l-filter>
245
+ <d2l-filter-dimension-set key="course" text="Course" >
246
+ <d2l-filter-dimension-set-value key="art" text="Art" count="0"></d2l-filter-dimension-set-value>
247
+ <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" count="1" selected></d2l-filter-dimension-set-value>
248
+ <d2l-filter-dimension-set-value key="biology" text="Biology" count="1024"></d2l-filter-dimension-set-value>
249
+ <d2l-filter-dimension-set-value key="chemistry" text="Chemistry" count="25" disabled></d2l-filter-dimension-set-value>
250
+ <d2l-filter-dimension-set-value key="drama" text="Drama" count="362"></d2l-filter-dimension-set-value>
251
+ <d2l-filter-dimension-set-value key="english" text="English" count="881"></d2l-filter-dimension-set-value>
252
+ <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title" count="212"></d2l-filter-dimension-set-value>
253
+ <d2l-filter-dimension-set-value key="math" text="Math" count="22365"></d2l-filter-dimension-set-value>
254
+ <d2l-filter-dimension-set-value key="physics" text="Physics" count="27"></d2l-filter-dimension-set-value>
255
+ <d2l-filter-dimension-set-value key="stats" text="Statistics" count="2"></d2l-filter-dimension-set-value>
256
+ <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft" count="96"></d2l-filter-dimension-set-value>
257
+ </d2l-filter-dimension-set>
258
+ </d2l-filter>
259
+ ```
260
+
229
261
  ## Tags for Applied Filters [d2l-filter-tags]
230
262
 
231
263
  A tag-list allowing the user to see (and remove) the currently applied filters. Works with the `d2l-filter`. It supports hooking up to multiple filters.
@@ -374,13 +406,10 @@ The `d2l-filter-overflow-group` is a container for multiple filters that handles
374
406
  | `tags` | Boolean, default: `false` | Show `d2l-filter-tags` beneath the filters. Tags will be shown for all filters in the group. |
375
407
  <!-- docs: end hidden content -->
376
408
 
377
- ## Filter Dimension: Date [d2l-filter-dimension-date]
378
-
379
- **Coming Soon!**
380
-
381
409
  <!-- docs: start hidden content -->
382
410
  ## Future Improvements
383
411
 
412
+ * Date Dimension - Ability to filter by dates
384
413
  * ability to delay change events until the user has pressed an apply button (see [#341](https://github.com/BrightspaceUI/core/issues/341))
385
414
 
386
415
  Looking for an enhancement not listed here? Create a GitHub issue!
@@ -24,17 +24,17 @@
24
24
  <template>
25
25
  <d2l-filter>
26
26
  <d2l-filter-dimension-set key="course" text="Course" select-all>
27
- <d2l-filter-dimension-set-value key="art" text="Art"></d2l-filter-dimension-set-value>
28
- <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" selected></d2l-filter-dimension-set-value>
29
- <d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
30
- <d2l-filter-dimension-set-value key="chemistry" text="Chemistry" disabled></d2l-filter-dimension-set-value>
31
- <d2l-filter-dimension-set-value key="drama" text="Drama" disabled></d2l-filter-dimension-set-value>
32
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
33
- <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title"></d2l-filter-dimension-set-value>
34
- <d2l-filter-dimension-set-value key="math" text="Math"></d2l-filter-dimension-set-value>
35
- <d2l-filter-dimension-set-value key="physics" text="Physics"></d2l-filter-dimension-set-value>
36
- <d2l-filter-dimension-set-value key="stats" text="Statistics"></d2l-filter-dimension-set-value>
37
- <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft"></d2l-filter-dimension-set-value>
27
+ <d2l-filter-dimension-set-value key="art" text="Art" count="12"></d2l-filter-dimension-set-value>
28
+ <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" count="2" selected></d2l-filter-dimension-set-value>
29
+ <d2l-filter-dimension-set-value key="biology" text="Biology" count="15"></d2l-filter-dimension-set-value>
30
+ <d2l-filter-dimension-set-value key="chemistry" text="Chemistry" count="1"disabled></d2l-filter-dimension-set-value>
31
+ <d2l-filter-dimension-set-value key="drama" text="Drama" count="23" disabled></d2l-filter-dimension-set-value>
32
+ <d2l-filter-dimension-set-value key="english" text="English" count="100"></d2l-filter-dimension-set-value>
33
+ <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title" count="100"></d2l-filter-dimension-set-value>
34
+ <d2l-filter-dimension-set-value key="math" text="Math" count="50"></d2l-filter-dimension-set-value>
35
+ <d2l-filter-dimension-set-value key="physics" text="Physics" count="23"></d2l-filter-dimension-set-value>
36
+ <d2l-filter-dimension-set-value key="stats" text="Statistics" count="333"></d2l-filter-dimension-set-value>
37
+ <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft" count="2211"></d2l-filter-dimension-set-value>
38
38
  </d2l-filter-dimension-set>
39
39
  </d2l-filter>
40
40
  </template>
@@ -59,22 +59,22 @@
59
59
  <template>
60
60
  <d2l-filter>
61
61
  <d2l-filter-dimension-set key="course" text="Course" select-all>
62
- <d2l-filter-dimension-set-value key="art" text="Art"></d2l-filter-dimension-set-value>
63
- <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" selected></d2l-filter-dimension-set-value>
64
- <d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
65
- <d2l-filter-dimension-set-value key="chemistry" text="Chemistry"></d2l-filter-dimension-set-value>
66
- <d2l-filter-dimension-set-value key="drama" text="Drama"></d2l-filter-dimension-set-value>
67
- <d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
68
- <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title"></d2l-filter-dimension-set-value>
69
- <d2l-filter-dimension-set-value key="math" text="Math"></d2l-filter-dimension-set-value>
70
- <d2l-filter-dimension-set-value key="physics" text="Physics"></d2l-filter-dimension-set-value>
71
- <d2l-filter-dimension-set-value key="stats" text="Statistics"></d2l-filter-dimension-set-value>
62
+ <d2l-filter-dimension-set-value key="art" text="Art" count="0"></d2l-filter-dimension-set-value>
63
+ <d2l-filter-dimension-set-value key="astronomy" text="Astronomy" count="1" selected></d2l-filter-dimension-set-value>
64
+ <d2l-filter-dimension-set-value key="biology" text="Biology" count="-12"></d2l-filter-dimension-set-value>
65
+ <d2l-filter-dimension-set-value key="chemistry" text="Chemistry" count="12.35"></d2l-filter-dimension-set-value>
66
+ <d2l-filter-dimension-set-value key="drama" text="Drama" count="xxx"></d2l-filter-dimension-set-value>
67
+ <d2l-filter-dimension-set-value key="english" text="English" count="881"></d2l-filter-dimension-set-value>
68
+ <d2l-filter-dimension-set-value key="how-to" text="How To Write a How To Article With a Flashy Title" count="100"></d2l-filter-dimension-set-value>
69
+ <d2l-filter-dimension-set-value key="math" text="Math" count="23909"></d2l-filter-dimension-set-value>
70
+ <d2l-filter-dimension-set-value key="physics" text="Physics" count="1012"></d2l-filter-dimension-set-value>
71
+ <d2l-filter-dimension-set-value key="stats" text="Statistics" count="2"></d2l-filter-dimension-set-value>
72
72
  <d2l-filter-dimension-set-value key="writerscraft" text="Writer's Craft"></d2l-filter-dimension-set-value>
73
73
  </d2l-filter-dimension-set>
74
74
  <d2l-filter-dimension-set key="role" text="Role">
75
- <d2l-filter-dimension-set-value key="admin" text="Admin"></d2l-filter-dimension-set-value>
76
- <d2l-filter-dimension-set-value key="instructor" text="Instructor"></d2l-filter-dimension-set-value>
77
- <d2l-filter-dimension-set-value key="student" text="Student"></d2l-filter-dimension-set-value>
75
+ <d2l-filter-dimension-set-value key="admin" text="Admin" count="0"></d2l-filter-dimension-set-value>
76
+ <d2l-filter-dimension-set-value key="instructor" text="Instructor" count="22"></d2l-filter-dimension-set-value>
77
+ <d2l-filter-dimension-set-value key="student" text="Student" count="50"></d2l-filter-dimension-set-value>
78
78
  </d2l-filter-dimension-set>
79
79
  <d2l-filter-dimension-set key="semester" text="Semester" selection-single>
80
80
  <d2l-filter-dimension-set-value key="fall" text="Fall"></d2l-filter-dimension-set-value>
@@ -8,6 +8,11 @@ class FilterDimensionSetValue extends LitElement {
8
8
 
9
9
  static get properties() {
10
10
  return {
11
+ /**
12
+ * Count for the value in the list. If no count is provided, no count will be displayed
13
+ * @type {number}
14
+ */
15
+ count: { type: Number },
11
16
  /**
12
17
  * Whether this value in the filter is disabled or not
13
18
  * @type {boolean}
@@ -38,6 +43,21 @@ class FilterDimensionSetValue extends LitElement {
38
43
  this.text = '';
39
44
  }
40
45
 
46
+ get count() {
47
+ return this._count;
48
+ }
49
+
50
+ set count(val) {
51
+ if (val < 0) val = 0;
52
+ if (!Number.isInteger(val)) val = Math.floor(val);
53
+ if (Number.isNaN(val)) val = undefined;
54
+ const oldVal = this._count;
55
+ if (oldVal !== val) {
56
+ this._count = val;
57
+ this.requestUpdate('count', oldVal);
58
+ }
59
+ }
60
+
41
61
  updated(changedProperties) {
42
62
  super.updated(changedProperties);
43
63
 
@@ -45,11 +65,10 @@ class FilterDimensionSetValue extends LitElement {
45
65
  changedProperties.forEach((oldValue, prop) => {
46
66
  if (oldValue === undefined) return;
47
67
 
48
- if (prop === 'disabled' || prop === 'selected' || prop === 'text') {
68
+ if (prop === 'count' || prop === 'disabled' || prop === 'selected' || prop === 'text') {
49
69
  changes.set(prop, this[prop]);
50
70
  }
51
71
  });
52
-
53
72
  if (changes.size > 0) {
54
73
  /** @ignore */
55
74
  this.dispatchEvent(new CustomEvent('d2l-filter-dimension-set-value-data-change', {
@@ -59,7 +78,6 @@ class FilterDimensionSetValue extends LitElement {
59
78
  }));
60
79
  }
61
80
  }
62
-
63
81
  }
64
82
 
65
83
  customElements.define('d2l-filter-dimension-set-value', FilterDimensionSetValue);
@@ -103,6 +103,7 @@ class FilterDimensionSet extends LitElement {
103
103
  const valueNodes = this._getSlottedNodes();
104
104
  const values = valueNodes.map(value => {
105
105
  return {
106
+ count: value.count,
106
107
  disabled: value.disabled,
107
108
  key: value.key,
108
109
  selected: value.selected,
@@ -16,10 +16,11 @@ import '../selection/selection-select-all.js';
16
16
  import '../selection/selection-summary.js';
17
17
 
18
18
  import { bodyCompactStyles, bodySmallStyles, bodyStandardStyles } from '../typography/styles.js';
19
- import { css, html, LitElement } from 'lit';
19
+ import { css, html, LitElement, nothing } from 'lit';
20
20
  import { announce } from '../../helpers/announce.js';
21
21
  import { classMap } from 'lit/directives/class-map.js';
22
22
  import { FocusMixin } from '../../mixins/focus-mixin.js';
23
+ import { formatNumber } from '@brightspace-ui/intl/lib/number.js';
23
24
  import { ifDefined } from 'lit/directives/if-defined.js';
24
25
  import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
25
26
  import { offscreenStyles } from '../offscreen/offscreen.js';
@@ -120,12 +121,16 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
120
121
  white-space: nowrap;
121
122
  }
122
123
 
123
- .d2l-filter-dimension-set-value-text {
124
+ .d2l-filter-dimension-set-value {
124
125
  color: var(--d2l-color-ferrite);
126
+ display: flex;
127
+ gap: 0.45rem;
125
128
  line-height: unset;
129
+ overflow: hidden;
126
130
  }
127
131
 
128
- d2l-list-item[disabled] .d2l-filter-dimension-set-value-text {
132
+ d2l-list-item[disabled] .d2l-filter-dimension-set-value,
133
+ d2l-list-item[disabled] .d2l-body-small {
129
134
  color: var(--d2l-color-chromite);
130
135
  }
131
136
 
@@ -417,7 +422,10 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
417
422
  label="${item.text}"
418
423
  selectable
419
424
  ?selected="${item.selected}">
420
- <div class="d2l-filter-dimension-set-value-text d2l-body-compact">${item.text}</div>
425
+ <div class="d2l-filter-dimension-set-value d2l-body-compact">
426
+ <div class="d2l-filter-dimension-set-value-text">${item.text}</div>
427
+ ${item.count !== undefined ? html`<div class="d2l-body-small">(${formatNumber(item.count)})</div>` : nothing}
428
+ </div>
421
429
  </d2l-list-item>
422
430
  `)}
423
431
  </d2l-list>
@@ -3262,6 +3262,11 @@
3262
3262
  "description": "REQUIRED: Unique key to represent this value in the dimension",
3263
3263
  "type": "string"
3264
3264
  },
3265
+ {
3266
+ "name": "count",
3267
+ "description": "Count for the value in the list. If no count is provided, no count will be displayed",
3268
+ "type": "number"
3269
+ },
3265
3270
  {
3266
3271
  "name": "disabled",
3267
3272
  "description": "Whether this value in the filter is disabled or not",
@@ -3288,6 +3293,12 @@
3288
3293
  "description": "REQUIRED: Unique key to represent this value in the dimension",
3289
3294
  "type": "string"
3290
3295
  },
3296
+ {
3297
+ "name": "count",
3298
+ "attribute": "count",
3299
+ "description": "Count for the value in the list. If no count is provided, no count will be displayed",
3300
+ "type": "number"
3301
+ },
3291
3302
  {
3292
3303
  "name": "disabled",
3293
3304
  "attribute": "disabled",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "2.52.1",
3
+ "version": "2.53.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",