@vaadin/avatar-group 24.0.0-alpha1 → 24.0.0-alpha11

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/avatar-group",
3
- "version": "24.0.0-alpha1",
3
+ "version": "24.0.0-alpha11",
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-alpha1",
41
- "@vaadin/component-base": "24.0.0-alpha1",
42
- "@vaadin/item": "24.0.0-alpha1",
43
- "@vaadin/list-box": "24.0.0-alpha1",
44
- "@vaadin/overlay": "24.0.0-alpha1",
45
- "@vaadin/vaadin-lumo-styles": "24.0.0-alpha1",
46
- "@vaadin/vaadin-material-styles": "24.0.0-alpha1",
47
- "@vaadin/vaadin-themable-mixin": "24.0.0-alpha1"
40
+ "@vaadin/avatar": "24.0.0-alpha11",
41
+ "@vaadin/component-base": "24.0.0-alpha11",
42
+ "@vaadin/item": "24.0.0-alpha11",
43
+ "@vaadin/list-box": "24.0.0-alpha11",
44
+ "@vaadin/overlay": "24.0.0-alpha11",
45
+ "@vaadin/vaadin-lumo-styles": "24.0.0-alpha11",
46
+ "@vaadin/vaadin-material-styles": "24.0.0-alpha11",
47
+ "@vaadin/vaadin-themable-mixin": "24.0.0-alpha11",
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": "427527c27c4b27822d61fd41d38d7b170134770b"
59
+ "gitHead": "641b3d96ceeb3e503a093682ebe686afdd8c3a68"
59
60
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2020 - 2022 Vaadin Ltd.
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 - 2022 Vaadin Ltd.
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(ElementMixin(ThemableMixin(ControllerMixin(HTMLElement)))) {
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 - 2022 Vaadin Ltd.
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 html`
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
- this,
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
- this.$.overlay.renderer = this.__overlayRenderer.bind(this);
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)$/.test(e.key)) {
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 === 'Esc' || /^(Tab)$/.test(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
- __updateAvatars(arr, itemsInView, maxItemsVisible) {
435
- const items = arr.base || [];
436
- const limit = this.__getLimit(items.length, itemsInView, maxItemsVisible);
437
-
438
- const newItems = limit ? items.slice(0, limit) : items;
439
- const oldItems = this.__oldAvatarItems || [];
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
- if (newItems.length || oldItems.length) {
442
- const removed = oldItems.filter((item) => !newItems.includes(item));
443
- const added = [...newItems];
443
+ /** @private */
444
+ __updateAvatars(arr, itemsInView, maxItemsVisible, overflow) {
445
+ if (!overflow) {
446
+ return;
447
+ }
444
448
 
445
- this._avatars.forEach((avatar) => {
446
- const item = avatar._item;
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
- this.__addAvatars(added, newItems);
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
- this.getAttribute('dir') === 'rtl'
679
- ? parseInt(marginRight, 0) - parseInt(marginLeft, 0)
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-alpha1",
4
+ "version": "24.0.0-alpha11",
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-alpha1/#/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-alpha1/#/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-alpha1/#/elements/vaadin-overlay).",
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-alpha11/#/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-alpha11/#/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-alpha11/#/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-alpha1/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha1/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha1/#/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```",
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-alpha11/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha11/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha11/#/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>",
@@ -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-alpha1",
4
+ "version": "24.0.0-alpha11",
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-alpha1/#/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-alpha1/#/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-alpha1/#/elements/vaadin-overlay).",
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-alpha11/#/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-alpha11/#/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-alpha11/#/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-alpha1/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha1/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha1/#/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```",
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-alpha11/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha11/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha11/#/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
  }