@vaadin/details 25.0.0-alpha1 → 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/details",
3
- "version": "25.0.0-alpha1",
3
+ "version": "25.0.0-alpha10",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -21,8 +21,8 @@
21
21
  "type": "module",
22
22
  "files": [
23
23
  "src",
24
- "!src/vaadin-details-summary-base-styles.d.ts",
25
- "!src/vaadin-details-summary-base-styles.js",
24
+ "!src/styles/*-base-styles.d.ts",
25
+ "!src/styles/*-base-styles.js",
26
26
  "theme",
27
27
  "vaadin-*.d.ts",
28
28
  "vaadin-*.js",
@@ -37,22 +37,22 @@
37
37
  ],
38
38
  "dependencies": {
39
39
  "@open-wc/dedupe-mixin": "^1.3.0",
40
- "@vaadin/a11y-base": "25.0.0-alpha1",
41
- "@vaadin/button": "25.0.0-alpha1",
42
- "@vaadin/component-base": "25.0.0-alpha1",
43
- "@vaadin/vaadin-lumo-styles": "25.0.0-alpha1",
44
- "@vaadin/vaadin-themable-mixin": "25.0.0-alpha1",
40
+ "@vaadin/a11y-base": "25.0.0-alpha10",
41
+ "@vaadin/button": "25.0.0-alpha10",
42
+ "@vaadin/component-base": "25.0.0-alpha10",
43
+ "@vaadin/vaadin-lumo-styles": "25.0.0-alpha10",
44
+ "@vaadin/vaadin-themable-mixin": "25.0.0-alpha10",
45
45
  "lit": "^3.0.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@vaadin/chai-plugins": "25.0.0-alpha1",
49
- "@vaadin/test-runner-commands": "25.0.0-alpha1",
50
- "@vaadin/testing-helpers": "^1.1.0",
48
+ "@vaadin/chai-plugins": "25.0.0-alpha10",
49
+ "@vaadin/test-runner-commands": "25.0.0-alpha10",
50
+ "@vaadin/testing-helpers": "^2.0.0",
51
51
  "sinon": "^18.0.0"
52
52
  },
53
53
  "web-types": [
54
54
  "web-types.json",
55
55
  "web-types.lit.json"
56
56
  ],
57
- "gitHead": "b8c22a4a0c64156210d0daac96b43ae4e5526d49"
57
+ "gitHead": "6cc6c94079e805fa5b2f0af4dbf3b2a7485e57d0"
58
58
  }
@@ -0,0 +1,99 @@
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 '@vaadin/component-base/src/style-props.js';
7
+ import { css, unsafeCSS } from 'lit';
8
+
9
+ export const detailsSummary = (partName = 'vaadin-details-summary') => css`
10
+ :host {
11
+ align-items: center;
12
+ background: var(--${unsafeCSS(partName)}-background, transparent);
13
+ background-origin: border-box;
14
+ border: var(--${unsafeCSS(partName)}-border, none);
15
+ border-radius: var(--${unsafeCSS(partName)}-border-radius, var(--vaadin-radius-m));
16
+ box-sizing: border-box;
17
+ color: var(--${unsafeCSS(partName)}-text-color, var(--vaadin-color));
18
+ cursor: var(--vaadin-clickable-cursor);
19
+ display: flex;
20
+ font-size: var(--${unsafeCSS(partName)}-font-size, inherit);
21
+ font-weight: var(--${unsafeCSS(partName)}-font-weight, 500);
22
+ gap: var(--${unsafeCSS(partName)}-gap, 0 var(--vaadin-gap-container-inline));
23
+ height: var(--${unsafeCSS(partName)}-height, auto);
24
+ outline: calc(var(--vaadin-focus-ring-width) * var(--_focus-ring, 0)) solid var(--vaadin-focus-ring-color);
25
+ outline-offset: 1px;
26
+ padding: var(--${unsafeCSS(partName)}-padding, var(--vaadin-padding-container));
27
+ -webkit-tap-highlight-color: transparent;
28
+ -webkit-user-select: none;
29
+ user-select: none;
30
+ }
31
+
32
+ :host([focus-ring]) {
33
+ --_focus-ring: 1;
34
+ }
35
+
36
+ :host([hidden]) {
37
+ display: none !important;
38
+ }
39
+
40
+ [part='toggle'] {
41
+ color: var(--vaadin-color-subtle);
42
+ }
43
+
44
+ @media (prefers-reduced-motion: no-preference) {
45
+ [part='toggle'] {
46
+ transition-property: rotate;
47
+ transition-duration: 150ms;
48
+ animation: delay-initial-transition 1ms;
49
+ }
50
+
51
+ @keyframes delay-initial-transition {
52
+ 0% {
53
+ rotate: 0deg;
54
+ }
55
+ }
56
+ }
57
+
58
+ [part='toggle']::before {
59
+ background: currentColor;
60
+ content: '';
61
+ display: block;
62
+ height: var(--vaadin-icon-size, 1lh);
63
+ mask-image: var(--_vaadin-icon-chevron-down);
64
+ width: var(--vaadin-icon-size, 1lh);
65
+ rotate: -90deg;
66
+ }
67
+
68
+ :host([disabled]) {
69
+ opacity: 0.5;
70
+ cursor: var(--vaadin-disabled-cursor);
71
+ }
72
+
73
+ :host([dir='rtl']) [part='toggle']::before {
74
+ scale: -1;
75
+ }
76
+
77
+ :host([opened]) [part='toggle'] {
78
+ rotate: 90deg;
79
+ }
80
+
81
+ :host([dir='rtl'][opened]) [part='toggle'] {
82
+ rotate: -90deg;
83
+ }
84
+
85
+ @media (forced-colors: active) {
86
+ [part='toggle']::before {
87
+ background: CanvasText;
88
+ }
89
+
90
+ :host([disabled]) {
91
+ color: GrayText;
92
+ opacity: 1;
93
+ }
94
+
95
+ :host([disabled]) [part='toggle']::before {
96
+ background: GrayText;
97
+ }
98
+ }
99
+ `;
@@ -0,0 +1,8 @@
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;
@@ -8,8 +8,9 @@ import { ButtonMixin } from '@vaadin/button/src/vaadin-button-mixin.js';
8
8
  import { defineCustomElement } from '@vaadin/component-base/src/define.js';
