@vaadin/crud 24.8.4 → 25.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.
Files changed (46) hide show
  1. package/README.md +0 -23
  2. package/package.json +19 -20
  3. package/src/{vaadin-crud-styles.d.ts → styles/vaadin-crud-base-styles.d.ts} +0 -2
  4. package/src/styles/vaadin-crud-base-styles.js +162 -0
  5. package/src/styles/vaadin-crud-core-styles.d.ts +13 -0
  6. package/src/{vaadin-crud-styles.js → styles/vaadin-crud-core-styles.js} +1 -33
  7. package/src/styles/vaadin-crud-dialog-overlay-base-styles.d.ts +13 -0
  8. package/src/styles/vaadin-crud-dialog-overlay-base-styles.js +48 -0
  9. package/src/styles/vaadin-crud-dialog-overlay-core-styles.d.ts +13 -0
  10. package/src/styles/vaadin-crud-dialog-overlay-core-styles.js +54 -0
  11. package/src/styles/vaadin-crud-edit-base-styles.js +28 -0
  12. package/src/styles/vaadin-crud-edit-core-styles.js +17 -0
  13. package/src/styles/vaadin-crud-grid-base-styles.d.ts +13 -0
  14. package/src/styles/vaadin-crud-grid-base-styles.js +21 -0
  15. package/src/styles/vaadin-crud-grid-core-styles.d.ts +13 -0
  16. package/src/styles/vaadin-crud-grid-core-styles.js +13 -0
  17. package/src/vaadin-crud-controllers.js +1 -1
  18. package/src/vaadin-crud-dialog.js +72 -41
  19. package/src/vaadin-crud-edit.js +12 -21
  20. package/src/vaadin-crud-form.js +4 -1
  21. package/src/vaadin-crud-grid.js +5 -0
  22. package/src/vaadin-crud-mixin.js +67 -81
  23. package/src/vaadin-crud.d.ts +18 -8
  24. package/src/vaadin-crud.js +126 -66
  25. package/web-types.json +6 -6
  26. package/web-types.lit.json +4 -4
  27. package/src/vaadin-lit-crud-dialog.js +0 -128
  28. package/src/vaadin-lit-crud-edit-column.js +0 -70
  29. package/src/vaadin-lit-crud-edit.js +0 -75
  30. package/src/vaadin-lit-crud-form.js +0 -80
  31. package/src/vaadin-lit-crud-grid.js +0 -35
  32. package/src/vaadin-lit-crud.js +0 -121
  33. package/theme/lumo/vaadin-lit-crud.d.ts +0 -8
  34. package/theme/lumo/vaadin-lit-crud.js +0 -8
  35. package/theme/material/vaadin-crud-styles.d.ts +0 -2
  36. package/theme/material/vaadin-crud-styles.js +0 -157
  37. package/theme/material/vaadin-crud.d.ts +0 -8
  38. package/theme/material/vaadin-crud.js +0 -8
  39. package/theme/material/vaadin-lit-crud.d.ts +0 -8
  40. package/theme/material/vaadin-lit-crud.js +0 -8
  41. package/vaadin-lit-crud-edit .js +0 -1
  42. package/vaadin-lit-crud-edit-column.d.ts +0 -1
  43. package/vaadin-lit-crud-edit-column.js +0 -1
  44. package/vaadin-lit-crud-edit.d.ts +0 -1
  45. package/vaadin-lit-crud.d.ts +0 -1
  46. package/vaadin-lit-crud.js +0 -2
