@vaadin/details 25.0.0-alpha9 → 25.0.0-beta1

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/details",
3
- "version": "25.0.0-alpha9",
3
+ "version": "25.0.0-beta1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -21,9 +21,6 @@
21
21
  "type": "module",
22
22
  "files": [
23
23
  "src",
24
- "!src/styles/*-base-styles.d.ts",
25
- "!src/styles/*-base-styles.js",
26
- "theme",
27
24
  "vaadin-*.d.ts",
28
25
  "vaadin-*.js",
29
26
  "web-types.json",
@@ -37,22 +34,22 @@
37
34
  ],
38
35
  "dependencies": {
39
36
  "@open-wc/dedupe-mixin": "^1.3.0",
40
- "@vaadin/a11y-base": "25.0.0-alpha9",
41
- "@vaadin/button": "25.0.0-alpha9",
42
- "@vaadin/component-base": "25.0.0-alpha9",
43
- "@vaadin/vaadin-lumo-styles": "25.0.0-alpha9",
44
- "@vaadin/vaadin-themable-mixin": "25.0.0-alpha9",
37
+ "@vaadin/a11y-base": "25.0.0-beta1",
38
+ "@vaadin/button": "25.0.0-beta1",
39
+ "@vaadin/component-base": "25.0.0-beta1",
40
+ "@vaadin/vaadin-themable-mixin": "25.0.0-beta1",
45
41
  "lit": "^3.0.0"
46
42
  },
47
43
  "devDependencies": {
48
- "@vaadin/chai-plugins": "25.0.0-alpha9",
49
- "@vaadin/test-runner-commands": "25.0.0-alpha9",
44
+ "@vaadin/chai-plugins": "25.0.0-beta1",
45
+ "@vaadin/test-runner-commands": "25.0.0-beta1",
50
46
  "@vaadin/testing-helpers": "^2.0.0",
51
- "sinon": "^18.0.0"
47
+ "@vaadin/vaadin-lumo-styles": "25.0.0-beta1",
48
+ "sinon": "^21.0.0"
52
49
  },
53
50
  "web-types": [
54
51
  "web-types.json",
55
52
  "web-types.lit.json"
56
53
  ],
57
- "gitHead": "bbe4720721e0955ffc87a79b412bee38b1f0eb1e"
54
+ "gitHead": "1d20cf54e582d1f2e209126d4586f8b4c01c50e0"
58
55
  }
@@ -3,7 +3,7 @@
3
3
  * Copyright (c) 2025 - 2025 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- import '@vaadin/component-base/src/style-props.js';
6
+ import '@vaadin/component-base/src/styles/style-props.js';
7
7
  import { css, unsafeCSS } from 'lit';
8
8
 
9
9
  export const detailsSummary = (partName = 'vaadin-details-summary') => css`
@@ -11,15 +11,16 @@ export const detailsSummary = (partName = 'vaadin-details-summary') => css`
11
11
  align-items: center;
12
12
  background: var(--${unsafeCSS(partName)}-background, transparent);
13
13
  background-origin: border-box;
14
- border: var(--${unsafeCSS(partName)}-border, none);
14
+ border: var(--${unsafeCSS(partName)}-border-width, 0) solid
15
+ var(--${unsafeCSS(partName)}-border-color, var(--vaadin-border-color-secondary));
15
16
  border-radius: var(--${unsafeCSS(partName)}-border-radius, var(--vaadin-radius-m));
16
17
  box-sizing: border-box;
17
- color: var(--${unsafeCSS(partName)}-text-color, var(--vaadin-color));
18
+ color: var(--${unsafeCSS(partName)}-text-color, var(--vaadin-text-color));
18
19
  cursor: var(--vaadin-clickable-cursor);
19
20
  display: flex;
20
21
  font-size: var(--${unsafeCSS(partName)}-font-size, inherit);
21
22
  font-weight: var(--${unsafeCSS(partName)}-font-weight, 500);
