@brightspace-ui/core 2.52.0 → 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.
- package/components/filter/README.md +37 -8
- package/components/filter/demo/filter.html +24 -24
- package/components/filter/filter-dimension-set-value.js +21 -3
- package/components/filter/filter-dimension-set.js +1 -0
- package/components/filter/filter.js +12 -4
- package/custom-elements.json +11 -0
- package/package.json +2 -2
|
@@ -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
|
-
##
|
|
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
|
-
##
|
|
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="
|
|
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
|
|
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
|
|
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
|
|
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>
|
package/custom-elements.json
CHANGED
|
@@ -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.
|
|
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",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"@formatjs/intl-pluralrules": "^1",
|
|
65
65
|
"@open-wc/dedupe-mixin": "^1",
|
|
66
66
|
"focus-visible": "^5",
|
|
67
|
-
"ifrau": "^0.
|
|
67
|
+
"ifrau": "^0.40",
|
|
68
68
|
"intl-messageformat": "^7",
|
|
69
69
|
"lit": "^2",
|
|
70
70
|
"prismjs": "^1",
|