@vaadin/crud
Advanced tools
Comparing version 24.7.0-alpha8 to 24.7.0-alpha9
{ | ||
"name": "@vaadin/crud", | ||
"version": "24.7.0-alpha8", | ||
"version": "24.7.0-alpha9", | ||
"publishConfig": { | ||
@@ -40,19 +40,19 @@ "access": "public" | ||
"@polymer/polymer": "^3.0.0", | ||
"@vaadin/a11y-base": "24.7.0-alpha8", | ||
"@vaadin/button": "24.7.0-alpha8", | ||
"@vaadin/component-base": "24.7.0-alpha8", | ||
"@vaadin/confirm-dialog": "24.7.0-alpha8", | ||
"@vaadin/dialog": "24.7.0-alpha8", | ||
"@vaadin/form-layout": "24.7.0-alpha8", | ||
"@vaadin/grid": "24.7.0-alpha8", | ||
"@vaadin/overlay": "24.7.0-alpha8", | ||
"@vaadin/text-field": "24.7.0-alpha8", | ||
"@vaadin/vaadin-lumo-styles": "24.7.0-alpha8", | ||
"@vaadin/vaadin-material-styles": "24.7.0-alpha8", | ||
"@vaadin/vaadin-themable-mixin": "24.7.0-alpha8", | ||
"@vaadin/a11y-base": "24.7.0-alpha9", | ||
"@vaadin/button": "24.7.0-alpha9", | ||
"@vaadin/component-base": "24.7.0-alpha9", | ||
"@vaadin/confirm-dialog": "24.7.0-alpha9", | ||
"@vaadin/dialog": "24.7.0-alpha9", | ||
"@vaadin/form-layout": "24.7.0-alpha9", | ||
"@vaadin/grid": "24.7.0-alpha9", | ||
"@vaadin/overlay": "24.7.0-alpha9", | ||
"@vaadin/text-field": "24.7.0-alpha9", | ||
"@vaadin/vaadin-lumo-styles": "24.7.0-alpha9", | ||
"@vaadin/vaadin-material-styles": "24.7.0-alpha9", | ||
"@vaadin/vaadin-themable-mixin": "24.7.0-alpha9", | ||
"lit": "^3.0.0" | ||
}, | ||
"devDependencies": { | ||
"@vaadin/chai-plugins": "24.7.0-alpha8", | ||
"@vaadin/test-runner-commands": "24.7.0-alpha8", | ||
"@vaadin/chai-plugins": "24.7.0-alpha9", | ||
"@vaadin/test-runner-commands": "24.7.0-alpha9", | ||
"@vaadin/testing-helpers": "^1.1.0", | ||
@@ -66,3 +66,3 @@ "sinon": "^18.0.0" | ||
], | ||
"gitHead": "d015035192480fcc8cc9df5d00a950f177b83c32" | ||
"gitHead": "b0a16c6ed7fc50a22a42dcab0649d74f4c300485" | ||
} |
@@ -12,2 +12,3 @@ /** | ||
import type { Constructor } from '@open-wc/dedupe-mixin'; | ||
import type { I18nMixinClass, PartialI18n } from '@vaadin/component-base/src/i18n-mixin.js'; | ||
import type { GridFilterDefinition, GridSorterDefinition } from '@vaadin/grid/src/vaadin-grid.js'; | ||
@@ -28,3 +29,3 @@ | ||
export interface CrudI18n { | ||
export type CrudI18n = PartialI18n<{ | ||
newItem: string; | ||
@@ -54,3 +55,3 @@ editItem: string; | ||
}; | ||
} | ||
}>; | ||
@@ -129,3 +130,3 @@ /** | ||
base: T, | ||
): Constructor<CrudMixinClass<Item>> & T; | ||
): Constructor<CrudMixinClass<Item>> & Constructor<I18nMixinClass<CrudI18n>> & T; | ||
@@ -232,5 +233,5 @@ export declare class CrudMixinClass<Item> { | ||
/** | ||
* The object used to localize this component. | ||
* For changing the default localization, change the entire | ||
* _i18n_ object or just the property you want to modify. | ||
* The object used to localize this component. To change the default | ||
* localization, replace this with an object that provides all properties, or | ||
* just the individual properties you want to change. | ||
* | ||
@@ -237,0 +238,0 @@ * The object has the following JSON structure and default values: |
@@ -13,2 +13,3 @@ /** | ||
import { FocusRestorationController } from '@vaadin/a11y-base/src/focus-restoration-controller.js'; | ||
import { I18nMixin } from '@vaadin/component-base/src/i18n-mixin.js'; | ||
import { MediaQueryController } from '@vaadin/component-base/src/media-query-controller.js'; | ||
@@ -19,2 +20,29 @@ import { SlotController } from '@vaadin/component-base/src/slot-controller.js'; | ||
const DEFAULT_I18N = { | ||
newItem: 'New item', | ||
editItem: 'Edit item', | ||
saveItem: 'Save', | ||
cancel: 'Cancel', | ||
deleteItem: 'Delete...', | ||
editLabel: 'Edit', | ||
confirm: { | ||
delete: { | ||
title: 'Delete item', | ||
content: 'Are you sure you want to delete this item? This action cannot be undone.', | ||
button: { | ||
confirm: 'Delete', | ||
dismiss: 'Cancel', | ||
}, | ||
}, | ||
cancel: { | ||
title: 'Discard changes', | ||
content: 'There are unsaved changes to this item.', | ||
button: { | ||
confirm: 'Discard', | ||
dismiss: 'Cancel', | ||
}, | ||
}, | ||
}, | ||
}; | ||
/** | ||
@@ -24,5 +52,6 @@ * A mixin providing common crud functionality. | ||
* @polymerMixin | ||
* @mixes I18nMixin | ||
*/ | ||
export const CrudMixin = (superClass) => | ||
class extends superClass { | ||
class extends I18nMixin(DEFAULT_I18N, superClass) { | ||
static get properties() { | ||
@@ -231,74 +260,2 @@ return { | ||
/** | ||
* The object used to localize this component. | ||
* For changing the default localization, change the entire | ||
* _i18n_ object or just the property you want to modify. | ||
* | ||
* The object has the following JSON structure and default values: | ||
* | ||
* ``` | ||
* { | ||
* newItem: 'New item', | ||
* editItem: 'Edit item', | ||
* saveItem: 'Save', | ||
* cancel: 'Cancel', | ||
* deleteItem: 'Delete...', | ||
* editLabel: 'Edit', | ||
* confirm: { | ||
* delete: { | ||
* title: 'Confirm delete', | ||
* content: 'Are you sure you want to delete the selected item? This action cannot be undone.', | ||
* button: { | ||
* confirm: 'Delete', | ||
* dismiss: 'Cancel' | ||
* } | ||
* }, | ||
* cancel: { | ||
* title: 'Unsaved changes', | ||
* content: 'There are unsaved modifications to the item.', | ||
* button: { | ||
* confirm: 'Discard', | ||
* dismiss: 'Continue editing' | ||
* } | ||
* } | ||
* } | ||
* } | ||
* ``` | ||
* | ||
* @type {!CrudI18n} | ||
* @default {English/US} | ||
*/ | ||
i18n: { | ||
type: Object, | ||
sync: true, | ||
value() { | ||
return { | ||
newItem: 'New item', | ||
editItem: 'Edit item', | ||
saveItem: 'Save', | ||
cancel: 'Cancel', | ||
deleteItem: 'Delete...', | ||
editLabel: 'Edit', | ||
confirm: { | ||
delete: { | ||
title: 'Delete item', | ||
content: 'Are you sure you want to delete this item? This action cannot be undone.', | ||
button: { | ||
confirm: 'Delete', | ||
dismiss: 'Cancel', | ||
}, | ||
}, | ||
cancel: { | ||
title: 'Discard changes', | ||
content: 'There are unsaved changes to this item.', | ||
button: { | ||
confirm: 'Discard', | ||
dismiss: 'Cancel', | ||
}, | ||
}, | ||
}, | ||
}; | ||
}, | ||
}, | ||
/** @private */ | ||
@@ -338,14 +295,59 @@ __dialogAriaLabel: String, | ||
return [ | ||
'__headerPropsChanged(_defaultHeader, __isNew, i18n)', | ||
'__headerPropsChanged(_defaultHeader, __isNew, __effectiveI18n)', | ||
'__formPropsChanged(_form, _theme, include, exclude)', | ||
'__gridPropsChanged(_grid, _theme, include, exclude, noFilter, noHead, noSort, items)', | ||
'__i18nChanged(i18n, _grid)', | ||
'__i18nChanged(__effectiveI18n, _grid)', | ||
'__editOnClickChanged(editOnClick, _grid)', | ||
'__saveButtonPropsChanged(_saveButton, i18n, __isDirty)', | ||
'__cancelButtonPropsChanged(_cancelButton, i18n)', | ||
'__deleteButtonPropsChanged(_deleteButton, i18n, __isNew)', | ||
'__newButtonPropsChanged(_newButton, i18n)', | ||
'__saveButtonPropsChanged(_saveButton, __effectiveI18n, __isDirty)', | ||
'__cancelButtonPropsChanged(_cancelButton, __effectiveI18n)', | ||
'__deleteButtonPropsChanged(_deleteButton, __effectiveI18n, __isNew)', | ||
'__newButtonPropsChanged(_newButton, __effectiveI18n)', | ||
]; | ||
} | ||
/** | ||
* The object used to localize this component. To change the default | ||
* localization, replace this with an object that provides all properties, or | ||
* just the individual properties you want to change. | ||
* | ||
* The object has the following JSON structure and default values: | ||
* | ||
* ``` | ||
* { | ||
* newItem: 'New item', | ||
* editItem: 'Edit item', | ||
* saveItem: 'Save', | ||
* cancel: 'Cancel', | ||
* deleteItem: 'Delete...', | ||
* editLabel: 'Edit', | ||
* confirm: { | ||
* delete: { | ||
* title: 'Confirm delete', | ||
* content: 'Are you sure you want to delete the selected item? This action cannot be undone.', | ||
* button: { | ||
* confirm: 'Delete', | ||
* dismiss: 'Cancel' | ||
* } | ||
* }, | ||
* cancel: { | ||
* title: 'Unsaved changes', | ||
* content: 'There are unsaved modifications to the item.', | ||
* button: { | ||
* confirm: 'Discard', | ||
* dismiss: 'Continue editing' | ||
* } | ||
* } | ||
* } | ||
* } | ||
* ``` | ||
* @return {!CrudI18n} | ||
*/ | ||
get i18n() { | ||
return super.i18n; | ||
} | ||
set i18n(value) { | ||
super.i18n = value; | ||
} | ||
constructor() { | ||
@@ -437,9 +439,8 @@ super(); | ||
* @param {boolean} isNew | ||
* @param {string} i18nNewItem | ||
* @param {string} i18nEditItem | ||
* @param {CrudI18n} effectiveI18n | ||
* @private | ||
*/ | ||
__headerPropsChanged(headerNode, isNew, i18n) { | ||
__headerPropsChanged(headerNode, isNew, effectiveI18n) { | ||
if (headerNode) { | ||
headerNode.textContent = isNew ? i18n.newItem : i18n.editItem; | ||
headerNode.textContent = isNew ? effectiveI18n.newItem : effectiveI18n.editItem; | ||
} | ||
@@ -449,7 +450,7 @@ } | ||
/** | ||
* @param {CrudI18n} i18n | ||
* @param {CrudI18n} effectiveI18n | ||
* @param {CrudGrid | Grid} grid | ||
* @private | ||
*/ | ||
__i18nChanged(i18n, grid) { | ||
__i18nChanged(effectiveI18n, grid) { | ||
if (!grid) { | ||
@@ -461,3 +462,3 @@ return; | ||
Array.from(grid.querySelectorAll('vaadin-crud-edit-column')).forEach((column) => { | ||
column.ariaLabel = i18n.editLabel; | ||
column.ariaLabel = effectiveI18n.editLabel; | ||
}); | ||
@@ -695,7 +696,7 @@ }); | ||
* @param {HTMLElement | undefined} saveButton | ||
* @param {string} i18nLabel | ||
* @param {CrudI18n} effectiveI18n | ||
* @param {boolean} isDirty | ||
* @private | ||
*/ | ||
__saveButtonPropsChanged(saveButton, i18n, isDirty) { | ||
__saveButtonPropsChanged(saveButton, effectiveI18n, isDirty) { | ||
if (saveButton) { | ||
@@ -705,3 +706,3 @@ saveButton.toggleAttribute('disabled', this.__isSaveBtnDisabled(isDirty)); | ||
if (saveButton === this._saveButtonController.defaultNode) { | ||
saveButton.textContent = i18n.saveItem; | ||
saveButton.textContent = effectiveI18n.saveItem; | ||
} | ||
@@ -713,7 +714,7 @@ } | ||
* @param {HTMLElement | undefined} deleteButton | ||
* @param {string} i18nLabel | ||
* @param {CrudI18n} effectiveI18n | ||
* @param {boolean} isNew | ||
* @private | ||
*/ | ||
__deleteButtonPropsChanged(deleteButton, i18n, isNew) { | ||
__deleteButtonPropsChanged(deleteButton, effectiveI18n, isNew) { | ||
if (deleteButton) { | ||
@@ -723,3 +724,3 @@ deleteButton.toggleAttribute('hidden', isNew); | ||
if (deleteButton === this._deleteButtonController.defaultNode) { | ||
deleteButton.textContent = i18n.deleteItem; | ||
deleteButton.textContent = effectiveI18n.deleteItem; | ||
} | ||
@@ -731,8 +732,8 @@ } | ||
* @param {HTMLElement | undefined} cancelButton | ||
* @param {string} i18nLabel | ||
* @param {CrudI18n} effectiveI18n | ||
* @private | ||
*/ | ||
__cancelButtonPropsChanged(cancelButton, i18n) { | ||
__cancelButtonPropsChanged(cancelButton, effectiveI18n) { | ||
if (cancelButton && cancelButton === this._cancelButtonController.defaultNode) { | ||
cancelButton.textContent = i18n.cancel; | ||
cancelButton.textContent = effectiveI18n.cancel; | ||
} | ||
@@ -743,8 +744,8 @@ } | ||
* @param {HTMLElement | undefined} newButton | ||
* @param {string} i18nNewItem | ||
* @param {CrudI18n} effectiveI18n | ||
* @private | ||
*/ | ||
__newButtonPropsChanged(newButton, i18n) { | ||
__newButtonPropsChanged(newButton, effectiveI18n) { | ||
if (newButton && newButton === this._newButtonController.defaultNode) { | ||
newButton.textContent = i18n.newItem; | ||
newButton.textContent = effectiveI18n.newItem; | ||
} | ||
@@ -751,0 +752,0 @@ } |
@@ -226,6 +226,6 @@ /** | ||
cancel-button-visible | ||
confirm-text="[[i18n.confirm.cancel.button.confirm]]" | ||
cancel-text="[[i18n.confirm.cancel.button.dismiss]]" | ||
header="[[i18n.confirm.cancel.title]]" | ||
message="[[i18n.confirm.cancel.content]]" | ||
confirm-text="[[__effectiveI18n.confirm.cancel.button.confirm]]" | ||
cancel-text="[[__effectiveI18n.confirm.cancel.button.dismiss]]" | ||
header="[[__effectiveI18n.confirm.cancel.title]]" | ||
message="[[__effectiveI18n.confirm.cancel.content]]" | ||
confirm-theme="primary" | ||
@@ -239,6 +239,6 @@ ></vaadin-confirm-dialog> | ||
cancel-button-visible | ||
confirm-text="[[i18n.confirm.delete.button.confirm]]" | ||
cancel-text="[[i18n.confirm.delete.button.dismiss]]" | ||
header="[[i18n.confirm.delete.title]]" | ||
message="[[i18n.confirm.delete.content]]" | ||
confirm-text="[[__effectiveI18n.confirm.delete.button.confirm]]" | ||
cancel-text="[[__effectiveI18n.confirm.delete.button.dismiss]]" | ||
header="[[__effectiveI18n.confirm.delete.title]]" | ||
message="[[__effectiveI18n.confirm.delete.content]]" | ||
confirm-theme="primary error" | ||
@@ -245,0 +245,0 @@ ></vaadin-confirm-dialog> |
@@ -90,6 +90,6 @@ /** | ||
cancel-button-visible | ||
.confirmText="${this.i18n.confirm.cancel.button.confirm}" | ||
.cancelText="${this.i18n.confirm.cancel.button.dismiss}" | ||
.header="${this.i18n.confirm.cancel.title}" | ||
.message="${this.i18n.confirm.cancel.content}" | ||
.confirmText="${this.__effectiveI18n.confirm.cancel.button.confirm}" | ||
.cancelText="${this.__effectiveI18n.confirm.cancel.button.dismiss}" | ||
.header="${this.__effectiveI18n.confirm.cancel.title}" | ||
.message="${this.__effectiveI18n.confirm.cancel.content}" | ||
confirm-theme="primary" | ||
@@ -103,6 +103,6 @@ ></vaadin-confirm-dialog> | ||
cancel-button-visible | ||
.confirmText="${this.i18n.confirm.delete.button.confirm}" | ||
.cancelText="${this.i18n.confirm.delete.button.dismiss}" | ||
.header="${this.i18n.confirm.delete.title}" | ||
.message="${this.i18n.confirm.delete.content}" | ||
.confirmText="${this.__effectiveI18n.confirm.delete.button.confirm}" | ||
.cancelText="${this.__effectiveI18n.confirm.delete.button.dismiss}" | ||
.header="${this.__effectiveI18n.confirm.delete.title}" | ||
.message="${this.__effectiveI18n.confirm.delete.content}" | ||
confirm-theme="primary error" | ||
@@ -109,0 +109,0 @@ ></vaadin-confirm-dialog> |
{ | ||
"$schema": "https://json.schemastore.org/web-types", | ||
"name": "@vaadin/crud", | ||
"version": "24.7.0-alpha8", | ||
"version": "24.7.0-alpha9", | ||
"description-markup": "markdown", | ||
@@ -360,3 +360,3 @@ "contributions": { | ||
"name": "vaadin-crud", | ||
"description": "`<vaadin-crud>` is a Web Component for [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) operations.\n\n### Quick Start\n\nAssign an array to the [`items`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-items) property.\n\nA grid and an editor will be automatically generated and configured based on the data structure provided.\n\n```html\n<vaadin-crud></vaadin-crud>\n```\n```js\nconst crud = document.querySelector('vaadin-crud');\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Data Provider Function\n\nOtherwise, you can provide a [`dataProvider`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-dataProvider) function.\n\n```js\nconst crud = document.querySelector('vaadin-crud');\n\nconst users = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n\ncrud.dataProvider = (params, callback) => {\n const chunk = users.slice(params.page * params.pageSize, params.page * params.pageSize + params.pageSize);\n callback(chunk, people.length);\n};\n```\n\nNOTE: The auto-generated editor only supports string types. If you need to handle special cases\ncustomizing the editor is discussed below.\n\n### Customization\n\nAlternatively you can fully configure the component by using `slot` names.\n\nSlot name | Description\n---------------|----------------\n`grid` | To replace the auto-generated grid with a custom one.\n`form` | To replace the auto-generated form.\n`save-button` | To replace the \"Save\" button.\n`cancel-button`| To replace the \"Cancel\" button.\n`delete-button`| To replace the \"Delete\" button.\n`toolbar` | To provide the toolbar content (by default, it's empty).\n`new-button` | To replace the \"New item\" button.\n\n#### Example:\n\n```html\n<vaadin-crud id=\"crud\">\n <vaadin-grid slot=\"grid\">\n <vaadin-crud-edit-column></vaadin-crud-edit-column>\n <vaadin-grid-column id=\"column1\"></vaadin-grid-column>\n <vaadin-grid-column id=\"column2\"></vaadin-grid-column>\n </vaadin-grid>\n\n <vaadin-form-layout slot=\"form\">\n <vaadin-text-field label=\"First\" path=\"name\"></vaadin-text-field>\n <vaadin-text-field label=\"Surname\" path=\"surname\"></vaadin-text-field>\n </vaadin-form-layout>\n\n <div slot=\"toolbar\">Total singers: 2</div>\n <button slot=\"new-button\">New singer</button>\n\n <button slot=\"save-button\">Save changes</button>\n <button slot=\"cancel-button\">Discard changes</button>\n <button slot=\"delete-button\">Delete singer</button>\n</vaadin-crud>\n```\n```js\nconst crud = document.querySelector('#crud');\n\nconst column1 = document.querySelector('#column1');\ncolumn1.headerRenderer = (root, column) => {\n root.textContent = 'Name';\n};\ncolumn1.renderer = (root, column, model) => {\n root.textContent = model.item.name;\n};\n\nconst column2 = document.querySelector('#column2');\ncolumn2.headerRenderer = (root, column) => {\n root.textContent = 'Surname';\n};\ncolumn2.renderer = (root, column, model) => {\n root.textContent = model.item.surname;\n};\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Helpers\n\nThe following elements are used to auto-configure the grid and the editor\n- [`<vaadin-crud-edit-column>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud-edit-column)\n- `<vaadin-crud-grid>` - can be replaced with custom [`<vaadin-grid>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-grid)\n- `<vaadin-crud-form>` - can be replaced with custom [`<vaadin-form-layout>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-form-layout)\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`toolbar` | Toolbar container at the bottom. By default it contains the the `new` button\n\nThe following custom properties are available:\n\nCustom Property | Description | Default\n----------------|----------------\n--vaadin-crud-editor-max-height | max height of editor when opened on the bottom | 40%\n--vaadin-crud-editor-max-width | max width of editor when opened on the side | 40%\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.", | ||
"description": "`<vaadin-crud>` is a Web Component for [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) operations.\n\n### Quick Start\n\nAssign an array to the [`items`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-items) property.\n\nA grid and an editor will be automatically generated and configured based on the data structure provided.\n\n```html\n<vaadin-crud></vaadin-crud>\n```\n```js\nconst crud = document.querySelector('vaadin-crud');\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Data Provider Function\n\nOtherwise, you can provide a [`dataProvider`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-dataProvider) function.\n\n```js\nconst crud = document.querySelector('vaadin-crud');\n\nconst users = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n\ncrud.dataProvider = (params, callback) => {\n const chunk = users.slice(params.page * params.pageSize, params.page * params.pageSize + params.pageSize);\n callback(chunk, people.length);\n};\n```\n\nNOTE: The auto-generated editor only supports string types. If you need to handle special cases\ncustomizing the editor is discussed below.\n\n### Customization\n\nAlternatively you can fully configure the component by using `slot` names.\n\nSlot name | Description\n---------------|----------------\n`grid` | To replace the auto-generated grid with a custom one.\n`form` | To replace the auto-generated form.\n`save-button` | To replace the \"Save\" button.\n`cancel-button`| To replace the \"Cancel\" button.\n`delete-button`| To replace the \"Delete\" button.\n`toolbar` | To provide the toolbar content (by default, it's empty).\n`new-button` | To replace the \"New item\" button.\n\n#### Example:\n\n```html\n<vaadin-crud id=\"crud\">\n <vaadin-grid slot=\"grid\">\n <vaadin-crud-edit-column></vaadin-crud-edit-column>\n <vaadin-grid-column id=\"column1\"></vaadin-grid-column>\n <vaadin-grid-column id=\"column2\"></vaadin-grid-column>\n </vaadin-grid>\n\n <vaadin-form-layout slot=\"form\">\n <vaadin-text-field label=\"First\" path=\"name\"></vaadin-text-field>\n <vaadin-text-field label=\"Surname\" path=\"surname\"></vaadin-text-field>\n </vaadin-form-layout>\n\n <div slot=\"toolbar\">Total singers: 2</div>\n <button slot=\"new-button\">New singer</button>\n\n <button slot=\"save-button\">Save changes</button>\n <button slot=\"cancel-button\">Discard changes</button>\n <button slot=\"delete-button\">Delete singer</button>\n</vaadin-crud>\n```\n```js\nconst crud = document.querySelector('#crud');\n\nconst column1 = document.querySelector('#column1');\ncolumn1.headerRenderer = (root, column) => {\n root.textContent = 'Name';\n};\ncolumn1.renderer = (root, column, model) => {\n root.textContent = model.item.name;\n};\n\nconst column2 = document.querySelector('#column2');\ncolumn2.headerRenderer = (root, column) => {\n root.textContent = 'Surname';\n};\ncolumn2.renderer = (root, column, model) => {\n root.textContent = model.item.surname;\n};\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Helpers\n\nThe following elements are used to auto-configure the grid and the editor\n- [`<vaadin-crud-edit-column>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud-edit-column)\n- `<vaadin-crud-grid>` - can be replaced with custom [`<vaadin-grid>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-grid)\n- `<vaadin-crud-form>` - can be replaced with custom [`<vaadin-form-layout>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-form-layout)\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`toolbar` | Toolbar container at the bottom. By default it contains the the `new` button\n\nThe following custom properties are available:\n\nCustom Property | Description | Default\n----------------|----------------\n--vaadin-crud-editor-max-height | max height of editor when opened on the bottom | 40%\n--vaadin-crud-editor-max-width | max width of editor when opened on the side | 40%\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.", | ||
"attributes": [ | ||
@@ -416,3 +416,3 @@ { | ||
"name": "include", | ||
"description": "A comma-separated list of fields to include in the generated grid and the generated editor.\n\nIt can be used to explicitly define the field order.\n\nWhen it is defined [`exclude`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-exclude) is ignored.\n\nDefault is undefined meaning that all properties in the object should be mapped to fields.", | ||
"description": "A comma-separated list of fields to include in the generated grid and the generated editor.\n\nIt can be used to explicitly define the field order.\n\nWhen it is defined [`exclude`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-exclude) is ignored.\n\nDefault is undefined meaning that all properties in the object should be mapped to fields.", | ||
"value": { | ||
@@ -428,3 +428,3 @@ "type": [ | ||
"name": "exclude", | ||
"description": "A comma-separated list of fields to be excluded from the generated grid and the generated editor.\n\nWhen [`include`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-include) is defined, this parameter is ignored.\n\nDefault is to exclude all private fields (those properties starting with underscore)", | ||
"description": "A comma-separated list of fields to be excluded from the generated grid and the generated editor.\n\nWhen [`include`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-include) is defined, this parameter is ignored.\n\nDefault is to exclude all private fields (those properties starting with underscore)", | ||
"value": { | ||
@@ -475,2 +475,11 @@ "type": [ | ||
{ | ||
"name": "i18n", | ||
"description": "The object used to localize this component. To change the default\nlocalization, replace this with an object that provides all properties, or\njust the individual properties you want to change.\n\nThe object has the following JSON structure and default values:\n\n```\n{\n newItem: 'New item',\n editItem: 'Edit item',\n saveItem: 'Save',\n cancel: 'Cancel',\n deleteItem: 'Delete...',\n editLabel: 'Edit',\n confirm: {\n delete: {\n title: 'Confirm delete',\n content: 'Are you sure you want to delete the selected item? This action cannot be undone.',\n button: {\n confirm: 'Delete',\n dismiss: 'Cancel'\n }\n },\n cancel: {\n title: 'Unsaved changes',\n content: 'There are unsaved modifications to the item.',\n button: {\n confirm: 'Discard',\n dismiss: 'Continue editing'\n }\n }\n }\n}\n```", | ||
"value": { | ||
"type": [ | ||
"CrudI18n" | ||
] | ||
} | ||
}, | ||
{ | ||
"name": "items", | ||
@@ -557,3 +566,3 @@ "description": "An array containing the items which will be stamped to the column template instances.", | ||
"name": "include", | ||
"description": "A comma-separated list of fields to include in the generated grid and the generated editor.\n\nIt can be used to explicitly define the field order.\n\nWhen it is defined [`exclude`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-exclude) is ignored.\n\nDefault is undefined meaning that all properties in the object should be mapped to fields.", | ||
"description": "A comma-separated list of fields to include in the generated grid and the generated editor.\n\nIt can be used to explicitly define the field order.\n\nWhen it is defined [`exclude`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-exclude) is ignored.\n\nDefault is undefined meaning that all properties in the object should be mapped to fields.", | ||
"value": { | ||
@@ -569,3 +578,3 @@ "type": [ | ||
"name": "exclude", | ||
"description": "A comma-separated list of fields to be excluded from the generated grid and the generated editor.\n\nWhen [`include`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-include) is defined, this parameter is ignored.\n\nDefault is to exclude all private fields (those properties starting with underscore)", | ||
"description": "A comma-separated list of fields to be excluded from the generated grid and the generated editor.\n\nWhen [`include`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-include) is defined, this parameter is ignored.\n\nDefault is to exclude all private fields (those properties starting with underscore)", | ||
"value": { | ||
@@ -600,11 +609,2 @@ "type": [ | ||
} | ||
}, | ||
{ | ||
"name": "i18n", | ||
"description": "The object used to localize this component.\nFor changing the default localization, change the entire\n_i18n_ object or just the property you want to modify.\n\nThe object has the following JSON structure and default values:\n\n```\n{\n newItem: 'New item',\n editItem: 'Edit item',\n saveItem: 'Save',\n cancel: 'Cancel',\n deleteItem: 'Delete...',\n editLabel: 'Edit',\n confirm: {\n delete: {\n title: 'Confirm delete',\n content: 'Are you sure you want to delete the selected item? This action cannot be undone.',\n button: {\n confirm: 'Delete',\n dismiss: 'Cancel'\n }\n },\n cancel: {\n title: 'Unsaved changes',\n content: 'There are unsaved modifications to the item.',\n button: {\n confirm: 'Discard',\n dismiss: 'Continue editing'\n }\n }\n }\n}\n```", | ||
"value": { | ||
"type": [ | ||
"CrudI18n" | ||
] | ||
} | ||
} | ||
@@ -611,0 +611,0 @@ ], |
{ | ||
"$schema": "https://json.schemastore.org/web-types", | ||
"name": "@vaadin/crud", | ||
"version": "24.7.0-alpha8", | ||
"version": "24.7.0-alpha9", | ||
"description-markup": "markdown", | ||
@@ -145,3 +145,3 @@ "framework": "lit", | ||
"name": "vaadin-crud", | ||
"description": "`<vaadin-crud>` is a Web Component for [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) operations.\n\n### Quick Start\n\nAssign an array to the [`items`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-items) property.\n\nA grid and an editor will be automatically generated and configured based on the data structure provided.\n\n```html\n<vaadin-crud></vaadin-crud>\n```\n```js\nconst crud = document.querySelector('vaadin-crud');\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Data Provider Function\n\nOtherwise, you can provide a [`dataProvider`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-dataProvider) function.\n\n```js\nconst crud = document.querySelector('vaadin-crud');\n\nconst users = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n\ncrud.dataProvider = (params, callback) => {\n const chunk = users.slice(params.page * params.pageSize, params.page * params.pageSize + params.pageSize);\n callback(chunk, people.length);\n};\n```\n\nNOTE: The auto-generated editor only supports string types. If you need to handle special cases\ncustomizing the editor is discussed below.\n\n### Customization\n\nAlternatively you can fully configure the component by using `slot` names.\n\nSlot name | Description\n---------------|----------------\n`grid` | To replace the auto-generated grid with a custom one.\n`form` | To replace the auto-generated form.\n`save-button` | To replace the \"Save\" button.\n`cancel-button`| To replace the \"Cancel\" button.\n`delete-button`| To replace the \"Delete\" button.\n`toolbar` | To provide the toolbar content (by default, it's empty).\n`new-button` | To replace the \"New item\" button.\n\n#### Example:\n\n```html\n<vaadin-crud id=\"crud\">\n <vaadin-grid slot=\"grid\">\n <vaadin-crud-edit-column></vaadin-crud-edit-column>\n <vaadin-grid-column id=\"column1\"></vaadin-grid-column>\n <vaadin-grid-column id=\"column2\"></vaadin-grid-column>\n </vaadin-grid>\n\n <vaadin-form-layout slot=\"form\">\n <vaadin-text-field label=\"First\" path=\"name\"></vaadin-text-field>\n <vaadin-text-field label=\"Surname\" path=\"surname\"></vaadin-text-field>\n </vaadin-form-layout>\n\n <div slot=\"toolbar\">Total singers: 2</div>\n <button slot=\"new-button\">New singer</button>\n\n <button slot=\"save-button\">Save changes</button>\n <button slot=\"cancel-button\">Discard changes</button>\n <button slot=\"delete-button\">Delete singer</button>\n</vaadin-crud>\n```\n```js\nconst crud = document.querySelector('#crud');\n\nconst column1 = document.querySelector('#column1');\ncolumn1.headerRenderer = (root, column) => {\n root.textContent = 'Name';\n};\ncolumn1.renderer = (root, column, model) => {\n root.textContent = model.item.name;\n};\n\nconst column2 = document.querySelector('#column2');\ncolumn2.headerRenderer = (root, column) => {\n root.textContent = 'Surname';\n};\ncolumn2.renderer = (root, column, model) => {\n root.textContent = model.item.surname;\n};\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Helpers\n\nThe following elements are used to auto-configure the grid and the editor\n- [`<vaadin-crud-edit-column>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud-edit-column)\n- `<vaadin-crud-grid>` - can be replaced with custom [`<vaadin-grid>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-grid)\n- `<vaadin-crud-form>` - can be replaced with custom [`<vaadin-form-layout>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-form-layout)\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`toolbar` | Toolbar container at the bottom. By default it contains the the `new` button\n\nThe following custom properties are available:\n\nCustom Property | Description | Default\n----------------|----------------\n--vaadin-crud-editor-max-height | max height of editor when opened on the bottom | 40%\n--vaadin-crud-editor-max-width | max width of editor when opened on the side | 40%\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.", | ||
"description": "`<vaadin-crud>` is a Web Component for [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) operations.\n\n### Quick Start\n\nAssign an array to the [`items`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-items) property.\n\nA grid and an editor will be automatically generated and configured based on the data structure provided.\n\n```html\n<vaadin-crud></vaadin-crud>\n```\n```js\nconst crud = document.querySelector('vaadin-crud');\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Data Provider Function\n\nOtherwise, you can provide a [`dataProvider`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-dataProvider) function.\n\n```js\nconst crud = document.querySelector('vaadin-crud');\n\nconst users = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n\ncrud.dataProvider = (params, callback) => {\n const chunk = users.slice(params.page * params.pageSize, params.page * params.pageSize + params.pageSize);\n callback(chunk, people.length);\n};\n```\n\nNOTE: The auto-generated editor only supports string types. If you need to handle special cases\ncustomizing the editor is discussed below.\n\n### Customization\n\nAlternatively you can fully configure the component by using `slot` names.\n\nSlot name | Description\n---------------|----------------\n`grid` | To replace the auto-generated grid with a custom one.\n`form` | To replace the auto-generated form.\n`save-button` | To replace the \"Save\" button.\n`cancel-button`| To replace the \"Cancel\" button.\n`delete-button`| To replace the \"Delete\" button.\n`toolbar` | To provide the toolbar content (by default, it's empty).\n`new-button` | To replace the \"New item\" button.\n\n#### Example:\n\n```html\n<vaadin-crud id=\"crud\">\n <vaadin-grid slot=\"grid\">\n <vaadin-crud-edit-column></vaadin-crud-edit-column>\n <vaadin-grid-column id=\"column1\"></vaadin-grid-column>\n <vaadin-grid-column id=\"column2\"></vaadin-grid-column>\n </vaadin-grid>\n\n <vaadin-form-layout slot=\"form\">\n <vaadin-text-field label=\"First\" path=\"name\"></vaadin-text-field>\n <vaadin-text-field label=\"Surname\" path=\"surname\"></vaadin-text-field>\n </vaadin-form-layout>\n\n <div slot=\"toolbar\">Total singers: 2</div>\n <button slot=\"new-button\">New singer</button>\n\n <button slot=\"save-button\">Save changes</button>\n <button slot=\"cancel-button\">Discard changes</button>\n <button slot=\"delete-button\">Delete singer</button>\n</vaadin-crud>\n```\n```js\nconst crud = document.querySelector('#crud');\n\nconst column1 = document.querySelector('#column1');\ncolumn1.headerRenderer = (root, column) => {\n root.textContent = 'Name';\n};\ncolumn1.renderer = (root, column, model) => {\n root.textContent = model.item.name;\n};\n\nconst column2 = document.querySelector('#column2');\ncolumn2.headerRenderer = (root, column) => {\n root.textContent = 'Surname';\n};\ncolumn2.renderer = (root, column, model) => {\n root.textContent = model.item.surname;\n};\n\ncrud.items = [\n { name: 'John', surname: 'Lennon', role: 'singer' },\n { name: 'Ringo', surname: 'Starr', role: 'drums' },\n // ... more items\n];\n```\n\n### Helpers\n\nThe following elements are used to auto-configure the grid and the editor\n- [`<vaadin-crud-edit-column>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud-edit-column)\n- `<vaadin-crud-grid>` - can be replaced with custom [`<vaadin-grid>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-grid)\n- `<vaadin-crud-form>` - can be replaced with custom [`<vaadin-form-layout>`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-form-layout)\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n----------------|----------------\n`toolbar` | Toolbar container at the bottom. By default it contains the the `new` button\n\nThe following custom properties are available:\n\nCustom Property | Description | Default\n----------------|----------------\n--vaadin-crud-editor-max-height | max height of editor when opened on the bottom | 40%\n--vaadin-crud-editor-max-width | max width of editor when opened on the side | 40%\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.", | ||
"extension": true, | ||
@@ -192,2 +192,9 @@ "attributes": [ | ||
{ | ||
"name": ".i18n", | ||
"description": "The object used to localize this component. To change the default\nlocalization, replace this with an object that provides all properties, or\njust the individual properties you want to change.\n\nThe object has the following JSON structure and default values:\n\n```\n{\n newItem: 'New item',\n editItem: 'Edit item',\n saveItem: 'Save',\n cancel: 'Cancel',\n deleteItem: 'Delete...',\n editLabel: 'Edit',\n confirm: {\n delete: {\n title: 'Confirm delete',\n content: 'Are you sure you want to delete the selected item? This action cannot be undone.',\n button: {\n confirm: 'Delete',\n dismiss: 'Cancel'\n }\n },\n cancel: {\n title: 'Unsaved changes',\n content: 'There are unsaved modifications to the item.',\n button: {\n confirm: 'Discard',\n dismiss: 'Continue editing'\n }\n }\n }\n}\n```", | ||
"value": { | ||
"kind": "expression" | ||
} | ||
}, | ||
{ | ||
"name": ".items", | ||
@@ -222,3 +229,3 @@ "description": "An array containing the items which will be stamped to the column template instances.", | ||
"name": ".include", | ||
"description": "A comma-separated list of fields to include in the generated grid and the generated editor.\n\nIt can be used to explicitly define the field order.\n\nWhen it is defined [`exclude`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-exclude) is ignored.\n\nDefault is undefined meaning that all properties in the object should be mapped to fields.", | ||
"description": "A comma-separated list of fields to include in the generated grid and the generated editor.\n\nIt can be used to explicitly define the field order.\n\nWhen it is defined [`exclude`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-exclude) is ignored.\n\nDefault is undefined meaning that all properties in the object should be mapped to fields.", | ||
"value": { | ||
@@ -230,3 +237,3 @@ "kind": "expression" | ||
"name": ".exclude", | ||
"description": "A comma-separated list of fields to be excluded from the generated grid and the generated editor.\n\nWhen [`include`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha8/#/elements/vaadin-crud#property-include) is defined, this parameter is ignored.\n\nDefault is to exclude all private fields (those properties starting with underscore)", | ||
"description": "A comma-separated list of fields to be excluded from the generated grid and the generated editor.\n\nWhen [`include`](https://cdn.vaadin.com/vaadin-web-components/24.7.0-alpha9/#/elements/vaadin-crud#property-include) is defined, this parameter is ignored.\n\nDefault is to exclude all private fields (those properties starting with underscore)", | ||
"value": { | ||
@@ -237,9 +244,2 @@ "kind": "expression" | ||
{ | ||
"name": ".i18n", | ||
"description": "The object used to localize this component.\nFor changing the default localization, change the entire\n_i18n_ object or just the property you want to modify.\n\nThe object has the following JSON structure and default values:\n\n```\n{\n newItem: 'New item',\n editItem: 'Edit item',\n saveItem: 'Save',\n cancel: 'Cancel',\n deleteItem: 'Delete...',\n editLabel: 'Edit',\n confirm: {\n delete: {\n title: 'Confirm delete',\n content: 'Are you sure you want to delete the selected item? This action cannot be undone.',\n button: {\n confirm: 'Delete',\n dismiss: 'Cancel'\n }\n },\n cancel: {\n title: 'Unsaved changes',\n content: 'There are unsaved modifications to the item.',\n button: {\n confirm: 'Discard',\n dismiss: 'Continue editing'\n }\n }\n }\n}\n```", | ||
"value": { | ||
"kind": "expression" | ||
} | ||
}, | ||
{ | ||
"name": "@cancel", | ||
@@ -246,0 +246,0 @@ "description": "Fired when user discards edition. If the default is prevented, then\nno action is performed, user is responsible to close dialog and reset\nitem and grid.", |
173505
+ Added@vaadin/a11y-base@24.7.0-alpha9(transitive)
+ Added@vaadin/button@24.7.0-alpha9(transitive)
+ Added@vaadin/checkbox@24.7.0-alpha9(transitive)
+ Added@vaadin/component-base@24.7.0-alpha9(transitive)
+ Added@vaadin/confirm-dialog@24.7.0-alpha9(transitive)
+ Added@vaadin/dialog@24.7.0-alpha9(transitive)
+ Added@vaadin/field-base@24.7.0-alpha9(transitive)
+ Added@vaadin/form-layout@24.7.0-alpha9(transitive)
+ Added@vaadin/grid@24.7.0-alpha9(transitive)
+ Added@vaadin/icon@24.7.0-alpha9(transitive)
+ Added@vaadin/input-container@24.7.0-alpha9(transitive)
+ Added@vaadin/lit-renderer@24.7.0-alpha9(transitive)
+ Added@vaadin/overlay@24.7.0-alpha9(transitive)
+ Added@vaadin/text-field@24.7.0-alpha9(transitive)
+ Added@vaadin/vaadin-lumo-styles@24.7.0-alpha9(transitive)
+ Added@vaadin/vaadin-material-styles@24.7.0-alpha9(transitive)
+ Added@vaadin/vaadin-themable-mixin@24.7.0-alpha9(transitive)
- Removed@vaadin/a11y-base@24.7.0-alpha8(transitive)
- Removed@vaadin/button@24.7.0-alpha8(transitive)
- Removed@vaadin/checkbox@24.7.0-alpha8(transitive)
- Removed@vaadin/component-base@24.7.0-alpha8(transitive)
- Removed@vaadin/confirm-dialog@24.7.0-alpha8(transitive)
- Removed@vaadin/dialog@24.7.0-alpha8(transitive)
- Removed@vaadin/field-base@24.7.0-alpha8(transitive)
- Removed@vaadin/form-layout@24.7.0-alpha8(transitive)
- Removed@vaadin/grid@24.7.0-alpha8(transitive)
- Removed@vaadin/icon@24.7.0-alpha8(transitive)
- Removed@vaadin/input-container@24.7.0-alpha8(transitive)
- Removed@vaadin/lit-renderer@24.7.0-alpha8(transitive)
- Removed@vaadin/overlay@24.7.0-alpha8(transitive)
- Removed@vaadin/text-field@24.7.0-alpha8(transitive)
- Removed@vaadin/vaadin-lumo-styles@24.7.0-alpha8(transitive)
- Removed@vaadin/vaadin-material-styles@24.7.0-alpha8(transitive)
- Removed@vaadin/vaadin-themable-mixin@24.7.0-alpha8(transitive)
Updated@vaadin/button@24.7.0-alpha9
Updated@vaadin/dialog@24.7.0-alpha9
Updated@vaadin/grid@24.7.0-alpha9