22
- gap: var(--${unsafeCSS(partName)}-gap, 0 var(--vaadin-gap-container-inline));
23
+ gap: var(--${unsafeCSS(partName)}-gap, 0 var(--vaadin-gap-s));
23
24
  height: var(--${unsafeCSS(partName)}-height, auto);
24
25
  outline: calc(var(--vaadin-focus-ring-width) * var(--_focus-ring, 0)) solid var(--vaadin-focus-ring-color);
25
26
  outline-offset: 1px;
@@ -38,7 +39,7 @@ export const detailsSummary = (partName = 'vaadin-details-summary') => css`
38
39
  }
39
40
 
40
41
  [part='toggle'] {
41
- color: var(--vaadin-color-subtle);
42
+ color: var(--vaadin-text-color-secondary);
42
43
  }
43
44
 
44
45
  @media (prefers-reduced-motion: no-preference) {
@@ -60,7 +61,7 @@ export const detailsSummary = (partName = 'vaadin-details-summary') => css`
60
61
  content: '';
61
62
  display: block;
62
63
  height: var(--vaadin-icon-size, 1lh);
63
- mask-image: var(--_vaadin-icon-chevron-down);
64
+ mask: var(--_vaadin-icon-chevron-down) 50% / var(--vaadin-icon-visual-size, 100%) no-repeat;
64
65
  width: var(--vaadin-icon-size, 1lh);
65
66
  rotate: -90deg;
66
67
  }
@@ -10,7 +10,7 @@ import { DirMixin } from '@vaadin/component-base/src/dir-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 { detailsSummary } from './styles/vaadin-details-summary-core-styles.js';
13
+ import { detailsSummary } from './styles/vaadin-details-summary-base-styles.js';
14
14
 
