@vaadin/avatar-group 24.0.0-alpha1 → 24.0.0-alpha10
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/package.json +11 -10
- package/src/vaadin-avatar-group-overlay.js +1 -1
- package/src/vaadin-avatar-group.d.ts +5 -2
- package/src/vaadin-avatar-group.js +48 -63
- package/web-types.json +25 -3
- package/web-types.lit.json +10 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/avatar-group",
|
|
3
|
-
"version": "24.0.0-
|
|
3
|
+
"version": "24.0.0-alpha10",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -37,14 +37,15 @@
|
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@polymer/polymer": "^3.0.0",
|
|
40
|
-
"@vaadin/avatar": "24.0.0-
|
|
41
|
-
"@vaadin/component-base": "24.0.0-
|
|
42
|
-
"@vaadin/item": "24.0.0-
|
|
43
|
-
"@vaadin/list-box": "24.0.0-
|
|
44
|
-
"@vaadin/overlay": "24.0.0-
|
|
45
|
-
"@vaadin/vaadin-lumo-styles": "24.0.0-
|
|
46
|
-
"@vaadin/vaadin-material-styles": "24.0.0-
|
|
47
|
-
"@vaadin/vaadin-themable-mixin": "24.0.0-
|
|
40
|
+
"@vaadin/avatar": "24.0.0-alpha10",
|
|
41
|
+
"@vaadin/component-base": "24.0.0-alpha10",
|
|
42
|
+
"@vaadin/item": "24.0.0-alpha10",
|
|
43
|
+
"@vaadin/list-box": "24.0.0-alpha10",
|
|
44
|
+
"@vaadin/overlay": "24.0.0-alpha10",
|
|
45
|
+
"@vaadin/vaadin-lumo-styles": "24.0.0-alpha10",
|
|
46
|
+
"@vaadin/vaadin-material-styles": "24.0.0-alpha10",
|
|
47
|
+
"@vaadin/vaadin-themable-mixin": "24.0.0-alpha10",
|
|
48
|
+
"lit": "^2.0.0"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"@esm-bundle/chai": "^4.3.4",
|
|
@@ -55,5 +56,5 @@
|
|
|
55
56
|
"web-types.json",
|
|
56
57
|
"web-types.lit.json"
|
|
57
58
|
],
|
|
58
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "2e04534d8b47bcd216f89b5f849bafef1a73b174"
|
|
59
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2020 -
|
|
3
|
+
* Copyright (c) 2020 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { Overlay } from '@vaadin/overlay/src/vaadin-overlay.js';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2020 -
|
|
3
|
+
* Copyright (c) 2020 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { AvatarI18n } from '@vaadin/avatar/src/vaadin-avatar.js';
|
|
7
7
|
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
|
|
8
8
|
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
|
|
9
|
+
import { OverlayClassMixin } from '@vaadin/component-base/src/overlay-class-mixin.js';
|
|
9
10
|
import { ResizeMixin } from '@vaadin/component-base/src/resize-mixin.js';
|
|
10
11
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
11
12
|
|
|
@@ -65,7 +66,9 @@ export interface AvatarGroupItem {
|
|
|
65
66
|
*
|
|
66
67
|
* - `<vaadin-avatar-group-overlay>` - has the same API as [`<vaadin-overlay>`](#/elements/vaadin-overlay).
|
|
67
68
|
*/
|
|
68
|
-
declare class AvatarGroup extends ResizeMixin(
|
|
69
|
+
declare class AvatarGroup extends ResizeMixin(
|
|
70
|
+
OverlayClassMixin(ElementMixin(ThemableMixin(ControllerMixin(HTMLElement)))),
|
|
71
|
+
) {
|
|
69
72
|
readonly _avatars: HTMLElement[];
|
|
70
73
|
|
|
71
74
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2020 -
|
|
3
|
+
* Copyright (c) 2020 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import '@vaadin/avatar/src/vaadin-avatar.js';
|
|
@@ -9,10 +9,12 @@ import '@vaadin/list-box/src/vaadin-list-box.js';
|
|
|
9
9
|
import './vaadin-avatar-group-overlay.js';
|
|
10
10
|
import { calculateSplices } from '@polymer/polymer/lib/utils/array-splice.js';
|
|
11
11
|
import { afterNextRender } from '@polymer/polymer/lib/utils/render-status.js';
|
|
12
|
-
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
12
|
+
import { html as legacyHtml, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
13
|
+
import { html, render } from 'lit';
|
|
13
14
|
import { announce } from '@vaadin/component-base/src/a11y-announcer.js';
|
|
14
15
|
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
|
|
15
16
|
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
|
|
17
|
+
import { OverlayClassMixin } from '@vaadin/component-base/src/overlay-class-mixin.js';
|
|
16
18
|
import { ResizeMixin } from '@vaadin/component-base/src/resize-mixin.js';
|
|
17
19
|
import { SlotController } from '@vaadin/component-base/src/slot-controller.js';
|
|
18
20
|
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
@@ -60,12 +62,13 @@ const MINIMUM_DISPLAYED_AVATARS = 2;
|
|
|
60
62
|
* @extends HTMLElement
|
|
61
63
|
* @mixes ControllerMixin
|
|
62
64
|
* @mixes ElementMixin
|
|
65
|
+
* @mixes OverlayClassMixin
|
|
63
66
|
* @mixes ThemableMixin
|
|
64
67
|
* @mixes ResizeMixin
|
|
65
68
|
*/
|
|
66
|
-
class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin(PolymerElement)))) {
|
|
69
|
+
class AvatarGroup extends ResizeMixin(OverlayClassMixin(ElementMixin(ThemableMixin(ControllerMixin(PolymerElement))))) {
|
|
67
70
|
static get template() {
|
|
68
|
-
return
|
|
71
|
+
return legacyHtml`
|
|
69
72
|
<style>
|
|
70
73
|
:host {
|
|
71
74
|
display: block;
|
|
@@ -268,7 +271,7 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
268
271
|
'__itemsChanged(items.splices, items.*)',
|
|
269
272
|
'__i18nItemsChanged(i18n.*, items.length)',
|
|
270
273
|
'__updateAvatarsTheme(_overflow, _avatars, _theme)',
|
|
271
|
-
'__updateAvatars(items.*, __itemsInView, maxItemsVisible)',
|
|
274
|
+
'__updateAvatars(items.*, __itemsInView, maxItemsVisible, _overflow, i18n)',
|
|
272
275
|
'__updateOverflowAbbr(_overflow, items.length, __itemsInView, maxItemsVisible)',
|
|
273
276
|
'__updateOverflowHidden(_overflow, items.length, __itemsInView, __maxReached)',
|
|
274
277
|
'__updateOverflowTooltip(_overflowTooltip, items.length, __itemsInView, maxItemsVisible)',
|
|
@@ -279,11 +282,8 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
279
282
|
ready() {
|
|
280
283
|
super.ready();
|
|
281
284
|
|
|
282
|
-
this._overflowController = new SlotController(
|
|
283
|
-
|
|
284
|
-
'overflow',
|
|
285
|
-
() => document.createElement('vaadin-avatar'),
|
|
286
|
-
(_, overflow) => {
|
|
285
|
+
this._overflowController = new SlotController(this, 'overflow', 'vaadin-avatar', {
|
|
286
|
+
initializer: (overflow) => {
|
|
287
287
|
overflow.setAttribute('aria-haspopup', 'listbox');
|
|
288
288
|
overflow.setAttribute('aria-expanded', 'false');
|
|
289
289
|
overflow.addEventListener('click', (e) => this._onOverflowClick(e));
|
|
@@ -296,10 +296,12 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
296
296
|
this._overflow = overflow;
|
|
297
297
|
this._overflowTooltip = tooltip;
|
|
298
298
|
},
|
|
299
|
-
);
|
|
299
|
+
});
|
|
300
300
|
this.addController(this._overflowController);
|
|
301
301
|
|
|
302
|
-
|
|
302
|
+
const overlay = this.$.overlay;
|
|
303
|
+
overlay.renderer = this.__overlayRenderer.bind(this);
|
|
304
|
+
this._overlayElement = overlay;
|
|
303
305
|
|
|
304
306
|
afterNextRender(this, () => {
|
|
305
307
|
this.__setItemsInView();
|
|
@@ -343,21 +345,6 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
343
345
|
});
|
|
344
346
|
}
|
|
345
347
|
|
|
346
|
-
/** @private */
|
|
347
|
-
__createAvatar(item) {
|
|
348
|
-
const avatar = document.createElement('vaadin-avatar');
|
|
349
|
-
avatar.name = item.name;
|
|
350
|
-
avatar.abbr = item.abbr;
|
|
351
|
-
avatar.img = item.img;
|
|
352
|
-
avatar.colorIndex = item.colorIndex;
|
|
353
|
-
|
|
354
|
-
avatar.withTooltip = true;
|
|
355
|
-
avatar.i18n = this.i18n;
|
|
356
|
-
avatar._item = item;
|
|
357
|
-
|
|
358
|
-
return avatar;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
348
|
/** @private */
|
|
362
349
|
__createItemElement(item) {
|
|
363
350
|
const itemElement = document.createElement('vaadin-item');
|
|
@@ -401,7 +388,7 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
401
388
|
/** @private */
|
|
402
389
|
_onOverflowKeyDown(e) {
|
|
403
390
|
if (!this._opened) {
|
|
404
|
-
if (/^(Enter|SpaceBar|\s)
|
|
391
|
+
if (/^(Enter|SpaceBar|\s)$/u.test(e.key)) {
|
|
405
392
|
e.preventDefault();
|
|
406
393
|
this._opened = true;
|
|
407
394
|
}
|
|
@@ -410,7 +397,7 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
410
397
|
|
|
411
398
|
/** @private */
|
|
412
399
|
_onListKeyDown(event) {
|
|
413
|
-
if (event.key === 'Escape' || event.key === '
|
|
400
|
+
if (event.key === 'Escape' || event.key === 'Tab') {
|
|
414
401
|
this._opened = false;
|
|
415
402
|
}
|
|
416
403
|
}
|
|
@@ -431,41 +418,40 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
431
418
|
}
|
|
432
419
|
|
|
433
420
|
/** @private */
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
421
|
+
__renderAvatars(items) {
|
|
422
|
+
render(
|
|
423
|
+
html`
|
|
424
|
+
${items.map(
|
|
425
|
+
(item) =>
|
|
426
|
+
html`
|
|
427
|
+
<vaadin-avatar
|
|
428
|
+
.name="${item.name}"
|
|
429
|
+
.abbr="${item.abbr}"
|
|
430
|
+
.img="${item.img}"
|
|
431
|
+
.colorIndex="${item.colorIndex}"
|
|
432
|
+
.i18n="${this.i18n}"
|
|
433
|
+
with-tooltip
|
|
434
|
+
></vaadin-avatar>
|
|
435
|
+
`,
|
|
436
|
+
)}
|
|
437
|
+
`,
|
|
438
|
+
this,
|
|
439
|
+
{ renderBefore: this._overflow },
|
|
440
|
+
);
|
|
441
|
+
}
|
|
440
442
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
443
|
+
/** @private */
|
|
444
|
+
__updateAvatars(arr, itemsInView, maxItemsVisible, overflow) {
|
|
445
|
+
if (!overflow) {
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
444
448
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
if (removed.includes(item)) {
|
|
448
|
-
avatar.remove();
|
|
449
|
-
} else if (added.includes(item)) {
|
|
450
|
-
added.splice(added.indexOf(item), 1);
|
|
451
|
-
}
|
|
452
|
-
});
|
|
449
|
+
const items = arr.base || [];
|
|
450
|
+
const limit = this.__getLimit(items.length, itemsInView, maxItemsVisible);
|
|
453
451
|
|
|
454
|
-
|
|
455
|
-
}
|
|
452
|
+
this.__renderAvatars(limit ? items.slice(0, limit) : items);
|
|
456
453
|
|
|
457
454
|
this._avatars = [...this.querySelectorAll('vaadin-avatar')];
|
|
458
|
-
this.__oldAvatarItems = newItems;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/** @private */
|
|
462
|
-
__addAvatars(itemsToAdd, allItems) {
|
|
463
|
-
itemsToAdd.forEach((item) => {
|
|
464
|
-
const avatar = this.__createAvatar(item);
|
|
465
|
-
const nextItem = allItems[allItems.indexOf(item) + 1];
|
|
466
|
-
const nextAvatar = this._avatars.find((el) => el._item === nextItem);
|
|
467
|
-
this.insertBefore(avatar, nextAvatar || this._overflow);
|
|
468
|
-
});
|
|
469
455
|
}
|
|
470
456
|
|
|
471
457
|
/** @private */
|
|
@@ -674,10 +660,9 @@ class AvatarGroup extends ResizeMixin(ElementMixin(ThemableMixin(ControllerMixin
|
|
|
674
660
|
// Take negative margin into account
|
|
675
661
|
const { marginLeft, marginRight } = getComputedStyle(avatars[1]);
|
|
676
662
|
|
|
677
|
-
const offset =
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
: parseInt(marginLeft, 0) - parseInt(marginRight, 0);
|
|
663
|
+
const offset = this.__isRTL
|
|
664
|
+
? parseInt(marginRight, 0) - parseInt(marginLeft, 0)
|
|
665
|
+
: parseInt(marginLeft, 0) - parseInt(marginRight, 0);
|
|
681
666
|
|
|
682
667
|
return Math.floor((this.$.container.offsetWidth - avatarWidth) / (avatarWidth + offset));
|
|
683
668
|
}
|
package/web-types.json
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/avatar-group",
|
|
4
|
-
"version": "24.0.0-
|
|
4
|
+
"version": "24.0.0-alpha10",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"elements": [
|
|
9
9
|
{
|
|
10
10
|
"name": "vaadin-avatar-group",
|
|
11
|
-
"description": "`<vaadin-avatar-group>` is a Web Component providing avatar group displaying functionality.\n\nTo create the avatar group, first add the component to the page:\n\n```\n<vaadin-avatar-group></vaadin-avatar-group>\n```\n\nAnd then use [`items`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-
|
|
11
|
+
"description": "`<vaadin-avatar-group>` is a Web Component providing avatar group displaying functionality.\n\nTo create the avatar group, first add the component to the page:\n\n```\n<vaadin-avatar-group></vaadin-avatar-group>\n```\n\nAnd then use [`items`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar-group#property-items) property to initialize the structure:\n\n```\ndocument.querySelector('vaadin-avatar-group').items = [\n {name: 'John Doe'},\n {abbr: 'AB'}\n];\n```\n\n### Styling\n\nThe following shadow DOM parts are exposed for styling:\n\nPart name | Description\n----------- | ---------------\n`container` | The container element\n\nSee the [`<vaadin-avatar>`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar) documentation for the available\nstate attributes and stylable shadow parts of avatar elements.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/custom-theme/styling-components) documentation.\n\n### Internal components\n\nIn addition to `<vaadin-avatar-group>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-avatar-group-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-overlay).",
|
|
12
12
|
"attributes": [
|
|
13
|
+
{
|
|
14
|
+
"name": "overlay-class",
|
|
15
|
+
"description": "A space-delimited list of CSS class names to set on the overlay element.\nThis property does not affect other CSS class names set manually via JS.\n\nNote, if the CSS class name was set with this property, clearing it will\nremove it from the overlay, even if the same class name was also added\nmanually, e.g. by using `classList.add()` in the `renderer` function.",
|
|
16
|
+
"value": {
|
|
17
|
+
"type": [
|
|
18
|
+
"string",
|
|
19
|
+
"null",
|
|
20
|
+
"undefined"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
13
24
|
{
|
|
14
25
|
"name": "max-items-visible",
|
|
15
26
|
"description": "The maximum number of avatars to display. By default, all the avatars are displayed.\nWhen _maxItemsVisible_ is set, the overflowing avatars are grouped into one avatar with\na dropdown. Setting 0 or 1 has no effect so there are always at least two avatars visible.",
|
|
@@ -35,9 +46,20 @@
|
|
|
35
46
|
],
|
|
36
47
|
"js": {
|
|
37
48
|
"properties": [
|
|
49
|
+
{
|
|
50
|
+
"name": "overlayClass",
|
|
51
|
+
"description": "A space-delimited list of CSS class names to set on the overlay element.\nThis property does not affect other CSS class names set manually via JS.\n\nNote, if the CSS class name was set with this property, clearing it will\nremove it from the overlay, even if the same class name was also added\nmanually, e.g. by using `classList.add()` in the `renderer` function.",
|
|
52
|
+
"value": {
|
|
53
|
+
"type": [
|
|
54
|
+
"string",
|
|
55
|
+
"null",
|
|
56
|
+
"undefined"
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
},
|
|
38
60
|
{
|
|
39
61
|
"name": "items",
|
|
40
|
-
"description": "An array containing the items which will be stamped as avatars.\n\nThe items objects allow to configure [`name`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-
|
|
62
|
+
"description": "An array containing the items which will be stamped as avatars.\n\nThe items objects allow to configure [`name`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar#property-colorIndex) properties on the\nstamped avatars.\n\n#### Example\n\n```js\ngroup.items = [\n {\n name: 'User name',\n img: 'url-to-image.png'\n },\n {\n abbr: 'JD',\n colorIndex: 1\n },\n];\n```",
|
|
41
63
|
"value": {
|
|
42
64
|
"type": [
|
|
43
65
|
"Array.<AvatarGroupItem>",
|
package/web-types.lit.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/avatar-group",
|
|
4
|
-
"version": "24.0.0-
|
|
4
|
+
"version": "24.0.0-alpha10",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"framework": "lit",
|
|
7
7
|
"framework-config": {
|
|
@@ -16,12 +16,19 @@
|
|
|
16
16
|
"elements": [
|
|
17
17
|
{
|
|
18
18
|
"name": "vaadin-avatar-group",
|
|
19
|
-
"description": "`<vaadin-avatar-group>` is a Web Component providing avatar group displaying functionality.\n\nTo create the avatar group, first add the component to the page:\n\n```\n<vaadin-avatar-group></vaadin-avatar-group>\n```\n\nAnd then use [`items`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-
|
|
19
|
+
"description": "`<vaadin-avatar-group>` is a Web Component providing avatar group displaying functionality.\n\nTo create the avatar group, first add the component to the page:\n\n```\n<vaadin-avatar-group></vaadin-avatar-group>\n```\n\nAnd then use [`items`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar-group#property-items) property to initialize the structure:\n\n```\ndocument.querySelector('vaadin-avatar-group').items = [\n {name: 'John Doe'},\n {abbr: 'AB'}\n];\n```\n\n### Styling\n\nThe following shadow DOM parts are exposed for styling:\n\nPart name | Description\n----------- | ---------------\n`container` | The container element\n\nSee the [`<vaadin-avatar>`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar) documentation for the available\nstate attributes and stylable shadow parts of avatar elements.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/custom-theme/styling-components) documentation.\n\n### Internal components\n\nIn addition to `<vaadin-avatar-group>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-avatar-group-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-overlay).",
|
|
20
20
|
"extension": true,
|
|
21
21
|
"attributes": [
|
|
22
|
+
{
|
|
23
|
+
"name": ".overlayClass",
|
|
24
|
+
"description": "A space-delimited list of CSS class names to set on the overlay element.\nThis property does not affect other CSS class names set manually via JS.\n\nNote, if the CSS class name was set with this property, clearing it will\nremove it from the overlay, even if the same class name was also added\nmanually, e.g. by using `classList.add()` in the `renderer` function.",
|
|
25
|
+
"value": {
|
|
26
|
+
"kind": "expression"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
22
29
|
{
|
|
23
30
|
"name": ".items",
|
|
24
|
-
"description": "An array containing the items which will be stamped as avatars.\n\nThe items objects allow to configure [`name`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-
|
|
31
|
+
"description": "An array containing the items which will be stamped as avatars.\n\nThe items objects allow to configure [`name`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha10/#/elements/vaadin-avatar#property-colorIndex) properties on the\nstamped avatars.\n\n#### Example\n\n```js\ngroup.items = [\n {\n name: 'User name',\n img: 'url-to-image.png'\n },\n {\n abbr: 'JD',\n colorIndex: 1\n },\n];\n```",
|
|
25
32
|
"value": {
|
|
26
33
|
"kind": "expression"
|
|
27
34
|
}
|