UNPKG

@scoped-vaadin/avatar-group

Version:
94 lines (88 loc) 3.34 kB
/** * @license * Copyright (c) 2020 - 2025 Vaadin Ltd. * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/ */ import '@scoped-vaadin/avatar/src/vaadin-avatar.js'; import '@scoped-vaadin/tooltip/src/vaadin-tooltip.js'; import './vaadin-avatar-group-menu.js'; import './vaadin-avatar-group-menu-item.js'; import './vaadin-avatar-group-overlay.js'; import { html, PolymerElement } from '@polymer/polymer/polymer-element.js'; import { ControllerMixin } from '@scoped-vaadin/component-base/src/controller-mixin.js'; import { defineCustomElement } from '@scoped-vaadin/component-base/src/define.js'; import { ElementMixin } from '@scoped-vaadin/component-base/src/element-mixin.js'; import { registerStyles, ThemableMixin } from '@scoped-vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js'; import { AvatarGroupMixin } from './vaadin-avatar-group-mixin.js'; import { avatarGroupStyles } from './vaadin-avatar-group-styles.js'; registerStyles('vaadin24-avatar-group', avatarGroupStyles, { moduleId: 'vaadin-avatar-group-styles' }); /** * `<vaadin24-avatar-group>` is a Web Component providing avatar group displaying functionality. * * To create the avatar group, first add the component to the page: * * ``` * <vaadin24-avatar-group></vaadin24-avatar-group> * ``` * * And then use [`items`](#/elements/vaadin-avatar-group#property-items) property to initialize the structure: * * ``` * document.querySelector('vaadin24-avatar-group').items = [ * {name: 'John Doe'}, * {abbr: 'AB'} * ]; * ``` * * ### Styling * * The following shadow DOM parts are exposed for styling: * * Part name | Description * ----------- | --------------- * `container` | The container element * * See the [`<vaadin24-avatar>`](#/elements/vaadin-avatar) documentation for the available * state attributes and stylable shadow parts of avatar elements. * * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation. * * ### Internal components * * In addition to `<vaadin24-avatar-group>` itself, the following internal * components are themable: * * - `<vaadin24-avatar-group-overlay>` - has the same API as [`<vaadin24-overlay>`](#/elements/vaadin-overlay). * - `<vaadin24-avatar-group-menu>` - has the same API as [`<vaadin24-list-box>`](#/elements/vaadin-list-box). * - `<vaadin24-avatar-group-menu-item>` - has the same API as [`<vaadin24-item>`](#/elements/vaadin-item). * * @customElement * @extends HTMLElement * @mixes ControllerMixin * @mixes ElementMixin * @mixes AvatarGroupMixin * @mixes ThemableMixin */ class AvatarGroup extends AvatarGroupMixin(ElementMixin(ThemableMixin(ControllerMixin(PolymerElement)))) { static get template() { return html` <div id="container" part="container"> <slot></slot> <slot name="overflow"></slot> </div> <vaadin24-avatar-group-overlay id="overlay" opened="{{_opened}}" position-target="[[_overflow]]" no-vertical-overlap on-vaadin-overlay-close="_onVaadinOverlayClose" on-vaadin-overlay-open="_onVaadinOverlayOpen" ></vaadin24-avatar-group-overlay> `; } static get is() { return 'vaadin24-avatar-group'; } } defineCustomElement(AvatarGroup); export { AvatarGroup };