15
15
  /**
16
16
  * The details summary element.
@@ -39,14 +39,15 @@ export type DetailsEventMap = DetailsCustomEventMap & HTMLElementEventMap;
39
39
  * -----------------|----------------
40
40
  * `content` | The wrapper for the collapsible details content.
41
41
  *
42
- * The following attributes are exposed for styling:
42
+ * The following state attributes are available for styling:
43
43
  *
44
- * Attribute | Description
45
- * -------------| -----------
46
- * `opened` | Set when the collapsible content is expanded and visible.
47
- * `disabled` | Set when the element is disabled.
48
- * `focus-ring` | Set when the element is focused using the keyboard.
49
- * `focused` | Set when the element is focused.
44
+ * Attribute | Description
45
+ * ---------------|------------
46
+ * `opened` | Set when the collapsible content is expanded and visible
47
+ * `disabled` | Set when the element is disabled
48
+ * `focus-ring` | Set when the element is focused using the keyboard
49
+ * `focused` | Set when the element is focused
50
+ * `has-tooltip` | Set when the element has a slotted tooltip
50
51
  *
51
52
  * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.
52
53
  *
@@ -33,14 +33,15 @@ import { DetailsBaseMixin } from './vaadin-details-base-mixin.js';
33
33
  * -----------------|----------------
34
34
  * `content` | The wrapper for the collapsible details content.
35
35
  *
36
- * The following attributes are exposed for styling:
36
+ * The following state attributes are available for styling:
37
37
  *
38
- * Attribute | Description
39
- * -------------| -----------
40
- * `opened` | Set when the collapsible content is expanded and visible.
41
- * `disabled` | Set when the element is disabled.
42
- * `focus-ring` | Set when the element is focused using the keyboard.
43
- * `focused` | Set when the element is focused.
38
+ * Attribute | Description
39
+ * ---------------|------------
40
+ * `opened` | Set when the collapsible content is expanded and visible
41
+ * `disabled` | Set when the element is disabled
42
+ * `focus-ring` | Set when the element is focused using the keyboard
43
+ * `focused` | Set when the element is focused
44
+ * `has-tooltip` | Set when the element has a slotted tooltip
44
45
  *
45
46
  * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.
46
47
  *
@@ -1,2 +1,2 @@
1
- import './theme/lumo/vaadin-details-summary.js';
1
+ import './src/vaadin-details-summary.js';
2
2
  export * from './src/vaadin-details-summary.js';
package/vaadin-details.js CHANGED
@@ -1,2 +1,2 @@
1
- import './theme/lumo/vaadin-details.js';
1
+ import './src/vaadin-details.js';
2
2
  export * from './src/vaadin-details.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/details",
4
- "version": "25.0.0-alpha9",
4
+ "version": "25.0.0-beta1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -74,7 +74,7 @@
74
74
  },
75
75
  {
76
76
  "name": "vaadin-details",
77
- "description": "`<vaadin-details>` is a Web Component which the creates an\nexpandable panel similar to `<details>` HTML element.\n\n```html\n<vaadin-details>\n <vaadin-details-summary slot=\"summary\">Expandable Details</vaadin-details-summary>\n <div>\n Toggle using mouse, Enter and Space keys.\n </div>\n</vaadin-details>\n```\n\n### Styling\n\nThe following shadow DOM parts are exposed for styling:\n\nPart name | Description\n-----------------|----------------\n`content` | The wrapper for the collapsible details content.\n\nThe following attributes are exposed for styling:\n\nAttribute | Description\n-------------| -----------\n`opened` | Set when the collapsible content is expanded and visible.\n`disabled` | Set when the element is disabled.\n`focus-ring` | Set when the element is focused using the keyboard.\n`focused` | Set when the element is focused.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
77
+ "description": "`<vaadin-details>` is a Web Component which the creates an\nexpandable panel similar to `<details>` HTML element.\n\n```html\n<vaadin-details>\n <vaadin-details-summary slot=\"summary\">Expandable Details</vaadin-details-summary>\n <div>\n Toggle using mouse, Enter and Space keys.\n </div>\n</vaadin-details>\n```\n\n### Styling\n\nThe following shadow DOM parts are exposed for styling:\n\nPart name | Description\n-----------------|----------------\n`content` | The wrapper for the collapsible details content.\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n---------------|------------\n`opened` | Set when the collapsible content is expanded and visible\n`disabled` | Set when the element is disabled\n`focus-ring` | Set when the element is focused using the keyboard\n`focused` | Set when the element is focused\n`has-tooltip` | Set when the element has a slotted tooltip\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
78
78
  "attributes": [
79
79
  {
80
80
  "name": "disabled",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/details",
4
- "version": "25.0.0-alpha9",
4
+ "version": "25.0.0-beta1",
5
5
  "description-markup": "markdown",
6
6
  "framework": "lit",
7
7
  "framework-config": {
@@ -37,7 +37,7 @@
37
37
  },
38
38
  {
39
39
  "name": "vaadin-details",
40
- "description": "`<vaadin-details>` is a Web Component which the creates an\nexpandable panel similar to `<details>` HTML element.\n\n```html\n<vaadin-details>\n <vaadin-details-summary slot=\"summary\">Expandable Details</vaadin-details-summary>\n <div>\n Toggle using mouse, Enter and Space keys.\n </div>\n</vaadin-details>\n```\n\n### Styling\n\nThe following shadow DOM parts are exposed for styling:\n\nPart name | Description\n-----------------|----------------\n`content` | The wrapper for the collapsible details content.\n\nThe following attributes are exposed for styling:\n\nAttribute | Description\n-------------| -----------\n`opened` | Set when the collapsible content is expanded and visible.\n`disabled` | Set when the element is disabled.\n`focus-ring` | Set when the element is focused using the keyboard.\n`focused` | Set when the element is focused.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
40
+ "description": "`<vaadin-details>` is a Web Component which the creates an\nexpandable panel similar to `<details>` HTML element.\n\n```html\n<vaadin-details>\n <vaadin-details-summary slot=\"summary\">Expandable Details</vaadin-details-summary>\n <div>\n Toggle using mouse, Enter and Space keys.\n </div>\n</vaadin-details>\n```\n\n### Styling\n\nThe following shadow DOM parts are exposed for styling:\n\nPart name | Description\n-----------------|----------------\n`content` | The wrapper for the collapsible details content.\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n---------------|------------\n`opened` | Set when the collapsible content is expanded and visible\n`disabled` | Set when the element is disabled\n`focus-ring` | Set when the element is focused using the keyboard\n`focused` | Set when the element is focused\n`has-tooltip` | Set when the element has a slotted tooltip\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
41
41
  "extension": true,
42
42
  "attributes": [
43
43
  {
@@ -1,8 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2025 - 2025 Vaadin Ltd.
4
- * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
- */
6
- import type { CSSResult } from 'lit';
7
-
8
- export const detailsSummary: (partName?: string) => CSSResult;
@@ -1,24 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2025 - 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 detailsSummary = () => css`
9
- :host {
10
- display: block;
11
- outline: none;
12
- white-space: nowrap;
13
- -webkit-user-select: none;
14
- user-select: none;
15
- }
16
-
17
- :host([hidden]) {
18
- display: none !important;
19
- }
20
-
21
- :host([disabled]) {
22
- pointer-events: none;
23
- }
24
- `;
@@ -1,6 +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
- declare const details: import("lit").CSSResult;
6
- export { details };
@@ -1,42 +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
- const details = css`
8
- :host {
9
- margin: var(--lumo-space-xs) 0;
10
- outline: none;
11
- --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
12
- --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
13
- }
14
-
15
- :host([focus-ring]) ::slotted([slot='summary']) {
16
- box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
17
- }
18
-
19
- [part='content'] {
20
- padding: var(--lumo-space-xs) 0 var(--lumo-space-s);
21
- font-size: var(--lumo-font-size-m);
22
- line-height: var(--lumo-line-height-m);
23
- }
24
-
25
- :host([theme~='filled']) {
26
- background-color: var(--lumo-contrast-5pct);
27
- border-radius: var(--lumo-border-radius-m);
28
- }
29
-
30
- :host([theme~='filled']) [part='content'] {
31
- padding-left: var(--lumo-space-m);
32
- padding-right: var(--lumo-space-m);
33
- }
34
-
35
- :host([theme~='small']) [part$='content'] {
36
- font-size: var(--lumo-font-size-s);
37
- }
38
- `;
39
-
40
- registerStyles('vaadin-details', details, { moduleId: 'lumo-details' });
41
-
42
- export { details };
@@ -1,8 +0,0 @@
1
- import '@vaadin/vaadin-lumo-styles/color.js';
2
- import '@vaadin/vaadin-lumo-styles/font-icons.js';
3
- import '@vaadin/vaadin-lumo-styles/sizing.js';
4
- import '@vaadin/vaadin-lumo-styles/spacing.js';
5
- import '@vaadin/vaadin-lumo-styles/style.js';
6
- import '@vaadin/vaadin-lumo-styles/typography.js';
7
- declare const detailsSummary: import("lit").CSSResult;
8
- export { detailsSummary };
@@ -1,127 +0,0 @@
1
- import '@vaadin/vaadin-lumo-styles/color.js';
2
- import '@vaadin/vaadin-lumo-styles/font-icons.js';
3
- import '@vaadin/vaadin-lumo-styles/sizing.js';
4
- import '@vaadin/vaadin-lumo-styles/spacing.js';
5
- import '@vaadin/vaadin-lumo-styles/style.js';
6
- import '@vaadin/vaadin-lumo-styles/typography.js';
7
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
8
-
9
- const detailsSummary = css`
10
- :host {
11
- display: flex;
12
- align-items: center;
13
- width: 100%;
14
- outline: none;
15
- padding: var(--lumo-space-s) 0;
16
- box-sizing: border-box;
17
- font-family: var(--lumo-font-family);
18
- font-size: var(--lumo-font-size-m);
19
- font-weight: 500;
20
- line-height: var(--lumo-line-height-xs);
21
- color: var(--lumo-secondary-text-color);
22
- background-color: inherit;
23
- border-radius: var(--lumo-border-radius-m);
24
- cursor: var(--lumo-clickable-cursor);
25
- -webkit-tap-highlight-color: transparent;
26
- -webkit-font-smoothing: antialiased;
27
- -moz-osx-font-smoothing: grayscale;
28
- }
29
-
30
- :host([disabled]),
31
- :host([disabled]) [part='toggle'] {
32
- color: var(--lumo-disabled-text-color);
33
- cursor: default;
34
- }
35
-
36
- @media (hover: hover) {
37
- :host(:hover:not([disabled])),
38
- :host(:hover:not([disabled])) [part='toggle'] {
39
- color: var(--lumo-contrast-80pct);
40
- }
41
- }
42
-
43
- [part='toggle'] {
44
- display: block;
45
- width: 1em;
46
- height: 1em;
47
- margin-left: calc(var(--lumo-space-xs) * -1);
48
- margin-right: var(--lumo-space-xs);
49
- font-size: var(--lumo-icon-size-s);
50
- line-height: 1;
51
- color: var(--lumo-contrast-60pct);
52
- font-family: 'lumo-icons';
53
- cursor: var(--lumo-clickable-cursor);
54
- }
55
-
56
- [part='toggle']::before {
57
- content: var(--lumo-icons-angle-right);
58
- }
59
-
60
- :host([opened]) [part='toggle'] {
61
- transform: rotate(90deg);
62
- }
63
-
64
- [part='content'] {
65
- flex-grow: 1;
66
- }
67
-
68
- /* RTL styles */
69
- :host([dir='rtl']) [part='toggle'] {
70
- margin-left: var(--lumo-space-xs);
71
- margin-right: calc(var(--lumo-space-xs) * -1);
72
- }
73
-
74
- :host([dir='rtl']) [part='toggle']::before {
75
- content: var(--lumo-icons-angle-left);
76
- }
77
-
78
- :host([opened][dir='rtl']) [part='toggle'] {
79
- transform: rotate(-90deg);
80
- }
81
-
82
- /* Small */
83
- :host([theme~='small']) {
84
- padding-top: var(--lumo-space-xs);
85
- padding-bottom: var(--lumo-space-xs);
86
- }
87
-
88
- :host([theme~='small']) [part='toggle'] {
89
- margin-right: calc(var(--lumo-space-xs) / 2);
90
- }
91
-
92
- :host([theme~='small'][dir='rtl']) [part='toggle'] {
93
- margin-left: calc(var(--lumo-space-xs) / 2);
94
- }
95
-
96
- /* Filled */
97
- :host([theme~='filled']) {
98
- padding: var(--lumo-space-s) calc(var(--lumo-space-s) + var(--lumo-space-xs) / 2);
99
- }
100
-
101
- /* Reverse */
102
- :host([theme~='reverse']) {
103
- justify-content: space-between;
104
- }
105
-
106
- :host([theme~='reverse']) [part='toggle'] {
107
- order: 1;
108
- margin-right: 0;
109
- }
110
-
111
- :host([theme~='reverse'][dir='rtl']) [part='toggle'] {
112
- margin-left: 0;
113
- }
114
-
115
- /* Filled reverse */
116
- :host([theme~='reverse'][theme~='filled']) {
117
- padding-left: var(--lumo-space-m);
118
- }
119
-
120
- :host([theme~='reverse'][theme~='filled'][dir='rtl']) {
121
- padding-right: var(--lumo-space-m);
122
- }
123
- `;
124
-
125
- registerStyles('vaadin-details-summary', detailsSummary, { moduleId: 'lumo-details-summary' });
126
-
127
- export { detailsSummary };
@@ -1,2 +0,0 @@
1
- import './vaadin-details-summary-styles.js';
2
- import '../../src/vaadin-details-summary.js';
@@ -1,2 +0,0 @@
1
- import './vaadin-details-summary-styles.js';
2
- import '../../src/vaadin-details-summary.js';
@@ -1,3 +0,0 @@
1
- import './vaadin-details-summary.js';
2
- import './vaadin-details-styles.js';
3
- import '../../src/vaadin-details.js';
@@ -1,3 +0,0 @@
1
- import './vaadin-details-summary.js';
2
- import './vaadin-details-styles.js';
3
- import '../../src/vaadin-details.js';