9
9
  import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
10
10
  import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
11
+ import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
11
12
  import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
12
- import { detailsSummary } from './vaadin-details-summary-core-styles.js';
13
+ import { detailsSummary } from './styles/vaadin-details-summary-core-styles.js';
13
14
 
14
15
  /**
15
16
  * The details summary element.
@@ -41,7 +42,7 @@ import { detailsSummary } from './vaadin-details-summary-core-styles.js';
41
42
  * @mixes DirMixin
42
43
  * @mixes ThemableMixin
43
44
  */
44
- class DetailsSummary extends ButtonMixin(DirMixin(ThemableMixin(PolylitMixin(LitElement)))) {
45
+ class DetailsSummary extends ButtonMixin(DirMixin(ThemableMixin(PolylitMixin(LumoInjectionMixin(LitElement))))) {
45
46
  static get is() {
46
47
  return 'vaadin-details-summary';
47
48
  }
@@ -22,7 +22,7 @@ export type DetailsEventMap = DetailsCustomEventMap & HTMLElementEventMap;
22
22
  * `<vaadin-details>` is a Web Component which the creates an
23
23
  * expandable panel similar to `<details>` HTML element.
24
24
  *
25
- * ```
25
+ * ```html
26
26
  * <vaadin-details>
27
27
  * <vaadin-details-summary slot="summary">Expandable Details</vaadin-details-summary>
28
28
  * <div>
@@ -8,6 +8,7 @@ import { css, html, LitElement } from 'lit';
8
8
  import { defineCustomElement } from '@vaadin/component-base/src/define.js';
9
9
  import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
10
10
  import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
11
+ import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
11
12
  import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
12
13
  import { DetailsBaseMixin } from './vaadin-details-base-mixin.js';
13
14
 
@@ -15,7 +16,7 @@ import { DetailsBaseMixin } from './vaadin-details-base-mixin.js';
15
16
  * `<vaadin-details>` is a Web Component which the creates an
16
17
  * expandable panel similar to `<details>` HTML element.
17
18
  *
18
- * ```
19
+ * ```html
19
20
  * <vaadin-details>
20
21
  * <vaadin-details-summary slot="summary">Expandable Details</vaadin-details-summary>
21
22
  * <div>
@@ -51,7 +52,7 @@ import { DetailsBaseMixin } from './vaadin-details-base-mixin.js';
51
52
  * @mixes ElementMixin
52
53
  * @mixes ThemableMixin
53
54
  */
54
- class Details extends DetailsBaseMixin(ElementMixin(ThemableMixin(PolylitMixin(LitElement)))) {
55
+ class Details extends DetailsBaseMixin(ElementMixin(ThemableMixin(PolylitMixin(LumoInjectionMixin(LitElement))))) {
55
56
  static get is() {
56
57
  return 'vaadin-details';
57
58
  }
@@ -76,6 +77,12 @@ class Details extends DetailsBaseMixin(ElementMixin(ThemableMixin(PolylitMixin(L
76
77
  `;
77
78
  }
78
79
 
80
+ static get lumoInjector() {
81
+ return {
82
+ includeBaseStyles: true,
83
+ };
84
+ }
85
+
79
86
  /** @protected */
80
87
  render() {
81
88
  return html`
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-alpha1",
4
+ "version": "25.0.0-alpha10",
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```\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 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.",
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-alpha1",
4
+ "version": "25.0.0-alpha10",
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```\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 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.",
41
41
  "extension": true,
42
42
  "attributes": [
43
43
  {