@brightspace-ui/core 2.125.0 → 2.126.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.
|
@@ -13,8 +13,9 @@ class FilterSearchDemo extends LitElement {
|
|
|
13
13
|
|
|
14
14
|
constructor() {
|
|
15
15
|
super();
|
|
16
|
-
this._fullData =
|
|
17
|
-
this._fullDataSingle =
|
|
16
|
+
this._fullData = JSON.parse(JSON.stringify(initialData));
|
|
17
|
+
this._fullDataSingle = JSON.parse(JSON.stringify(initialData));
|
|
18
|
+
this._fullDataInitialSubset = JSON.parse(JSON.stringify(initialData));
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
render() {
|
|
@@ -40,6 +41,11 @@ class FilterSearchDemo extends LitElement {
|
|
|
40
41
|
<d2l-filter-dimension-set-value key="${value.key}" text="${value.text}" ?selected="${value.selected}"></d2l-filter-dimension-set-value>
|
|
41
42
|
`)}
|
|
42
43
|
</d2l-filter-dimension-set>
|
|
44
|
+
<d2l-filter-dimension-set key="event-initial-subset" text="Event on Search - Initial Subset" search-type="manual" header-text="Related Roles at D2L" selected-first>
|
|
45
|
+
${this._fullDataInitialSubset.map(value => html`
|
|
46
|
+
<d2l-filter-dimension-set-value key="${value.key}" text="${value.text}" ?selected="${value.selected}"></d2l-filter-dimension-set-value>
|
|
47
|
+
`)}
|
|
48
|
+
</d2l-filter-dimension-set>
|
|
43
49
|
<d2l-filter-dimension-set key="auto" text="Automatic Search" search-type="automatic">
|
|
44
50
|
<d2l-filter-dimension-set-value key="admin" text="Admin"></d2l-filter-dimension-set-value>
|
|
45
51
|
<d2l-filter-dimension-set-value key="instructor" text="Instructor"></d2l-filter-dimension-set-value>
|
|
@@ -60,7 +66,12 @@ class FilterSearchDemo extends LitElement {
|
|
|
60
66
|
e.detail.dimensions.forEach(dimension => {
|
|
61
67
|
if (!dimension.dimensionKey.includes('event')) return;
|
|
62
68
|
|
|
63
|
-
const
|
|
69
|
+
const dataToUpdateMap = {
|
|
70
|
+
'event': this._fullData,
|
|
71
|
+
'event-single': this._fullDataSingle,
|
|
72
|
+
'event-initial-subset': this._fullDataInitialSubset,
|
|
73
|
+
};
|
|
74
|
+
const dataToUpdate = dataToUpdateMap[dimension.dimensionKey];
|
|
64
75
|
if (dimension.cleared) {
|
|
65
76
|
dataToUpdate.forEach(value => value.selected = false);
|
|
66
77
|
} else {
|
|
@@ -71,6 +82,7 @@ class FilterSearchDemo extends LitElement {
|
|
|
71
82
|
if (e.detail.allCleared) {
|
|
72
83
|
console.log('(All dimensions cleared)'); // eslint-disable-line no-console
|
|
73
84
|
}
|
|
85
|
+
this.requestUpdate();
|
|
74
86
|
}
|
|
75
87
|
|
|
76
88
|
_handleFirstOpen(e) {
|
|
@@ -81,12 +93,15 @@ class FilterSearchDemo extends LitElement {
|
|
|
81
93
|
_handleSearch(e) {
|
|
82
94
|
if (!e.detail.key.includes('event')) return;
|
|
83
95
|
|
|
84
|
-
|
|
85
|
-
this.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
96
|
+
let keysToDisplay = [];
|
|
97
|
+
if (e.detail.key === 'event-initial-subset') keysToDisplay = this._performInitialSubsetSearch(e.detail.value);
|
|
98
|
+
else {
|
|
99
|
+
this._fullData.forEach(value => {
|
|
100
|
+
if (value.text.toLowerCase().indexOf(e.detail.value.toLowerCase()) > -1) {
|
|
101
|
+
keysToDisplay.push(value.key);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
90
105
|
|
|
91
106
|
setTimeout(() => {
|
|
92
107
|
e.detail.searchCompleteCallback({ keysToDisplay: keysToDisplay });
|
|
@@ -96,5 +111,25 @@ class FilterSearchDemo extends LitElement {
|
|
|
96
111
|
|
|
97
112
|
}
|
|
98
113
|
|
|
114
|
+
_performInitialSubsetSearch(searchValue) {
|
|
115
|
+
const initialSubset = ['admin', 'instructor'];
|
|
116
|
+
let keysToDisplay = [];
|
|
117
|
+
if (searchValue === '') {
|
|
118
|
+
keysToDisplay = initialSubset;
|
|
119
|
+
this._fullDataInitialSubset.forEach(value => {
|
|
120
|
+
if (value.selected) {
|
|
121
|
+
if (!keysToDisplay.includes(value.key)) keysToDisplay.push(value.key);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
} else {
|
|
125
|
+
this._fullDataInitialSubset.forEach(value => {
|
|
126
|
+
if (value.text.toLowerCase().indexOf(searchValue.toLowerCase()) > -1) {
|
|
127
|
+
keysToDisplay.push(value.key);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return keysToDisplay;
|
|
132
|
+
}
|
|
133
|
+
|
|
99
134
|
}
|
|
100
135
|
customElements.define('d2l-filter-search-demo', FilterSearchDemo);
|
|
@@ -590,10 +590,13 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
590
590
|
this._activeFiltersSubscribers.updateSubscribers();
|
|
591
591
|
}
|
|
592
592
|
|
|
593
|
-
_dispatchDimensionFirstOpenEvent(
|
|
594
|
-
if (!this._openedDimensions.includes(key)) {
|
|
595
|
-
this.dispatchEvent(new CustomEvent('d2l-filter-dimension-first-open', { bubbles: true, composed: false, detail: { key: key } }));
|
|
596
|
-
|
|
593
|
+
_dispatchDimensionFirstOpenEvent(dimension) {
|
|
594
|
+
if (!this._openedDimensions.includes(dimension.key)) {
|
|
595
|
+
this.dispatchEvent(new CustomEvent('d2l-filter-dimension-first-open', { bubbles: true, composed: false, detail: { key: dimension.key } }));
|
|
596
|
+
if (dimension.searchType === 'manual') {
|
|
597
|
+
this._search(dimension);
|
|
598
|
+
}
|
|
599
|
+
this._openedDimensions.push(dimension.key);
|
|
597
600
|
}
|
|
598
601
|
}
|
|
599
602
|
|
|
@@ -636,7 +639,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
636
639
|
this._dimensions.forEach(dimension => {
|
|
637
640
|
if (dimension.searchType !== 'none' && dimension.searchValue !== '') {
|
|
638
641
|
dimension.searchValue = '';
|
|
639
|
-
this.
|
|
642
|
+
this._search(dimension);
|
|
640
643
|
}
|
|
641
644
|
this._performDimensionClear(dimension);
|
|
642
645
|
});
|
|
@@ -675,7 +678,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
675
678
|
}
|
|
676
679
|
this._activeFiltersSubscribers.updateSubscribers();
|
|
677
680
|
} else if (prop === 'values') {
|
|
678
|
-
if (dimension.searchValue) shouldSearch = true;
|
|
681
|
+
if (dimension.searchValue || dimension.searchType === 'manual') shouldSearch = true;
|
|
679
682
|
shouldRecount = true;
|
|
680
683
|
shouldResizeDropdown = true;
|
|
681
684
|
this._activeFiltersSubscribers.updateSubscribers();
|
|
@@ -718,7 +721,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
718
721
|
const dimension = this._dimensions.find(dimension => dimension.key === this._activeDimensionKey);
|
|
719
722
|
if (dimension.introductoryText) announce(dimension.introductoryText);
|
|
720
723
|
if (dimension.selectedFirst) this._updateDimensionShouldBubble(dimension);
|
|
721
|
-
this._dispatchDimensionFirstOpenEvent(
|
|
724
|
+
this._dispatchDimensionFirstOpenEvent(dimension);
|
|
722
725
|
}
|
|
723
726
|
|
|
724
727
|
_handleDropdownClose(e) {
|
|
@@ -730,8 +733,9 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
730
733
|
_handleDropdownOpen(e) {
|
|
731
734
|
this.opened = true;
|
|
732
735
|
if (this._dimensions.length === 1) {
|
|
733
|
-
this.
|
|
734
|
-
|
|
736
|
+
const dimension = this._dimensions[0];
|
|
737
|
+
this._dispatchDimensionFirstOpenEvent(dimension);
|
|
738
|
+
if (dimension.introductoryText) announce(dimension.introductoryText);
|
|
735
739
|
}
|
|
736
740
|
this._stopPropagation(e);
|
|
737
741
|
}
|
|
@@ -752,31 +756,7 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
752
756
|
if (dimension.selectedFirst) {
|
|
753
757
|
this._updateDimensionShouldBubble(dimension);
|
|
754
758
|
}
|
|
755
|
-
|
|
756
|
-
if (dimension.searchType === 'automatic' || searchValue === '') {
|
|
757
|
-
this._performDimensionSearch(dimension);
|
|
758
|
-
} else if (dimension.searchType === 'manual') {
|
|
759
|
-
dimension.loading = true;
|
|
760
|
-
this.requestUpdate();
|
|
761
|
-
|
|
762
|
-
this.dispatchEvent(new CustomEvent('d2l-filter-dimension-search', {
|
|
763
|
-
bubbles: false,
|
|
764
|
-
composed: false,
|
|
765
|
-
detail: {
|
|
766
|
-
key: dimension.key,
|
|
767
|
-
value: searchValue,
|
|
768
|
-
searchCompleteCallback: function({ keysToDisplay = [], displayAllKeys = false } = {}) {
|
|
769
|
-
requestAnimationFrame(() => {
|
|
770
|
-
dimension.displayAllKeys = displayAllKeys;
|
|
771
|
-
dimension.searchKeysToDisplay = keysToDisplay;
|
|
772
|
-
this._performDimensionSearch(dimension);
|
|
773
|
-
dimension.loading = false;
|
|
774
|
-
this.requestUpdate();
|
|
775
|
-
});
|
|
776
|
-
}.bind(this)
|
|
777
|
-
}
|
|
778
|
-
}));
|
|
779
|
-
}
|
|
759
|
+
this._search(dimension);
|
|
780
760
|
}
|
|
781
761
|
|
|
782
762
|
_handleSlotChange(e) {
|
|
@@ -862,7 +842,10 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
862
842
|
switch (dimension.type) {
|
|
863
843
|
case 'd2l-filter-dimension-set':
|
|
864
844
|
dimension.values.forEach(value => {
|
|
865
|
-
if (
|
|
845
|
+
if (
|
|
846
|
+
(dimension.searchType === 'automatic' && dimension.searchValue === '')
|
|
847
|
+
|| dimension.displayAllKeys
|
|
848
|
+
) {
|
|
866
849
|
value.hidden = false;
|
|
867
850
|
return;
|
|
868
851
|
}
|
|
@@ -886,6 +869,33 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
|
886
869
|
}
|
|
887
870
|
}
|
|
888
871
|
|
|
872
|
+
_search(dimension) {
|
|
873
|
+
if (dimension.searchType === 'automatic') {
|
|
874
|
+
this._performDimensionSearch(dimension);
|
|
875
|
+
} else if (dimension.searchType === 'manual') {
|
|
876
|
+
dimension.loading = true;
|
|
877
|
+
this.requestUpdate();
|
|
878
|
+
|
|
879
|
+
this.dispatchEvent(new CustomEvent('d2l-filter-dimension-search', {
|
|
880
|
+
bubbles: false,
|
|
881
|
+
composed: false,
|
|
882
|
+
detail: {
|
|
883
|
+
key: dimension.key,
|
|
884
|
+
value: dimension.searchValue,
|
|
885
|
+
searchCompleteCallback: function({ keysToDisplay = [], displayAllKeys = false } = {}) {
|
|
886
|
+
requestAnimationFrame(() => {
|
|
887
|
+
dimension.displayAllKeys = displayAllKeys;
|
|
888
|
+
dimension.searchKeysToDisplay = keysToDisplay;
|
|
889
|
+
this._performDimensionSearch(dimension);
|
|
890
|
+
dimension.loading = false;
|
|
891
|
+
this.requestUpdate();
|
|
892
|
+
});
|
|
893
|
+
}.bind(this)
|
|
894
|
+
}
|
|
895
|
+
}));
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
|
|
889
899
|
_setDimensionChangeEvent(dimension, change, dimensionCleared) {
|
|
890
900
|
if (!this._changeEventsToDispatch.has(dimension.key)) {
|
|
891
901
|
this._changeEventsToDispatch.set(dimension.key, { dimensionKey: dimension.key, cleared: false, changes: new Map() });
|
|
@@ -460,7 +460,7 @@ class InputText extends FocusMixin(LabelledMixin(FormElementMixin(SkeletonMixin(
|
|
|
460
460
|
|
|
461
461
|
let tooltip = nothing;
|
|
462
462
|
if (this.validationError && !this.skeleton && !this.noValidate) {
|
|
463
|
-
tooltip = html`<d2l-tooltip state="error" align="start">${this.validationError} <span class="d2l-offscreen">${this.description}</span></d2l-tooltip>`;
|
|
463
|
+
tooltip = html`<d2l-tooltip state="error" announced align="start">${this.validationError} <span class="d2l-offscreen">${this.description}</span></d2l-tooltip>`;
|
|
464
464
|
}
|
|
465
465
|
|
|
466
466
|
return html`${tooltip}${label}${input}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightspace-ui/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.126.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",
|