@brightspace-ui/core 3.112.3 → 3.114.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/button/README.md +42 -0
- package/components/button/button-split-item.js +40 -0
- package/components/button/button-split.js +143 -0
- package/components/button/button-styles.js +4 -1
- package/components/button/button.js +4 -1
- package/components/button/demo/button-split.html +76 -0
- package/components/dropdown/dropdown-menu.js +5 -6
- package/components/html-block/README.md +25 -25
- package/components/html-block/demo/html-block-code.html +7 -7
- package/components/list/demo/list.html +26 -7
- package/components/list/list-item-button-mixin.js +2 -3
- package/components/list/list-item-checkbox-mixin.js +4 -0
- package/components/list/list-item-expand-collapse-mixin.js +13 -2
- package/components/list/list-item-generic-layout.js +4 -1
- package/components/list/list-item-link-mixin.js +2 -3
- package/components/list/list-item-mixin.js +28 -19
- package/custom-elements.json +163 -0
- package/lang/ar.js +1 -0
- package/lang/cy.js +1 -0
- package/lang/da.js +1 -0
- package/lang/de.js +1 -0
- package/lang/en-gb.js +1 -0
- package/lang/en.js +1 -0
- package/lang/es-es.js +1 -0
- package/lang/es.js +1 -0
- package/lang/fr-fr.js +1 -0
- package/lang/fr.js +1 -0
- package/lang/haw.js +1 -0
- package/lang/hi.js +1 -0
- package/lang/ja.js +1 -0
- package/lang/ko.js +1 -0
- package/lang/mi.js +1 -0
- package/lang/nl.js +1 -0
- package/lang/pt.js +1 -0
- package/lang/sv.js +1 -0
- package/lang/tr.js +1 -0
- package/lang/zh-cn.js +1 -0
- package/lang/zh-tw.js +1 -0
- package/package.json +1 -1
@@ -171,6 +171,48 @@ The `d2l-button-toggle` element is a container for buttons that toggle a `presse
|
|
171
171
|
- `d2l-button-toggle-change`: dispatched when the `pressed` state changes
|
172
172
|
<!-- docs: end hidden content -->
|
173
173
|
|
174
|
+
## Split Button [d2l-button-split]
|
175
|
+
|
176
|
+
The `d2l-button-split` element is a button component that provides a main button and a slot for `d2l-button-split-item` elements. Simply provide a `key` and `text` for the main button and each item. The `d2l-button-split`'s `click` event provides the `key` of the selected action.
|
177
|
+
|
178
|
+
<!-- docs: demo code properties name:d2l-button-split sandboxTitle:'Split Button' align:flex-start autoSize:false size:medium -->
|
179
|
+
```html
|
180
|
+
<script type="module">
|
181
|
+
import '@brightspace-ui/core/components/button/button-split.js';
|
182
|
+
import '@brightspace-ui/core/components/button/button-split-item.js';
|
183
|
+
</script>
|
184
|
+
<d2l-button-split key="save" text="Save" primary>
|
185
|
+
<d2l-button-split-item key="saveAsDraft" text="Save as Draft"></d2l-button-split-item>
|
186
|
+
<d2l-button-split-item key="saveAndClose" text="Save and Close"></d2l-button-split-item>
|
187
|
+
<d2l-button-split-item key="saveAndNew" text="Save and New"></d2l-button-split-item>
|
188
|
+
</d2l-button-split>
|
189
|
+
```
|
190
|
+
|
191
|
+
<!-- docs: start hidden content -->
|
192
|
+
### Properties
|
193
|
+
|
194
|
+
| Property | Type | Description |
|
195
|
+
|--|--|--|
|
196
|
+
| `description` | String | A description to be added to the main button for accessibility for additional context |
|
197
|
+
| `disabled` | Boolean | Disables the main button and menu opener |
|
198
|
+
| `disabledTooltip` | String | Tooltip text when disabled |
|
199
|
+
| `key` | String, required | Key of the main button, provided on the `click` event detail |
|
200
|
+
| `primary` | Boolean | Styles the main button and menu opener as primary buttons |
|
201
|
+
| `text` | String, required | Accessible text for the main button |
|
202
|
+
|
203
|
+
### Item Properties
|
204
|
+
|
205
|
+
| Property | Type | Description |
|
206
|
+
|--|--|--|
|
207
|
+
| `disabled` | Boolean | Disables the menu item |
|
208
|
+
| `key` | String, required | Key of the menu item, provided on the `click` event detail |
|
209
|
+
| `text` | String, required | Accessible text for the menu item |
|
210
|
+
|
211
|
+
### Events
|
212
|
+
|
213
|
+
- `click`: dispatched when the user clicks the main action or menu item. The `key` is provided on the event detail.
|
214
|
+
<!-- docs: end hidden content -->
|
215
|
+
|
174
216
|
## Add Button [d2l-button-add]
|
175
217
|
|
176
218
|
The `d2l-button-add` is for quickly adding new items at a specific location, such as when adding items to a curated list. Since the Add button is meant to be subtle, it should always be used in combination with more obvious methods to add items (like a menu or primary button).
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { css, html, LitElement } from 'lit';
|
2
|
+
import { MenuItemMixin } from '../menu/menu-item-mixin.js';
|
3
|
+
import { menuItemStyles } from '../menu/menu-item-styles.js';
|
4
|
+
import { PropertyRequiredMixin } from '../../mixins/property-required/property-required-mixin.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* An split button item component used with JS handlers.
|
8
|
+
*/
|
9
|
+
class ButtonSplitItem extends PropertyRequiredMixin(MenuItemMixin(LitElement)) {
|
10
|
+
|
11
|
+
static get properties() {
|
12
|
+
return {
|
13
|
+
/**
|
14
|
+
* REQUIRED: Key of the action
|
15
|
+
* @type {string}
|
16
|
+
*/
|
17
|
+
key: { type: String, required: true }
|
18
|
+
};
|
19
|
+
}
|
20
|
+
|
21
|
+
static get styles() {
|
22
|
+
return [ menuItemStyles,
|
23
|
+
css`
|
24
|
+
:host {
|
25
|
+
align-items: center;
|
26
|
+
display: flex;
|
27
|
+
padding: 0.75rem 1rem;
|
28
|
+
}
|
29
|
+
`
|
30
|
+
];
|
31
|
+
}
|
32
|
+
|
33
|
+
render() {
|
34
|
+
return html`
|
35
|
+
<div class="d2l-menu-item-text">${this.text}</div>
|
36
|
+
`;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
customElements.define('d2l-button-split-item', ButtonSplitItem);
|
@@ -0,0 +1,143 @@
|
|
1
|
+
import './button.js';
|
2
|
+
import '../colors/colors.js';
|
3
|
+
import '../dropdown/dropdown.js';
|
4
|
+
import '../dropdown/dropdown-menu.js';
|
5
|
+
import '../icons/icon.js';
|
6
|
+
import '../menu/menu.js';
|
7
|
+
import { css, html, LitElement } from 'lit';
|
8
|
+
import { FocusMixin } from '../../mixins/focus/focus-mixin.js';
|
9
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
10
|
+
import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
|
11
|
+
import { PropertyRequiredMixin } from '../../mixins/property-required/property-required-mixin.js';
|
12
|
+
|
13
|
+
/**
|
14
|
+
* A split button that provides a main action button and slot for a menu.
|
15
|
+
*/
|
16
|
+
class ButtonSplit extends FocusMixin(PropertyRequiredMixin(LocalizeCoreElement(LitElement))) {
|
17
|
+
|
18
|
+
static get properties() {
|
19
|
+
return {
|
20
|
+
/**
|
21
|
+
* ACCESSIBILITY: A description to be added to the main action button for accessibility when text does not provide enough context
|
22
|
+
* @type {string}
|
23
|
+
*/
|
24
|
+
description: { type: String },
|
25
|
+
/**
|
26
|
+
* Disables the main action and dropdown opener buttons
|
27
|
+
* @type {boolean}
|
28
|
+
*/
|
29
|
+
disabled: { type: Boolean, reflect: true },
|
30
|
+
/**
|
31
|
+
* Tooltip text when disabled
|
32
|
+
* @type {string}
|
33
|
+
*/
|
34
|
+
disabledTooltip: { type: String, attribute: 'disabled-tooltip' },
|
35
|
+
/**
|
36
|
+
* REQUIRED: Key of the main action
|
37
|
+
* @type {string}
|
38
|
+
*/
|
39
|
+
key: { type: String, required: true },
|
40
|
+
/**
|
41
|
+
* Styles the buttons as a primary buttons
|
42
|
+
* @type {boolean}
|
43
|
+
*/
|
44
|
+
primary: { type: Boolean, reflect: true },
|
45
|
+
/**
|
46
|
+
* ACCESSIBILITY: REQUIRED: Accessible text for the main action button
|
47
|
+
* @type {string}
|
48
|
+
*/
|
49
|
+
text: { type: String, reflect: true, required: true }
|
50
|
+
};
|
51
|
+
}
|
52
|
+
|
53
|
+
static get styles() {
|
54
|
+
return css`
|
55
|
+
:host {
|
56
|
+
display: inline-block;
|
57
|
+
}
|
58
|
+
:host([hidden]) {
|
59
|
+
display: none;
|
60
|
+
}
|
61
|
+
.container {
|
62
|
+
display: flex;
|
63
|
+
gap: 6px;
|
64
|
+
}
|
65
|
+
.main-action {
|
66
|
+
--d2l-button-start-end-radius: 0;
|
67
|
+
--d2l-button-end-end-radius: 0;
|
68
|
+
}
|
69
|
+
.d2l-dropdown-opener {
|
70
|
+
--d2l-button-start-start-radius: 0;
|
71
|
+
--d2l-button-end-start-radius: 0;
|
72
|
+
--d2l-button-padding-inline-end: 0.6rem;
|
73
|
+
--d2l-button-padding-inline-start: 0.6rem;
|
74
|
+
}
|
75
|
+
.d2l-dropdown-opener[primary] > d2l-icon {
|
76
|
+
color: #ffffff;
|
77
|
+
}
|
78
|
+
::slotted(:not(d2l-button-split-item)) {
|
79
|
+
display: none;
|
80
|
+
}
|
81
|
+
`;
|
82
|
+
}
|
83
|
+
|
84
|
+
constructor() {
|
85
|
+
super();
|
86
|
+
this.disabled = false;
|
87
|
+
this.primary = false;
|
88
|
+
}
|
89
|
+
|
90
|
+
static get focusElementSelector() {
|
91
|
+
return '.main-action';
|
92
|
+
}
|
93
|
+
|
94
|
+
render() {
|
95
|
+
return html`
|
96
|
+
<div class="container" @click="${this.#suppressClick}">
|
97
|
+
<d2l-button
|
98
|
+
class="main-action"
|
99
|
+
@click="${this.#handleMainActionClick}"
|
100
|
+
description="${ifDefined(this.description)}"
|
101
|
+
?disabled="${this.disabled}"
|
102
|
+
disabled-tooltip="${ifDefined(this.disabledTooltip)}"
|
103
|
+
?primary="${this.primary}">
|
104
|
+
${this.text}
|
105
|
+
</d2l-button>
|
106
|
+
<d2l-dropdown>
|
107
|
+
<d2l-button
|
108
|
+
aria-label="${this.localize('components.button-split.otherOptions')}"
|
109
|
+
class="d2l-dropdown-opener"
|
110
|
+
?disabled="${this.disabled}"
|
111
|
+
?primary="${this.primary}">
|
112
|
+
<d2l-icon icon="tier1:chevron-down"></d2l-icon>
|
113
|
+
</d2l-button>
|
114
|
+
<d2l-dropdown-menu>
|
115
|
+
<d2l-menu label="${this.localize('components.button-split.otherOptions')}" @d2l-menu-item-select="${this.#handleMenuItemSelect}">
|
116
|
+
<slot></slot>
|
117
|
+
</d2l-menu>
|
118
|
+
</d2l-dropdown-menu>
|
119
|
+
</d2l-dropdown>
|
120
|
+
</div>
|
121
|
+
`;
|
122
|
+
}
|
123
|
+
|
124
|
+
#dispatchClick(key) {
|
125
|
+
/** Dispatched when a split button is clicked. The `key` is provided on the event detail. */
|
126
|
+
this.dispatchEvent(new CustomEvent('click', { detail: { key } }));
|
127
|
+
}
|
128
|
+
|
129
|
+
#handleMainActionClick() {
|
130
|
+
this.#dispatchClick(this.key);
|
131
|
+
}
|
132
|
+
|
133
|
+
#handleMenuItemSelect(e) {
|
134
|
+
this.#dispatchClick(e.target.key);
|
135
|
+
}
|
136
|
+
|
137
|
+
#suppressClick(e) {
|
138
|
+
e.stopPropagation();
|
139
|
+
}
|
140
|
+
|
141
|
+
}
|
142
|
+
|
143
|
+
customElements.define('d2l-button-split', ButtonSplit);
|
@@ -4,7 +4,10 @@ import { getFocusPseudoClass } from '../../helpers/focus.js';
|
|
4
4
|
|
5
5
|
export const buttonStyles = css`
|
6
6
|
button {
|
7
|
-
border-radius: 0.3rem;
|
7
|
+
border-end-end-radius: var(--d2l-button-end-end-radius, 0.3rem);
|
8
|
+
border-end-start-radius: var(--d2l-button-end-start-radius, 0.3rem);
|
9
|
+
border-start-end-radius: var(--d2l-button-start-end-radius, 0.3rem);
|
10
|
+
border-start-start-radius: var(--d2l-button-start-start-radius, 0.3rem);
|
8
11
|
border-style: none;
|
9
12
|
box-sizing: border-box;
|
10
13
|
cursor: pointer;
|
@@ -41,7 +41,10 @@ class Button extends ButtonMixin(LitElement) {
|
|
41
41
|
|
42
42
|
button {
|
43
43
|
font-family: inherit;
|
44
|
-
padding: 0
|
44
|
+
padding-block-end: 0;
|
45
|
+
padding-block-start: 0;
|
46
|
+
padding-inline-end: var(--d2l-button-padding-inline-end, 1.5rem);
|
47
|
+
padding-inline-start: var(--d2l-button-padding-inline-start, 1.5rem);
|
45
48
|
width: 100%;
|
46
49
|
}
|
47
50
|
|
@@ -0,0 +1,76 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<link rel="stylesheet" href="../../demo/styles.css" type="text/css">
|
7
|
+
<script type="module">
|
8
|
+
import '../../demo/demo-page.js';
|
9
|
+
import '../button-split.js';
|
10
|
+
import '../button-split-item.js';
|
11
|
+
</script>
|
12
|
+
</head>
|
13
|
+
<body unresolved>
|
14
|
+
|
15
|
+
<d2l-demo-page page-title="d2l-button-split">
|
16
|
+
|
17
|
+
<h2>Split Button</h2>
|
18
|
+
|
19
|
+
<d2l-demo-snippet>
|
20
|
+
<template>
|
21
|
+
<button id="focusButton" style="display: block; margin-block-end: 1rem;">Focus It!</button>
|
22
|
+
<d2l-button-split key="save" text="Save">
|
23
|
+
<d2l-button-split-item key="saveAsDraft" text="Save as Draft"></d2l-button-split-item>
|
24
|
+
<d2l-button-split-item key="saveAndClose" text="Save and Close"></d2l-button-split-item>
|
25
|
+
<d2l-button-split-item key="saveAndNew" text="Save and New"></d2l-button-split-item>
|
26
|
+
</d2l-button-split>
|
27
|
+
<script>
|
28
|
+
(demo => {
|
29
|
+
const splitButton = demo.querySelector('d2l-button-split');
|
30
|
+
demo.querySelector('#focusButton').addEventListener('click', () => splitButton.focus());
|
31
|
+
splitButton.addEventListener('click', e => console.log('click:', e.detail.key));
|
32
|
+
})(document.currentScript.parentNode);
|
33
|
+
</script>
|
34
|
+
</template>
|
35
|
+
</d2l-demo-snippet>
|
36
|
+
|
37
|
+
<h2>Split Button (with a description)</h2>
|
38
|
+
|
39
|
+
<d2l-demo-snippet>
|
40
|
+
<template>
|
41
|
+
<d2l-button-split key="save" text="Save" description="Super fancy save options!">
|
42
|
+
<d2l-button-split-item key="saveAsDraft" text="Save as Draft"></d2l-button-split-item>
|
43
|
+
<d2l-button-split-item key="saveAndClose" text="Save and Close"></d2l-button-split-item>
|
44
|
+
<d2l-button-split-item key="saveAndNew" text="Save and New"></d2l-button-split-item>
|
45
|
+
</d2l-button-split>
|
46
|
+
</template>
|
47
|
+
</d2l-demo-snippet>
|
48
|
+
|
49
|
+
<h2>Split Button (primary)</h2>
|
50
|
+
|
51
|
+
<d2l-demo-snippet>
|
52
|
+
<template>
|
53
|
+
<d2l-button-split key="save" text="Save" primary>
|
54
|
+
<d2l-button-split-item key="saveAsDraft" text="Save as Draft"></d2l-button-split-item>
|
55
|
+
<d2l-button-split-item key="saveAndClose" text="Save and Close"></d2l-button-split-item>
|
56
|
+
<d2l-button-split-item key="saveAndNew" text="Save and New"></d2l-button-split-item>
|
57
|
+
</d2l-button-split>
|
58
|
+
</template>
|
59
|
+
</d2l-demo-snippet>
|
60
|
+
|
61
|
+
<h2>Split Button (disabled)</h2>
|
62
|
+
|
63
|
+
<d2l-demo-snippet>
|
64
|
+
<template>
|
65
|
+
<d2l-button-split key="save" text="Save" primary disabled disabled-tooltip="Too fancy!">
|
66
|
+
<d2l-button-split-item key="saveAsDraft" text="Save as Draft"></d2l-button-split-item>
|
67
|
+
<d2l-button-split-item key="saveAndClose" text="Save and Close"></d2l-button-split-item>
|
68
|
+
<d2l-button-split-item key="saveAndNew" text="Save and New"></d2l-button-split-item>
|
69
|
+
</d2l-button-split>
|
70
|
+
</template>
|
71
|
+
</d2l-demo-snippet>
|
72
|
+
|
73
|
+
</d2l-demo-page>
|
74
|
+
|
75
|
+
</body>
|
76
|
+
</html>
|
@@ -167,7 +167,7 @@ if (usePopoverMixin) {
|
|
167
167
|
}
|
168
168
|
|
169
169
|
#handleSelect(e) {
|
170
|
-
if (['D2L-MENU-ITEM', 'D2L-MENU-ITEM-LINK', 'D2L-SELECTION-ACTION-MENU-ITEM'].indexOf(e.target.tagName) < 0) {
|
170
|
+
if (['D2L-MENU-ITEM', 'D2L-MENU-ITEM-LINK', 'D2L-SELECTION-ACTION-MENU-ITEM', 'D2L-BUTTON-SPLIT-ITEM'].indexOf(e.target.tagName) < 0) {
|
171
171
|
return;
|
172
172
|
}
|
173
173
|
this.close();
|
@@ -268,10 +268,9 @@ if (usePopoverMixin) {
|
|
268
268
|
}
|
269
269
|
|
270
270
|
__getMenuElement() {
|
271
|
-
|
272
|
-
|
273
|
-
.
|
274
|
-
&& (node.getAttribute('role') === 'menu' || node.getAttribute('role') === 'listbox'))[0];
|
271
|
+
return this.shadowRoot?.querySelector('.d2l-dropdown-content-slot')
|
272
|
+
.assignedElements({ flatten: true })
|
273
|
+
.filter(node => (node.getAttribute('role') === 'menu' || node.getAttribute('role') === 'listbox'))[0];
|
275
274
|
}
|
276
275
|
|
277
276
|
_onAnimationEnd() {
|
@@ -351,7 +350,7 @@ if (usePopoverMixin) {
|
|
351
350
|
}
|
352
351
|
|
353
352
|
_onSelect(e) {
|
354
|
-
if (['D2L-MENU-ITEM', 'D2L-MENU-ITEM-LINK', 'D2L-SELECTION-ACTION-MENU-ITEM'].indexOf(e.target.tagName) < 0) {
|
353
|
+
if (['D2L-MENU-ITEM', 'D2L-MENU-ITEM-LINK', 'D2L-SELECTION-ACTION-MENU-ITEM', 'D2L-BUTTON-SPLIT-ITEM'].indexOf(e.target.tagName) < 0) {
|
355
354
|
return;
|
356
355
|
}
|
357
356
|
this.close();
|
@@ -15,7 +15,7 @@ Pass the user-authored HTML into the `html` attribute of the `d2l-html-block` an
|
|
15
15
|
import '@brightspace-ui/core/components/icons/icon.js';
|
16
16
|
</script>
|
17
17
|
<d2l-html-block html="
|
18
|
-
|
18
|
+
<style>
|
19
19
|
div {
|
20
20
|
--d2l-icon-fill-color: var(--d2l-color-cinnabar);
|
21
21
|
}
|
@@ -33,13 +33,13 @@ Pass the user-authored HTML into the `html` attribute of the `d2l-html-block` an
|
|
33
33
|
display: flex;
|
34
34
|
justify-content: center;
|
35
35
|
}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
36
|
+
</style>
|
37
|
+
<div class="warning-container">
|
38
|
+
<d2l-icon icon="tier3:alert"></d2l-icon>
|
39
|
+
<span>
|
40
|
+
<b>Important:</b> user-authored HTML must be trusted or properly sanitized!
|
41
|
+
</span>
|
42
|
+
</div>">
|
43
43
|
</d2l-html-block>
|
44
44
|
```
|
45
45
|
|
@@ -56,23 +56,23 @@ Examples are provided to display how user-authored math can be embedded within y
|
|
56
56
|
import '@brightspace-ui/core/tools/mathjax-test-context.js';
|
57
57
|
</script>
|
58
58
|
<d2l-html-block html="
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
59
|
+
<math xmlns="http://www.w3.org/1998/Math/MathML">
|
60
|
+
<msqrt>
|
61
|
+
<mn>3</mn>
|
62
|
+
<mi>x</mi>
|
63
|
+
<mo>−</mo>
|
64
|
+
<mn>1</mn>
|
65
|
+
</msqrt>
|
66
|
+
<mo>+</mo>
|
67
|
+
<mo stretchy="false">(</mo>
|
68
|
+
<mn>1</mn>
|
69
|
+
<mo>+</mo>
|
70
|
+
<mi>x</mi>
|
71
|
+
<msup>
|
72
|
+
<mo stretchy="false">)</mo>
|
73
|
+
<mn>2</mn>
|
74
|
+
</msup>
|
75
|
+
</math>">
|
76
76
|
</d2l-html-block>
|
77
77
|
```
|
78
78
|
|
@@ -25,21 +25,21 @@
|
|
25
25
|
|
26
26
|
<h2 class="d2l-heading-3">Block Samples</h2>
|
27
27
|
|
28
|
-
<d2l-html-block
|
29
|
-
|
28
|
+
<d2l-html-block html="
|
29
|
+
<pre class="d2l-code d2l-code-dark"><code class="language-javascript">function helloGrumpy(name) {
|
30
30
|
console.log(`Hi there ${name}.`);
|
31
31
|
}
|
32
|
-
helloGrumpy('Wizard')
|
33
|
-
|
34
|
-
|
32
|
+
helloGrumpy('Wizard');</code></pre>
|
33
|
+
<br>
|
34
|
+
<pre class="d2l-code d2l-code-dark"><code class="language-javascript line-numbers">function helloGrumpy(name) {
|
35
35
|
console.log(`Hi there ${name}. Here's some really long text to test overflowing the bounding container.`);
|
36
36
|
}
|
37
|
-
helloGrumpy('Wizard')
|
37
|
+
helloGrumpy('Wizard');</code></pre>">
|
38
38
|
</d2l-html-block>
|
39
39
|
|
40
40
|
<h2 class="d2l-heading-3">Inline Samples</h2>
|
41
41
|
|
42
|
-
<d2l-html-block html="The best type of donuts are he kind you assign in code, for example: <code class="d2l-code d2l-code-dark language-javascript">const jelly = 'donuts'
|
42
|
+
<d2l-html-block html="The best type of donuts are he kind you assign in code, for example: <code class="d2l-code d2l-code-dark language-javascript">const jelly = 'donuts';</code>. The next best type of thing you can assign in code is stuff you can ferment. <code class="d2l-code d2l-code-dark language-javascript">let beer = hopsAndWater.map(ingredients => ferment(ingredients));</code>"></d2l-html-block>
|
43
43
|
|
44
44
|
</body>
|
45
45
|
</html>
|
@@ -209,7 +209,7 @@
|
|
209
209
|
<d2l-demo-snippet>
|
210
210
|
<template>
|
211
211
|
<d2l-list grid>
|
212
|
-
<d2l-list-item expandable key="expand-1" label="Expandable item #1"
|
212
|
+
<d2l-list-item expandable key="expand-1" label="Expandable item #1">
|
213
213
|
<d2l-list-item-content>
|
214
214
|
<div>Week 1: Introduction</div>
|
215
215
|
<div slot="secondary" style="padding: 5px;"><d2l-tooltip-help text="Due: Jan 30, 2023">Available: Aug 11, 2023</d2l-tooltip-help></div>
|
@@ -217,12 +217,29 @@
|
|
217
217
|
</d2l-list-item-content>
|
218
218
|
<d2l-list grid slot="nested">
|
219
219
|
<d2l-list-item selectable key="nested-1" label="Nested 1">
|
220
|
-
<d2l-list-item-content
|
220
|
+
<d2l-list-item-content>
|
221
|
+
<div>Nested item #1</div>
|
222
|
+
<div slot="secondary"><d2l-button-subtle style="padding: 5px;" text="Bookmark" icon="tier1:bookmark-hollow"></d2l-button-subtle></div>
|
223
|
+
</d2l-list-item-content>
|
221
224
|
</d2l-list-item>
|
222
|
-
<d2l-list-item selectable key="nested-2" label="Nested 2">
|
223
|
-
<d2l-list-item-content
|
225
|
+
<d2l-list-item selectable key="nested-2" label="Nested 2" expandable>
|
226
|
+
<d2l-list-item-content>
|
227
|
+
<div>Nested item #2</div>
|
228
|
+
<div slot="secondary"><d2l-button-subtle style="padding: 5px;" text="Bookmark" icon="tier1:bookmark-hollow"></d2l-button-subtle></div>
|
229
|
+
</d2l-list-item-content>
|
230
|
+
<d2l-list grid slot="nested">
|
231
|
+
<d2l-list-item selectable key="nested-1-1" label="Nested 1">
|
232
|
+
<d2l-list-item-content>
|
233
|
+
<div>Nested item #1</div>
|
234
|
+
<div slot="secondary"><d2l-button-subtle style="padding: 5px;" text="Bookmark" icon="tier1:bookmark-hollow"></d2l-button-subtle></div>
|
235
|
+
</d2l-list-item-content>
|
236
|
+
</d2l-list-item>
|
237
|
+
<d2l-list-item selectable key="nested--1" label="Nested 2">
|
238
|
+
<d2l-list-item-content><div>Nested item #2</div></d2l-list-item-content>
|
239
|
+
</d2l-list-item>
|
240
|
+
</d2l-list>
|
224
241
|
</d2l-list-item>
|
225
|
-
|
242
|
+
</d2l-list>
|
226
243
|
</d2l-list-item>
|
227
244
|
<d2l-list-item href="http://www.d2l.com">
|
228
245
|
<d2l-list-item-content>
|
@@ -240,8 +257,10 @@
|
|
240
257
|
</template>
|
241
258
|
<script type="module">
|
242
259
|
requestAnimationFrame(() => {
|
243
|
-
document.
|
244
|
-
|
260
|
+
document.querySelectorAll('d2l-button-subtle').forEach((button) => {
|
261
|
+
button.addEventListener('click', () => {
|
262
|
+
console.log('d2l-button: click event');
|
263
|
+
});
|
245
264
|
});
|
246
265
|
});
|
247
266
|
</script>
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import '../colors/colors.js';
|
2
2
|
import { css, html } from 'lit';
|
3
|
-
import {
|
3
|
+
import { isInteractiveInListItemComposedPath, ListItemMixin } from './list-item-mixin.js';
|
4
4
|
import { getUniqueId } from '../../helpers/uniqueId.js';
|
5
|
-
import { isInteractiveInComposedPath } from '../../helpers/interactive.js';
|
6
5
|
|
7
6
|
export const ListItemButtonMixin = superclass => class extends ListItemMixin(superclass) {
|
8
7
|
static get properties() {
|
@@ -67,7 +66,7 @@ export const ListItemButtonMixin = superclass => class extends ListItemMixin(sup
|
|
67
66
|
|
68
67
|
_getDescendantClicked(e) {
|
69
68
|
const isPrimaryAction = (elem) => elem === this.shadowRoot.querySelector(`#${this._primaryActionId}`);
|
70
|
-
return
|
69
|
+
return isInteractiveInListItemComposedPath(e, isPrimaryAction);
|
71
70
|
}
|
72
71
|
|
73
72
|
_onButtonClick(e) {
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import '../selection/selection-input.js';
|
2
2
|
import { css, html, nothing } from 'lit';
|
3
3
|
import { getUniqueId } from '../../helpers/uniqueId.js';
|
4
|
+
import { isInteractiveInListItemComposedPath } from './list-item-mixin.js';
|
4
5
|
import { SelectionInfo } from '../selection/selection-mixin.js';
|
5
6
|
import { SkeletonMixin } from '../skeleton/skeleton-mixin.js';
|
6
7
|
|
@@ -119,6 +120,9 @@ export const ListItemCheckboxMixin = superclass => class extends SkeletonMixin(s
|
|
119
120
|
_onCheckboxActionClick(event) {
|
120
121
|
event.preventDefault();
|
121
122
|
if (this.selectionDisabled) return;
|
123
|
+
const isPrimaryAction = (elem) => elem === this.shadowRoot.querySelector('div.d2l-checkbox-action');
|
124
|
+
if (isInteractiveInListItemComposedPath(event, isPrimaryAction)) return;
|
125
|
+
|
122
126
|
this.setSelected(!this.selected);
|
123
127
|
const checkbox = this.shadowRoot && this.shadowRoot.querySelector(`#${this._checkboxId}`);
|
124
128
|
if (checkbox) checkbox.focus();
|
@@ -2,6 +2,7 @@ import '../button/button-icon.js';
|
|
2
2
|
import '../loading-spinner/loading-spinner.js';
|
3
3
|
import { css, html, nothing } from 'lit';
|
4
4
|
import { EventSubscriberController } from '../../controllers/subscriber/subscriberControllers.js';
|
5
|
+
import { isInteractiveInListItemComposedPath } from './list-item-mixin.js';
|
5
6
|
import { SkeletonMixin } from '../skeleton/skeleton-mixin.js';
|
6
7
|
|
7
8
|
const dragIntervalDelay = 100;
|
@@ -136,12 +137,12 @@ export const ListItemExpandCollapseMixin = superclass => class extends SkeletonM
|
|
136
137
|
@click="${this._toggleExpandCollapse}"></d2l-button-icon>`;
|
137
138
|
}
|
138
139
|
|
139
|
-
_renderExpandCollapseAction() {
|
140
|
+
_renderExpandCollapseAction(content) {
|
140
141
|
if (this.selectable || !this.expandable || this.noPrimaryAction) {
|
141
142
|
return nothing;
|
142
143
|
}
|
143
144
|
|
144
|
-
return html`<div class="d2l-list-expand-collapse-action" @click="${this.
|
145
|
+
return html`<div class="d2l-list-expand-collapse-action" @click="${this._toggleExpandCollapseAction}">${content || nothing}</div>`;
|
145
146
|
}
|
146
147
|
|
147
148
|
_renderNestedLoadingSpinner() {
|
@@ -168,4 +169,14 @@ export const ListItemExpandCollapseMixin = superclass => class extends SkeletonM
|
|
168
169
|
bubbles: true
|
169
170
|
}));
|
170
171
|
}
|
172
|
+
|
173
|
+
_toggleExpandCollapseAction(e = null) {
|
174
|
+
const isPrimaryAction = (elem) => elem === this.shadowRoot.querySelector('div.d2l-list-expand-collapse-action');
|
175
|
+
if (e && isInteractiveInListItemComposedPath(e, isPrimaryAction)) {
|
176
|
+
e.preventDefault();
|
177
|
+
return;
|
178
|
+
}
|
179
|
+
|
180
|
+
this._toggleExpandCollapse(e);
|
181
|
+
}
|
171
182
|
};
|
@@ -165,10 +165,13 @@ class ListItemGenericLayout extends RtlMixin(LitElement) {
|
|
165
165
|
grid-column-start: control-start;
|
166
166
|
}
|
167
167
|
|
168
|
-
:host(:not([no-primary-action])) ::slotted([slot="control-action"]),
|
169
168
|
:host(:not([no-primary-action])) ::slotted([slot="outside-control-action"]) {
|
170
169
|
grid-column-end: end;
|
171
170
|
}
|
171
|
+
|
172
|
+
:host(:not([no-primary-action])) ::slotted([slot="control-action"]) {
|
173
|
+
grid-column-end: actions-start;
|
174
|
+
}
|
172
175
|
|
173
176
|
::slotted([slot="outside-control-container"]) {
|
174
177
|
grid-column: start / end;
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import '../colors/colors.js';
|
2
2
|
import { css, html } from 'lit';
|
3
|
-
import {
|
3
|
+
import { isInteractiveInListItemComposedPath, ListItemMixin } from './list-item-mixin.js';
|
4
4
|
import { getUniqueId } from '../../helpers/uniqueId.js';
|
5
|
-
import { isInteractiveInComposedPath } from '../../helpers/interactive.js';
|
6
5
|
|
7
6
|
export const ListItemLinkMixin = superclass => class extends ListItemMixin(superclass) {
|
8
7
|
|
@@ -53,7 +52,7 @@ export const ListItemLinkMixin = superclass => class extends ListItemMixin(super
|
|
53
52
|
|
54
53
|
_getDescendantClicked(e) {
|
55
54
|
const isPrimaryAction = (elem) => elem === this.shadowRoot.querySelector(`#${this._primaryActionId}`);
|
56
|
-
return
|
55
|
+
return isInteractiveInListItemComposedPath(e, isPrimaryAction);
|
57
56
|
}
|
58
57
|
|
59
58
|
_handleLinkClick(e) {
|
@@ -6,13 +6,13 @@ import '../tooltip/tooltip.js';
|
|
6
6
|
import '../expand-collapse/expand-collapse-content.js';
|
7
7
|
import { css, html, nothing } from 'lit';
|
8
8
|
import { findComposedAncestor, getComposedParent } from '../../helpers/dom.js';
|
9
|
+
import { interactiveElements, isInteractiveInComposedPath } from '../../helpers/interactive.js';
|
9
10
|
import { classMap } from 'lit/directives/class-map.js';
|
10
11
|
import { composeMixins } from '../../helpers/composeMixins.js';
|
11
12
|
import { getFirstFocusableDescendant } from '../../helpers/focus.js';
|
12
13
|
import { getUniqueId } from '../../helpers/uniqueId.js';
|
13
14
|
import { getValidHexColor } from '../../helpers/color.js';
|
14
15
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
15
|
-
import { interactiveElements } from '../../helpers/interactive.js';
|
16
16
|
import { LabelledMixin } from '../../mixins/labelled/labelled-mixin.js';
|
17
17
|
import { ListItemCheckboxMixin } from './list-item-checkbox-mixin.js';
|
18
18
|
import { ListItemDragDropMixin } from './list-item-drag-drop-mixin.js';
|
@@ -40,11 +40,14 @@ function addTabListener() {
|
|
40
40
|
|
41
41
|
let hasDisplayedKeyboardTooltip = false;
|
42
42
|
|
43
|
-
export
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
export function isInteractiveInListItemComposedPath(e, isPrimaryAction) {
|
44
|
+
const listInteractiveElems = {
|
45
|
+
...interactiveElements,
|
46
|
+
'd2l-button': true,
|
47
|
+
'd2l-tooltip-help': true
|
48
|
+
};
|
49
|
+
return isInteractiveInComposedPath(e.composedPath(), isPrimaryAction, { elements: listInteractiveElems });
|
50
|
+
}
|
48
51
|
|
49
52
|
/**
|
50
53
|
* @property label - The hidden label for the checkbox and expand collapse control
|
@@ -177,17 +180,14 @@ export const ListItemMixin = superclass => class extends composeMixins(
|
|
177
180
|
:host(:not([_render-expand-collapse-slot])) .d2l-list-item-content-extend-separators > [slot="control"] {
|
178
181
|
width: 3rem;
|
179
182
|
}
|
180
|
-
:host(:not([
|
181
|
-
|
182
|
-
padding-left: 0.9rem;
|
183
|
-
padding-right: 0.9rem;
|
183
|
+
:host(:not([_render-expand-collapse-slot])) .d2l-list-item-content-extend-separators > [slot="control"] ~ [slot="control-action"] [slot="content"] {
|
184
|
+
padding-inline-start: 3rem;
|
184
185
|
}
|
185
|
-
:host([
|
186
|
-
padding-
|
186
|
+
:host(:not([_has-color-slot])) .d2l-list-item-content-extend-separators [slot="content"] {
|
187
|
+
padding-inline: 0.9rem;
|
187
188
|
}
|
188
|
-
:host([
|
189
|
-
padding-
|
190
|
-
padding-right: 0;
|
189
|
+
:host([selectable]) .d2l-list-item-content-extend-separators > [slot="content"] {
|
190
|
+
padding-inline-start: 0;
|
191
191
|
}
|
192
192
|
|
193
193
|
:host([_hovering-primary-action]) .d2l-list-item-content,
|
@@ -220,6 +220,10 @@ export const ListItemMixin = superclass => class extends composeMixins(
|
|
220
220
|
padding-top: 0;
|
221
221
|
}
|
222
222
|
|
223
|
+
[slot="control"] ~ [slot="control-action"] [slot="content"] {
|
224
|
+
padding-inline-start: 2.2rem; /* width of "control" slot set in generic-layout */
|
225
|
+
}
|
226
|
+
|
223
227
|
[slot="content"] ::slotted([slot="illustration"]),
|
224
228
|
[slot="content"] .d2l-list-item-illustration > * {
|
225
229
|
border-radius: 6px;
|
@@ -685,7 +689,7 @@ export const ListItemMixin = superclass => class extends composeMixins(
|
|
685
689
|
'hide-bottom-border': this._showAddButton && (!this._hasNestedList || this._hasNestedListAddButton)
|
686
690
|
};
|
687
691
|
|
688
|
-
const alignNested = ((this.draggable && this.selectable) || (this.expandable && this.selectable && this.color)) ? 'control' : undefined;
|
692
|
+
const alignNested = ((this.draggable && this.selectable) || (this.expandable && this.selectable && this.color) || (this.expandable && !this.selectable)) ? 'control' : undefined;
|
689
693
|
const contentAreaContent = html`
|
690
694
|
<div slot="content"
|
691
695
|
class="d2l-list-item-content"
|
@@ -696,7 +700,11 @@ export const ListItemMixin = superclass => class extends composeMixins(
|
|
696
700
|
<slot>${content}</slot>
|
697
701
|
</div>
|
698
702
|
`;
|
703
|
+
|
699
704
|
const primaryAction = ((!this.noPrimaryAction && this._renderPrimaryAction) ? this._renderPrimaryAction(this._contentId, contentAreaContent) : null);
|
705
|
+
const renderExpandableAction = !primaryAction && !this.selectable && this.expandable && !this.noPrimaryAction;
|
706
|
+
const renderCheckboxAction = !primaryAction && this.selectable && !this.noPrimaryAction;
|
707
|
+
|
700
708
|
let tooltipForId = null;
|
701
709
|
if (this._showAddButton) {
|
702
710
|
tooltipForId = this._addButtonTopId;
|
@@ -748,8 +756,8 @@ export const ListItemMixin = superclass => class extends composeMixins(
|
|
748
756
|
<div slot="control-action"
|
749
757
|
@mouseenter="${this._onMouseEnter}"
|
750
758
|
@mouseleave="${this._onMouseLeave}">
|
751
|
-
${this._renderCheckboxAction('')}
|
752
|
-
${this._renderExpandCollapseAction()}
|
759
|
+
${this._renderCheckboxAction(renderCheckboxAction ? contentAreaContent : '')}
|
760
|
+
${this._renderExpandCollapseAction(renderExpandableAction ? contentAreaContent : null)}
|
753
761
|
</div>` : nothing }
|
754
762
|
${primaryAction ? html`
|
755
763
|
<div slot="content-action"
|
@@ -758,7 +766,8 @@ export const ListItemMixin = superclass => class extends composeMixins(
|
|
758
766
|
@mouseenter="${this._onMouseEnterPrimaryAction}"
|
759
767
|
@mouseleave="${this._onMouseLeavePrimaryAction}">
|
760
768
|
${primaryAction}
|
761
|
-
</div>` :
|
769
|
+
</div>` : nothing}
|
770
|
+
${!primaryAction && !renderExpandableAction && !renderCheckboxAction ? contentAreaContent : nothing}
|
762
771
|
<div slot="actions"
|
763
772
|
@mouseenter="${this._onMouseEnter}"
|
764
773
|
@mouseleave="${this._onMouseLeave}"
|
package/custom-elements.json
CHANGED
@@ -619,6 +619,169 @@
|
|
619
619
|
}
|
620
620
|
]
|
621
621
|
},
|
622
|
+
{
|
623
|
+
"name": "d2l-button-split-item",
|
624
|
+
"path": "./components/button/button-split-item.js",
|
625
|
+
"description": "An split button item component used with JS handlers.",
|
626
|
+
"attributes": [
|
627
|
+
{
|
628
|
+
"name": "key",
|
629
|
+
"description": "REQUIRED: Key of the action",
|
630
|
+
"type": "string"
|
631
|
+
},
|
632
|
+
{
|
633
|
+
"name": "text",
|
634
|
+
"description": "REQUIRED: Text displayed by the menu item",
|
635
|
+
"type": "string"
|
636
|
+
},
|
637
|
+
{
|
638
|
+
"name": "description",
|
639
|
+
"description": "ACCESSIBILITY: A description of the menu item that will be used by screen readers for additional context",
|
640
|
+
"type": "string"
|
641
|
+
},
|
642
|
+
{
|
643
|
+
"name": "disabled",
|
644
|
+
"description": "Disables the menu item",
|
645
|
+
"type": "boolean",
|
646
|
+
"default": "false"
|
647
|
+
},
|
648
|
+
{
|
649
|
+
"name": "lines",
|
650
|
+
"description": "The number of lines to display before truncating text with an ellipsis. Defaults to 2.",
|
651
|
+
"type": "number",
|
652
|
+
"default": "2"
|
653
|
+
}
|
654
|
+
],
|
655
|
+
"properties": [
|
656
|
+
{
|
657
|
+
"name": "key",
|
658
|
+
"attribute": "key",
|
659
|
+
"description": "REQUIRED: Key of the action",
|
660
|
+
"type": "string"
|
661
|
+
},
|
662
|
+
{
|
663
|
+
"name": "text",
|
664
|
+
"attribute": "text",
|
665
|
+
"description": "REQUIRED: Text displayed by the menu item",
|
666
|
+
"type": "string"
|
667
|
+
},
|
668
|
+
{
|
669
|
+
"name": "description",
|
670
|
+
"attribute": "description",
|
671
|
+
"description": "ACCESSIBILITY: A description of the menu item that will be used by screen readers for additional context",
|
672
|
+
"type": "string"
|
673
|
+
},
|
674
|
+
{
|
675
|
+
"name": "disabled",
|
676
|
+
"attribute": "disabled",
|
677
|
+
"description": "Disables the menu item",
|
678
|
+
"type": "boolean",
|
679
|
+
"default": "false"
|
680
|
+
},
|
681
|
+
{
|
682
|
+
"name": "lines",
|
683
|
+
"attribute": "lines",
|
684
|
+
"description": "The number of lines to display before truncating text with an ellipsis. Defaults to 2.",
|
685
|
+
"type": "number",
|
686
|
+
"default": "2"
|
687
|
+
}
|
688
|
+
],
|
689
|
+
"events": [
|
690
|
+
{
|
691
|
+
"name": "d2l-menu-item-select",
|
692
|
+
"description": "Dispatched when the menu item is selected"
|
693
|
+
},
|
694
|
+
{
|
695
|
+
"name": "d2l-menu-item-visibility-change",
|
696
|
+
"description": "Dispatched when the visibility of the menu item changes"
|
697
|
+
}
|
698
|
+
]
|
699
|
+
},
|
700
|
+
{
|
701
|
+
"name": "d2l-button-split",
|
702
|
+
"path": "./components/button/button-split.js",
|
703
|
+
"description": "A split button that provides a main action button and slot for a menu.",
|
704
|
+
"attributes": [
|
705
|
+
{
|
706
|
+
"name": "description",
|
707
|
+
"description": "ACCESSIBILITY: A description to be added to the main action button for accessibility when text does not provide enough context",
|
708
|
+
"type": "string"
|
709
|
+
},
|
710
|
+
{
|
711
|
+
"name": "disabled-tooltip",
|
712
|
+
"description": "Tooltip text when disabled",
|
713
|
+
"type": "string"
|
714
|
+
},
|
715
|
+
{
|
716
|
+
"name": "key",
|
717
|
+
"description": "REQUIRED: Key of the main action",
|
718
|
+
"type": "string"
|
719
|
+
},
|
720
|
+
{
|
721
|
+
"name": "text",
|
722
|
+
"description": "ACCESSIBILITY: REQUIRED: Accessible text for the main action button",
|
723
|
+
"type": "string"
|
724
|
+
},
|
725
|
+
{
|
726
|
+
"name": "disabled",
|
727
|
+
"description": "Disables the main action and dropdown opener buttons",
|
728
|
+
"type": "boolean",
|
729
|
+
"default": "false"
|
730
|
+
},
|
731
|
+
{
|
732
|
+
"name": "primary",
|
733
|
+
"description": "Styles the buttons as a primary buttons",
|
734
|
+
"type": "boolean",
|
735
|
+
"default": "false"
|
736
|
+
}
|
737
|
+
],
|
738
|
+
"properties": [
|
739
|
+
{
|
740
|
+
"name": "description",
|
741
|
+
"attribute": "description",
|
742
|
+
"description": "ACCESSIBILITY: A description to be added to the main action button for accessibility when text does not provide enough context",
|
743
|
+
"type": "string"
|
744
|
+
},
|
745
|
+
{
|
746
|
+
"name": "disabledTooltip",
|
747
|
+
"attribute": "disabled-tooltip",
|
748
|
+
"description": "Tooltip text when disabled",
|
749
|
+
"type": "string"
|
750
|
+
},
|
751
|
+
{
|
752
|
+
"name": "key",
|
753
|
+
"attribute": "key",
|
754
|
+
"description": "REQUIRED: Key of the main action",
|
755
|
+
"type": "string"
|
756
|
+
},
|
757
|
+
{
|
758
|
+
"name": "text",
|
759
|
+
"attribute": "text",
|
760
|
+
"description": "ACCESSIBILITY: REQUIRED: Accessible text for the main action button",
|
761
|
+
"type": "string"
|
762
|
+
},
|
763
|
+
{
|
764
|
+
"name": "disabled",
|
765
|
+
"attribute": "disabled",
|
766
|
+
"description": "Disables the main action and dropdown opener buttons",
|
767
|
+
"type": "boolean",
|
768
|
+
"default": "false"
|
769
|
+
},
|
770
|
+
{
|
771
|
+
"name": "primary",
|
772
|
+
"attribute": "primary",
|
773
|
+
"description": "Styles the buttons as a primary buttons",
|
774
|
+
"type": "boolean",
|
775
|
+
"default": "false"
|
776
|
+
}
|
777
|
+
],
|
778
|
+
"events": [
|
779
|
+
{
|
780
|
+
"name": "click",
|
781
|
+
"description": "Dispatched when a split button is clicked. The `key` is provided on the event detail."
|
782
|
+
}
|
783
|
+
]
|
784
|
+
},
|
622
785
|
{
|
623
786
|
"name": "d2l-button-subtle",
|
624
787
|
"path": "./components/button/button-subtle.js",
|
package/lang/ar.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "إغلاق التنبيه",
|
3
3
|
"components.breadcrumbs.breadcrumb": "شريط التنقل",
|
4
4
|
"components.button-add.addItem": "إضافة عنصر",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "يحتوي على أحداث.",
|
6
7
|
"components.calendar.notSelected": "لم يتم التحديد.",
|
7
8
|
"components.calendar.selected": "تم التحديد.",
|
package/lang/cy.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Cau Hysbysiad",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Briwsionyn Bara",
|
4
4
|
"components.button-add.addItem": "Ychwanegu Eitem",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Yn Cynnwys Digwyddiadau.",
|
6
7
|
"components.calendar.notSelected": "Heb ei Ddewis.",
|
7
8
|
"components.calendar.selected": "Wedi'i Ddewis.",
|
package/lang/da.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Luk besked",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Brødkrumme",
|
4
4
|
"components.button-add.addItem": "Tilføj element",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Har begivenheder.",
|
6
7
|
"components.calendar.notSelected": "Ikke valgt.",
|
7
8
|
"components.calendar.selected": "Valgt.",
|
package/lang/de.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Benachrichtigung schließen",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Brotkrümelnavigation",
|
4
4
|
"components.button-add.addItem": "Element hinzufügen",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Hat Ereignisse.",
|
6
7
|
"components.calendar.notSelected": "Nicht ausgewählt.",
|
7
8
|
"components.calendar.selected": "Ausgewählt.",
|
package/lang/en-gb.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Close Alert",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Breadcrumb",
|
4
4
|
"components.button-add.addItem": "Add Item",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Has Events.",
|
6
7
|
"components.calendar.notSelected": "Not Selected.",
|
7
8
|
"components.calendar.selected": "Selected.",
|
package/lang/en.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Close Alert",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Breadcrumb",
|
4
4
|
"components.button-add.addItem": "Add Item",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Has Events.",
|
6
7
|
"components.calendar.notSelected": "Not Selected.",
|
7
8
|
"components.calendar.selected": "Selected.",
|
package/lang/es-es.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Cerrar alerta",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Ruta de navegación",
|
4
4
|
"components.button-add.addItem": "Agregar elemento",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Tiene eventos.",
|
6
7
|
"components.calendar.notSelected": "No seleccionado.",
|
7
8
|
"components.calendar.selected": "Seleccionado.",
|
package/lang/es.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Cerrar alerta",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Ruta de navegación",
|
4
4
|
"components.button-add.addItem": "Agregar elemento",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Tiene eventos.",
|
6
7
|
"components.calendar.notSelected": "No seleccionado.",
|
7
8
|
"components.calendar.selected": "Seleccionado.",
|
package/lang/fr-fr.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Fermer l'alerte",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Chemin de navigation",
|
4
4
|
"components.button-add.addItem": "Ajouter un élément",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "A des événements.",
|
6
7
|
"components.calendar.notSelected": "Non sélectionné.",
|
7
8
|
"components.calendar.selected": "Sélectionné.",
|
package/lang/fr.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Fermer l'alerte",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Chemin de navigation",
|
4
4
|
"components.button-add.addItem": "Ajouter un élément",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Comprend des événements.",
|
6
7
|
"components.calendar.notSelected": "Non sélectionné(e)",
|
7
8
|
"components.calendar.selected": "Sélectionné(e).",
|
package/lang/haw.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Pani i ka makaʻala",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Palapalapala",
|
4
4
|
"components.button-add.addItem": "Pākuʻi Mea",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Loaʻa nā hanana.",
|
6
7
|
"components.calendar.notSelected": "ʻAʻole i koho ʻia.",
|
7
8
|
"components.calendar.selected": "Koho ʻia.",
|
package/lang/hi.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "अलर्ट बंद करें",
|
3
3
|
"components.breadcrumbs.breadcrumb": "ब्रेडक्रंब",
|
4
4
|
"components.button-add.addItem": "आइटम जोड़ें",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "ईवेंट हैं।",
|
6
7
|
"components.calendar.notSelected": "चयनित नहीं।",
|
7
8
|
"components.calendar.selected": "चयनित।",
|
package/lang/ja.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "アラートを閉じる",
|
3
3
|
"components.breadcrumbs.breadcrumb": "階層",
|
4
4
|
"components.button-add.addItem": "項目の追加",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "イベントがあります。",
|
6
7
|
"components.calendar.notSelected": "選択されていません。",
|
7
8
|
"components.calendar.selected": "選択されています。",
|
package/lang/ko.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "경보 닫기",
|
3
3
|
"components.breadcrumbs.breadcrumb": "이동 경로",
|
4
4
|
"components.button-add.addItem": "항목 추가",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "이벤트가 있습니다.",
|
6
7
|
"components.calendar.notSelected": "선택되지 않음.",
|
7
8
|
"components.calendar.selected": "선택됨.",
|
package/lang/mi.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Kati Matohi",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Pānui",
|
4
4
|
"components.button-add.addItem": "Tāpiri Tūemi",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "He takahanga anō.",
|
6
7
|
"components.calendar.notSelected": "Kāore i tīpakona.",
|
7
8
|
"components.calendar.selected": "I tīpakona.",
|
package/lang/nl.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Waarschuwing sluiten",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Kruimelpad",
|
4
4
|
"components.button-add.addItem": "Item toevoegen",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Bevat gebeurtenissen.",
|
6
7
|
"components.calendar.notSelected": "Niet geselecteerd.",
|
7
8
|
"components.calendar.selected": "Geselecteerd.",
|
package/lang/pt.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Fechar alerta",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Auxiliar de navegação",
|
4
4
|
"components.button-add.addItem": "Adicionar item",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Tem eventos.",
|
6
7
|
"components.calendar.notSelected": "Não selecionado.",
|
7
8
|
"components.calendar.selected": "Selecionado.",
|
package/lang/sv.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Stängningsvarning",
|
3
3
|
"components.breadcrumbs.breadcrumb": "Sökväg",
|
4
4
|
"components.button-add.addItem": "Lägg till objekt",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Har händelser.",
|
6
7
|
"components.calendar.notSelected": "Inte vald.",
|
7
8
|
"components.calendar.selected": "Markerad.",
|
package/lang/tr.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "Kapatma Uyarısı",
|
3
3
|
"components.breadcrumbs.breadcrumb": "İçerik Haritası",
|
4
4
|
"components.button-add.addItem": "Öğe Ekle",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "Olayları Var.",
|
6
7
|
"components.calendar.notSelected": "Seçili Değil.",
|
7
8
|
"components.calendar.selected": "Seçili.",
|
package/lang/zh-cn.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "关闭提醒",
|
3
3
|
"components.breadcrumbs.breadcrumb": "痕迹导航",
|
4
4
|
"components.button-add.addItem": "添加项目",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "有事件。",
|
6
7
|
"components.calendar.notSelected": "未选择。",
|
7
8
|
"components.calendar.selected": "已选择。",
|
package/lang/zh-tw.js
CHANGED
@@ -2,6 +2,7 @@ export default {
|
|
2
2
|
"components.alert.close": "關閉警示",
|
3
3
|
"components.breadcrumbs.breadcrumb": "導覽路徑",
|
4
4
|
"components.button-add.addItem": "新增項目",
|
5
|
+
"components.button-split.otherOptions": "Other Options",
|
5
6
|
"components.calendar.hasEvents": "有事件。",
|
6
7
|
"components.calendar.notSelected": "未選取。",
|
7
8
|
"components.calendar.selected": "已選取。",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@brightspace-ui/core",
|
3
|
-
"version": "3.
|
3
|
+
"version": "3.114.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",
|