@vaadin/notification 25.0.0-alpha9 → 25.0.0-beta2

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/notification",
3
- "version": "25.0.0-alpha9",
3
+ "version": "25.0.0-beta2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -23,7 +23,6 @@
23
23
  "lit.d.ts",
24
24
  "lit.js",
25
25
  "src",
26
- "theme",
27
26
  "vaadin-*.d.ts",
28
27
  "vaadin-*.js",
29
28
  "web-types.json",
@@ -37,22 +36,22 @@
37
36
  ],
38
37
  "dependencies": {
39
38
  "@open-wc/dedupe-mixin": "^1.3.0",
40
- "@vaadin/component-base": "25.0.0-alpha9",
41
- "@vaadin/lit-renderer": "25.0.0-alpha9",
42
- "@vaadin/vaadin-lumo-styles": "25.0.0-alpha9",
43
- "@vaadin/vaadin-themable-mixin": "25.0.0-alpha9",
39
+ "@vaadin/component-base": "25.0.0-beta2",
40
+ "@vaadin/lit-renderer": "25.0.0-beta2",
41
+ "@vaadin/vaadin-themable-mixin": "25.0.0-beta2",
44
42
  "lit": "^3.0.0"
45
43
  },
46
44
  "devDependencies": {
47
- "@vaadin/button": "25.0.0-alpha9",
48
- "@vaadin/chai-plugins": "25.0.0-alpha9",
49
- "@vaadin/test-runner-commands": "25.0.0-alpha9",
45
+ "@vaadin/button": "25.0.0-beta2",
46
+ "@vaadin/chai-plugins": "25.0.0-beta2",
47
+ "@vaadin/test-runner-commands": "25.0.0-beta2",
50
48
  "@vaadin/testing-helpers": "^2.0.0",
51
- "sinon": "^18.0.0"
49
+ "@vaadin/vaadin-lumo-styles": "25.0.0-beta2",
50
+ "sinon": "^21.0.0"
52
51
  },
53
52
  "web-types": [
54
53
  "web-types.json",
55
54
  "web-types.lit.json"
56
55
  ],
