@brightspace-ui/core 1.232.0 → 1.233.3
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/dialog/README.md +1 -1
- package/components/dialog/demo/dialog-confirm.html +20 -0
- package/components/dialog/dialog-confirm.js +14 -2
- package/components/dialog/dialog-mixin.js +2 -2
- package/components/list/list-item-mixin.js +16 -1
- package/custom-elements.json +2 -2
- package/package.json +1 -1
- package/templates/primary-secondary/demo/index.html +23 -1
- package/templates/primary-secondary/primary-secondary.js +0 -2
|
@@ -184,7 +184,7 @@ The `d2l-dialog-confirm` element is a simple confirmation dialog for prompting t
|
|
|
184
184
|
|
|
185
185
|
| Property | Type | Description |
|
|
186
186
|
|--|--|--|
|
|
187
|
-
| `text` | String, required | The
|
|
187
|
+
| `text` | String, required | The text content for the confirmation dialog. Newline characters (` ` in HTML or `\n` in JavaScript) will render as multiple paragraphs. |
|
|
188
188
|
| `opened` | Boolean | Whether or not the dialog is open |
|
|
189
189
|
| `title-text` | String | The optional title for the confirmation dialog |
|
|
190
190
|
|
|
@@ -37,6 +37,26 @@
|
|
|
37
37
|
</template>
|
|
38
38
|
</d2l-demo-snippet>
|
|
39
39
|
|
|
40
|
+
<h2>Confirm Dialog (Multi Paragraph)</h2>
|
|
41
|
+
|
|
42
|
+
<d2l-demo-snippet>
|
|
43
|
+
<template>
|
|
44
|
+
<d2l-button id="openConfirmMultiParagraph">Show Confirm</d2l-button>
|
|
45
|
+
<d2l-dialog-confirm id="confirmMultiParagraph" title-text="Confirm Title" text="Are you sure you want more cookies? Are you sure you want more donuts?">
|
|
46
|
+
<d2l-button slot="footer" primary data-dialog-action="ok">Yes</d2l-button>
|
|
47
|
+
<d2l-button slot="footer" data-dialog-action>No</d2l-button>
|
|
48
|
+
</d2l-dialog-confirm>
|
|
49
|
+
<script>
|
|
50
|
+
document.querySelector('#openConfirmMultiParagraph').addEventListener('click', () => {
|
|
51
|
+
document.querySelector('#confirmMultiParagraph').opened = true;
|
|
52
|
+
});
|
|
53
|
+
document.querySelector('#confirmMultiParagraph').addEventListener('d2l-dialog-close', (e) => {
|
|
54
|
+
console.log('confirm action:', e.detail.action);
|
|
55
|
+
});
|
|
56
|
+
</script>
|
|
57
|
+
</template>
|
|
58
|
+
</d2l-demo-snippet>
|
|
59
|
+
|
|
40
60
|
<h2>Confirm Dialog (No Title)</h2>
|
|
41
61
|
|
|
42
62
|
<d2l-demo-snippet>
|
|
@@ -14,7 +14,7 @@ class DialogConfirm extends DialogMixin(LitElement) {
|
|
|
14
14
|
static get properties() {
|
|
15
15
|
return {
|
|
16
16
|
/**
|
|
17
|
-
* REQUIRED: The text content for the confirmation dialog
|
|
17
|
+
* REQUIRED: The text content for the confirmation dialog. Newline characters (` ` in HTML or `\n` in JavaScript) will render as multiple paragraphs.
|
|
18
18
|
* @type {string}
|
|
19
19
|
*/
|
|
20
20
|
text: { type: String }
|
|
@@ -36,6 +36,18 @@ class DialogConfirm extends DialogMixin(LitElement) {
|
|
|
36
36
|
padding-top: 0;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
.d2l-dialog-content p {
|
|
40
|
+
margin: 1rem 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.d2l-dialog-content p:first-child {
|
|
44
|
+
margin-top: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.d2l-dialog-content p:last-child {
|
|
48
|
+
margin-bottom: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
39
51
|
@media (max-width: 615px), (max-height: 420px) and (max-width: 900px) {
|
|
40
52
|
|
|
41
53
|
dialog.d2l-dialog-outer,
|
|
@@ -65,7 +77,7 @@ class DialogConfirm extends DialogMixin(LitElement) {
|
|
|
65
77
|
<div><h2 id="${this._titleId}" class="d2l-heading-3">${this.titleText}</h2></div>
|
|
66
78
|
</div>` : null}
|
|
67
79
|
<div id="${this._textId}" class="d2l-dialog-content">
|
|
68
|
-
<div>${this.text}</div>
|
|
80
|
+
<div>${this.text ? this.text.split('\n').map(line => html`<p>${line}</p>`) : null}</div>
|
|
69
81
|
</div>
|
|
70
82
|
<div class="d2l-dialog-footer">
|
|
71
83
|
<slot name="footer" class="d2l-dialog-footer-slot"></slot>
|
|
@@ -197,7 +197,7 @@ export const DialogMixin = superclass => class extends RtlMixin(superclass) {
|
|
|
197
197
|
let preferredHeight = 0;
|
|
198
198
|
|
|
199
199
|
const header = this.shadowRoot.querySelector('.d2l-dialog-header');
|
|
200
|
-
if (header) preferredHeight += header.
|
|
200
|
+
if (header) preferredHeight += Math.ceil(header.getBoundingClientRect().height);
|
|
201
201
|
|
|
202
202
|
const contentOuter = this.shadowRoot.querySelector('.d2l-dialog-content');
|
|
203
203
|
const content = this.shadowRoot.querySelector('.d2l-dialog-content > div');
|
|
@@ -210,7 +210,7 @@ export const DialogMixin = superclass => class extends RtlMixin(superclass) {
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
const footer = this.shadowRoot.querySelector('.d2l-dialog-footer');
|
|
213
|
-
if (footer) preferredHeight += footer.
|
|
213
|
+
if (footer) preferredHeight += Math.ceil(footer.getBoundingClientRect().height);
|
|
214
214
|
|
|
215
215
|
const height = (preferredHeight < availableHeight ? preferredHeight : availableHeight);
|
|
216
216
|
return height;
|
|
@@ -73,6 +73,7 @@ export const ListItemMixin = superclass => class extends LocalizeCoreElement(Lis
|
|
|
73
73
|
_breakpoint: { type: Number },
|
|
74
74
|
_displayKeyboardTooltip: { type: Boolean },
|
|
75
75
|
_dropdownOpen: { type: Boolean, attribute: '_dropdown-open', reflect: true },
|
|
76
|
+
_fullscreenWithin: { type: Boolean, attribute: '_fullscreen-within', reflect: true },
|
|
76
77
|
_hoveringPrimaryAction: { type: Boolean },
|
|
77
78
|
_focusing: { type: Boolean },
|
|
78
79
|
_focusingPrimaryAction: { type: Boolean },
|
|
@@ -92,7 +93,8 @@ export const ListItemMixin = superclass => class extends LocalizeCoreElement(Lis
|
|
|
92
93
|
display: none;
|
|
93
94
|
}
|
|
94
95
|
:host([_tooltip-showing]),
|
|
95
|
-
:host([_dropdown-open])
|
|
96
|
+
:host([_dropdown-open]),
|
|
97
|
+
:host([_fullscreen-within]) {
|
|
96
98
|
z-index: 10;
|
|
97
99
|
}
|
|
98
100
|
:host(:first-child) d2l-list-item-generic-layout[data-separators="between"] {
|
|
@@ -275,6 +277,10 @@ export const ListItemMixin = superclass => class extends LocalizeCoreElement(Lis
|
|
|
275
277
|
width: 100%;
|
|
276
278
|
z-index: 5;
|
|
277
279
|
}
|
|
280
|
+
:host([_fullscreen-within]) .d2l-list-item-active-border,
|
|
281
|
+
:host([_fullscreen-within]) d2l-list-item-generic-layout.d2l-focusing + .d2l-list-item-active-border {
|
|
282
|
+
display: none;
|
|
283
|
+
}
|
|
278
284
|
d2l-tooltip > div {
|
|
279
285
|
font-weight: 700;
|
|
280
286
|
}
|
|
@@ -298,6 +304,8 @@ export const ListItemMixin = superclass => class extends LocalizeCoreElement(Lis
|
|
|
298
304
|
this._breakpoint = 0;
|
|
299
305
|
this._contentId = getUniqueId();
|
|
300
306
|
this._displayKeyboardTooltip = false;
|
|
307
|
+
this._fullscreenWithin = false;
|
|
308
|
+
this._fullscreenWithinCount = 0;
|
|
301
309
|
}
|
|
302
310
|
|
|
303
311
|
get breakpoints() {
|
|
@@ -421,6 +429,12 @@ export const ListItemMixin = superclass => class extends LocalizeCoreElement(Lis
|
|
|
421
429
|
this._focusingPrimaryAction = false;
|
|
422
430
|
}
|
|
423
431
|
|
|
432
|
+
_onFullscreenWithin(e) {
|
|
433
|
+
if (e.detail.state) this._fullscreenWithinCount += 1;
|
|
434
|
+
else this._fullscreenWithinCount -= 1;
|
|
435
|
+
this._fullscreenWithin = (this._fullscreenWithinCount > 0);
|
|
436
|
+
}
|
|
437
|
+
|
|
424
438
|
_onMouseEnter() {
|
|
425
439
|
this._hovering = true;
|
|
426
440
|
}
|
|
@@ -460,6 +474,7 @@ export const ListItemMixin = superclass => class extends LocalizeCoreElement(Lis
|
|
|
460
474
|
<d2l-list-item-generic-layout
|
|
461
475
|
@focusin="${this._onFocusIn}"
|
|
462
476
|
@focusout="${this._onFocusOut}"
|
|
477
|
+
@d2l-fullscreen-within="${this._onFullscreenWithin}"
|
|
463
478
|
class="${classMap(classes)}"
|
|
464
479
|
data-breakpoint="${this._breakpoint}"
|
|
465
480
|
data-separators="${ifDefined(this._separators)}"
|
package/custom-elements.json
CHANGED
|
@@ -1460,7 +1460,7 @@
|
|
|
1460
1460
|
"attributes": [
|
|
1461
1461
|
{
|
|
1462
1462
|
"name": "text",
|
|
1463
|
-
"description": "REQUIRED: The text content for the confirmation dialog",
|
|
1463
|
+
"description": "REQUIRED: The text content for the confirmation dialog. Newline characters (` ` in HTML or `\\n` in JavaScript) will render as multiple paragraphs.",
|
|
1464
1464
|
"type": "string"
|
|
1465
1465
|
},
|
|
1466
1466
|
{
|
|
@@ -1479,7 +1479,7 @@
|
|
|
1479
1479
|
{
|
|
1480
1480
|
"name": "text",
|
|
1481
1481
|
"attribute": "text",
|
|
1482
|
-
"description": "REQUIRED: The text content for the confirmation dialog",
|
|
1482
|
+
"description": "REQUIRED: The text content for the confirmation dialog. Newline characters (` ` in HTML or `\\n` in JavaScript) will render as multiple paragraphs.",
|
|
1483
1483
|
"type": "string"
|
|
1484
1484
|
},
|
|
1485
1485
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightspace-ui/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.233.3",
|
|
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",
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
<script type="module">
|
|
8
8
|
import '../../../components/demo/demo-page.js';
|
|
9
9
|
import '../primary-secondary.js';
|
|
10
|
+
import '../../../components/button/button.js';
|
|
11
|
+
import '../../../components/dialog/dialog-fullscreen.js';
|
|
10
12
|
</script>
|
|
11
13
|
</head>
|
|
12
14
|
<body>
|
|
@@ -17,8 +19,28 @@
|
|
|
17
19
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt, velit quis vulputate condimentum, erat nibh accumsan augue, sed rutrum nibh elit et augue. Cras sed purus sit amet tellus gravida cursus eget ac nulla. Sed volutpat volutpat sodales. Mauris sed sodales odio. Aenean sem tortor, aliquam in leo eget, commodo condimentum odio. Pellentesque eu efficitur ante. Cras non diam vitae nibh condimentum egestas. Proin malesuada dapibus dapibus. Nam congue a risus id viverra. Phasellus hendrerit ex diam, eget semper nunc efficitur id. Nullam feugiat libero urna, quis bibendum urna dignissim ac. Donec convallis nulla eu nulla tempor, molestie elementum elit blandit. Ut eget ipsum eget odio elementum commodo.
|
|
18
20
|
</div>
|
|
19
21
|
<div slot="secondary">
|
|
22
|
+
<d2l-button id="open">Show Dialog</d2l-button>
|
|
23
|
+
<d2l-dialog-fullscreen id="dialogFullscreen" title-text="Fullscreen Title">
|
|
24
|
+
<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>
|
|
25
|
+
<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>
|
|
26
|
+
<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>
|
|
27
|
+
<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>
|
|
28
|
+
<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>
|
|
29
|
+
<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>
|
|
30
|
+
<d2l-button slot="footer" primary data-dialog-action="save">Save</d2l-button>
|
|
31
|
+
<d2l-button slot="footer" data-dialog-action>Cancel</d2l-button>
|
|
32
|
+
</d2l-dialog-fullscreen>
|
|
33
|
+
|
|
34
|
+
<script>
|
|
35
|
+
document.querySelector('#open').addEventListener('click', () => {
|
|
36
|
+
document.querySelector('#dialogFullscreen').opened = true;
|
|
37
|
+
});
|
|
38
|
+
document.querySelector('#dialogFullscreen').addEventListener('d2l-dialog-close', (e) => {
|
|
39
|
+
console.log('confirm action:', e.detail.action);
|
|
40
|
+
});
|
|
41
|
+
</script>
|
|
20
42
|
<p>I'm in the <b>secondary</b> slot of the <b>d2l-template-primary-secondary</b> component!</p>
|
|
21
|
-
Quisque justo risus, elementum quis condimentum vitae, venenatis sit amet nisl. Vivamus interdum pretium libero dictum eleifend. Donec eros tortor, facilisis eget maximus in, malesuada a magna. Nulla ac felis turpis. Donec pellentesque est in rhoncus tempus. Proin ac purus porttitor, interdum est a, venenatis mi. Maecenas nunc nulla, viverra ut ornare id, luctus eu nulla. Pellentesque massa turpis, porta ut tincidunt ut, ullamcorper vitae urna. Nam congue euismod placerat. Vestibulum aliquet, metus vitae viverra posuere, lacus urna hendrerit turpis, vel laoreet ligula odio et nisl. Mauris id lectus magna. Sed gravida tincidunt sapien quis dapibus.
|
|
43
|
+
Quisque justo risus, elementum quis condimentum vitae, venenatis sit amet nisl. Vivamus interdum pretium libero dictum eleifend. Donec eros tortor, facilisis eget maximus in, malesuada a magna. Nulla ac felis turpis. Donec pellentesque est in rhoncus tempus. Proin ac purus porttitor, interdum est a, venenatis mi. Maecenas nunc nulla, viverra ut ornare id, luctus eu nulla. Pellentesque massa turpis, porta ut tincidunt ut, ullamcorper vitae urna. Nam congue euismod placerat. Vestibulum aliquet, metus vitae viverra posuere, lacus urna hendrerit turpis, vel laoreet ligula odio et nisl. Mauris id lectus magna. Sed gravida tincidunt sapien quis dapibus.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 spankerDeadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spankerDeadlights 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
|
|
22
44
|
</div>
|
|
23
45
|
<div slot="footer">I'm in the <b>footer</b> slot of the <b>d2l-template-primary-secondary</b> component!</div>
|
|
24
46
|
</d2l-template-primary-secondary>
|
|
@@ -542,7 +542,6 @@ class TemplatePrimarySecondary extends FocusVisiblePolyfillMixin(RtlMixin(Locali
|
|
|
542
542
|
|
|
543
543
|
main {
|
|
544
544
|
flex: 2 0 0;
|
|
545
|
-
-webkit-overflow-scrolling: touch;
|
|
546
545
|
overflow-x: hidden;
|
|
547
546
|
transition: none;
|
|
548
547
|
}
|
|
@@ -570,7 +569,6 @@ class TemplatePrimarySecondary extends FocusVisiblePolyfillMixin(RtlMixin(Locali
|
|
|
570
569
|
aside {
|
|
571
570
|
height: 100%;
|
|
572
571
|
min-width: ${desktopMinSize}px;
|
|
573
|
-
-webkit-overflow-scrolling: touch;
|
|
574
572
|
overflow-x: hidden;
|
|
575
573
|
overflow-y: scroll;
|
|
576
574
|
}
|