@brightspace-ui/core 2.3.2 → 2.5.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.
@@ -23,7 +23,7 @@ class Dropdown extends DropdownOpenerMixin(LitElement) {
23
23
  getOpenerElement() {
24
24
  if (!this.shadowRoot) return undefined;
25
25
  return this.shadowRoot.querySelector('slot')
26
- .assignedNodes()
26
+ .assignedNodes({ flatten: true })
27
27
  .filter(node => node.classList && node.classList.contains('d2l-dropdown-opener'))[0];
28
28
  }
29
29
 
@@ -469,11 +469,15 @@ class InputText extends FocusMixin(LabelledMixin(FormElementMixin(SkeletonMixin(
469
469
  }
470
470
 
471
471
  _getAriaLabel() {
472
+ let label;
472
473
  if (this.label && (this.labelHidden || this.labelledBy)) {
473
- return this.label;
474
+ label = this.label;
475
+ } else if (this.hasAttribute('aria-label')) {
476
+ label = this.getAttribute('aria-label');
474
477
  }
475
- if (this.hasAttribute('aria-label')) {
476
- return this.getAttribute('aria-label');
478
+ if (label) {
479
+ const unitLabel = this.unit ? ` ${this.unit}` : '';
480
+ return `${label}${unitLabel}`;
477
481
  }
478
482
  return undefined;
479
483
  }
@@ -1,7 +1,22 @@
1
+ import '../button/button-subtle.js';
1
2
  import { css, html, LitElement } from 'lit';
2
3
  import { ArrowKeysMixin } from '../../mixins/arrow-keys-mixin.js';
4
+ import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
5
+ import ResizeObserver from 'resize-observer-polyfill/dist/ResizeObserver.es.js';
6
+ import { styleMap } from 'lit/directives/style-map.js';
3
7
 
4
- class TagList extends ArrowKeysMixin(LitElement) {
8
+ const PAGE_SIZE = {
9
+ medium: 600,
10
+ large: 970
11
+ };
12
+ const PAGE_SIZE_LINES = {
13
+ large: 1,
14
+ medium: 2,
15
+ small: 3
16
+ };
17
+ const MARGIN_TOP_HEIGHT = 6;
18
+
19
+ class TagList extends LocalizeCoreElement(ArrowKeysMixin(LitElement)) {
5
20
 
6
21
  static get properties() {
7
22
  return {
@@ -9,7 +24,9 @@ class TagList extends ArrowKeysMixin(LitElement) {
9
24
  * REQUIRED: A description of the tag list for additional accessibility context
10
25
  * @type {string}
11
26
  */
12
- description: { type: String }
27
+ description: { type: String },
28
+ _chompIndex: { type: Number },
29
+ _showHiddenTags: { type: Boolean }
13
30
  };
14
31
  }
15
32
 
@@ -28,9 +45,17 @@ class TagList extends ArrowKeysMixin(LitElement) {
28
45
  padding: 0;
29
46
  position: relative;
30
47
  }
31
- ::slotted(*) {
48
+ ::slotted(*),
49
+ d2l-button-subtle {
32
50
  margin: 6px 6px 0 0;
33
51
  }
52
+ ::slotted([data-is-chomped]) {
53
+ display: none !important;
54
+ }
55
+ .d2l-tag-list-hidden-button {
56
+ position: absolute;
57
+ visibility: hidden;
58
+ }
34
59
  `;
35
60
  }
36
61
 
@@ -38,28 +63,71 @@ class TagList extends ArrowKeysMixin(LitElement) {
38
63
  super();
39
64
  /** @ignore */
40
65
  this.arrowKeysDirection = 'leftrightupdown';
66
+ this._chompIndex = 10000;
41
67
  this._items = [];
68
+ this._resizeObserver = null;
69
+ this._showHiddenTags = false;
70
+ }
71
+
72
+ disconnectedCallback() {
73
+ super.disconnectedCallback();
74
+ if (this._resizeObserver) this._resizeObserver.disconnect();
42
75
  }
43
76
 
44
77
  firstUpdated(changedProperties) {
45
78
  super.firstUpdated(changedProperties);
46
79
 
47
- requestAnimationFrame(() => {
48
- this._items = this._getTagListItems();
49
- this._items.forEach((item, index) => {
50
- item.setAttribute('tabIndex', index === 0 ? 0 : -1);
51
- });
52
- });
80
+ const container = this.shadowRoot.querySelector('.tag-list-outer-container');
81
+ this._resizeObserver = new ResizeObserver((e) => requestAnimationFrame(() => this._handleResize(e)));
82
+ this._resizeObserver.observe(container);
53
83
  }
54
84
 
55
85
  render() {
86
+ let hiddenCount = 0;
87
+ let hasHiddenTags = false;
88
+ this._items.forEach((element, index) => {
89
+ if (index >= this._chompIndex) hasHiddenTags = true;
90
+ if (!this._showHiddenTags && index >= this._chompIndex) {
91
+ hiddenCount++;
92
+ element.setAttribute('data-is-chomped', '');
93
+ } else {
94
+ element.removeAttribute('data-is-chomped');
95
+ }
96
+ });
97
+
98
+ let button = null;
99
+ if (hasHiddenTags) {
100
+ button = this._showHiddenTags ? html`
101
+ <d2l-button-subtle
102
+ class="d2l-tag-list-button"
103
+ @click="${this._toggleHiddenTagVisibility}"
104
+ slim
105
+ text="${this.localize('components.tag-list.show-less')}">
106
+ </d2l-button-subtle>
107
+ ` : html`
108
+ <d2l-button-subtle
109
+ class="d2l-tag-list-button"
110
+ @click="${this._toggleHiddenTagVisibility}"
111
+ slim
112
+ text="${this.localize('components.tag-list.num-hidden', { count: hiddenCount })}">
113
+ </d2l-button-subtle>
114
+ `;
115
+ }
116
+
56
117
  const list = html`
57
118
  <div role="list" class="tag-list-container" aria-describedby="d2l-tag-list-description">
58
- <slot></slot>
119
+ <slot @slotchange="${this._handleSlotChange}"></slot>
120
+ ${button}
59
121
  </div>
60
122
  `;
123
+
124
+ const outerContainerStyles = {
125
+ maxHeight: this._showHiddenTags ? undefined : `${(this._itemHeight + MARGIN_TOP_HEIGHT) * this._lines}px`
126
+ };
127
+
61
128
  return html`
62
- <div role="application">
129
+ <div role="application" class="tag-list-outer-container" style="${styleMap(outerContainerStyles)}">
130
+ <d2l-button-subtle aria-hidden="true" slim text="${this.localize('components.tag-list.num-hidden', { count: '##' })}" class="d2l-tag-list-hidden-button"></d2l-button-subtle>
63
131
  ${this.arrowKeysContainer(list)}
64
132
  <div id="d2l-tag-list-description" hidden>${this.description}</div>
65
133
  </div>
@@ -67,13 +135,87 @@ class TagList extends ArrowKeysMixin(LitElement) {
67
135
  }
68
136
 
69
137
  async arrowKeysFocusablesProvider() {
70
- return this._items;
138
+ return this._showHiddenTags ? this._items : this._items.slice(0, this._chompIndex);
71
139
  }
72
140
 
73
141
  focus() {
74
142
  if (this._items.length > 0) this._items[0].focus();
75
143
  }
76
144
 
145
+ _chomp() {
146
+ if (!this.shadowRoot || !this._lines || !this._itemLayouts) return;
147
+
148
+ const subtleButton = this.shadowRoot.querySelector('.d2l-tag-list-hidden-button');
149
+ const subtleButtonWidth = Math.ceil(parseFloat(getComputedStyle(subtleButton).getPropertyValue('width')));
150
+
151
+ const showing = {
152
+ count: 0,
153
+ width: 0
154
+ };
155
+
156
+ /**
157
+ * _lines is determined by page width in _handleResize function
158
+ * For each line we calculate the max items that can fit in that width, then go to the next line
159
+ * If on the last line there is/are item(s) that won't fit in the width, we mark them as soft-hide and set isOverflowing
160
+ */
161
+ let isOverflowing = false;
162
+ let overflowingIndex = 0;
163
+ for (let k = 1; k <= this._lines; k++) {
164
+ showing.width = 0;
165
+
166
+ for (let i = overflowingIndex; i < this._itemLayouts.length; i++) {
167
+ const itemLayout = this._itemLayouts[i];
168
+
169
+ if (!isOverflowing && showing.width + itemLayout.width < this._availableWidth) {
170
+ showing.width += itemLayout.width;
171
+ showing.count += 1;
172
+ itemLayout.trigger = 'soft-show';
173
+ } else if (k < this._lines) {
174
+ overflowingIndex = i;
175
+ break;
176
+ } else {
177
+ isOverflowing = true;
178
+ itemLayout.trigger = 'soft-hide';
179
+ }
180
+ }
181
+
182
+ }
183
+
184
+ if (!isOverflowing) {
185
+ this._chompIndex = showing.count;
186
+ return;
187
+ }
188
+
189
+ // calculate if additional item(s) should be hidden due to subtle button needing space
190
+ for (let j = this._itemLayouts.length; j--;) {
191
+ if ((showing.width + subtleButtonWidth) < this._availableWidth) {
192
+ break;
193
+ }
194
+ const itemLayoutOverflowing = this._itemLayouts[j];
195
+ if (itemLayoutOverflowing.trigger !== 'soft-show') {
196
+ continue;
197
+ }
198
+ showing.width -= itemLayoutOverflowing.width;
199
+ showing.count -= 1;
200
+ }
201
+ this._chompIndex = showing.count;
202
+ }
203
+
204
+ _getItemLayouts(filteredNodes) {
205
+ const items = filteredNodes.map((node) => {
206
+ const computedStyles = window.getComputedStyle(node);
207
+
208
+ return {
209
+ isHidden: computedStyles.display === 'none',
210
+ width: Math.ceil(parseFloat(computedStyles.width) || 0)
211
+ + parseInt(computedStyles.marginRight) || 0
212
+ + parseInt(computedStyles.marginLeft) || 0
213
+ };
214
+ });
215
+
216
+ return items.filter(({ isHidden }) => !isHidden);
217
+ }
218
+
77
219
  _getTagListItems() {
78
220
  const slot = this.shadowRoot && this.shadowRoot.querySelector('slot');
79
221
  if (!slot) return;
@@ -84,6 +226,38 @@ class TagList extends ArrowKeysMixin(LitElement) {
84
226
  });
85
227
  }
86
228
 
229
+ _handleResize(entries) {
230
+ this._availableWidth = Math.ceil(entries[0].contentRect.width);
231
+ if (this._availableWidth >= PAGE_SIZE.large) this._lines = PAGE_SIZE_LINES.large;
232
+ else if (this._availableWidth < PAGE_SIZE.large && this._availableWidth >= PAGE_SIZE.medium) this._lines = PAGE_SIZE_LINES.medium;
233
+ else this._lines = PAGE_SIZE_LINES.small;
234
+ this._chomp();
235
+ }
236
+
237
+ _handleSlotChange() {
238
+ requestAnimationFrame(() => {
239
+ this._items = this._getTagListItems();
240
+ this._itemLayouts = this._getItemLayouts(this._items);
241
+
242
+ if (this._items.length === 0) return;
243
+ this._itemHeight = this._items[0].offsetHeight;
244
+ this._items.forEach((item, index) => {
245
+ item.setAttribute('tabIndex', index === 0 ? 0 : -1);
246
+ });
247
+ this._chomp();
248
+ });
249
+ }
250
+
251
+ async _toggleHiddenTagVisibility() {
252
+ this._showHiddenTags = !this._showHiddenTags;
253
+
254
+ if (!this.shadowRoot) return;
255
+
256
+ await this.updateComplete;
257
+ const button = this.shadowRoot.querySelector('.d2l-tag-list-button');
258
+ if (button) button.focus();
259
+ }
260
+
87
261
  }
88
262
 
89
263
  customElements.define('d2l-tag-list', TagList);
package/lang/ar.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "إمكانية الرؤية",
96
96
  "components.tabs.next": "التمرير إلى الأمام",
97
97
  "components.tabs.previous": "التمرير إلى الخلف",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "تقسيم العرض القابل للضبط",
99
101
  "templates.primary-secondary.keyboardHorizontal": "السهم المتّجه إلى اليسار أو إلى اليمين لضبط حجم لوحات العرض",
100
102
  "templates.primary-secondary.keyboardVertical": "السهم المتّجه إلى الأعلى أو إلى الأسفل لضبط حجم لوحات العرض"
package/lang/cy.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Gwelededd",
96
96
  "components.tabs.next": "Sgrolio Ymlaen",
97
97
  "components.tabs.previous": "Sgrolio Yn Ôl",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Gwedd Hollt Addasadwy",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Saeth i'r chwith neu'r dde i addasu maint y paneli gweld",
100
102
  "templates.primary-secondary.keyboardVertical": "Saeth i fyny neu i lawr i addasu maint y paneli gweld"
package/lang/da.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Synlighed",
96
96
  "components.tabs.next": "Rul frem",
97
97
  "components.tabs.previous": "Rul tilbage",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Justerbar delt visning",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Pil til venstre eller højre for at justere størrelsen på visningspaneler",
100
102
  "templates.primary-secondary.keyboardVertical": "Pil op eller ned for at justere størrelsen på visningspaneler"
package/lang/de.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Sichtbarkeit",
96
96
  "components.tabs.next": "Weiterblättern",
97
97
  "components.tabs.previous": "Zurückblättern",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Anpassbare geteilte Ansicht",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Pfeil nach links oder rechts, um die Größe der Ansichtsbereiche anzupassen",
100
102
  "templates.primary-secondary.keyboardVertical": "Pfeil nach oben oder unten, um die Größe der Ansichtsbereiche anzupassen"
package/lang/en.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Visibility",
96
96
  "components.tabs.next": "Scroll Forward",
97
97
  "components.tabs.previous": "Scroll Backward",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Adjustable Split View",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Arrow left or right to adjust the size of the view panels",
100
102
  "templates.primary-secondary.keyboardVertical": "Arrow up or down to adjust the size of the view panels"
package/lang/es-es.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Visibilidad",
96
96
  "components.tabs.next": "Desplazarse hacia delante",
97
97
  "components.tabs.previous": "Desplazarse hacia atrás",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Vista dividida ajustable",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Flecha hacia la izquierda o la derecha para ajustar el tamaño de los paneles de visualización",
100
102
  "templates.primary-secondary.keyboardVertical": "Flecha hacia arriba o abajo para ajustar el tamaño de los paneles de visualización"
package/lang/es.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Visibilidad",
96
96
  "components.tabs.next": "Desplazarse hacia adelante",
97
97
  "components.tabs.previous": "Desplazarse hacia atrás",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Pantalla dividida ajustable",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Utilice la flecha izquierda o derecha para ajustar el tamaño de los paneles de visualización",
100
102
  "templates.primary-secondary.keyboardVertical": "Utilice la flecha hacia arriba o hacia abajo para ajustar el tamaño de los paneles de visualización"
package/lang/fr-fr.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Visibilité",
96
96
  "components.tabs.next": "Faire défiler vers l'avant",
97
97
  "components.tabs.previous": "Faire défiler vers l'arrière",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Vue fractionnée réglable",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Flèche vers la gauche ou vers la droite pour régler la taille des panneaux d’affichage",
100
102
  "templates.primary-secondary.keyboardVertical": "Flèche vers le haut ou vers le bas pour régler la taille des panneaux d’affichage"
package/lang/fr.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Visibilité",
96
96
  "components.tabs.next": "Défilement avant",
97
97
  "components.tabs.previous": "Défilement arrière",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Vue partagée réglable",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Utiliser la flèche vers la gauche ou vers la droite pour régler la taille des volets d'affichage",
100
102
  "templates.primary-secondary.keyboardVertical": "Flèche vers le haut ou vers le bas pour régler la taille des volets d'affichage"
package/lang/hi.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "दृश्यता",
96
96
  "components.tabs.next": "आगे स्क्रॉल करें",
97
97
  "components.tabs.previous": "पीछे स्क्रॉल करें",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "समायोजन योग्य विभाजन दृश्य",
99
101
  "templates.primary-secondary.keyboardHorizontal": "दृश्य पैनल्स का आकार समायोजित करने के लिए तीर बाएँ या दाएँ करें",
100
102
  "templates.primary-secondary.keyboardVertical": "दृश्य पैनल्स का आकार समायोजित करने के लिए तीर ऊपर या नीचे करें"
package/lang/ja.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "表示",
96
96
  "components.tabs.next": "前方にスクロール",
97
97
  "components.tabs.previous": "後方にスクロール",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "調整可能な分割ビュー",
99
101
  "templates.primary-secondary.keyboardHorizontal": "左矢印または右矢印を使用して、ビューパネルのサイズを調整します",
100
102
  "templates.primary-secondary.keyboardVertical": "上矢印または下矢印を使用して、ビューパネルのサイズを調整します"
package/lang/ko.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "표시여부",
96
96
  "components.tabs.next": "앞으로 스크롤",
97
97
  "components.tabs.previous": "뒤로 스크롤",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "조정 가능한 분할 보기",
99
101
  "templates.primary-secondary.keyboardHorizontal": "왼쪽 또는 오른쪽 화살표로 보기 패널의 크기 조정",
100
102
  "templates.primary-secondary.keyboardVertical": "위 또는 아래 화살표로 보기 패널의 크기 조정"
package/lang/nl.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Zichtbaarheid",
96
96
  "components.tabs.next": "Naar voren scrollen",
97
97
  "components.tabs.previous": "Naar achteren scrollen",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Instelbare gesplitste weergave",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Pijl naar links of rechts om de grootte van de weergavevensters aan te passen",
100
102
  "templates.primary-secondary.keyboardVertical": "Pijl omhoog of omlaag om de grootte van de weergavevensters aan te passen"
package/lang/pt.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Visibilidade",
96
96
  "components.tabs.next": "Ir para frente",
97
97
  "components.tabs.previous": "Ir para trás",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Exibição dividida ajustável",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Use a seta para a esquerda ou para a direita para ajustar o tamanho dos painéis de exibição",
100
102
  "templates.primary-secondary.keyboardVertical": "Use a seta para cima ou para baixo para ajustar o tamanho dos painéis de exibição"
package/lang/sv.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Synlighet",
96
96
  "components.tabs.next": "Bläddra framåt",
97
97
  "components.tabs.previous": "Bläddra bakåt",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Justerbar delad vy",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Pil vänster eller höger för att justera storleken på vypaneler",
100
102
  "templates.primary-secondary.keyboardVertical": "Pil upp eller ned för att justera storleken på vypaneler"
package/lang/tr.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "Görünürlük",
96
96
  "components.tabs.next": "İleri Kaydır",
97
97
  "components.tabs.previous": "Geri Kaydır",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "Ayarlanabilir Bölünmüş Görüntü",
99
101
  "templates.primary-secondary.keyboardHorizontal": "Görüntü panellerinin boyutunu ayarlamak için sol veya sağ okları kullanın",
100
102
  "templates.primary-secondary.keyboardVertical": "Görüntü panellerinin boyutunu ayarlamak için yukarı veya aşağı okları kullanın"
package/lang/zh-cn.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "可见性",
96
96
  "components.tabs.next": "向前滚动",
97
97
  "components.tabs.previous": "向后滚动",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "可调分屏视图",
99
101
  "templates.primary-secondary.keyboardHorizontal": "向左或向右箭头可调整视图面板的大小",
100
102
  "templates.primary-secondary.keyboardVertical": "向上或向下箭头可调整视图面板的大小"
package/lang/zh-tw.js CHANGED
@@ -95,6 +95,8 @@ export default {
95
95
  "components.switch.visibility": "能見度",
96
96
  "components.tabs.next": "向前捲動",
97
97
  "components.tabs.previous": "向後捲動",
98
+ "components.tag-list.num-hidden": "+ {count} more",
99
+ "components.tag-list.show-less": "Show Less",
98
100
  "templates.primary-secondary.adjustableSplitView": "可調整的分割檢視",
99
101
  "templates.primary-secondary.keyboardHorizontal": "向左或向右箭頭可調整檢視面板的大小",
100
102
  "templates.primary-secondary.keyboardVertical": "向上或向下箭頭可調整檢視面板的大小"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "2.3.2",
3
+ "version": "2.5.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",