diff --git a/docs/docs/components/details.md b/docs/docs/components/details.md index 07cd53b33..9f6d94107 100644 --- a/docs/docs/components/details.md +++ b/docs/docs/components/details.md @@ -77,6 +77,31 @@ The details component automatically adapts to right-to-left languages: ``` +### Appearance + +Use the `appearance` attribute to change the element’s visual appearance. + +```html {.example} +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + +
+``` + ### Grouping Details Details are designed to function independently, but you can simulate a group or "accordion" where only one is shown at a time by listening for the `wa-show` event. diff --git a/docs/docs/native/details.md b/docs/docs/native/details.md index 767904bc2..d633e8430 100644 --- a/docs/docs/native/details.md +++ b/docs/docs/native/details.md @@ -19,6 +19,35 @@ file: styles/native/details.css ## Examples +### Appearance + +Use the [appearance utility classes](/docs/utilities/appearance) to change the element's visual appearance: + +```html {.example} +
+
+ Outlined (default) + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+
+ Filled + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+
+ Filled + Outlined + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+
+ Plain + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna + aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
+
+``` + ### Right-to-Left Languages The details styling automatically adapts to right-to-left languages: diff --git a/src/components/details/details.ts b/src/components/details/details.ts index 175a394eb..5c34adeed 100644 --- a/src/components/details/details.ts +++ b/src/components/details/details.ts @@ -9,6 +9,7 @@ import { getTargetElement, waitForEvent } from '../../internal/event.js'; import { watch } from '../../internal/watch.js'; import WebAwesomeElement from '../../internal/webawesome-element.js'; import nativeStyles from '../../styles/native/details.css'; +import appearanceStyles from '../../styles/utilities/appearance.css'; import { LocalizeController } from '../../utilities/localize.js'; import '../icon/icon.js'; import styles from './details.css'; @@ -45,7 +46,7 @@ import styles from './details.css'; */ @customElement('wa-details') export default class WaDetails extends WebAwesomeElement { - static shadowStyle = [nativeStyles, styles]; + static shadowStyle = [appearanceStyles, nativeStyles, styles]; private detailsObserver: MutationObserver; private readonly localize = new LocalizeController(this); @@ -67,6 +68,9 @@ export default class WaDetails extends WebAwesomeElement { /** Disables the details so it can't be toggled. */ @property({ type: Boolean, reflect: true }) disabled = false; + /** The element's visual appearance. */ + @property({ reflect: true }) appearance: 'filled' | 'outlined' | 'plain' = 'outlined'; + firstUpdated() { this.body.style.height = this.open ? 'auto' : '0'; if (this.open) { diff --git a/src/styles/native/details.css b/src/styles/native/details.css index 0dd4779b2..ab50445af 100644 --- a/src/styles/native/details.css +++ b/src/styles/native/details.css @@ -2,10 +2,12 @@ details:where(:not(:host *)), :host { --icon-color: var(--wa-color-text-quiet); --spacing: var(--wa-space-m); + --outlined-border-color: var(--wa-color-surface-border); - background-color: var(--wa-color-surface-default); - border: var(--wa-panel-border-width) var(--wa-color-surface-border) var(--wa-panel-border-style); + background-color: var(--background-color, var(--wa-color-surface-default)); + border: var(--wa-panel-border-width) var(--border-color, var(--wa-color-surface-border)) var(--wa-panel-border-style); border-radius: var(--wa-panel-border-radius); + color: var(--text-color, inherit); padding: var(--spacing); /* Print styles */