@@ -1,80 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
- *
5
- * This program is available under Vaadin Commercial License and Service Terms.
6
- *
7
- *
8
- * See https://vaadin.com/commercial-license-and-service-terms for the full
9
- * license.
10
- */
11
- import '@vaadin/text-field/src/vaadin-lit-text-field.js';
12
- import { defineCustomElement } from '@vaadin/component-base/src/define.js';
13
- import { FormLayout } from '@vaadin/form-layout/src/vaadin-lit-form-layout.js';
14
- import { createField, createFields } from './vaadin-crud-helpers.js';
15
- import { IncludedMixin } from './vaadin-crud-include-mixin.js';
16
-
17
- /**
18
- * An element used internally by `<vaadin-crud>`. Not intended to be used separately.
19
- *
20
- * @extends FormLayout
21
- * @mixes IncludedMixin
22
- * @private
23
- */
24
- class CrudForm extends IncludedMixin(FormLayout) {
25
- static get is() {
26
- return 'vaadin-crud-form';
27
- }
28
-
29
- static get properties() {
30
- return {
31
- /**
32
- * The item being edited.
33
- * @type {unknown}
34
- */
35
- item: {
36
- type: Object,
37
- sync: true,
38
- },
39
- };
40
- }
41
-
42
- static get observers() {
43
- return ['__onItemChange(item)'];
44
- }
45
-
46
- /**
47
- * Auto-generate form fields based on the JSON structure of the object provided.
48
- *
49
- * If not called, the method will be executed the first time an item is assigned.
50
- * @param {unknown} object
51
- * @protected
52
- */
53
- _configure(object) {
54
- this.innerHTML = '';
55
- this._fields = [];
56
- this.__createFields(this, object);
57
- this._updateLayout();
58
- }
59
-
60
- /** @private */
61
- __onItemChange(item) {
62
- if (!this._fields) {
63
- this._configure(item);
64
- }
65
- }
66
-
67
- /** @private */
68
- __createField(parent, path) {
69
- return createField(this, parent, path);
70
- }
71
-
72
- /** @private */
73
- __createFields(parent, object, path) {
74
- return createFields(this, parent, object, path);
75
- }
76
- }
77
-
78
- defineCustomElement(CrudForm);
79
-
80
- export { CrudForm };
@@ -1,35 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
- *
5
- * This program is available under Vaadin Commercial License and Service Terms.
6
- *
7
- *
8
- * See https://vaadin.com/commercial-license-and-service-terms for the full
9
- * license.
10
- */
11
- import '@vaadin/grid/src/vaadin-lit-grid-column-group.js';
12
- import '@vaadin/grid/src/vaadin-lit-grid-column.js';
13
- import '@vaadin/grid/src/vaadin-lit-grid-filter.js';
14
- import '@vaadin/grid/src/vaadin-lit-grid-sorter.js';
15
- import './vaadin-lit-crud-edit-column.js';
16
- import { defineCustomElement } from '@vaadin/component-base/src/define.js';
17
- import { Grid } from '@vaadin/grid/src/vaadin-lit-grid.js';
18
- import { CrudGridMixin } from './vaadin-crud-grid-mixin.js';
19
-
20
- /**
21
- * An element used internally by `<vaadin-crud>`. Not intended to be used separately.
22
- *
23
- * @extends Grid
24
- * @mixes CrudGridMixin
25
- * @private
26
- */
27
- class CrudGrid extends CrudGridMixin(Grid) {
28
- static get is() {
29
- return 'vaadin-crud-grid';
30
- }
31
- }
32
-
33
- defineCustomElement(CrudGrid);
34
-
35
- export { CrudGrid };
@@ -1,121 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
- *
5
- * This program is available under Vaadin Commercial License and Service Terms.
6
- *
7
- *
8
- * See https://vaadin.com/commercial-license-and-service-terms for the full
9
- * license.
10
- */
11
- import '@vaadin/button/src/vaadin-lit-button.js';
12
- import '@vaadin/confirm-dialog/src/vaadin-lit-confirm-dialog.js';
13
- import './vaadin-lit-crud-dialog.js';
14
- import './vaadin-lit-crud-grid.js';
15
- import './vaadin-lit-crud-form.js';
16
- import { html, LitElement } from 'lit';
17
- import { ifDefined } from 'lit/directives/if-defined.js';
18
- import { defineCustomElement } from '@vaadin/component-base/src/define.js';
19
- import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
20
- import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
21
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
22
- import { CrudMixin } from './vaadin-crud-mixin.js';
23
- import { crudStyles } from './vaadin-crud-styles.js';
24
-
25
- /**
26
- * LitElement based version of `<vaadin-crud>` web component.
27
- *
28
- * ## Disclaimer
29
- *
30
- * This component is an experiment and not yet a part of Vaadin platform.
31
- * There is no ETA regarding specific Vaadin version where it'll land.
32
- */
33
- class Crud extends CrudMixin(ElementMixin(ThemableMixin(PolylitMixin(LitElement)))) {
34
- static get styles() {
35
- return crudStyles;
36
- }
37
-
38
- /** @protected */
39
- render() {
40
- return html`
41
- <div id="container">
42
- <div id="main">
43
- <slot name="grid"></slot>
44
-
45
- <div id="toolbar" part="toolbar">
46
- <slot name="toolbar"></slot>
47
- <slot name="new-button"></slot>
48
- </div>
49
- </div>
50
-
51
- <div
52
- part="editor"
53
- id="editor"
54
- role="group"
55
- aria-labelledby="header"
56
- ?hidden="${this.__computeEditorHidden(this.editorOpened, this._fullscreen, this.editorPosition)}"
57
- >
58
- <div part="scroller" id="scroller">
59
- <div part="header" id="header">
60
- <slot name="header"></slot>
61
- </div>
62
- <slot name="form"></slot>
63
- </div>
64
-
65
- <div part="footer" role="toolbar">
66
- <slot name="save-button"></slot>
67
- <slot name="cancel-button"></slot>
68
- <slot name="delete-button"></slot>
69
- </div>
70
- </div>
71
- </div>
72
-
73
- <vaadin-crud-dialog
74
- id="dialog"
75
- .opened="${this.__computeDialogOpened(this.editorOpened, this._fullscreen, this.editorPosition)}"
76
- .fullscreen="${this._fullscreen}"
77
- .ariaLabel="${this.__dialogAriaLabel}"
78
- .noCloseOnOutsideClick="${this.__isDirty}"
79
- .noCloseOnEsc="${this.__isDirty}"
80
- theme="${ifDefined(this._theme)}"
81
- @opened-changed="${this.__onDialogOpened}"
82
- ></vaadin-crud-dialog>
83
-
84
- <vaadin-confirm-dialog
85
- theme="${ifDefined(this._theme)}"
86
- id="confirmCancel"
87
- @confirm="${this.__confirmCancel}"
88
- cancel-button-visible
89
- .confirmText="${this.__effectiveI18n.confirm.cancel.button.confirm}"
90
- .cancelText="${this.__effectiveI18n.confirm.cancel.button.dismiss}"
91
- .header="${this.__effectiveI18n.confirm.cancel.title}"
92
- .message="${this.__effectiveI18n.confirm.cancel.content}"
93
- confirm-theme="primary"
94
- ></vaadin-confirm-dialog>
95
-
96
- <vaadin-confirm-dialog
97
- theme="${ifDefined(this._theme)}"
98
- id="confirmDelete"
99
- @confirm="${this.__confirmDelete}"
100
- cancel-button-visible
101
- .confirmText="${this.__effectiveI18n.confirm.delete.button.confirm}"
102
- .cancelText="${this.__effectiveI18n.confirm.delete.button.dismiss}"
103
- .header="${this.__effectiveI18n.confirm.delete.title}"
104
- .message="${this.__effectiveI18n.confirm.delete.content}"
105
- confirm-theme="primary error"
106
- ></vaadin-confirm-dialog>
107
- `;
108
- }
109
-
110
- static get is() {
111
- return 'vaadin-crud';
112
- }
113
-
114
- static get cvdlName() {
115
- return 'vaadin-crud';
116
- }
117
- }
118
-
119
- defineCustomElement(Crud);
120
-
121
- export { Crud };
@@ -1,8 +0,0 @@
1
- import '@vaadin/button/theme/lumo/vaadin-lit-button.js';
2
- import '@vaadin/confirm-dialog/theme/lumo/vaadin-lit-confirm-dialog.js';
3
- import '@vaadin/form-layout/theme/lumo/vaadin-lit-form-layout.js';
4
- import '@vaadin/grid/theme/lumo/vaadin-lit-grid.js';
5
- import '@vaadin/grid/theme/lumo/vaadin-lit-grid-sorter.js';
6
- import '@vaadin/text-field/theme/lumo/vaadin-lit-text-field.js';
7
- import './vaadin-crud-styles.js';
8
- import '../../src/vaadin-lit-crud.js';
@@ -1,8 +0,0 @@
1
- import '@vaadin/button/theme/lumo/vaadin-lit-button.js';
2
- import '@vaadin/confirm-dialog/theme/lumo/vaadin-lit-confirm-dialog.js';
3
- import '@vaadin/form-layout/theme/lumo/vaadin-lit-form-layout.js';
4
- import '@vaadin/grid/theme/lumo/vaadin-lit-grid.js';
5
- import '@vaadin/grid/theme/lumo/vaadin-lit-grid-sorter.js';
6
- import '@vaadin/text-field/theme/lumo/vaadin-lit-text-field.js';
7
- import './vaadin-crud-styles.js';
8
- import '../../src/vaadin-lit-crud.js';
@@ -1,2 +0,0 @@
1
- import '@vaadin/vaadin-material-styles/typography.js';
2
- import '@vaadin/vaadin-material-styles/color.js';
@@ -1,157 +0,0 @@
1
- import '@vaadin/vaadin-material-styles/typography.js';
2
- import '@vaadin/vaadin-material-styles/color.js';
3
- import { dialogOverlay } from '@vaadin/dialog/theme/material/vaadin-dialog-styles.js';
4
- import { overlay } from '@vaadin/vaadin-material-styles/mixins/overlay.js';
5
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
6
-
7
- registerStyles(
8
- 'vaadin-crud-edit',
9
- css`
10
- :host {
11
- display: block;
12
- min-width: auto;
13
- font-size: var(--material-button-font-size);
14
- line-height: 1;
15
- color: var(--material-text-color);
16
- position: relative;
17
- background-color: var(--material-secondary-background-color);
18
- border-radius: 4px;
19
- width: 2em;
20
- height: 2em;
21
- outline: none;
22
- /* Reset button styles */
23
- letter-spacing: normal;
24
- -webkit-font-smoothing: auto;
25
- -moz-font-smoothing: auto;
26
- }
27
-
28
- [part='icon']::before {
29
- font-family: serif;
30
- font-size: var(--material-button-font-size);
31
- color: var(--material-primary-text-color);
32
- content: '\\270E';
33
- width: 2em;
34
- height: 2em;
35
- line-height: 2em;
36
- text-align: center;
37
- position: absolute;
38
- top: 0;
39
- left: 0;
40
- }
41
- `,
42
- { moduleId: 'material-crud-grid-edit' },
43
- );
44
-
45
- /**
46
- * Shared styles used for the CRUD editor content and buttons regardless of `editorPosition`.
47
- * They are applied to both `vaadin-crud` and `vaadin-crud-dialog-overlay` components.
48
- */
49
- const editorStyles = css`
50
- [part='footer'] {
51
- background-color: var(--material-secondary-background-color);
52
- }
53
-
54
- :host(:not([dir='rtl'])) ::slotted([slot='delete-button']) {
55
- margin-right: auto;
56
- }
57
-
58
- :host([dir='rtl']) ::slotted([slot='delete-button']) {
59
- margin-left: auto;
60
- }
61
- `;
62
-
63
- registerStyles(
64
- 'vaadin-crud',
65
- [
66
- editorStyles,
67
- css`
68
- :host {
69
- font-family: var(--material-font-family);
70
- }
71
-
72
- [part='scroller'] {
73
- padding: 16px;
74
- background: var(--material-background-color);
75
- }
76
-
77
- [part='editor'] {
78
- position: relative;
79
- }
80
-
81
- [part='editor']:focus::before {
82
- position: absolute;
83
- inset: 0;
84
- content: '';
85
- box-shadow: inset 0 0 0 2px var(--material-primary-color);
86
- pointer-events: none;
87
- }
88
-
89
- [part='toolbar'] {
90
- padding: 8px;
91
- background-color: var(--material-secondary-background-color);
92
- }
93
-
94
- [part='footer'] {
95
- padding: 8px 4px;
96
- }
97
-
98
- [part='footer'] ::slotted(*) {
99
- margin-left: 4px;
100
- margin-right: 4px;
101
- }
102
-
103
- :host(:not([editor-position=''])) [part='editor']:not([hidden]) {
104
- box-shadow: var(--material-shadow-elevation-12dp);
105
- }
106
-
107
- :host(:not([dir='rtl'])) [part='toolbar'] ::slotted(*:not(:first-child)) {
108
- margin-left: 0.5em;
109
- }
110
-
111
- :host([dir='rtl']) [part='toolbar'] ::slotted(*:not(:first-child)) {
112
- margin-right: 0.5em;
113
- }
114
- `,
115
- ],
116
- { moduleId: 'material-crud' },
117
- );
118
-
119
- registerStyles(
120
- 'vaadin-crud-dialog-overlay',
121
- [
122
- overlay,
123
- dialogOverlay,
124
- editorStyles,
125
- css`
126
- [part='overlay'] {
127
- max-width: 54em;
128
- min-width: 20em;
129
- }
130
-
131
- @keyframes material-overlay-dummy-animation {
132
- 0% {
133
- opacity: 1;
134
- }
135
-
136
- 100% {
137
- opacity: 1;
138
- }
139
- }
140
-
141
- :host([opening]),
142
- :host([closing]) {
143
- animation: 0.25s material-overlay-dummy-animation;
144
- }
145
-
146
- [part='header'] ::slotted(h3) {
147
- margin-top: 0 !important;
148
- margin-bottom: 0 !important;
149
- }
150
-
151
- [part='content'] {
152
- padding: 0 16px 16px;
153
- }
154
- `,
155
- ],
156
- { moduleId: 'material-crud-dialog-overlay' },
157
- );
@@ -1,8 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-button.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-confirm-dialog.js';
3
- import '@vaadin/form-layout/theme/material/vaadin-form-layout.js';
4
- import '@vaadin/grid/theme/material/vaadin-grid.js';
5
- import '@vaadin/grid/theme/material/vaadin-grid-sorter.js';
6
- import '@vaadin/text-field/theme/material/vaadin-text-field.js';
7
- import './vaadin-crud-styles.js';
8
- import '../../src/vaadin-crud.js';
@@ -1,8 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-button.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-confirm-dialog.js';
3
- import '@vaadin/form-layout/theme/material/vaadin-form-layout.js';
4
- import '@vaadin/grid/theme/material/vaadin-grid.js';
5
- import '@vaadin/grid/theme/material/vaadin-grid-sorter.js';
6
- import '@vaadin/text-field/theme/material/vaadin-text-field.js';
7
- import './vaadin-crud-styles.js';
8
- import '../../src/vaadin-crud.js';
@@ -1,8 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-lit-button.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-lit-confirm-dialog.js';
3
- import '@vaadin/form-layout/theme/material/vaadin-lit-form-layout.js';
4
- import '@vaadin/grid/theme/material/vaadin-lit-grid.js';
5
- import '@vaadin/grid/theme/material/vaadin-lit-grid-sorter.js';
6
- import '@vaadin/text-field/theme/material/vaadin-lit-text-field.js';
7
- import './vaadin-crud-styles.js';
8
- import '../../src/vaadin-lit-crud.js';
@@ -1,8 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-lit-button.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-lit-confirm-dialog.js';
3
- import '@vaadin/form-layout/theme/material/vaadin-lit-form-layout.js';
4
- import '@vaadin/grid/theme/material/vaadin-lit-grid.js';
5
- import '@vaadin/grid/theme/material/vaadin-lit-grid-sorter.js';
6
- import '@vaadin/text-field/theme/material/vaadin-lit-text-field.js';
7
- import './vaadin-crud-styles.js';
8
- import '../../src/vaadin-lit-crud.js';
@@ -1 +0,0 @@
1
- export * from './src/vaadin-lit-crud-edit.js';
@@ -1 +0,0 @@
1
- export * from './src/vaadin-crud-edit-column.js';
@@ -1 +0,0 @@
1
- export * from './src/vaadin-lit-crud-edit-column.js';
@@ -1 +0,0 @@
1
- export * from './src/vaadin-crud-edit.js';
@@ -1 +0,0 @@
1
- export * from './src/vaadin-crud.js';
@@ -1,2 +0,0 @@
1
- import './theme/lumo/vaadin-lit-crud.js';
2
- export * from './src/vaadin-lit-crud.js';