@brightspace-ui/core 3.173.0 → 3.174.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/demo/demo-flags.js +10 -0
- package/components/demo/demo-page.js +92 -13
- package/components/dropdown/demo/dropdown-menu.html +0 -7
- package/components/dropdown/demo/dropdown-tabs.html +0 -7
- package/components/dropdown/demo/dropdown.html +0 -7
- package/components/empty-state/empty-state-illustrated.js +4 -0
- package/components/filter/demo/filter.html +0 -7
- package/components/inputs/demo/input-date.html +0 -7
- package/components/menu/demo/menu.html +0 -6
- package/components/scroll-wrapper/demo/scroll-wrapper.html +0 -5
- package/components/table/demo/table.html +0 -5
- package/components/tabs/demo/tabs.html +18 -0
- package/components/tooltip/demo/tooltip.html +1 -6
- package/helpers/README.md +17 -0
- package/helpers/flags.js +31 -2
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { mockFlag } from '../../helpers/flags.js';
|
|
2
|
+
|
|
3
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
4
|
+
|
|
5
|
+
urlParams.forEach((value, key) => {
|
|
6
|
+
if (!key.startsWith('demo-flag-')) return;
|
|
7
|
+
key = key.substring(10);
|
|
8
|
+
if (value?.toLowerCase?.() === 'true') mockFlag(key, true);
|
|
9
|
+
else if (value?.toLowerCase?.() === 'false') mockFlag(key, false);
|
|
10
|
+
});
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
import './demo-flags.js';
|
|
2
|
+
import '../button/button.js';
|
|
1
3
|
import './demo-snippet.js';
|
|
4
|
+
import '../inputs/input-checkbox-group.js';
|
|
5
|
+
import '../inputs/input-checkbox.js';
|
|
2
6
|
import './code-view.js';
|
|
7
|
+
import '../collapsible-panel/collapsible-panel.js';
|
|
8
|
+
import '../collapsible-panel/collapsible-panel-summary-item.js';
|
|
3
9
|
import '../colors/colors.js';
|
|
4
10
|
import '../typography/typography.js';
|
|
5
11
|
import { css, html, LitElement } from 'lit';
|
|
6
12
|
import { getDocumentLocaleSettings, supportedLocalesDetails } from '@brightspace-ui/intl/lib/common.js';
|
|
13
|
+
import { getFlagOverrides, getKnownFlags } from '../../helpers/flags.js';
|
|
7
14
|
import { classMap } from 'lit/directives/class-map.js';
|
|
8
|
-
import { heading2Styles } from '../typography/styles.js';
|
|
9
15
|
import { inputLabelStyles } from '../inputs/input-label-styles.js';
|
|
10
16
|
import { selectStyles } from '../inputs/input-select-styles.js';
|
|
11
17
|
|
|
@@ -32,7 +38,7 @@ class DemoPage extends LitElement {
|
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
static get styles() {
|
|
35
|
-
return [
|
|
41
|
+
return [ inputLabelStyles, selectStyles, css`
|
|
36
42
|
:host {
|
|
37
43
|
background-color: var(--d2l-color-sylvite);
|
|
38
44
|
display: block;
|
|
@@ -49,9 +55,8 @@ class DemoPage extends LitElement {
|
|
|
49
55
|
margin-bottom: 1.5rem;
|
|
50
56
|
max-width: 900px;
|
|
51
57
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
margin: 0;
|
|
58
|
+
d2l-collapsible-panel {
|
|
59
|
+
width: 100%;
|
|
55
60
|
}
|
|
56
61
|
.d2l-input-label {
|
|
57
62
|
margin-bottom: 0;
|
|
@@ -68,20 +73,36 @@ class DemoPage extends LitElement {
|
|
|
68
73
|
.d2l-demo-page-content > ::slotted(d2l-demo-snippet) {
|
|
69
74
|
margin-bottom: 36px;
|
|
70
75
|
}
|
|
76
|
+
|
|
77
|
+
#applyFlagsButton {
|
|
78
|
+
margin-block-start: 1rem;
|
|
79
|
+
}
|
|
71
80
|
`];
|
|
72
81
|
}
|
|
73
82
|
|
|
83
|
+
constructor() {
|
|
84
|
+
super();
|
|
85
|
+
this.#handleFlagsKnownBound = this.#handleFlagsKnown.bind(this);
|
|
86
|
+
}
|
|
87
|
+
|
|
74
88
|
connectedCallback() {
|
|
75
89
|
super.connectedCallback();
|
|
76
90
|
const title = document.createElement('title');
|
|
77
91
|
title.textContent = this.pageTitle;
|
|
78
92
|
document.head.insertBefore(title, document.head.firstChild);
|
|
93
|
+
document.addEventListener('d2l-flags-known', this.#handleFlagsKnownBound);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
disconnectedCallback() {
|
|
97
|
+
super.disconnectedCallback();
|
|
98
|
+
document.removeEventListener('d2l-flags-known', this.#handleFlagsKnownBound);
|
|
79
99
|
}
|
|
80
100
|
|
|
81
101
|
render() {
|
|
82
102
|
const classes = {
|
|
83
103
|
'no-scroll': this._noScroll
|
|
84
104
|
};
|
|
105
|
+
|
|
85
106
|
let selectedLanguageCode = getDocumentLocaleSettings().language;
|
|
86
107
|
if (selectedLanguageCode === 'en') selectedLanguageCode = 'en-us';
|
|
87
108
|
let foundSelected = false;
|
|
@@ -90,21 +111,79 @@ class DemoPage extends LitElement {
|
|
|
90
111
|
foundSelected = foundSelected || selected;
|
|
91
112
|
return html`<option value="${l.code}" ?selected="${selected}">${l.code} - ${l.name}</option>`;
|
|
92
113
|
});
|
|
114
|
+
|
|
115
|
+
const knownFlags = this.#getKnownFlagsSorted();
|
|
116
|
+
const knownFlagCheckboxes = [];
|
|
117
|
+
knownFlags.forEach((knownFlag, key) => {
|
|
118
|
+
knownFlagCheckboxes.push(html`<d2l-input-checkbox label="${key}" data-flag-key="${key}" ?checked="${knownFlag.value}"></d2l-input-checkbox>`);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const flagOverrides = getFlagOverrides();
|
|
122
|
+
const flagOverrideItems = [];
|
|
123
|
+
flagOverrides.forEach((value, key) => {
|
|
124
|
+
const knownFlag = knownFlags.get(key);
|
|
125
|
+
const defaultValue = knownFlag ? knownFlag.defaultValue : 'unknown';
|
|
126
|
+
flagOverrideItems.push(html`<d2l-collapsible-panel-summary-item slot="summary" text="${key} (default: ${defaultValue}; override: ${value})"></d2l-collapsible-panel-summary-item>`);
|
|
127
|
+
});
|
|
128
|
+
|
|
93
129
|
return html`
|
|
94
130
|
<header>
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
131
|
+
<d2l-collapsible-panel panel-title="${this.pageTitle}" heading-level="1" heading-style="3" type="subtle">
|
|
132
|
+
<label class="d2l-input-label" slot="actions">
|
|
133
|
+
Language:
|
|
134
|
+
<select class="d2l-input-select" @change="${this.#handleLanguageChange}">${languageOptions}</select>
|
|
135
|
+
</label>
|
|
136
|
+
${knownFlagCheckboxes.length > 0 ? html`
|
|
137
|
+
<d2l-input-checkbox-group id="flagsCheckboxGroup" label="Flags">
|
|
138
|
+
${knownFlagCheckboxes}
|
|
139
|
+
</d2l-input-checkbox-group>
|
|
140
|
+
<d2l-button id="applyFlagsButton" @click="${this.#handleApplyFlagsClick}">Apply</d2l-button>
|
|
141
|
+
` : 'No known flags'}
|
|
142
|
+
${flagOverrideItems}
|
|
143
|
+
</d2l-collapsible-panel>
|
|
100
144
|
</header>
|
|
101
145
|
<main class="${classMap(classes)}">
|
|
102
|
-
<div class="d2l-demo-page-content" @d2l-demo-snippet-fullscreen-toggle="${this
|
|
146
|
+
<div class="d2l-demo-page-content" @d2l-demo-snippet-fullscreen-toggle="${this.#handleFullscreenToggle}"><slot></slot></div>
|
|
103
147
|
</main>
|
|
104
148
|
`;
|
|
105
149
|
}
|
|
106
150
|
|
|
107
|
-
|
|
151
|
+
#handleFlagsKnownBound;
|
|
152
|
+
|
|
153
|
+
#getKnownFlagsSorted() {
|
|
154
|
+
return new Map([...getKnownFlags().entries()].sort((entry1, entry2) => {
|
|
155
|
+
const key1 = entry1[0].toLowerCase();
|
|
156
|
+
const key2 = entry2[0].toLowerCase();
|
|
157
|
+
if (key1 < key2) return -1;
|
|
158
|
+
else if (key1 > key2) return 1;
|
|
159
|
+
else return 0;
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
#handleApplyFlagsClick() {
|
|
164
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
165
|
+
const elems = [...this.shadowRoot.querySelectorAll('#flagsCheckboxGroup > d2l-input-checkbox')];
|
|
166
|
+
|
|
167
|
+
const knownFlags = getKnownFlags();
|
|
168
|
+
elems.forEach(elem => {
|
|
169
|
+
const key = elem.dataset.flagKey;
|
|
170
|
+
const flag = knownFlags.get(key);
|
|
171
|
+
|
|
172
|
+
if (flag.defaultValue === elem.checked) {
|
|
173
|
+
urlParams.delete(`demo-flag-${key}`);
|
|
174
|
+
} else if (flag.defaultValue !== elem.checked) {
|
|
175
|
+
urlParams.set(`demo-flag-${key}`, elem.checked);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
window.location.search = urlParams.toString();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
#handleFlagsKnown() {
|
|
183
|
+
this.requestUpdate();
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async #handleFullscreenToggle() {
|
|
108
187
|
if (this._noScroll) {
|
|
109
188
|
this._noScroll = false;
|
|
110
189
|
await this.updateComplete;
|
|
@@ -116,7 +195,7 @@ class DemoPage extends LitElement {
|
|
|
116
195
|
}
|
|
117
196
|
}
|
|
118
197
|
|
|
119
|
-
|
|
198
|
+
#handleLanguageChange(e) {
|
|
120
199
|
const newLanguageCode = e.target[e.target.selectedIndex].value;
|
|
121
200
|
document.documentElement.dir = newLanguageCode === 'ar-sa' ? 'rtl' : 'ltr';
|
|
122
201
|
document.documentElement.lang = newLanguageCode;
|
|
@@ -5,13 +5,6 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
8
|
-
<script>
|
|
9
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
10
|
-
window.D2L = { LP: { Web: { UI: { Flags: { Flag: (key) => {
|
|
11
|
-
if (key === 'GAUD-7472-dropdown-popover') return (urlParams.get('popover') === 'true');
|
|
12
|
-
return false;
|
|
13
|
-
} } } } } };
|
|
14
|
-
</script>
|
|
15
8
|
<script type="module">
|
|
16
9
|
import '../../demo/demo-page.js';
|
|
17
10
|
import '../../menu/menu.js';
|
|
@@ -5,13 +5,6 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
8
|
-
<script>
|
|
9
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
10
|
-
window.D2L = { LP: { Web: { UI: { Flags: { Flag: (key) => {
|
|
11
|
-
if (key === 'GAUD-7472-dropdown-popover') return (urlParams.get('popover') === 'true');
|
|
12
|
-
return false;
|
|
13
|
-
} } } } } };
|
|
14
|
-
</script>
|
|
15
8
|
<script type="module">
|
|
16
9
|
import '../../demo/demo-page.js';
|
|
17
10
|
import '../../tabs/tabs.js';
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
7
|
-
<script>
|
|
8
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
9
|
-
window.D2L = { LP: { Web: { UI: { Flags: { Flag: (key) => {
|
|
10
|
-
if (key === 'GAUD-7472-dropdown-popover') return (urlParams.get('popover') === 'true');
|
|
11
|
-
return false;
|
|
12
|
-
} } } } } };
|
|
13
|
-
</script>
|
|
14
7
|
<script type="module">
|
|
15
8
|
import '../../demo/demo-page.js';
|
|
16
9
|
import '../../button/button.js';
|
|
@@ -82,6 +82,10 @@ class EmptyStateIllustrated extends LoadingCompleteMixin(EmptyStateMixin(LitElem
|
|
|
82
82
|
_onResize(entries) {
|
|
83
83
|
if (!entries || entries.length === 0) return;
|
|
84
84
|
const entry = entries[0];
|
|
85
|
+
|
|
86
|
+
const width = entry.contentRect.width;
|
|
87
|
+
if (width === 0) return; // ignore until visible
|
|
88
|
+
|
|
85
89
|
requestAnimationFrame(() => {
|
|
86
90
|
this._contentHeight = Math.min(entry.contentRect.right / illustrationAspectRatio, 330);
|
|
87
91
|
this._titleSmall = entry.contentRect.right <= 615;
|
|
@@ -3,13 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
<head>
|
|
5
5
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
6
|
-
<script>
|
|
7
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
8
|
-
window.D2L = { LP: { Web: { UI: { Flags: { Flag: (key) => {
|
|
9
|
-
if (key === 'GAUD-7472-dropdown-popover') return (urlParams.get('popover') === 'true');
|
|
10
|
-
return false;
|
|
11
|
-
} } } } } };
|
|
12
|
-
</script>
|
|
13
6
|
<script type="module">
|
|
14
7
|
import '../../demo/demo-page.js';
|
|
15
8
|
import '../../button/button.js';
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
7
|
-
<script>
|
|
8
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
9
|
-
window.D2L = { LP: { Web: { UI: { Flags: { Flag: (key) => {
|
|
10
|
-
if (key === 'GAUD-7472-dropdown-popover') return (urlParams.get('popover') === 'true');
|
|
11
|
-
return false;
|
|
12
|
-
} } } } } };
|
|
13
|
-
</script>
|
|
14
7
|
<script type="module">
|
|
15
8
|
import '../../demo/demo-page.js';
|
|
16
9
|
import '../input-date.js';
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
7
|
-
<script type="module">
|
|
8
|
-
import { mockFlag } from '../../../helpers/flags.js';
|
|
9
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
10
|
-
mockFlag('GAUD-8295-menu-item-link-new-window-icon', urlParams.get('link-new-window-icon') === 'true');
|
|
11
|
-
mockFlag('GAUD-8369-menu-item-link-click-changes', urlParams.get('link-click-changes') === 'true');
|
|
12
|
-
</script>
|
|
13
7
|
<script type="module">
|
|
14
8
|
import '../../demo/demo-page.js';
|
|
15
9
|
import './custom-menu-item.js';
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
7
|
-
<script type="module">
|
|
8
|
-
import { mockFlag } from '../../../helpers/flags.js';
|
|
9
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
10
|
-
mockFlag('GAUD-8263-scroll-wrapper-media-print', urlParams.get('media-query-print') === 'true');
|
|
11
|
-
</script>
|
|
12
7
|
<script type="module">
|
|
13
8
|
import '../../demo/demo-page.js';
|
|
14
9
|
import './scroll-wrapper-test.js';
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
7
|
-
<script type="module">
|
|
8
|
-
import { mockFlag } from '../../../helpers/flags.js';
|
|
9
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
10
|
-
mockFlag('GAUD-8263-scroll-wrapper-media-print', urlParams.get('media-query-print') === 'true');
|
|
11
|
-
</script>
|
|
12
7
|
<script type="module">
|
|
13
8
|
import '../../demo/demo-page.js';
|
|
14
9
|
import './table-test.js';
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import '../../count-badge/count-badge.js';
|
|
11
11
|
import '../../dropdown/dropdown-button-subtle.js';
|
|
12
12
|
import '../../dropdown/dropdown-menu.js';
|
|
13
|
+
import '../../empty-state/empty-state-illustrated.js';
|
|
13
14
|
import '../../menu/menu.js';
|
|
14
15
|
import '../../menu/menu-item.js';
|
|
15
16
|
import '../tab.js';
|
|
@@ -389,6 +390,23 @@
|
|
|
389
390
|
</template>
|
|
390
391
|
</d2l-demo-snippet>
|
|
391
392
|
|
|
393
|
+
<h2>Tabs (simple empty illustrated)</h2>
|
|
394
|
+
|
|
395
|
+
<d2l-demo-snippet>
|
|
396
|
+
<template>
|
|
397
|
+
<d2l-tabs text="Simple Empty States">
|
|
398
|
+
<d2l-tab id="simple-empty-one" slot="tabs" text="One"></d2l-tab>
|
|
399
|
+
<d2l-tab id="simple-empty-two" slot="tabs" text="Two"></d2l-tab>
|
|
400
|
+
<d2l-tab-panel labelled-by="simple-empty-one" slot="panels">
|
|
401
|
+
<d2l-empty-state-illustrated illustration-name="race" title-text="No Items in First Tab" description="none"></d2l-empty-state-illustrated>
|
|
402
|
+
</d2l-tab-panel>
|
|
403
|
+
<d2l-tab-panel labelled-by="simple-empty-two" slot="panels">
|
|
404
|
+
<d2l-empty-state-illustrated illustration-name="calendar" title-text="No Items in Second Tab" description="none"></d2l-empty-state-illustrated>
|
|
405
|
+
</d2l-tab-panel>
|
|
406
|
+
</d2l-tabs>
|
|
407
|
+
</template>
|
|
408
|
+
</d2l-demo-snippet>
|
|
409
|
+
|
|
392
410
|
<h2>Tabs (deprecated structure)</h2>
|
|
393
411
|
|
|
394
412
|
<d2l-demo-snippet>
|
|
@@ -6,14 +6,9 @@
|
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
|
8
8
|
<script type="module">
|
|
9
|
-
import
|
|
10
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
11
|
-
mockFlag('GAUD-7355-tooltip-popover', urlParams.get('popover') === 'true');
|
|
12
|
-
</script>
|
|
13
|
-
<script type="module">
|
|
9
|
+
import '../../demo/demo-page.js';
|
|
14
10
|
import '../../button/button.js';
|
|
15
11
|
import '../../colors/colors.js';
|
|
16
|
-
import '../../demo/demo-page.js';
|
|
17
12
|
import '../../icons/icon-custom.js';
|
|
18
13
|
import '../../inputs/input-text.js';
|
|
19
14
|
import '../../link/link.js';
|
package/helpers/README.md
CHANGED
|
@@ -117,6 +117,23 @@ getFirstVisibleAncestor(node)
|
|
|
117
117
|
querySelectorComposed(node, selector)
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
+
## Flags
|
|
121
|
+
|
|
122
|
+
Helper functions to get and mock flag values.
|
|
123
|
+
|
|
124
|
+
```js
|
|
125
|
+
import { ... } from '@brightspace-ui/core/helpers/flags.js';
|
|
126
|
+
|
|
127
|
+
// returns the flag's mocked, configured, or default value
|
|
128
|
+
getFlag(key, defaultValue);
|
|
129
|
+
|
|
130
|
+
// for demos & tests, sets a mocked value for a flag, to be returned by getFlag
|
|
131
|
+
mockFlag(key, value);
|
|
132
|
+
|
|
133
|
+
// for demos & tests, removes the mocked value for a flag, so that getFlag returns the configured or default value
|
|
134
|
+
resetFlag(key);
|
|
135
|
+
```
|
|
136
|
+
|
|
120
137
|
## Focus
|
|
121
138
|
|
|
122
139
|
Focus helper functions to easily select focusable DOM nodes
|
package/helpers/flags.js
CHANGED
|
@@ -1,16 +1,45 @@
|
|
|
1
|
+
const knownFlags = new Map();
|
|
1
2
|
const flagOverrides = new Map();
|
|
2
3
|
|
|
3
4
|
export function getFlag(key, defaultValue) {
|
|
5
|
+
let value;
|
|
4
6
|
if (flagOverrides.has(key)) {
|
|
5
|
-
|
|
7
|
+
value = flagOverrides.get(key);
|
|
8
|
+
} else {
|
|
9
|
+
value = globalThis.D2L?.LP?.Web?.UI?.Flags.Flag(key, defaultValue) ?? defaultValue;
|
|
6
10
|
}
|
|
7
|
-
|
|
11
|
+
addKnownFlag(key, value, defaultValue);
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getFlagOverrides() {
|
|
16
|
+
return flagOverrides;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function getKnownFlags() {
|
|
20
|
+
return knownFlags;
|
|
8
21
|
}
|
|
9
22
|
|
|
10
23
|
export function mockFlag(key, value) {
|
|
24
|
+
if (knownFlags.has(key)) console.warn(`mockFlag called after getFlag for '${key}'. This is likely to result in unexpected behaviour.`);
|
|
11
25
|
flagOverrides.set(key, value);
|
|
12
26
|
}
|
|
13
27
|
|
|
14
28
|
export function resetFlag(key) {
|
|
15
29
|
flagOverrides.delete(key);
|
|
16
30
|
}
|
|
31
|
+
|
|
32
|
+
let dispatchingKnownFlags = false;
|
|
33
|
+
|
|
34
|
+
function addKnownFlag(key, value, defaultValue) {
|
|
35
|
+
if (!knownFlags.has(key)) knownFlags.set(key, { value, defaultValue });
|
|
36
|
+
|
|
37
|
+
if (dispatchingKnownFlags) return;
|
|
38
|
+
dispatchingKnownFlags = true;
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
globalThis.document.dispatchEvent(new CustomEvent('d2l-flags-known', {
|
|
41
|
+
detail: { flagOverrides, knownFlags }
|
|
42
|
+
}));
|
|
43
|
+
dispatchingKnownFlags = false;
|
|
44
|
+
});
|
|
45
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightspace-ui/core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.174.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",
|