57
- "gitHead": "bbe4720721e0955ffc87a79b412bee38b1f0eb1e"
56
+ "gitHead": "e078f8371ae266f05c7ca1ec25686cc489c83f24"
58
57
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2025 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 type { CSSResult } from 'lit';
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ import '@vaadin/component-base/src/styles/style-props.js';
7
+ import { css } from 'lit';
8
+
9
+ export const notificationCardStyles = css`
10
+ :host {
11
+ display: block;
12
+ }
13
+
14
+ [part='overlay'] {
15
+ pointer-events: auto;
16
+ box-sizing: border-box;
17
+ width: var(--vaadin-notification-width, 40ch);
18
+ max-width: 100%;
19
+ padding: var(--vaadin-notification-padding, var(--vaadin-padding-s));
20
+ background: var(--vaadin-notification-background, var(--vaadin-background-container));
21
+ border: var(--vaadin-notification-border-width, 1px) solid
22
+ var(--vaadin-notification-border-color, var(--vaadin-border-color-secondary));
23
+ box-shadow: var(--vaadin-notification-shadow, 0 8px 24px -4px rgba(0, 0, 0, 0.3));
24
+ border-radius: var(--vaadin-notification-border-radius, var(--vaadin-radius-l));
25
+ cursor: default;
26
+ }
27
+
28
+ @media (forced-colors: active) {
29
+ [part='overlay'] {
30
+ border: 3px solid !important;
31
+ }
32
+ }
33
+ `;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2025 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 type { CSSResult } from 'lit';
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2017 - 2025 Vaadin Ltd.
4
+ * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
+ */
6
+ import '@vaadin/component-base/src/styles/style-props.js';
7
+ import { css } from 'lit';
8
+
9
+ export const notificationContainerStyles = css`
10
+ :host {
11
+ /* How much space to reserve for overlay box shadow, to prevent clipping it with overflow:auto */
12
+ --_paint-area: 2em;
13
+ /* Space between notifications and the viewport */
14
+ --_padding: var(--vaadin-notification-viewport-inset, var(--vaadin-padding-s));
15
+ /* Space between notifications */
16
+ --_gap: var(--vaadin-notification-gap, var(--vaadin-gap-s));
17
+ display: grid;
18
+ /* top-stretch, top and bottom regions, bottom-stretch */
19
+ grid-template-rows: auto 1fr auto;
20
+ box-sizing: border-box;
21
+ width: 100%;
22
+ height: 100%;
23
+ overflow: hidden;
24
+ padding: var(--_padding);
25
+ border: 0;
26
+ background: transparent;
27
+ pointer-events: none;
28
+ interpolate-size: allow-keywords;
29
+ }
30
+
31
+ :host > * {
32
+ grid-column: 1;
33
+ }
34
+
35
+ [region-group] {
36
+ position: relative;
37
+ grid-row: 2 / 3;
38
+ }
39
+
40
+ [region] {
41
+ max-width: 100%;
42
+ max-height: 100%;
43
+ pointer-events: auto;
44
+ scrollbar-width: none;
45
+ }
46
+
47
+ /* scrollbar-width is supported since Safari 18.2, use the following for earlier */
48
+ [region]::-webkit-scrollbar {
49
+ display: none;
50
+ }
51
+
52
+ [region='top-stretch'] {
53
+ grid-row: 1;
54
+ z-index: 2;
55
+ --vaadin-notification-width: 100%;
56
+ }
57
+
58
+ [region='bottom-stretch'] {
59
+ grid-row: 3;
60
+ z-index: 2;
61
+ --vaadin-notification-width: 100%;
62
+ }
63
+
64
+ [region='middle'],
65
+ [region-group] > [region] {
66
+ position: absolute;
67
+ }
68
+
69
+ [region='middle'] {
70
+ position: fixed;
71
+ top: 50%;
72
+ left: 50%;
73
+ translate: -50% -50%;
74
+ max-width: calc(100% - var(--_padding) * 2);
75
+ }
76
+
77
+ [region]:where(:hover, :focus-within) {
78
+ z-index: 1;
79
+ overflow: auto;
80
+ overscroll-behavior: contain;
81
+ padding: var(--_paint-area);
82
+ }
83
+
84
+ [region]:not([region='middle'], [region$='center']):where(:hover, :focus-within) {
85
+ margin-inline: calc(var(--_paint-area) * -1);
86
+ }
87
+
88
+ [region]:not([region='middle']):where(:hover, :focus-within) {
89
+ margin-block: calc(var(--_paint-area) * -1);
90
+ }
91
+
92
+ [region-group='top'] > [region] {
93
+ top: 0;
94
+ }
95
+
96
+ [region-group='bottom'] > [region] {
97
+ bottom: 0;
98
+ }
99
+
100
+ [region-group] > [region$='start'] {
101
+ inset-inline-start: 0;
102
+ }
103
+
104
+ [region-group] > [region$='center'] {
105
+ left: 50%;
106
+ translate: -50%;
107
+ }
108
+
109
+ [region-group] > [region$='end'] {
110
+ inset-inline-end: 0;
111
+ }
112
+
113
+ ::slotted(*) {
114
+ margin-bottom: var(--_gap);
115
+ }
116
+
117
+ :is([region^='bottom'], [region='middle']) ::slotted(*) {
118
+ margin-top: var(--_gap);
119
+ margin-bottom: 0;
120
+ }
121
+ `;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
3
+ * Copyright (c) 2017 - 2025 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 type { Constructor } from '@open-wc/dedupe-mixin';
@@ -185,7 +185,7 @@ export const NotificationMixin = (superClass) =>
185
185
  * An options object can be passed to configure the notification.
186
186
  * The options object has the following structure:
187
187
  *
