package.src.vaadin-details-summary.js Maven / Gradle / Ivy
/**
* @license
* Copyright (c) 2019 - 2024 Vaadin Ltd.
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
*/
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import { ButtonMixin } from '@vaadin/button/src/vaadin-button-mixin.js';
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
/**
* The details summary element.
*
* ### Styling
*
* The following shadow DOM parts are exposed for styling:
*
* Part name | Description
* -----------|-------------------
* `toggle` | The icon element
* `content` | The content wrapper
*
* The following state attributes are available for styling:
*
* Attribute | Description
* -------------| -----------
* `active` | Set when the element is pressed down, either with mouse, touch or the keyboard.
* `opened` | Set when the element is expanded and related collapsible content is visible.
* `disabled` | Set when the element is disabled.
* `focus-ring` | Set when the element is focused using the keyboard.
* `focused` | Set when the element is focused.
*
* See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.
*
* @customElement
* @extends HTMLElement
* @mixes ButtonMixin
* @mixes DirMixin
* @mixes ThemableMixin
*/
class DetailsSummary extends ButtonMixin(DirMixin(ThemableMixin(PolymerElement))) {
static get is() {
return 'vaadin-details-summary';
}
static get template() {
return html`
`;
}
static get properties() {
return {
/**
* When true, the element is opened.
*/
opened: {
type: Boolean,
reflectToAttribute: true,
},
};
}
}
defineCustomElement(DetailsSummary);
export { DetailsSummary };