@brightspace-ui/core 2.41.0 → 2.43.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/filter/README.md +73 -2
- package/components/filter/filter-overflow-group.js +41 -4
- package/components/filter/filter-tags.js +1 -1
- package/components/overflow-group/overflow-group-mixin.js +41 -7
- package/components/overflow-group/overflow-group.js +1 -0
- package/components/switch/README.md +28 -2
- package/components/switch/demo/switch.html +15 -0
- package/components/switch/switch-mixin.js +41 -12
- package/components/switch/switch-visibility.js +64 -6
- package/components/switch/switch.js +1 -0
- package/components/tooltip/tooltip.js +4 -1
- package/custom-elements.json +19 -40
- package/lang/ar.js +4 -1
- package/lang/cy.js +4 -1
- package/lang/da.js +4 -1
- package/lang/de.js +4 -1
- package/lang/en.js +4 -1
- package/lang/es-es.js +4 -1
- package/lang/es.js +4 -1
- package/lang/fr-fr.js +4 -1
- package/lang/fr.js +4 -1
- package/lang/hi.js +4 -1
- package/lang/ja.js +4 -1
- package/lang/ko.js +4 -1
- package/lang/nl.js +4 -1
- package/lang/pt.js +4 -1
- package/lang/sv.js +4 -1
- package/lang/tr.js +4 -1
- package/lang/zh-cn.js +4 -1
- package/lang/zh-tw.js +4 -1
- package/package.json +1 -1
|
@@ -254,7 +254,7 @@ A tag-list allowing the user to see (and remove) the currently applied filters.
|
|
|
254
254
|
display: block;
|
|
255
255
|
max-width: 100%;
|
|
256
256
|
}
|
|
257
|
-
|
|
257
|
+
}
|
|
258
258
|
</style>
|
|
259
259
|
<div class="filter-wrapper">
|
|
260
260
|
<d2l-filter-tags filter-ids="core-filter core-filter-2"></d2l-filter-tags>
|
|
@@ -300,7 +300,78 @@ A tag-list allowing the user to see (and remove) the currently applied filters.
|
|
|
300
300
|
|
|
301
301
|
## Filter Overflow Group [d2l-filter-overflow-group]
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
The `d2l-filter-overflow-group` is a container for multiple filters that handles overflow on smaller screens. Overflowing filters are displayed in a single filter.
|
|
304
|
+
|
|
305
|
+
<!-- docs: demo live name:d2l-filter-overflow-group align:start display:block autoSize:false size:medium -->
|
|
306
|
+
```html
|
|
307
|
+
<script type="module">
|
|
308
|
+
import '@brightspace-ui/core/components/filter/filter.js';
|
|
309
|
+
import '@brightspace-ui/core/components/filter/filter-dimension-set.js';
|
|
310
|
+
import '@brightspace-ui/core/components/filter/filter-dimension-set-value.js';
|
|
311
|
+
import '@brightspace-ui/core/components/filter/filter-overflow-group.js';
|
|
312
|
+
</script>
|
|
313
|
+
<d2l-filter-overflow-group>
|
|
314
|
+
<d2l-filter>
|
|
315
|
+
<d2l-filter-dimension-set key="skill" text="Skill">
|
|
316
|
+
<d2l-filter-dimension-set-value key="communication" text="Fall"></d2l-filter-dimension-set-value>
|
|
317
|
+
<d2l-filter-dimension-set-value key="leadership" text="Winter"></d2l-filter-dimension-set-value>
|
|
318
|
+
<d2l-filter-dimension-set-value key="management" text="Spring"></d2l-filter-dimension-set-value>
|
|
319
|
+
<d2l-filter-dimension-set-value key="planning" text="Summer"></d2l-filter-dimension-set-value>
|
|
320
|
+
</d2l-filter-dimension-set>
|
|
321
|
+
</d2l-filter>
|
|
322
|
+
<d2l-filter>
|
|
323
|
+
<d2l-filter-dimension-set key="type" text="Type" selection-single>
|
|
324
|
+
<d2l-filter-dimension-set-value key="certificate" text="Certificate"></d2l-filter-dimension-set-value>
|
|
325
|
+
<d2l-filter-dimension-set-value key="degree" text="Degree"></d2l-filter-dimension-set-value>
|
|
326
|
+
<d2l-filter-dimension-set-value key="diploma" text="Diploma"></d2l-filter-dimension-set-value>
|
|
327
|
+
<d2l-filter-dimension-set-value key="course" text="Course"></d2l-filter-dimension-set-value>
|
|
328
|
+
</d2l-filter-dimension-set>
|
|
329
|
+
</d2l-filter>
|
|
330
|
+
<d2l-filter>
|
|
331
|
+
<d2l-filter-dimension-set key="course" text="Course" select-all>
|
|
332
|
+
<d2l-filter-dimension-set-value key="art" text="Art"></d2l-filter-dimension-set-value>
|
|
333
|
+
<d2l-filter-dimension-set-value key="astronomy" text="Astronomy" selected></d2l-filter-dimension-set-value>
|
|
334
|
+
<d2l-filter-dimension-set-value key="biology" text="Biology"></d2l-filter-dimension-set-value>
|
|
335
|
+
<d2l-filter-dimension-set-value key="chemistry" text="Chemistry"></d2l-filter-dimension-set-value>
|
|
336
|
+
</d2l-filter-dimension-set>
|
|
337
|
+
<d2l-filter-dimension-set key="duration" text="Duration">
|
|
338
|
+
<d2l-filter-dimension-set-value key="lessthanthree" text="< 3 months"></d2l-filter-dimension-set-value>
|
|
339
|
+
<d2l-filter-dimension-set-value key="threetosix" text="3-6 months"></d2l-filter-dimension-set-value>
|
|
340
|
+
<d2l-filter-dimension-set-value key="sixtotwelve" text="6-12 months"></d2l-filter-dimension-set-value>
|
|
341
|
+
</d2l-filter-dimension-set>
|
|
342
|
+
</d2l-filter>
|
|
343
|
+
<d2l-filter>
|
|
344
|
+
<d2l-filter-dimension-set key="provider" text="Semester3">
|
|
345
|
+
<d2l-filter-dimension-set-value key="mcmaster" text="McMaster"></d2l-filter-dimension-set-value>
|
|
346
|
+
<d2l-filter-dimension-set-value key="powered" text="PowerED"></d2l-filter-dimension-set-value>
|
|
347
|
+
<d2l-filter-dimension-set-value key="guelph" text="University of Guelph"></d2l-filter-dimension-set-value>
|
|
348
|
+
<d2l-filter-dimension-set-value key="manitoba" text="University of Manitoba"></d2l-filter-dimension-set-value>
|
|
349
|
+
</d2l-filter-dimension-set>
|
|
350
|
+
</d2l-filter>
|
|
351
|
+
<d2l-filter>
|
|
352
|
+
<d2l-filter-dimension-set key="format" text="Format">
|
|
353
|
+
<d2l-filter-dimension-set-value key="selfpaced" text="Self-Paced"></d2l-filter-dimension-set-value>
|
|
354
|
+
<d2l-filter-dimension-set-value key="instructor" text="Instructor Lead" selected></d2l-filter-dimension-set-value>
|
|
355
|
+
</d2l-filter-dimension-set>
|
|
356
|
+
</d2l-filter>
|
|
357
|
+
<d2l-filter>
|
|
358
|
+
<d2l-filter-dimension-set key="language" text="Language" selection-single>
|
|
359
|
+
<d2l-filter-dimension-set-value key="english" text="English"></d2l-filter-dimension-set-value>
|
|
360
|
+
<d2l-filter-dimension-set-value key="french" text="French"></d2l-filter-dimension-set-value>
|
|
361
|
+
<d2l-filter-dimension-set-value key="spanish" text="Spanish"></d2l-filter-dimension-set-value>
|
|
362
|
+
</d2l-filter-dimension-set>
|
|
363
|
+
</d2l-filter>
|
|
364
|
+
</d2l-filter-overflow-group>
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
<!-- docs: start hidden content -->
|
|
368
|
+
### Properties
|
|
369
|
+
|
|
370
|
+
| Property | Type | Description |
|
|
371
|
+
|---|---|---|
|
|
372
|
+
| `min-to-show` | Number | The minimum number of elements to always show. Please consult the design team when using this attribute. |
|
|
373
|
+
| `max-to-show` | Number | The maximum number of elements to show |
|
|
374
|
+
<!-- docs: end hidden content -->
|
|
304
375
|
|
|
305
376
|
## Filter Dimension: Date [d2l-filter-dimension-date]
|
|
306
377
|
|
|
@@ -1,26 +1,63 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import './filter.js';
|
|
2
|
+
import { css, html, LitElement } from 'lit';
|
|
3
|
+
import { OVERFLOW_CLASS, OverflowGroupMixin } from '../overflow-group/overflow-group-mixin.js';
|
|
4
|
+
import { RtlMixin } from '../../mixins/rtl-mixin.js';
|
|
5
|
+
|
|
6
|
+
function createFilterItem(node) {
|
|
7
|
+
const dimensionSets = node.querySelectorAll('d2l-filter-dimension-set');
|
|
8
|
+
const clones = Array.from(dimensionSets).map((set) => set.cloneNode(true));
|
|
9
|
+
return clones;
|
|
10
|
+
}
|
|
3
11
|
|
|
4
12
|
/**
|
|
5
13
|
* A component that can be used to display a group of filters that will be put into an overflow filter when they no longer fit on the first line of their container
|
|
6
14
|
* @slot - d2l-filters to be added to the container
|
|
7
15
|
*/
|
|
8
|
-
class FilterOverflowGroup extends OverflowGroupMixin(LitElement) {
|
|
16
|
+
class FilterOverflowGroup extends OverflowGroupMixin(RtlMixin(LitElement)) {
|
|
9
17
|
|
|
10
18
|
static get styles() {
|
|
11
19
|
return [super.styles, css`
|
|
12
20
|
::slotted(d2l-filter) {
|
|
13
21
|
margin-right: 0.3rem;
|
|
14
22
|
}
|
|
23
|
+
:host([dir="rtl"]) ::slotted(d2l-filter) {
|
|
24
|
+
margin-left: 0.3rem;
|
|
25
|
+
margin-right: 0;
|
|
26
|
+
}
|
|
15
27
|
`];
|
|
16
28
|
}
|
|
17
29
|
|
|
30
|
+
firstUpdated(changedProperties) {
|
|
31
|
+
super.firstUpdated(changedProperties);
|
|
32
|
+
|
|
33
|
+
this.addEventListener('d2l-filter-change', this._handleFilterChange);
|
|
34
|
+
}
|
|
35
|
+
|
|
18
36
|
convertToOverflowItem(node) {
|
|
19
37
|
const tagName = node.tagName.toLowerCase();
|
|
20
38
|
if (tagName !== 'd2l-filter') console.warn(`d2l-filter-overflow-group: ${tagName} is invalid in this group. This group should only contain d2l-filter direct child elements.`);
|
|
39
|
+
else return createFilterItem(node);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
getOverflowContainer(overflowItems) {
|
|
43
|
+
return html`
|
|
44
|
+
<d2l-filter class="${OVERFLOW_CLASS}" @d2l-filter-change="${this._handleFilterChange}">
|
|
45
|
+
${overflowItems}
|
|
46
|
+
</d2l-filter>
|
|
47
|
+
`;
|
|
21
48
|
}
|
|
22
49
|
|
|
23
|
-
|
|
50
|
+
_handleFilterChange(e) {
|
|
51
|
+
const target = (e.target.classList && e.target.classList.contains(OVERFLOW_CLASS)) ? this : e.target;
|
|
52
|
+
e.detail.dimensions.forEach((dimension) => {
|
|
53
|
+
const filterSet = target.querySelector(`d2l-filter-dimension-set[key=${dimension.dimensionKey}`);
|
|
54
|
+
if (!filterSet) return;
|
|
55
|
+
dimension.changes.forEach((change) => {
|
|
56
|
+
const filterSetValue = filterSet.querySelector(`d2l-filter-dimension-set-value[key=${change.valueKey}]`);
|
|
57
|
+
if (!filterSetValue) return;
|
|
58
|
+
filterSetValue.selected = change.selected;
|
|
59
|
+
});
|
|
60
|
+
});
|
|
24
61
|
}
|
|
25
62
|
|
|
26
63
|
}
|
|
@@ -2,6 +2,7 @@ import { css, html, nothing } from 'lit';
|
|
|
2
2
|
import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
|
|
3
3
|
import { offscreenStyles } from '../offscreen/offscreen.js';
|
|
4
4
|
import ResizeObserver from 'resize-observer-polyfill/dist/ResizeObserver.es.js';
|
|
5
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
5
6
|
|
|
6
7
|
export const OVERFLOW_CLASS = 'd2l-overflow-container';
|
|
7
8
|
export const OVERFLOW_MINI_CLASS = 'd2l-overflow-container-mini';
|
|
@@ -28,8 +29,7 @@ export const OverflowGroupMixin = superclass => class extends LocalizeCoreElemen
|
|
|
28
29
|
static get properties() {
|
|
29
30
|
return {
|
|
30
31
|
/**
|
|
31
|
-
*
|
|
32
|
-
* @type {boolean}
|
|
32
|
+
* @ignore
|
|
33
33
|
*/
|
|
34
34
|
autoShow: {
|
|
35
35
|
type: Boolean,
|
|
@@ -95,7 +95,9 @@ export const OverflowGroupMixin = superclass => class extends LocalizeCoreElemen
|
|
|
95
95
|
this._handleResize = this._handleResize.bind(this);
|
|
96
96
|
this._resizeObserver = new ResizeObserver((entries) => requestAnimationFrame(() => this._handleResize(entries)));
|
|
97
97
|
|
|
98
|
+
this._hasResized = false;
|
|
98
99
|
this._isObserving = false;
|
|
100
|
+
this._itemHeight = 0;
|
|
99
101
|
this._mini = this.openerType === OPENER_TYPE.ICON;
|
|
100
102
|
this._overflowContainerHidden = false;
|
|
101
103
|
this._slotItems = [];
|
|
@@ -129,8 +131,13 @@ export const OverflowGroupMixin = superclass => class extends LocalizeCoreElemen
|
|
|
129
131
|
}
|
|
130
132
|
});
|
|
131
133
|
|
|
134
|
+
const containerStyles = {
|
|
135
|
+
minHeight: this.autoShow ? 'none' : `${this._itemHeight}px`,
|
|
136
|
+
maxHeight: this.autoShow ? 'none' : `${this._itemHeight}px`
|
|
137
|
+
};
|
|
138
|
+
|
|
132
139
|
return html`
|
|
133
|
-
<div class="d2l-overflow-group-container">
|
|
140
|
+
<div class="d2l-overflow-group-container" style="${styleMap(containerStyles)}">
|
|
134
141
|
<slot @slotchange="${this._handleSlotChange}"></slot>
|
|
135
142
|
${overflowContainer}
|
|
136
143
|
</div>
|
|
@@ -277,12 +284,15 @@ export const OverflowGroupMixin = superclass => class extends LocalizeCoreElemen
|
|
|
277
284
|
|
|
278
285
|
_getItemLayouts(filteredNodes) {
|
|
279
286
|
const items = filteredNodes.map((node) => {
|
|
287
|
+
node.removeAttribute('data-is-chomped');
|
|
280
288
|
const computedStyles = window.getComputedStyle(node);
|
|
289
|
+
const itemHidden = computedStyles.display === 'none';
|
|
290
|
+
this._itemHeight = !itemHidden ? Math.max(this._itemHeight, Math.ceil(parseFloat(computedStyles.height))) : this._itemHeight;
|
|
281
291
|
|
|
282
292
|
return {
|
|
283
293
|
type: node.tagName.toLowerCase(),
|
|
284
294
|
isChomped: false,
|
|
285
|
-
isHidden:
|
|
295
|
+
isHidden: itemHidden,
|
|
286
296
|
width: Math.ceil(parseFloat(computedStyles.width) || 0)
|
|
287
297
|
+ parseInt(computedStyles.marginRight) || 0
|
|
288
298
|
+ parseInt(computedStyles.marginLeft) || 0,
|
|
@@ -316,20 +326,44 @@ export const OverflowGroupMixin = superclass => class extends LocalizeCoreElemen
|
|
|
316
326
|
if (!mutations || mutations.length === 0) return;
|
|
317
327
|
if (this._updateOverflowItemsRequested) return;
|
|
318
328
|
|
|
329
|
+
let isWidthModifyingMutation = false;
|
|
330
|
+
for (const mutation of mutations) {
|
|
331
|
+
if (mutation.attributeName
|
|
332
|
+
&& (mutation.attributeName === 'selected' || mutation.attributeName === 'text')
|
|
333
|
+
) {
|
|
334
|
+
isWidthModifyingMutation = true;
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
319
339
|
this._updateOverflowItemsRequested = true;
|
|
320
340
|
setTimeout(() => {
|
|
321
|
-
this._overflowItems = this._slotItems.map(node => this.convertToOverflowItem(node));
|
|
341
|
+
this._overflowItems = this._slotItems.map((node) => this.convertToOverflowItem(node));
|
|
342
|
+
|
|
343
|
+
// when certain attributes change the corresponding item width can also change and so we need to re-get the layouts and chomp
|
|
344
|
+
if (isWidthModifyingMutation) {
|
|
345
|
+
this._itemLayouts = this._getItemLayouts(this._slotItems);
|
|
346
|
+
this._chomp();
|
|
347
|
+
}
|
|
322
348
|
this._updateOverflowItemsRequested = false;
|
|
323
349
|
this.requestUpdate();
|
|
324
350
|
}, 0);
|
|
325
351
|
}
|
|
326
352
|
|
|
327
|
-
_handleResize(entries) {
|
|
353
|
+
async _handleResize(entries) {
|
|
354
|
+
await (document.fonts ? document.fonts.ready : Promise.resolve()); // computed widths can be incorrect if we don't wait for fonts to load
|
|
328
355
|
this._availableWidth = Math.ceil(entries[0].contentRect.width);
|
|
329
|
-
|
|
356
|
+
|
|
357
|
+
if (!this._hasResized) {
|
|
358
|
+
this._hasResized = true;
|
|
359
|
+
await this._handleSlotChange();
|
|
360
|
+
} else {
|
|
361
|
+
this._chomp();
|
|
362
|
+
}
|
|
330
363
|
}
|
|
331
364
|
|
|
332
365
|
_handleSlotChange() {
|
|
366
|
+
if (!this._hasResized) return;
|
|
333
367
|
requestAnimationFrame(async() => {
|
|
334
368
|
await this._getItems();
|
|
335
369
|
|
|
@@ -56,6 +56,7 @@ function createMenuItemSeparator() {
|
|
|
56
56
|
* A component that can be used to display a set of buttons, links or menus that will be put into a dropdown menu when they no longer fit on the first line of their container
|
|
57
57
|
* @slot - Buttons, dropdown buttons, links or other items to be added to the container
|
|
58
58
|
* @attr {'default'|'icon'} [opener-type="default"] - Set the opener type to 'icon' for a `...` menu icon instead of `More actions` text
|
|
59
|
+
* @attr {boolean} auto-show - Use predefined classes on slot elements to set min and max buttons to show
|
|
59
60
|
*/
|
|
60
61
|
class OverflowGroup extends OverflowGroupMixin(RtlMixin(LitElement)) {
|
|
61
62
|
|
|
@@ -63,6 +63,8 @@ To make your usage of `d2l-switch` accessible, use the following property:
|
|
|
63
63
|
|
|
64
64
|
The `d2l-switch-visibility` element is a variant of the generic switch configured with special icons and default text for toggling "visibility".
|
|
65
65
|
|
|
66
|
+
It consists of 3 states: On ("Visible"), Off ("Hidden"), and On with Conditions ("Visible. Conditions must be met.").
|
|
67
|
+
|
|
66
68
|
<!-- docs: demo live name:d2l-switch-visibility autoSize:false size:small -->
|
|
67
69
|
```html
|
|
68
70
|
<script type="module">
|
|
@@ -76,12 +78,36 @@ The `d2l-switch-visibility` element is a variant of the generic switch configure
|
|
|
76
78
|
|
|
77
79
|
| Property | Type | Description |
|
|
78
80
|
|---|---|---|
|
|
79
|
-
| `text`| String, required | Accessible text for the switch; defaults to "Visibility" |
|
|
80
81
|
| `disabled` | Boolean | Disabled the switch |
|
|
81
|
-
| `on` | Boolean | Whether the switch is "on" or "off" |
|
|
82
|
+
| `on` | Boolean | Whether the switch is "on" or "off". If content is passed into the switch slot, the switch will be "on with conditions". |
|
|
82
83
|
| `text-position` | String | Valid values are: `start`, `end` (default), and `hidden` |
|
|
83
84
|
|
|
84
85
|
### Events
|
|
85
86
|
|
|
86
87
|
- `change`: dispatched when the `on` property is updated
|
|
88
|
+
|
|
89
|
+
### Slots
|
|
90
|
+
|
|
91
|
+
- Optional default slot content - Content that will be displayed within the "conditions" opener tooltip when the switch is on.
|
|
92
|
+
|
|
87
93
|
<!-- docs: end hidden content -->
|
|
94
|
+
|
|
95
|
+
### Visibility Switch with Conditions
|
|
96
|
+
It may be helpful to have visibility be dependent on additional conditions being met outside of the Visibility Switch.
|
|
97
|
+
|
|
98
|
+
Additional information can be added to the label by passing it into the `d2l-switch-visibility` element.
|
|
99
|
+
|
|
100
|
+
<!-- docs: demo code autoSize:false size:large -->
|
|
101
|
+
```html
|
|
102
|
+
<script type="module">
|
|
103
|
+
import '@brightspace-ui/core/components/switch/switch-visibility.js';
|
|
104
|
+
</script>
|
|
105
|
+
<d2l-switch-visibility on>
|
|
106
|
+
These are some conditions that must be met for the activity to be visible.
|
|
107
|
+
<ul>
|
|
108
|
+
<li> Condition 1 </li>
|
|
109
|
+
<li> Condition 2 </li>
|
|
110
|
+
<li> Condition 3 </li>
|
|
111
|
+
</ul>
|
|
112
|
+
</d2l-switch-visibility>
|
|
113
|
+
```
|
|
@@ -53,6 +53,21 @@
|
|
|
53
53
|
</template>
|
|
54
54
|
</d2l-demo-snippet>
|
|
55
55
|
|
|
56
|
+
<h2>Visibility (with conditions)</h2>
|
|
57
|
+
|
|
58
|
+
<d2l-demo-snippet>
|
|
59
|
+
<template>
|
|
60
|
+
<d2l-switch-visibility>
|
|
61
|
+
These are some conditions that must be met for the activity to be visible.
|
|
62
|
+
<ul>
|
|
63
|
+
<li> Condition 1 </li>
|
|
64
|
+
<li> Condition 2 </li>
|
|
65
|
+
<li> Condition 3 </li>
|
|
66
|
+
</ul>
|
|
67
|
+
</d2l-switch-visibility>
|
|
68
|
+
</template>
|
|
69
|
+
</d2l-demo-snippet>
|
|
70
|
+
|
|
56
71
|
</d2l-demo-page>
|
|
57
72
|
</body>
|
|
58
73
|
</html>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '../colors/colors.js';
|
|
2
2
|
import { css, html } from 'lit';
|
|
3
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
3
4
|
import { FocusMixin } from '../../mixins/focus-mixin.js';
|
|
4
5
|
import { FocusVisiblePolyfillMixin } from '../../mixins/focus-visible-polyfill-mixin.js';
|
|
5
6
|
import { getUniqueId } from '../../helpers/uniqueId.js';
|
|
@@ -21,8 +22,7 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
21
22
|
*/
|
|
22
23
|
on: { type: Boolean, reflect: true },
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
-
* @type {string}
|
|
25
|
+
* @ignore - Need to add documentation in each component that uses this mixin.
|
|
26
26
|
*/
|
|
27
27
|
text: { type: String, reflect: true },
|
|
28
28
|
/**
|
|
@@ -30,7 +30,8 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
30
30
|
* @type {'start'|'end'|'hidden'}
|
|
31
31
|
* @default end
|
|
32
32
|
*/
|
|
33
|
-
textPosition: { type: String, attribute: 'text-position', reflect: true }
|
|
33
|
+
textPosition: { type: String, attribute: 'text-position', reflect: true },
|
|
34
|
+
_hovering: { state: true }
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -49,7 +50,7 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
49
50
|
border: 2px solid transparent;
|
|
50
51
|
border-radius: 1rem;
|
|
51
52
|
box-sizing: border-box;
|
|
52
|
-
cursor:
|
|
53
|
+
cursor: default;
|
|
53
54
|
display: inline-block;
|
|
54
55
|
font-size: 0;
|
|
55
56
|
line-height: 0;
|
|
@@ -60,10 +61,6 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
60
61
|
.d2l-switch-container.focus-visible {
|
|
61
62
|
border-color: var(--d2l-color-celestine);
|
|
62
63
|
}
|
|
63
|
-
.d2l-switch-container:hover > .d2l-switch-inner {
|
|
64
|
-
border-color: var(--d2l-color-celestine);
|
|
65
|
-
box-shadow: 0 0 0 1px var(--d2l-color-celestine) inset;
|
|
66
|
-
}
|
|
67
64
|
:host([disabled]) .d2l-switch-container {
|
|
68
65
|
cursor: default;
|
|
69
66
|
opacity: 0.5;
|
|
@@ -147,9 +144,17 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
147
144
|
transform: scale(0.35);
|
|
148
145
|
}
|
|
149
146
|
.d2l-switch-text {
|
|
147
|
+
cursor: default;
|
|
150
148
|
font-size: 0.8rem;
|
|
151
149
|
font-weight: 400;
|
|
152
150
|
}
|
|
151
|
+
:host([text-position="hidden"]) .d2l-switch-text {
|
|
152
|
+
display: none;
|
|
153
|
+
}
|
|
154
|
+
.d2l-switch-inner:hover, .switch-hover {
|
|
155
|
+
border-color: var(--d2l-color-celestine);
|
|
156
|
+
box-shadow: 0 0 0 1px var(--d2l-color-celestine) inset;
|
|
157
|
+
}
|
|
153
158
|
@media (prefers-reduced-motion: reduce) {
|
|
154
159
|
.d2l-switch-toggle,
|
|
155
160
|
.d2l-switch-icon-on,
|
|
@@ -167,6 +172,7 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
167
172
|
this.on = false;
|
|
168
173
|
this.textPosition = 'end';
|
|
169
174
|
this._textId = getUniqueId();
|
|
175
|
+
this._hovering = false;
|
|
170
176
|
}
|
|
171
177
|
|
|
172
178
|
static get focusElementSelector() {
|
|
@@ -182,11 +188,17 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
182
188
|
|
|
183
189
|
render() {
|
|
184
190
|
const tabindex = (!this.disabled ? '0' : undefined);
|
|
185
|
-
const
|
|
191
|
+
const innerSwitchClasses = {
|
|
192
|
+
'switch-hover': this._hovering,
|
|
193
|
+
'd2l-switch-inner': true
|
|
194
|
+
};
|
|
195
|
+
const switchLabel = html`<span id="${this._textId}" class="d2l-switch-text">${this._labelContent}</span>`;
|
|
186
196
|
const textPosition = (this.textPosition === 'start' || this.textPosition === 'hidden'
|
|
187
197
|
? this.textPosition : 'end');
|
|
198
|
+
|
|
199
|
+
// Note: we render the switchLabel in the case of textPosition === 'hidden' so that any slot handlers can pick up on content being passed in
|
|
188
200
|
return html`
|
|
189
|
-
${textPosition === 'start' ?
|
|
201
|
+
${textPosition === 'start' ? switchLabel : ''}
|
|
190
202
|
<div
|
|
191
203
|
aria-checked="${this.on ? 'true' : 'false'}"
|
|
192
204
|
aria-label="${ifDefined(textPosition === 'hidden' ? this.text : undefined)}"
|
|
@@ -197,16 +209,25 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
197
209
|
@keyup="${this._handleKeyUp}"
|
|
198
210
|
role="switch"
|
|
199
211
|
tabindex="${ifDefined(tabindex)}">
|
|
200
|
-
<div class="
|
|
212
|
+
<div class="${classMap(innerSwitchClasses)}">
|
|
201
213
|
<div class="d2l-switch-toggle"><div></div></div>
|
|
202
214
|
<div class="d2l-switch-icon-on">${this.onIcon}</div>
|
|
203
215
|
<div class="d2l-switch-icon-off">${this.offIcon}</div>
|
|
204
216
|
</div>
|
|
205
217
|
</div>
|
|
206
|
-
${textPosition === 'end' ?
|
|
218
|
+
${textPosition === 'end' || textPosition === 'hidden' ? switchLabel : ''}
|
|
207
219
|
`;
|
|
208
220
|
}
|
|
209
221
|
|
|
222
|
+
get _labelContent() {
|
|
223
|
+
return html`<span
|
|
224
|
+
@click='${this._handleClick}'
|
|
225
|
+
@mouseenter='${this._handleSwitchHover}'
|
|
226
|
+
@mouseleave='${this._handleSwitchHoverLeave}'>
|
|
227
|
+
${this.text}
|
|
228
|
+
</span>`;
|
|
229
|
+
}
|
|
230
|
+
|
|
210
231
|
_handleClick() {
|
|
211
232
|
this._toggleState();
|
|
212
233
|
}
|
|
@@ -221,6 +242,14 @@ export const SwitchMixin = superclass => class extends FocusMixin(RtlMixin(Focus
|
|
|
221
242
|
if (e.keyCode === 32) this._toggleState();
|
|
222
243
|
}
|
|
223
244
|
|
|
245
|
+
_handleSwitchHover() {
|
|
246
|
+
this._hovering = true;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
_handleSwitchHoverLeave() {
|
|
250
|
+
this._hovering = false;
|
|
251
|
+
}
|
|
252
|
+
|
|
224
253
|
_toggleState() {
|
|
225
254
|
if (this.disabled) return;
|
|
226
255
|
this.on = !this.on;
|
|
@@ -1,19 +1,53 @@
|
|
|
1
1
|
import '../icons/icon.js';
|
|
2
|
-
import
|
|
2
|
+
import '../tooltip/tooltip-help.js';
|
|
3
|
+
import { css, html, LitElement } from 'lit';
|
|
4
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
3
5
|
import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
|
|
4
6
|
import { SwitchMixin } from './switch-mixin.js';
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* A variant of the generic switch configured with special icons and default text for toggling "visibility".
|
|
10
|
+
* @slot - Optional content that will be displayed within the "conditions" opener tooltip when the switch is on.
|
|
8
11
|
*/
|
|
9
12
|
class VisibilitySwitch extends LocalizeCoreElement(SwitchMixin(LitElement)) {
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
static get properties() {
|
|
15
|
+
return {
|
|
16
|
+
_hasConditions: { state: true }
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static get styles() {
|
|
21
|
+
return [super.styles, css`
|
|
22
|
+
d2l-tooltip-help {
|
|
23
|
+
display: none;
|
|
24
|
+
}
|
|
25
|
+
d2l-tooltip-help.switch-visibility-conditions-show {
|
|
26
|
+
display: inline;
|
|
27
|
+
}
|
|
28
|
+
`];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
constructor() {
|
|
32
|
+
super();
|
|
33
|
+
this._hasConditions = false;
|
|
34
|
+
}
|
|
35
|
+
|
|
15
36
|
get text() {
|
|
16
|
-
|
|
37
|
+
if (this._text) return this._text;
|
|
38
|
+
|
|
39
|
+
if (this.on && this._hasConditions && this.textPosition === 'hidden') {
|
|
40
|
+
return `${this.localize('components.switch.visibleWithPeriod')} ${this.localize('components.switch.conditions')}`;
|
|
41
|
+
}
|
|
42
|
+
else if (this.on && this._hasConditions) {
|
|
43
|
+
return this.localize('components.switch.visibleWithPeriod');
|
|
44
|
+
}
|
|
45
|
+
else if (this.on) {
|
|
46
|
+
return this.localize('components.switch.visible');
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return this.localize('components.switch.hidden');
|
|
50
|
+
}
|
|
17
51
|
}
|
|
18
52
|
|
|
19
53
|
set text(val) {
|
|
@@ -32,6 +66,30 @@ class VisibilitySwitch extends LocalizeCoreElement(SwitchMixin(LitElement)) {
|
|
|
32
66
|
return html`<d2l-icon icon="tier1:visibility-show"></d2l-icon>`;
|
|
33
67
|
}
|
|
34
68
|
|
|
69
|
+
get _labelContent() {
|
|
70
|
+
if (this._text) return super._labelContent;
|
|
71
|
+
|
|
72
|
+
const tooltipHelpClasses = {
|
|
73
|
+
'switch-visibility-conditions-show': this.on && this._hasConditions,
|
|
74
|
+
'd2l-switch-text': true
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const conditions = html`
|
|
78
|
+
<d2l-tooltip-help
|
|
79
|
+
class="${classMap(tooltipHelpClasses)}"
|
|
80
|
+
id="conditions-help"
|
|
81
|
+
inherit-font-style
|
|
82
|
+
text="${this.localize('components.switch.conditions')}">
|
|
83
|
+
<slot @slotchange="${this._handleConditionsSlotChange}"></slot>
|
|
84
|
+
</d2l-tooltip-help>
|
|
85
|
+
`;
|
|
86
|
+
|
|
87
|
+
return html`${super._labelContent}${conditions}`;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
_handleConditionsSlotChange(e) {
|
|
91
|
+
this._hasConditions = e.target.assignedNodes({ flatten: true }).length > 0;
|
|
92
|
+
}
|
|
35
93
|
}
|
|
36
94
|
|
|
37
95
|
customElements.define('d2l-switch-visibility', VisibilitySwitch);
|
|
@@ -466,11 +466,14 @@ class Tooltip extends RtlMixin(LitElement) {
|
|
|
466
466
|
}
|
|
467
467
|
}
|
|
468
468
|
|
|
469
|
+
// Note: role="text" is a workaround for Safari. Otherwise, list-item content is not announced with VoiceOver
|
|
469
470
|
return html`
|
|
470
471
|
<div class="d2l-tooltip-container">
|
|
471
472
|
<div class="d2l-tooltip-position" style=${styleMap(tooltipPositionStyle)}>
|
|
472
473
|
<div class="d2l-body-small d2l-tooltip-content">
|
|
473
|
-
<
|
|
474
|
+
<div role="text">
|
|
475
|
+
<slot></slot>
|
|
476
|
+
</div>
|
|
474
477
|
</div>
|
|
475
478
|
</div>
|
|
476
479
|
<div class="d2l-tooltip-pointer">
|
package/custom-elements.json
CHANGED
|
@@ -3364,12 +3364,6 @@
|
|
|
3364
3364
|
"path": "./components/filter/filter-overflow-group.js",
|
|
3365
3365
|
"description": "A component that can be used to display a group of filters that will be put into an overflow filter when they no longer fit on the first line of their container",
|
|
3366
3366
|
"attributes": [
|
|
3367
|
-
{
|
|
3368
|
-
"name": "auto-show",
|
|
3369
|
-
"description": "Use predefined classes on slot elements to set min and max slotted items to show",
|
|
3370
|
-
"type": "boolean",
|
|
3371
|
-
"default": "false"
|
|
3372
|
-
},
|
|
3373
3367
|
{
|
|
3374
3368
|
"name": "max-to-show",
|
|
3375
3369
|
"description": "maximum amount of slotted items to show",
|
|
@@ -3386,8 +3380,6 @@
|
|
|
3386
3380
|
"properties": [
|
|
3387
3381
|
{
|
|
3388
3382
|
"name": "autoShow",
|
|
3389
|
-
"attribute": "auto-show",
|
|
3390
|
-
"description": "Use predefined classes on slot elements to set min and max slotted items to show",
|
|
3391
3383
|
"type": "boolean",
|
|
3392
3384
|
"default": "false"
|
|
3393
3385
|
},
|
|
@@ -8831,12 +8823,6 @@
|
|
|
8831
8823
|
"type": "'default'|'subtle'",
|
|
8832
8824
|
"default": "\"\\\"default\\\"\""
|
|
8833
8825
|
},
|
|
8834
|
-
{
|
|
8835
|
-
"name": "auto-show",
|
|
8836
|
-
"description": "Use predefined classes on slot elements to set min and max slotted items to show",
|
|
8837
|
-
"type": "boolean",
|
|
8838
|
-
"default": "false"
|
|
8839
|
-
},
|
|
8840
8826
|
{
|
|
8841
8827
|
"name": "max-to-show",
|
|
8842
8828
|
"description": "maximum amount of slotted items to show",
|
|
@@ -8854,6 +8840,11 @@
|
|
|
8854
8840
|
"description": "Set the opener type to 'icon' for a `...` menu icon instead of `More actions` text",
|
|
8855
8841
|
"type": "'default'|'icon'",
|
|
8856
8842
|
"default": "\"default\""
|
|
8843
|
+
},
|
|
8844
|
+
{
|
|
8845
|
+
"name": "auto-show",
|
|
8846
|
+
"description": "Use predefined classes on slot elements to set min and max buttons to show",
|
|
8847
|
+
"type": "boolean"
|
|
8857
8848
|
}
|
|
8858
8849
|
],
|
|
8859
8850
|
"properties": [
|
|
@@ -8866,8 +8857,6 @@
|
|
|
8866
8857
|
},
|
|
8867
8858
|
{
|
|
8868
8859
|
"name": "autoShow",
|
|
8869
|
-
"attribute": "auto-show",
|
|
8870
|
-
"description": "Use predefined classes on slot elements to set min and max slotted items to show",
|
|
8871
8860
|
"type": "boolean",
|
|
8872
8861
|
"default": "false"
|
|
8873
8862
|
},
|
|
@@ -9862,12 +9851,6 @@
|
|
|
9862
9851
|
"path": "./components/switch/switch-visibility.js",
|
|
9863
9852
|
"description": "A variant of the generic switch configured with special icons and default text for toggling \"visibility\".",
|
|
9864
9853
|
"attributes": [
|
|
9865
|
-
{
|
|
9866
|
-
"name": "text",
|
|
9867
|
-
"description": "The text that is displayed for the switch label.",
|
|
9868
|
-
"type": "string",
|
|
9869
|
-
"default": "\"\\\"Visibility\\\"\""
|
|
9870
|
-
},
|
|
9871
9854
|
{
|
|
9872
9855
|
"name": "disabled",
|
|
9873
9856
|
"description": "Disables the switch from being toggled.",
|
|
@@ -9888,6 +9871,9 @@
|
|
|
9888
9871
|
}
|
|
9889
9872
|
],
|
|
9890
9873
|
"properties": [
|
|
9874
|
+
{
|
|
9875
|
+
"name": "text"
|
|
9876
|
+
},
|
|
9891
9877
|
{
|
|
9892
9878
|
"name": "offIcon",
|
|
9893
9879
|
"type": "TemplateResult<1>"
|
|
@@ -9896,13 +9882,6 @@
|
|
|
9896
9882
|
"name": "onIcon",
|
|
9897
9883
|
"type": "TemplateResult<1>"
|
|
9898
9884
|
},
|
|
9899
|
-
{
|
|
9900
|
-
"name": "text",
|
|
9901
|
-
"attribute": "text",
|
|
9902
|
-
"description": "The text that is displayed for the switch label.",
|
|
9903
|
-
"type": "string",
|
|
9904
|
-
"default": "\"\\\"Visibility\\\"\""
|
|
9905
|
-
},
|
|
9906
9885
|
{
|
|
9907
9886
|
"name": "disabled",
|
|
9908
9887
|
"attribute": "disabled",
|
|
@@ -9935,6 +9914,12 @@
|
|
|
9935
9914
|
"name": "change",
|
|
9936
9915
|
"description": "Dispatched when the `on` property is updated"
|
|
9937
9916
|
}
|
|
9917
|
+
],
|
|
9918
|
+
"slots": [
|
|
9919
|
+
{
|
|
9920
|
+
"name": "",
|
|
9921
|
+
"description": "Optional content that will be displayed within the \"conditions\" opener tooltip when the switch is on."
|
|
9922
|
+
}
|
|
9938
9923
|
]
|
|
9939
9924
|
},
|
|
9940
9925
|
{
|
|
@@ -9942,11 +9927,6 @@
|
|
|
9942
9927
|
"path": "./components/switch/switch.js",
|
|
9943
9928
|
"description": "A generic switch with on/off semantics.",
|
|
9944
9929
|
"attributes": [
|
|
9945
|
-
{
|
|
9946
|
-
"name": "text",
|
|
9947
|
-
"description": "REQUIRED: The text that is displayed for the switch label.",
|
|
9948
|
-
"type": "string"
|
|
9949
|
-
},
|
|
9950
9930
|
{
|
|
9951
9931
|
"name": "disabled",
|
|
9952
9932
|
"description": "Disables the switch from being toggled.",
|
|
@@ -9964,6 +9944,11 @@
|
|
|
9964
9944
|
"description": "Determines where text should be positioned relative to the switch.",
|
|
9965
9945
|
"type": "'start'|'end'|'hidden'",
|
|
9966
9946
|
"default": "\"end\""
|
|
9947
|
+
},
|
|
9948
|
+
{
|
|
9949
|
+
"name": "text",
|
|
9950
|
+
"description": "REQUIRED: The text that is displayed for the switch label.",
|
|
9951
|
+
"type": "string"
|
|
9967
9952
|
}
|
|
9968
9953
|
],
|
|
9969
9954
|
"properties": [
|
|
@@ -9975,12 +9960,6 @@
|
|
|
9975
9960
|
"name": "onIcon",
|
|
9976
9961
|
"type": "TemplateResult<1>"
|
|
9977
9962
|
},
|
|
9978
|
-
{
|
|
9979
|
-
"name": "text",
|
|
9980
|
-
"attribute": "text",
|
|
9981
|
-
"description": "REQUIRED: The text that is displayed for the switch label.",
|
|
9982
|
-
"type": "string"
|
|
9983
|
-
},
|
|
9984
9963
|
{
|
|
9985
9964
|
"name": "disabled",
|
|
9986
9965
|
"attribute": "disabled",
|
package/lang/ar.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "تحديد الكل",
|
|
99
99
|
"components.selection.select-all-items": "تحديد كل المواد الـ {count}.",
|
|
100
100
|
"components.selection.selected": "تم تحديد {count}",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "التمرير إلى الأمام",
|
|
103
106
|
"components.tabs.previous": "التمرير إلى الخلف",
|
|
104
107
|
"components.tag-list.clear": "انقر فوق، أو اضغط على مسافة للخلف، أو اضغط على مفتاح حذف لإزالة العنصر {value}",
|
package/lang/cy.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Dewis y Cyfan",
|
|
99
99
|
"components.selection.select-all-items": "Dewis Pob {count} Eitem",
|
|
100
100
|
"components.selection.selected": "{count} wedi’u dewis.",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Sgrolio Ymlaen",
|
|
103
106
|
"components.tabs.previous": "Sgrolio Yn Ôl",
|
|
104
107
|
"components.tag-list.clear": "Cliciwch, pwyswch yn ôl, neu pwyswch y bysell dileu i dynnu’r eitem {value}",
|
package/lang/da.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Vælg alle",
|
|
99
99
|
"components.selection.select-all-items": "Vælg alle {count} elementer",
|
|
100
100
|
"components.selection.selected": "{count} valgt",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Rul frem",
|
|
103
106
|
"components.tabs.previous": "Rul tilbage",
|
|
104
107
|
"components.tag-list.clear": "Klik, tryk på tilbagetasten, eller tryk på slettasten for at fjerne element {value}",
|
package/lang/de.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Alle auswählen",
|
|
99
99
|
"components.selection.select-all-items": "Alle {count} Elemente auswählen",
|
|
100
100
|
"components.selection.selected": "{count} ausgewählt",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Weiterblättern",
|
|
103
106
|
"components.tabs.previous": "Zurückblättern",
|
|
104
107
|
"components.tag-list.clear": "Klicken Sie, drücken Sie die Rücktaste, oder drücken Sie die Entfernen-Taste, um das Element {value} zu entfernen",
|
package/lang/en.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Select All",
|
|
99
99
|
"components.selection.select-all-items": "Select All {count} Items",
|
|
100
100
|
"components.selection.selected": "{count} selected",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Scroll Forward",
|
|
103
106
|
"components.tabs.previous": "Scroll Backward",
|
|
104
107
|
"components.tag-list.clear": "Click, press backspace, or press delete key to remove item {value}",
|
package/lang/es-es.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Seleccionar todo",
|
|
99
99
|
"components.selection.select-all-items": "Seleccione los {count} elementos",
|
|
100
100
|
"components.selection.selected": "{count} seleccionados",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Desplazarse hacia delante",
|
|
103
106
|
"components.tabs.previous": "Desplazarse hacia atrás",
|
|
104
107
|
"components.tag-list.clear": "Haga clic, pulse Retroceso o pulse la tecla Supr para eliminar el elemento {value}",
|
package/lang/es.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Seleccionar todo",
|
|
99
99
|
"components.selection.select-all-items": "Seleccione todos los {count} elementos",
|
|
100
100
|
"components.selection.selected": "{count} seleccionados",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Desplazarse hacia adelante",
|
|
103
106
|
"components.tabs.previous": "Desplazarse hacia atrás",
|
|
104
107
|
"components.tag-list.clear": "Haga clic, presione Retroceso o presione la tecla Suprimir para eliminar el elemento {value}",
|
package/lang/fr-fr.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Tout sélectionner",
|
|
99
99
|
"components.selection.select-all-items": "Sélectionner tous les {count} éléments",
|
|
100
100
|
"components.selection.selected": "{count} sélectionnés",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Faire défiler vers l'avant",
|
|
103
106
|
"components.tabs.previous": "Faire défiler vers l'arrière",
|
|
104
107
|
"components.tag-list.clear": "Cliquez sur l’élément, appuyez sur la touche Retour arrière ou sur la touche Suppr pour supprimer l’élément {value}",
|
package/lang/fr.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Tout sélectionner",
|
|
99
99
|
"components.selection.select-all-items": "Sélectionner tous les {count} éléments",
|
|
100
100
|
"components.selection.selected": "{count} sélectionné(s)",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Défilement avant",
|
|
103
106
|
"components.tabs.previous": "Défilement arrière",
|
|
104
107
|
"components.tag-list.clear": "Cliquez sur le bouton, appuyez sur retour arrière ou appuyez sur la touche de suppression pour supprimer l’élément {value}",
|
package/lang/hi.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "सभी का चयन करें",
|
|
99
99
|
"components.selection.select-all-items": "सभी {count} आइटम चुनें।",
|
|
100
100
|
"components.selection.selected": "{count} चयनित",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "आगे स्क्रॉल करें",
|
|
103
106
|
"components.tabs.previous": "पीछे स्क्रॉल करें",
|
|
104
107
|
"components.tag-list.clear": "{value} को हटाने के लिए क्लिक करें, बैकस्पेस दबाएँ, या हटाएँ कुंजी को दबाएँ",
|
package/lang/ja.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "すべて選択",
|
|
99
99
|
"components.selection.select-all-items": "{count} 個の項目をすべて選択",
|
|
100
100
|
"components.selection.selected": "{count} 個を選択済み",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "前方にスクロール",
|
|
103
106
|
"components.tabs.previous": "後方にスクロール",
|
|
104
107
|
"components.tag-list.clear": "クリックする、Backspace キーを押す、または Delete キーを押すと項目 {value} が削除されます",
|
package/lang/ko.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "모두 선택",
|
|
99
99
|
"components.selection.select-all-items": "{count}개 항목을 모두 선택하십시오.",
|
|
100
100
|
"components.selection.selected": "{count}개 선택됨",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "앞으로 스크롤",
|
|
103
106
|
"components.tabs.previous": "뒤로 스크롤",
|
|
104
107
|
"components.tag-list.clear": "항목 {value}을(를) 제거하려면 클릭하거나, 백스페이스 또는 삭제 키를 누릅니다.",
|
package/lang/nl.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Alles selecteren",
|
|
99
99
|
"components.selection.select-all-items": "Alle {count} records selecteren",
|
|
100
100
|
"components.selection.selected": "{count} geselecteerd",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Naar voren scrollen",
|
|
103
106
|
"components.tabs.previous": "Naar achteren scrollen",
|
|
104
107
|
"components.tag-list.clear": "Klik, druk op Backspace of druk op de Delete-toets om item {value} te verwijderen",
|
package/lang/pt.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Selecionar tudo",
|
|
99
99
|
"components.selection.select-all-items": "Selecione todos os {count} itens",
|
|
100
100
|
"components.selection.selected": "{count} selecionados",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Ir para frente",
|
|
103
106
|
"components.tabs.previous": "Ir para trás",
|
|
104
107
|
"components.tag-list.clear": "Clique em, pressione Backspace ou pressione a tecla Delete para remover o item {value}",
|
package/lang/sv.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Välj alla",
|
|
99
99
|
"components.selection.select-all-items": "Välj alla {count} objekt",
|
|
100
100
|
"components.selection.selected": "{count} valda",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "Bläddra framåt",
|
|
103
106
|
"components.tabs.previous": "Bläddra bakåt",
|
|
104
107
|
"components.tag-list.clear": "Klicka, tryck på backstegstangenten eller Delete-tangenten för att ta bort objektet {value}",
|
package/lang/tr.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "Tümünü Seç",
|
|
99
99
|
"components.selection.select-all-items": "{count} Öğenin Tamamını Seç",
|
|
100
100
|
"components.selection.selected": "{count} öğe seçildi",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "İleri Kaydır",
|
|
103
106
|
"components.tabs.previous": "Geri Kaydır",
|
|
104
107
|
"components.tag-list.clear": "Öğe {value} değerini kaldırmak için tıklatın, geri al tuşuna veya sil tuşuna basın",
|
package/lang/zh-cn.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "全选",
|
|
99
99
|
"components.selection.select-all-items": "选择全部 {count} 个项目",
|
|
100
100
|
"components.selection.selected": "已选 {count}",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "向前滚动",
|
|
103
106
|
"components.tabs.previous": "向后滚动",
|
|
104
107
|
"components.tag-list.clear": "单击、按退格键或按 Delete 键以移除项目 {value}",
|
package/lang/zh-tw.js
CHANGED
|
@@ -98,7 +98,10 @@ export default {
|
|
|
98
98
|
"components.selection.select-all": "全選",
|
|
99
99
|
"components.selection.select-all-items": "選取所有 {count} 個項目",
|
|
100
100
|
"components.selection.selected": "已選取 {count} 個",
|
|
101
|
-
"components.switch.
|
|
101
|
+
"components.switch.visible": "Visible",
|
|
102
|
+
"components.switch.visibleWithPeriod": "Visible.",
|
|
103
|
+
"components.switch.hidden": "Hidden",
|
|
104
|
+
"components.switch.conditions": "Conditions must be met",
|
|
102
105
|
"components.tabs.next": "向前捲動",
|
|
103
106
|
"components.tabs.previous": "向後捲動",
|
|
104
107
|
"components.tag-list.clear": "按一下、按下退格鍵或按下刪除鍵以移除項目 {value}",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightspace-ui/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.43.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",
|