188
- * ```
188
+ * ```ts
189
189
  * {
190
190
  * assertive?: boolean
191
191
  * position?: string
@@ -102,7 +102,7 @@ declare class Notification extends NotificationMixin(ElementMixin(HTMLElement))
102
102
  * An options object can be passed to configure the notification.
103
103
  * The options object has the following structure:
104
104
  *
105
- * ```
105
+ * ```ts
106
106
  * {
107
107
  * assertive?: boolean
108
108
  * position?: string
@@ -10,8 +10,8 @@ import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
10
10
  import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
11
11
  import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
12
12
  import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
13
- import { notificationCardStyles } from './styles/vaadin-notification-card-core-styles.js';
14
- import { notificationContainerStyles } from './styles/vaadin-notification-container-core-styles.js';
13
+ import { notificationCardStyles } from './styles/vaadin-notification-card-base-styles.js';
14
+ import { notificationContainerStyles } from './styles/vaadin-notification-container-base-styles.js';
15
15
  import { NotificationContainerMixin, NotificationMixin } from './vaadin-notification-mixin.js';
16
16
 
17
17
  /**
@@ -1,2 +1,2 @@
1
- import './theme/lumo/vaadin-notification.js';
1
+ import './src/vaadin-notification.js';
2
2
  export * from './src/vaadin-notification.js';
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/notification",
4
- "version": "25.0.0-alpha9",
4
+ "version": "25.0.0-beta2",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/notification",
4
- "version": "25.0.0-alpha9",
4
+ "version": "25.0.0-beta2",
5
5
  "description-markup": "markdown",
6
6
  "framework": "lit",
7
7
  "framework-config": {
@@ -1,22 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2016 - 2025 Vaadin Ltd.
4
- * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
- */
6
- import { css } from 'lit';
7
-
8
- export const notificationCardStyles = css`
9
- :host {
10
- display: block;
11
- }
12
-
13
- [part='overlay'] {
14
- pointer-events: auto;
15
- }
16
-
17
- @media (forced-colors: active) {
18
- [part='overlay'] {
19
- outline: 3px solid;
20
- }
21
- }
22
- `;
@@ -1,62 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2016 - 2025 Vaadin Ltd.
4
- * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
- */
6
- import { css } from 'lit';
7
-
8
- export const notificationContainerStyles = css`
9
- :host {
10
- position: fixed;
11
- inset: 0;
12
- box-sizing: border-box;
13
- display: flex;
14
- flex-direction: column;
15
- align-items: stretch;
16
- pointer-events: none;
17
-
18
- /* Override native [popover] user agent styles */
19
- width: auto;
20
- height: auto;
21
- border: none;
22
- padding: 0;
23
- background-color: transparent;
24
- overflow: visible;
25
- }
26
-
27
- [region-group] {
28
- flex: 1 1 0%;
29
- display: flex;
30
- }
31
-
32
- [region-group='top'] {
33
- align-items: flex-start;
34
- }
35
-
36
- [region-group='bottom'] {
37
- align-items: flex-end;
38
- }
39
-
40
- [region-group] > [region] {
41
- flex: 1 1 0%;
42
- }
43
-
44
- @media (max-width: 420px) {
45
- [region-group] {
46
- flex-direction: column;
47
- align-items: stretch;
48
- }
49
-
50
- [region-group='top'] {
51
- justify-content: flex-start;
52
- }
53
-
54
- [region-group='bottom'] {
55
- justify-content: flex-end;
56
- }
57
-
58
- [region-group] > [region] {
59
- flex: initial;
60
- }
61
- }
62
- `;
@@ -1,4 +0,0 @@
1
- import '@vaadin/vaadin-lumo-styles/color.js';
2
- import '@vaadin/vaadin-lumo-styles/spacing.js';
3
- import '@vaadin/vaadin-lumo-styles/style.js';
4
- import '@vaadin/vaadin-lumo-styles/typography.js';
@@ -1,225 +0,0 @@
1
- import '@vaadin/vaadin-lumo-styles/color.js';
2
- import '@vaadin/vaadin-lumo-styles/spacing.js';
3
- import '@vaadin/vaadin-lumo-styles/style.js';
4
- import '@vaadin/vaadin-lumo-styles/typography.js';
5
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
6
-
7
- registerStyles(
8
- 'vaadin-notification-card',
9
- css`
10
- :host {
11
- position: relative;
12
- margin: var(--lumo-space-s);
13
- }
14
-
15
- [part='overlay'] {
16
- background: var(--lumo-base-color) linear-gradient(var(--lumo-contrast-5pct), var(--lumo-contrast-5pct));
17
- border-radius: var(--lumo-border-radius-l);
18
- box-shadow:
19
- 0 0 0 1px var(--lumo-contrast-10pct),
20
- var(--lumo-box-shadow-l);
21
- font-family: var(--lumo-font-family);
22
- font-size: var(--lumo-font-size-m);
23
- font-weight: 400;
24
- line-height: var(--lumo-line-height-s);
25
- letter-spacing: 0;
26
- text-transform: none;
27
- -webkit-text-size-adjust: 100%;
28
- -webkit-font-smoothing: antialiased;
29
- -moz-osx-font-smoothing: grayscale;
30
- }
31
-
32
- [part='content'] {
33
- padding: var(--lumo-space-wide-l);
34
- display: flex;
35
- align-items: center;
36
- justify-content: space-between;
37
- }
38
-
39
- [part='content'] ::slotted(vaadin-button) {
40
- flex: none;
41
- margin: 0 calc(var(--lumo-space-s) * -1) 0 var(--lumo-space-m);
42
- }
43
-
44
- :host([slot^='middle']) {
45
- max-width: 80vw;
46
- margin: var(--lumo-space-s) auto;
47
- }
48
-
49
- :host([slot$='stretch']) {
50
- margin: 0;
51
- }
52
-
53
- :host([slot$='stretch']) [part='overlay'] {
54
- border-radius: 0;
55
- }
56
-
57
- @media (min-width: 421px) {
58
- :host(:not([slot$='stretch'])) {
59
- display: flex;
60
- }
61
-
62
- :host([slot$='end']) {
63
- justify-content: flex-end;
64
- }
65
-
66
- :host([slot^='middle']),
67
- :host([slot$='center']) {
68
- display: flex;
69
- justify-content: center;
70
- }
71
- }
72
-
73
- @keyframes lumo-notification-exit-fade-out {
74
- 100% {
75
- opacity: 0;
76
- }
77
- }
78
-
79
- @keyframes lumo-notification-enter-fade-in {
80
- 0% {
81
- opacity: 0;
82
- }
83
- }
84
-
85
- @keyframes lumo-notification-enter-slide-down {
86
- 0% {
87
- transform: translateY(-200%);
88
- opacity: 0;
89
- }
90
- }
91
-
92
- @keyframes lumo-notification-exit-slide-up {
93
- 100% {
94
- transform: translateY(-200%);
95
- opacity: 0;
96
- }
97
- }
98
-
99
- @keyframes lumo-notification-enter-slide-up {
100
- 0% {
101
- transform: translateY(200%);
102
- opacity: 0;
103
- }
104
- }
105
-
106
- @keyframes lumo-notification-exit-slide-down {
107
- 100% {
108
- transform: translateY(200%);
109
- opacity: 0;
110
- }
111
- }
112
-
113
- :host([slot='middle'][opening]) {
114
- animation: lumo-notification-enter-fade-in 300ms;
115
- }
116
-
117
- :host([slot='middle'][closing]) {
118
- animation: lumo-notification-exit-fade-out 300ms;
119
- }
120
-
121
- :host([slot^='top'][opening]) {
122
- animation: lumo-notification-enter-slide-down 300ms;
123
- }
124
-
125
- :host([slot^='top'][closing]) {
126
- animation: lumo-notification-exit-slide-up 300ms;
127
- }
128
-
129
- :host([slot^='bottom'][opening]) {
130
- animation: lumo-notification-enter-slide-up 300ms;
131
- }
132
-
133
- :host([slot^='bottom'][closing]) {
134
- animation: lumo-notification-exit-slide-down 300ms;
135
- }
136
-
137
- :host([theme='success']) {
138
- --_focus-ring-gap-color: var(--lumo-success-color);
139
- --vaadin-focus-ring-color: var(--lumo-success-contrast-color);
140
- }
141
-
142
- :host([theme='warning']) {
143
- --_focus-ring-gap-color: var(--lumo-warning-color);
144
- --vaadin-focus-ring-color: var(--lumo-warning-contrast-color);
145
- }
146
-
147
- :host([theme='error']) {
148
- --_focus-ring-gap-color: var(--lumo-error-color);
149
- --vaadin-focus-ring-color: var(--lumo-error-contrast-color);
150
- }
151
-
152
- :host([theme='primary']) {
153
- --_focus-ring-gap-color: var(--lumo-primary-color);
154
- --vaadin-focus-ring-color: var(--lumo-primary-contrast-color);
155
- }
156
-
157
- :host([theme~='primary']) [part='overlay'] {
158
- background: var(--lumo-primary-color);
159
- color: var(--lumo-primary-contrast-color);
160
- box-shadow: var(--lumo-box-shadow-l);
161
- }
162
-
163
- :host([theme~='primary']) {
164
- --vaadin-button-background: var(--lumo-shade-20pct);
165
- --vaadin-button-text-color: var(--lumo-primary-contrast-color);
166
- --vaadin-button-primary-background: var(--lumo-primary-contrast-color);
167
- --vaadin-button-primary-text-color: var(--lumo-primary-text-color);
168
- }
169
-
170
- :host([theme~='contrast']) [part='overlay'] {
171
- background: var(--lumo-contrast);
172
- color: var(--lumo-base-color);
173
- box-shadow: var(--lumo-box-shadow-l);
174
- }
175
-
176
- :host([theme~='contrast']) {
177
- --vaadin-button-background: var(--lumo-contrast-20pct);
178
- --vaadin-button-text-color: var(--lumo-base-color);
179
- --vaadin-button-primary-background: var(--lumo-base-color);
180
- --vaadin-button-primary-text-color: var(--lumo-contrast);
181
- }
182
-
183
- :host([theme~='success']) [part='overlay'] {
184
- background: var(--lumo-success-color);
185
- color: var(--lumo-success-contrast-color);
186
- box-shadow: var(--lumo-box-shadow-l);
187
- }
188
-
189
- :host([theme~='success']) {
190
- --vaadin-button-background: var(--lumo-shade-20pct);
191
- --vaadin-button-text-color: var(--lumo-success-contrast-color);
192
- --vaadin-button-primary-background: var(--lumo-success-contrast-color);
193
- --vaadin-button-primary-text-color: var(--lumo-success-text-color);
194
- }
195
-
196
- :host([theme~='error']) [part='overlay'] {
197
- background: var(--lumo-error-color);
198
- color: var(--lumo-error-contrast-color);
199
- box-shadow: var(--lumo-box-shadow-l);
200
- }
201
-
202
- :host([theme~='error']) {
203
- --vaadin-button-background: var(--lumo-shade-20pct);
204
- --vaadin-button-text-color: var(--lumo-error-contrast-color);
205
- --vaadin-button-primary-background: var(--lumo-error-contrast-color);
206
- --vaadin-button-primary-text-color: var(--lumo-error-text-color);
207
- }
208
-
209
- :host([theme~='warning']) [part='overlay'] {
210
- background: var(--lumo-warning-color);
211
- color: var(--lumo-warning-contrast-color);
212
- box-shadow:
213
- inset 0 0 0 1px var(--lumo-contrast-20pct),
214
- var(--lumo-box-shadow-l);
215
- }
216
-
217
- :host([theme~='warning']) {
218
- --vaadin-button-background: var(--lumo-shade-20pct);
219
- --vaadin-button-text-color: var(--lumo-warning-contrast-color);
220
- --vaadin-button-primary-background: var(--lumo-shade-50pct);
221
- --vaadin-button-primary-text-color: var(--lumo-primary-contrast-color);
222
- }
223
- `,
224
- { moduleId: 'lumo-notification-card' },
225
- );
@@ -1,2 +0,0 @@
1
- import './vaadin-notification-styles.js';
2
- import '../../src/vaadin-notification.js';
@@ -1,2 +0,0 @@
1
- import './vaadin-notification-styles.js';
2
- import '../../src/vaadin-notification.js';