@brightspace-ui/core 3.133.1 → 3.134.2
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/filter.js +0 -2
- package/components/list/README.md +27 -18
- package/components/list/demo/demo-list-nav.js +7 -5
- package/components/list/demo/list-nav.html +14 -14
- package/components/list/list-item-link-mixin.js +5 -2
- package/components/list/{list-item-nav-button-mixin.js → list-item-nav-mixin.js} +12 -6
- package/components/list/{list-item-nav-button.js → list-item-nav.js} +3 -3
- package/components/menu/menu-item-mixin.js +4 -2
- package/components/menu/menu.js +3 -2
- package/custom-elements.json +22 -13
- package/package.json +1 -1
@@ -236,7 +236,6 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
236
236
|
this._displayKeyboardTooltip = false;
|
237
237
|
this._minWidth = 285;
|
238
238
|
this._openedDimensions = [];
|
239
|
-
this._resized = false;
|
240
239
|
this._totalAppliedCount = 0;
|
241
240
|
|
242
241
|
this._activeFilters = null;
|
@@ -675,7 +674,6 @@ class Filter extends FocusMixin(LocalizeCoreElement(RtlMixin(LitElement))) {
|
|
675
674
|
this._changeEventsToDispatch = new Map();
|
676
675
|
clearTimeout(this._changeEventTimeout);
|
677
676
|
this._activeFiltersSubscribers.updateSubscribers();
|
678
|
-
this.#handleSearchLayoutUpdated(); // in order to update dropdown position if count-badge size changes pointer position
|
679
677
|
}
|
680
678
|
|
681
679
|
_dispatchChangeEventValueDataChange(dimension, value, valueKey) {
|
@@ -70,7 +70,7 @@ The list components are fairly complex and aim to be usable by all our users. In
|
|
70
70
|
|
71
71
|
* When the `grid` attribute is used on the `d2l-list` component, it enables the list to follow the [Grid Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/grid/). More details on this are [below](#aria-layout-grid).
|
72
72
|
|
73
|
-
* When using the `d2l-list-item-nav
|
73
|
+
* When using the `d2l-list-item-nav` component and/or mixin, usage of the `current` attribute adds the `aria-current` attribute to "page" for the `current` item and "location" for any parent and ancestors of the item. The components work together to keep these attributes up-to-date on subsequent selection.
|
74
74
|
|
75
75
|
* Usage of the new `current` attribute over the existing `selected` attribute corresponds to `aria-current` and also leaves open the possibility of using both `current` and selection behavior together.
|
76
76
|
|
@@ -609,23 +609,23 @@ The `d2l-list-item-button` provides the same functionality as `d2l-list-item` ex
|
|
609
609
|
- `d2l-list-item-expand-collapse-toggled`: dispatched when the item's expand/collapse toggle is clicked
|
610
610
|
<!-- docs: end hidden content -->
|
611
611
|
|
612
|
-
## Navigational
|
612
|
+
## Navigational List Item [d2l-list-item-nav]
|
613
613
|
|
614
|
-
Use a `d2l-list-item-nav
|
614
|
+
Use a `d2l-list-item-nav` if your list serves as a table of contents or is part of a master/details workflow. It provides the same functionality as `d2l-list-item-link` while adding navigation semantics and behaviours. Use the `current` attribute to indicate the currently selected item — see more about this in [Accessibility](#accessibility). The `action-href` attribute is required for the item to be able to be clickable.
|
615
615
|
|
616
616
|
The example below also includes expand/collapse behavior in order to expand or collapse the items on subsequent clicks.
|
617
617
|
|
618
|
-
<!-- docs: demo code properties name:d2l-list-item-nav
|
618
|
+
<!-- docs: demo code properties name:d2l-list-item-nav sandboxTitle:'List Item Nav' display:block -->
|
619
619
|
```html
|
620
620
|
<script type="module">
|
621
621
|
import '@brightspace-ui/core/components/list/list.js';
|
622
|
-
import '@brightspace-ui/core/components/list/list-item-nav
|
622
|
+
import '@brightspace-ui/core/components/list/list-item-nav.js';
|
623
623
|
import '@brightspace-ui/core/components/list/list-item-content.js';
|
624
624
|
</script>
|
625
625
|
<script>
|
626
|
-
let currentItem = document.querySelector('d2l-list-item-nav
|
627
|
-
document.addEventListener('d2l-list-item-
|
628
|
-
console.log('d2l-list-item-nav
|
626
|
+
let currentItem = document.querySelector('d2l-list-item-nav[current]');
|
627
|
+
document.addEventListener('d2l-list-item-link-click', (e) => {
|
628
|
+
console.log('d2l-list-item-nav: click event');
|
629
629
|
|
630
630
|
if (!e.target.expandable) {
|
631
631
|
currentItem = e.target;
|
@@ -642,20 +642,20 @@ The example below also includes expand/collapse behavior in order to expand or c
|
|
642
642
|
</script>
|
643
643
|
|
644
644
|
<d2l-list>
|
645
|
-
<d2l-list-item-nav
|
645
|
+
<d2l-list-item-nav key="L1-1" label="Geomorphology and GIS" color="#006fbf" expandable expanded action-href="https://d2l.com" prevent-navigation>
|
646
646
|
<d2l-list-item-content>
|
647
647
|
<div>Geomorphology and GIS </div>
|
648
648
|
<div slot="supporting-info">This course explores the geological processes of the Earth's interior and surface. These include volcanism, earthquakes, mountain...</div>
|
649
649
|
</d2l-list-item-content>
|
650
650
|
<d2l-list slot="nested" grid>
|
651
|
-
<d2l-list-item-nav
|
651
|
+
<d2l-list-item-nav key="L2-1" label="Syallabus Confirmation">
|
652
652
|
<d2l-list-item-content>
|
653
653
|
<div><d2l-icon style="margin-right: 0.7rem;" icon="tier2:file-document"></d2l-icon>Syallabus Confirmation</div>
|
654
654
|
<div slot="secondary"><d2l-tooltip-help text="Due: May 2, 2023 at 2 pm">Due: May 2, 2023</d2l-tooltip-help></div>
|
655
655
|
</d2l-list-item-content>
|
656
|
-
</d2l-list-item-nav
|
656
|
+
</d2l-list-item-nav>
|
657
657
|
</d2l-list>
|
658
|
-
</d2l-list-item-nav
|
658
|
+
</d2l-list-item-nav>
|
659
659
|
</d2l-list>
|
660
660
|
```
|
661
661
|
|
@@ -664,26 +664,35 @@ The example below also includes expand/collapse behavior in order to expand or c
|
|
664
664
|
|
665
665
|
| Property | Type | Description |
|
666
666
|
|---|---|---|
|
667
|
-
| `button-disabled` | Boolean | Disables the primary action button |
|
668
667
|
| `current` | Boolean | Whether the list item is the current page in a navigation context. At most one list item should have the `current` attribute at any time; this will be managed by the `list` after initial render. |
|
669
668
|
| `draggable` | Boolean | Whether the item is draggable |
|
670
669
|
| `drag-handle-text` | String | The drag-handle label for assistive technology. If implementing drag & drop, you should change this to dynamically announce what the drag-handle is moving for assistive technology in keyboard mode. |
|
670
|
+
| `drag-target-handle-only` | Boolean | Make the drag target the drag handle only. |
|
671
671
|
| `drop-nested` | Boolean | Whether nested items can be dropped on this item |
|
672
672
|
| `drop-text` | String | Text to drag and drop |
|
673
673
|
| `expandable` | Boolean | Whether or not to show the expand/collapse toggle. |
|
674
674
|
| `expanded` | Boolean | Whether the item is expanded. Requires `expandable` to be set. |
|
675
|
+
| `href` | String | Address of item link if navigable |
|
675
676
|
| `key` | String | Value to identify item if selectable or draggable |
|
676
677
|
| `label` | String | Explicitly defined label for the element |
|
677
678
|
| `labelled-by` | String | The id of element that provides the label for this element |
|
679
|
+
| `no-primary-action` | Boolean | Whether to disable rendering the entire item as the primary action. Required if slotted content is interactive. |
|
678
680
|
| `padding-type` | String | List item whitespace (`normal` (default), `none`)|
|
681
|
+
| `prevent-navigation` | Boolean | Whether to prevent the default navigation behavior of the link |
|
679
682
|
| `selectable` | Boolean | Indicates an input should be rendered for selecting the item |
|
680
683
|
| `selected` | Boolean | Whether the item is selected |
|
681
684
|
| `selection-disabled` | Boolean | Disables selection |
|
682
685
|
| `skeleton` | Boolean | Renders the input as a skeleton loader |
|
683
686
|
|
687
|
+
### Methods
|
688
|
+
|
689
|
+
- `highlight()`: highlights the item
|
690
|
+
- `scrollToItem(alignToTop=true)`: scrolls to the item. See [Element.scrollIntoView](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView) for definition of alignToTop.
|
691
|
+
- `scrollToAndHighlight(alignToTop=true)`: scrolls to the item and then highlights it. . See [Element.scrollIntoView](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView) for definition of alignToTop.
|
692
|
+
|
684
693
|
### Events
|
685
694
|
|
686
|
-
- `d2l-list-item-
|
695
|
+
- `d2l-list-item-link-click`: dispatched when the item's primary link action is clicked
|
687
696
|
- `d2l-list-item-expand-collapse-toggled`: dispatched when the item's expand/collapse toggle is clicked
|
688
697
|
<!-- docs: end hidden content -->
|
689
698
|
|
@@ -724,17 +733,17 @@ Where the parameters correspond to the slots of `d2l-list-item`:
|
|
724
733
|
- actions (TemplateResult): Secondary actions for the list item.
|
725
734
|
- nested (TemplateResult): Optional `d2l-list` for a nested list.
|
726
735
|
|
727
|
-
##
|
736
|
+
## ListItemNavMixin
|
728
737
|
|
729
|
-
This mixin allows you to make a component into a navigational list item without requiring custom styling. All of the properties and functionality from `d2l-list-item-nav
|
738
|
+
This mixin allows you to make a component into a navigational list item without requiring custom styling. All of the properties and functionality from `d2l-list-item-nav` (listed above) will be added to your new component.
|
730
739
|
|
731
740
|
### How to use
|
732
741
|
|
733
742
|
Import
|
734
743
|
```javascript
|
735
|
-
import {
|
744
|
+
import { ListItemNavMixin } from '@brightspace-ui/core/components/list/list-item-nav-mixin.js';
|
736
745
|
|
737
|
-
class ListItem extends
|
746
|
+
class ListItem extends ListItemNavMixin(LitElement) {
|
738
747
|
...
|
739
748
|
```
|
740
749
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import '../../icons/icon.js';
|
2
2
|
import '../list-item-content.js';
|
3
|
-
import '../list-item-nav
|
3
|
+
import '../list-item-nav.js';
|
4
4
|
import '../list.js';
|
5
5
|
import '../../tooltip/tooltip-help.js';
|
6
6
|
import { css, html, LitElement, nothing } from 'lit';
|
@@ -45,7 +45,7 @@ class ListDemoNav extends LitElement {
|
|
45
45
|
<d2l-list
|
46
46
|
grid
|
47
47
|
drag-multiple
|
48
|
-
@d2l-list-item-
|
48
|
+
@d2l-list-item-link-click="${this._handleItemClick}">
|
49
49
|
${repeat(this.#list, (item) => item.key, (item) => this._renderItem(item))}
|
50
50
|
</d2l-list>
|
51
51
|
</div>
|
@@ -132,15 +132,17 @@ class ListDemoNav extends LitElement {
|
|
132
132
|
_renderItem(item) {
|
133
133
|
const hasSubList = item.items && item.items.length > 0;
|
134
134
|
return html`
|
135
|
-
<d2l-list-item-nav
|
135
|
+
<d2l-list-item-nav
|
136
136
|
key="${ifDefined(item.key)}"
|
137
|
+
action-href="https://d2l.com"
|
137
138
|
draggable
|
138
139
|
drag-handle-text="${item.primaryText}"
|
139
140
|
color="${ifDefined(item.color)}"
|
140
141
|
?expandable="${hasSubList}"
|
141
142
|
?expanded="${hasSubList}"
|
142
143
|
drop-nested
|
143
|
-
label="${item.primaryText}"
|
144
|
+
label="${item.primaryText}"
|
145
|
+
prevent-navigation>
|
144
146
|
<d2l-list-item-content>
|
145
147
|
<div>${item.hasIcon ? html`<d2l-icon icon="tier2:file-document"></d2l-icon>` : nothing}${item.primaryText}</div>
|
146
148
|
${item.tooltipOpenerText && item.tooltipText
|
@@ -154,7 +156,7 @@ class ListDemoNav extends LitElement {
|
|
154
156
|
</d2l-list>`
|
155
157
|
: nothing
|
156
158
|
}
|
157
|
-
</d2l-list-item-nav
|
159
|
+
</d2l-list-item-nav>
|
158
160
|
`;
|
159
161
|
}
|
160
162
|
}
|
@@ -8,7 +8,7 @@
|
|
8
8
|
import '../../demo/demo-page.js';
|
9
9
|
import '../../icons/icon.js';
|
10
10
|
import '../list-item-content.js';
|
11
|
-
import '../list-item-nav
|
11
|
+
import '../list-item-nav.js';
|
12
12
|
import '../list.js';
|
13
13
|
import '../../tooltip/tooltip-help.js';
|
14
14
|
|
@@ -25,43 +25,43 @@
|
|
25
25
|
<d2l-demo-snippet>
|
26
26
|
<template>
|
27
27
|
<d2l-list grid style="width: 334px;">
|
28
|
-
<d2l-list-item-nav
|
28
|
+
<d2l-list-item-nav key="L1-1" label="Welcome!" color="#006fbf" expandable expanded action-href="https://d2l.com" prevent-navigation>
|
29
29
|
<d2l-list-item-content>
|
30
30
|
<div>Welcome!</div>
|
31
31
|
</d2l-list-item-content>
|
32
32
|
<d2l-list slot="nested" grid>
|
33
|
-
<d2l-list-item-nav
|
33
|
+
<d2l-list-item-nav key="L2-1" label="Syallabus Confirmation">
|
34
34
|
<d2l-list-item-content>
|
35
35
|
<div><d2l-icon style="margin-right: 0.7rem;" icon="tier2:file-document"></d2l-icon>Syallabus Confirmation</div>
|
36
36
|
<div slot="secondary"><d2l-tooltip-help text="Due: May 2, 2023 at 2 pm" style="padding: 5px;">Start: May 1, 2023 at 12:01 AM</d2l-tooltip-help></div>
|
37
37
|
</d2l-list-item-content>
|
38
|
-
</d2l-list-item-nav
|
38
|
+
</d2l-list-item-nav>
|
39
39
|
</d2l-list>
|
40
|
-
</d2l-list-item-nav
|
41
|
-
<d2l-list-item-nav
|
40
|
+
</d2l-list-item-nav>
|
41
|
+
<d2l-list-item-nav key="L2-2" label="Unit 1: Poetry" color="#29a6ff" expandable expanded>
|
42
42
|
<d2l-list-item-content>
|
43
43
|
<div>Unit 1: Fiction</div>
|
44
44
|
<div slot="secondary"><d2l-tooltip-help text="Due: May 2, 2023 at 5 pm" style="padding: 5px;">Starts: May 1, 2023 at 12:01 AM</d2l-tooltip-help></div>
|
45
45
|
</d2l-list-item-content>
|
46
46
|
<d2l-list slot="nested" grid>
|
47
|
-
<d2l-list-item-nav
|
47
|
+
<d2l-list-item-nav key="L3-2" label="Fiction">
|
48
48
|
<d2l-list-item-content>
|
49
49
|
<div><d2l-icon style="margin-right: 0.7rem;" icon="tier2:file-document"></d2l-icon>Fiction</div>
|
50
50
|
</d2l-list-item-content>
|
51
|
-
</d2l-list-item-nav
|
52
|
-
<d2l-list-item-nav
|
51
|
+
</d2l-list-item-nav>
|
52
|
+
<d2l-list-item-nav key="L3-2" label="Ten rules for writing fiction">
|
53
53
|
<d2l-list-item-content>
|
54
54
|
<div><d2l-icon style="margin-right: 0.7rem;" icon="tier2:file-document"></d2l-icon>Ten rules for writing fiction</div>
|
55
55
|
</d2l-list-item-content>
|
56
|
-
</d2l-list-item-nav
|
56
|
+
</d2l-list-item-nav>
|
57
57
|
</d2l-list>
|
58
|
-
</d2l-list-item-nav
|
58
|
+
</d2l-list-item-nav>
|
59
59
|
</d2l-list>
|
60
60
|
<script>
|
61
61
|
(demo => {
|
62
|
-
let currentItem = document.querySelector('d2l-list-item-nav
|
63
|
-
demo.addEventListener('d2l-list-item-
|
64
|
-
console.log('d2l-list-item-nav
|
62
|
+
let currentItem = document.querySelector('d2l-list-item-nav[current]');
|
63
|
+
demo.addEventListener('d2l-list-item-link-click', (e) => {
|
64
|
+
console.log('d2l-list-item-nav: click event');
|
65
65
|
|
66
66
|
if (!e.target.expandable) {
|
67
67
|
currentItem = e.target;
|
@@ -2,6 +2,7 @@ import '../colors/colors.js';
|
|
2
2
|
import { css, html, nothing } from 'lit';
|
3
3
|
import { isInteractiveInListItemComposedPath, ListItemMixin } from './list-item-mixin.js';
|
4
4
|
import { getUniqueId } from '../../helpers/uniqueId.js';
|
5
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
5
6
|
|
6
7
|
export const ListItemLinkMixin = superclass => class extends ListItemMixin(superclass) {
|
7
8
|
|
@@ -11,7 +12,8 @@ export const ListItemLinkMixin = superclass => class extends ListItemMixin(super
|
|
11
12
|
* Address of item link if navigable
|
12
13
|
* @type {string}
|
13
14
|
*/
|
14
|
-
actionHref: { type: String, attribute: 'action-href', reflect: true }
|
15
|
+
actionHref: { type: String, attribute: 'action-href', reflect: true },
|
16
|
+
_ariaCurrent: { type: String }
|
15
17
|
};
|
16
18
|
}
|
17
19
|
|
@@ -91,7 +93,7 @@ export const ListItemLinkMixin = superclass => class extends ListItemMixin(super
|
|
91
93
|
|
92
94
|
_handleLinkFocus(e) {
|
93
95
|
if (this._getDescendantClicked(e)) {
|
94
|
-
|
96
|
+
requestAnimationFrame(() => this._focusingPrimaryAction = false);
|
95
97
|
}
|
96
98
|
}
|
97
99
|
|
@@ -106,6 +108,7 @@ export const ListItemLinkMixin = superclass => class extends ListItemMixin(super
|
|
106
108
|
_renderPrimaryAction(labelledBy, content) {
|
107
109
|
if (!this.actionHref) return;
|
108
110
|
return html`<a aria-labelledby="${labelledBy}"
|
111
|
+
aria-current="${ifDefined(this._ariaCurrent)}"
|
109
112
|
@click="${this._handleLinkClick}"
|
110
113
|
@focusin="${this._handleLinkFocus}"
|
111
114
|
href="${this.actionHref}"
|
@@ -2,9 +2,9 @@ import '../colors/colors.js';
|
|
2
2
|
import { css } from 'lit';
|
3
3
|
import { findComposedAncestor } from '../../helpers/dom.js';
|
4
4
|
import { getComposedActiveElement } from '../../helpers/focus.js';
|
5
|
-
import {
|
5
|
+
import { ListItemLinkMixin } from './list-item-link-mixin.js';
|
6
6
|
|
7
|
-
export const
|
7
|
+
export const ListItemNavMixin = superclass => class extends ListItemLinkMixin(superclass) {
|
8
8
|
|
9
9
|
static get properties() {
|
10
10
|
return {
|
@@ -13,6 +13,11 @@ export const ListItemNavButtonMixin = superclass => class extends ListItemButton
|
|
13
13
|
* @type {boolean}
|
14
14
|
*/
|
15
15
|
current: { type: Boolean, reflect: true },
|
16
|
+
/**
|
17
|
+
* Whether to prevent the default navigation behavior of the link
|
18
|
+
* @type {boolean}
|
19
|
+
*/
|
20
|
+
preventNavigation: { type: Boolean, attribute: 'prevent-navigation' },
|
16
21
|
_childCurrent: { type: Boolean, reflect: true, attribute: '_child-current' },
|
17
22
|
_focusingElem: { type: Boolean, reflect: true, attribute: '_focusing-elem' },
|
18
23
|
};
|
@@ -21,7 +26,7 @@ export const ListItemNavButtonMixin = superclass => class extends ListItemButton
|
|
21
26
|
static get styles() {
|
22
27
|
|
23
28
|
const styles = [ css`
|
24
|
-
:host(:not([
|
29
|
+
:host([action-href]:not([action-href=""])) {
|
25
30
|
--d2l-list-item-content-text-color: var(--d2l-color-ferrite);
|
26
31
|
}
|
27
32
|
.d2l-list-item-content ::slotted(*) {
|
@@ -105,12 +110,13 @@ export const ListItemNavButtonMixin = superclass => class extends ListItemButton
|
|
105
110
|
this.dispatchEvent(new CustomEvent('d2l-list-item-nav-set-child-current', { bubbles: true, composed: true, detail: { value: val } }));
|
106
111
|
}
|
107
112
|
|
108
|
-
|
113
|
+
_handleLinkClick(e) {
|
109
114
|
if (!this._getDescendantClicked(e)) {
|
110
115
|
this.current = true;
|
111
116
|
this._childCurrent = false;
|
112
117
|
}
|
113
|
-
|
118
|
+
if (this.preventNavigation) e.preventDefault();
|
119
|
+
super._handleLinkClick(e);
|
114
120
|
}
|
115
121
|
|
116
122
|
#handleFocusIn(e) {
|
@@ -133,7 +139,7 @@ export const ListItemNavButtonMixin = superclass => class extends ListItemButton
|
|
133
139
|
}
|
134
140
|
|
135
141
|
async #setChildCurrent(e) {
|
136
|
-
await this.updateComplete;
|
142
|
+
await this.updateComplete;
|
137
143
|
if (e.target === this) return;
|
138
144
|
this._childCurrent = e.detail.value;
|
139
145
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ListItemNavMixin } from './list-item-nav-mixin.js';
|
2
2
|
import { LitElement } from 'lit';
|
3
3
|
|
4
4
|
/**
|
@@ -8,7 +8,7 @@ import { LitElement } from 'lit';
|
|
8
8
|
* @slot actions - Actions (e.g., button icons) associated with the listen item located at the right of the item
|
9
9
|
* @slot nested - Nested d2l-list element
|
10
10
|
*/
|
11
|
-
class ListItemNavButton extends
|
11
|
+
class ListItemNavButton extends ListItemNavMixin(LitElement) {
|
12
12
|
|
13
13
|
render() {
|
14
14
|
return this._renderListItem();
|
@@ -16,4 +16,4 @@ class ListItemNavButton extends ListItemNavButtonMixin(LitElement) {
|
|
16
16
|
|
17
17
|
}
|
18
18
|
|
19
|
-
customElements.define('d2l-list-item-nav
|
19
|
+
customElements.define('d2l-list-item-nav', ListItemNavButton);
|
@@ -1,6 +1,8 @@
|
|
1
|
+
import { PropertyRequiredMixin } from '../../mixins/property-required/property-required-mixin.js';
|
2
|
+
|
1
3
|
const defaultLines = 2;
|
2
4
|
|
3
|
-
export const MenuItemMixin = superclass => class extends superclass {
|
5
|
+
export const MenuItemMixin = superclass => class extends PropertyRequiredMixin(superclass) {
|
4
6
|
|
5
7
|
static get properties() {
|
6
8
|
return {
|
@@ -45,7 +47,7 @@ export const MenuItemMixin = superclass => class extends superclass {
|
|
45
47
|
* REQUIRED: Text displayed by the menu item
|
46
48
|
* @type {string}
|
47
49
|
*/
|
48
|
-
text: { type: String },
|
50
|
+
text: { type: String, required: true },
|
49
51
|
/**
|
50
52
|
* ACCESSIBILITY: A description of the menu item that will be used by screen readers for additional context
|
51
53
|
* @type {string}
|
package/components/menu/menu.js
CHANGED
@@ -3,6 +3,7 @@ import '../icons/icon.js';
|
|
3
3
|
import './menu-item-return.js';
|
4
4
|
import { css, html, LitElement } from 'lit';
|
5
5
|
import { HierarchicalViewMixin } from '../hierarchical-view/hierarchical-view-mixin.js';
|
6
|
+
import { PropertyRequiredMixin } from '../../mixins/property-required/property-required-mixin.js';
|
6
7
|
import { ThemeMixin } from '../../mixins/theme/theme-mixin.js';
|
7
8
|
|
8
9
|
const keyCodes = {
|
@@ -20,7 +21,7 @@ const keyCodes = {
|
|
20
21
|
* @slot - Menu items
|
21
22
|
* @fires d2l-menu-resize - Dispatched when size of menu changes (e.g., when nested menu of a different size is opened)
|
22
23
|
*/
|
23
|
-
class Menu extends ThemeMixin(HierarchicalViewMixin(LitElement)) {
|
24
|
+
class Menu extends PropertyRequiredMixin(ThemeMixin(HierarchicalViewMixin(LitElement))) {
|
24
25
|
|
25
26
|
static get properties() {
|
26
27
|
return {
|
@@ -32,7 +33,7 @@ class Menu extends ThemeMixin(HierarchicalViewMixin(LitElement)) {
|
|
32
33
|
* ACCESSIBILITY: Acts as the primary label for the menu (REQUIRED for root menu)
|
33
34
|
* @type {string}
|
34
35
|
*/
|
35
|
-
label: { type: String },
|
36
|
+
label: { type: String, required: true },
|
36
37
|
/**
|
37
38
|
* @ignore
|
38
39
|
*/
|
package/custom-elements.json
CHANGED
@@ -9416,10 +9416,15 @@
|
|
9416
9416
|
]
|
9417
9417
|
},
|
9418
9418
|
{
|
9419
|
-
"name": "d2l-list-item-nav
|
9420
|
-
"path": "./components/list/list-item-nav
|
9419
|
+
"name": "d2l-list-item-nav",
|
9420
|
+
"path": "./components/list/list-item-nav.js",
|
9421
9421
|
"description": "A component for a \"listitem\" child within a list. It provides semantics, basic layout, breakpoints for responsiveness, a link for navigation, and selection.",
|
9422
9422
|
"attributes": [
|
9423
|
+
{
|
9424
|
+
"name": "prevent-navigation",
|
9425
|
+
"description": "Whether to prevent the default navigation behavior of the link",
|
9426
|
+
"type": "boolean"
|
9427
|
+
},
|
9423
9428
|
{
|
9424
9429
|
"name": "current",
|
9425
9430
|
"description": "Whether the list item is the current page in a navigation context. At most one list item should have the `current` attribute at any time; this will be managed by the `list` after initial render.",
|
@@ -9427,10 +9432,9 @@
|
|
9427
9432
|
"default": "false"
|
9428
9433
|
},
|
9429
9434
|
{
|
9430
|
-
"name": "
|
9431
|
-
"description": "
|
9432
|
-
"type": "
|
9433
|
-
"default": "false"
|
9435
|
+
"name": "action-href",
|
9436
|
+
"description": "Address of item link if navigable",
|
9437
|
+
"type": "string"
|
9434
9438
|
},
|
9435
9439
|
{
|
9436
9440
|
"name": "drag-target-handle-only",
|
@@ -9526,6 +9530,12 @@
|
|
9526
9530
|
}
|
9527
9531
|
],
|
9528
9532
|
"properties": [
|
9533
|
+
{
|
9534
|
+
"name": "preventNavigation",
|
9535
|
+
"attribute": "prevent-navigation",
|
9536
|
+
"description": "Whether to prevent the default navigation behavior of the link",
|
9537
|
+
"type": "boolean"
|
9538
|
+
},
|
9529
9539
|
{
|
9530
9540
|
"name": "current",
|
9531
9541
|
"attribute": "current",
|
@@ -9534,11 +9544,10 @@
|
|
9534
9544
|
"default": "false"
|
9535
9545
|
},
|
9536
9546
|
{
|
9537
|
-
"name": "
|
9538
|
-
"attribute": "
|
9539
|
-
"description": "
|
9540
|
-
"type": "
|
9541
|
-
"default": "false"
|
9547
|
+
"name": "actionHref",
|
9548
|
+
"attribute": "action-href",
|
9549
|
+
"description": "Address of item link if navigable",
|
9550
|
+
"type": "string"
|
9542
9551
|
},
|
9543
9552
|
{
|
9544
9553
|
"name": "dragTargetHandleOnly",
|
@@ -9665,8 +9674,8 @@
|
|
9665
9674
|
],
|
9666
9675
|
"events": [
|
9667
9676
|
{
|
9668
|
-
"name": "d2l-list-item-
|
9669
|
-
"description": "Dispatched when the item's primary
|
9677
|
+
"name": "d2l-list-item-link-click",
|
9678
|
+
"description": "Dispatched when the item's primary link action is clicked"
|
9670
9679
|
},
|
9671
9680
|
{
|
9672
9681
|
"name": "d2l-list-item-selected",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@brightspace-ui/core",
|
3
|
-
"version": "3.
|
3
|
+
"version": "3.134.2",
|
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",
|