@vaadin/avatar-group
Advanced tools
Comparing version 24.0.0-alpha1 to 24.0.0-alpha2
{ | ||
"name": "@vaadin/avatar-group", | ||
"version": "24.0.0-alpha1", | ||
"version": "24.0.0-alpha2", | ||
"publishConfig": { | ||
@@ -40,10 +40,11 @@ "access": "public" | ||
"@polymer/polymer": "^3.0.0", | ||
"@vaadin/avatar": "24.0.0-alpha1", | ||
"@vaadin/component-base": "24.0.0-alpha1", | ||
"@vaadin/item": "24.0.0-alpha1", | ||
"@vaadin/list-box": "24.0.0-alpha1", | ||
"@vaadin/overlay": "24.0.0-alpha1", | ||
"@vaadin/vaadin-lumo-styles": "24.0.0-alpha1", | ||
"@vaadin/vaadin-material-styles": "24.0.0-alpha1", | ||
"@vaadin/vaadin-themable-mixin": "24.0.0-alpha1" | ||
"@vaadin/avatar": "24.0.0-alpha2", | ||
"@vaadin/component-base": "24.0.0-alpha2", | ||
"@vaadin/item": "24.0.0-alpha2", | ||
"@vaadin/list-box": "24.0.0-alpha2", | ||
"@vaadin/overlay": "24.0.0-alpha2", | ||
"@vaadin/vaadin-lumo-styles": "24.0.0-alpha2", | ||
"@vaadin/vaadin-material-styles": "24.0.0-alpha2", | ||
"@vaadin/vaadin-themable-mixin": "24.0.0-alpha2", | ||
"lit": "^2.0.0" | ||
}, | ||
@@ -59,3 +60,3 @@ "devDependencies": { | ||
], | ||
"gitHead": "427527c27c4b27822d61fd41d38d7b170134770b" | ||
"gitHead": "0c16c01a6807e629a84f5a982793afecc1a7ced0" | ||
} |
@@ -12,3 +12,4 @@ /** | ||
import { afterNextRender } from '@polymer/polymer/lib/utils/render-status.js'; | ||
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js'; | ||
import { html as legacyHtml, PolymerElement } from '@polymer/polymer/polymer-element.js'; | ||
import { html, render } from 'lit'; | ||
import { announce } from '@vaadin/component-base/src/a11y-announcer.js'; | ||
@@ -69,3 +70,3 @@ import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js'; | ||
static get template() { | ||
return html` | ||
return legacyHtml` | ||
<style> | ||
@@ -273,3 +274,3 @@ :host { | ||
'__updateAvatarsTheme(_overflow, _avatars, _theme)', | ||
'__updateAvatars(items.*, __itemsInView, maxItemsVisible)', | ||
'__updateAvatars(items.*, __itemsInView, maxItemsVisible, _overflow, i18n)', | ||
'__updateOverflowAbbr(_overflow, items.length, __itemsInView, maxItemsVisible)', | ||
@@ -350,17 +351,2 @@ '__updateOverflowHidden(_overflow, items.length, __itemsInView, __maxReached)', | ||
/** @private */ | ||
__createAvatar(item) { | ||
const avatar = document.createElement('vaadin-avatar'); | ||
avatar.name = item.name; | ||
avatar.abbr = item.abbr; | ||
avatar.img = item.img; | ||
avatar.colorIndex = item.colorIndex; | ||
avatar.withTooltip = true; | ||
avatar.i18n = this.i18n; | ||
avatar._item = item; | ||
return avatar; | ||
} | ||
/** @private */ | ||
__createItemElement(item) { | ||
@@ -438,40 +424,39 @@ const itemElement = document.createElement('vaadin-item'); | ||
/** @private */ | ||
__updateAvatars(arr, itemsInView, maxItemsVisible) { | ||
__renderAvatars(items) { | ||
render( | ||
html` | ||
${items.map( | ||
(item) => | ||
html` | ||
<vaadin-avatar | ||
.name="${item.name}" | ||
.abbr="${item.abbr}" | ||
.img="${item.img}" | ||
.colorIndex="${item.colorIndex}" | ||
.i18n="${this.i18n}" | ||
with-tooltip | ||
></vaadin-avatar> | ||
`, | ||
)} | ||
`, | ||
this, | ||
{ renderBefore: this._overflow }, | ||
); | ||
} | ||
/** @private */ | ||
__updateAvatars(arr, itemsInView, maxItemsVisible, overflow) { | ||
if (!overflow) { | ||
return; | ||
} | ||
const items = arr.base || []; | ||
const limit = this.__getLimit(items.length, itemsInView, maxItemsVisible); | ||
const newItems = limit ? items.slice(0, limit) : items; | ||
const oldItems = this.__oldAvatarItems || []; | ||
this.__renderAvatars(limit ? items.slice(0, limit) : items); | ||
if (newItems.length || oldItems.length) { | ||
const removed = oldItems.filter((item) => !newItems.includes(item)); | ||
const added = [...newItems]; | ||
this._avatars.forEach((avatar) => { | ||
const item = avatar._item; | ||
if (removed.includes(item)) { | ||
avatar.remove(); | ||
} else if (added.includes(item)) { | ||
added.splice(added.indexOf(item), 1); | ||
} | ||
}); | ||
this.__addAvatars(added, newItems); | ||
} | ||
this._avatars = [...this.querySelectorAll('vaadin-avatar')]; | ||
this.__oldAvatarItems = newItems; | ||
} | ||
/** @private */ | ||
__addAvatars(itemsToAdd, allItems) { | ||
itemsToAdd.forEach((item) => { | ||
const avatar = this.__createAvatar(item); | ||
const nextItem = allItems[allItems.indexOf(item) + 1]; | ||
const nextAvatar = this._avatars.find((el) => el._item === nextItem); | ||
this.insertBefore(avatar, nextAvatar || this._overflow); | ||
}); | ||
} | ||
/** @private */ | ||
__computeOverflowItems(arr, itemsInView, maxItemsVisible) { | ||
@@ -478,0 +463,0 @@ const items = arr.base || []; |
{ | ||
"$schema": "https://json.schemastore.org/web-types", | ||
"name": "@vaadin/avatar-group", | ||
"version": "24.0.0-alpha1", | ||
"version": "24.0.0-alpha2", | ||
"description-markup": "markdown", | ||
@@ -11,3 +11,3 @@ "contributions": { | ||
"name": "vaadin-avatar-group", | ||
"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).", | ||
"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-alpha2/#/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-alpha2/#/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-alpha2/#/elements/vaadin-overlay).", | ||
"attributes": [ | ||
@@ -41,3 +41,3 @@ { | ||
"name": "items", | ||
"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```", | ||
"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-alpha2/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha2/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha2/#/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```", | ||
"value": { | ||
@@ -44,0 +44,0 @@ "type": [ |
{ | ||
"$schema": "https://json.schemastore.org/web-types", | ||
"name": "@vaadin/avatar-group", | ||
"version": "24.0.0-alpha1", | ||
"version": "24.0.0-alpha2", | ||
"description-markup": "markdown", | ||
@@ -19,3 +19,3 @@ "framework": "lit", | ||
"name": "vaadin-avatar-group", | ||
"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).", | ||
"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-alpha2/#/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-alpha2/#/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-alpha2/#/elements/vaadin-overlay).", | ||
"extension": true, | ||
@@ -25,3 +25,3 @@ "attributes": [ | ||
"name": ".items", | ||
"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```", | ||
"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-alpha2/#/elements/vaadin-avatar#property-name),\n[`abbr`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha2/#/elements/vaadin-avatar#property-abbr), [`img`](#/elements/vaadin-avatar#property-img)\nand [`colorIndex`](https://cdn.vaadin.com/vaadin-web-components/24.0.0-alpha2/#/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```", | ||
"value": { | ||
@@ -28,0 +28,0 @@ "kind": "expression" |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
54421
10
1025
+ Addedlit@^2.0.0
+ Added@vaadin/avatar@24.0.0-alpha2(transitive)
+ Added@vaadin/component-base@24.0.0-alpha2(transitive)
+ Added@vaadin/icon@24.0.0-alpha2(transitive)
+ Added@vaadin/item@24.0.0-alpha2(transitive)
+ Added@vaadin/list-box@24.0.0-alpha2(transitive)
+ Added@vaadin/overlay@24.0.0-alpha2(transitive)
+ Added@vaadin/tooltip@24.0.0-alpha2(transitive)
+ Added@vaadin/vaadin-list-mixin@24.0.0-alpha2(transitive)
+ Added@vaadin/vaadin-lumo-styles@24.0.0-alpha2(transitive)
+ Added@vaadin/vaadin-material-styles@24.0.0-alpha2(transitive)
+ Added@vaadin/vaadin-themable-mixin@24.0.0-alpha2(transitive)
- Removed@polymer/iron-flex-layout@3.0.1(transitive)
- Removed@polymer/iron-icon@3.0.1(transitive)
- Removed@polymer/iron-iconset-svg@3.0.1(transitive)
- Removed@polymer/iron-meta@3.0.1(transitive)
- Removed@vaadin/avatar@24.0.0-alpha1(transitive)
- Removed@vaadin/component-base@24.0.0-alpha1(transitive)
- Removed@vaadin/icon@24.0.0-alpha1(transitive)
- Removed@vaadin/item@24.0.0-alpha1(transitive)
- Removed@vaadin/list-box@24.0.0-alpha1(transitive)
- Removed@vaadin/overlay@24.0.0-alpha1(transitive)
- Removed@vaadin/tooltip@24.0.0-alpha1(transitive)
- Removed@vaadin/vaadin-list-mixin@24.0.0-alpha1(transitive)
- Removed@vaadin/vaadin-lumo-styles@24.0.0-alpha1(transitive)
- Removed@vaadin/vaadin-material-styles@24.0.0-alpha1(transitive)
- Removed@vaadin/vaadin-themable-mixin@24.0.0-alpha1(transitive)
Updated@vaadin/avatar@24.0.0-alpha2
Updated@vaadin/item@24.0.0-alpha2