igniteui-webcomponents
Version:
Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.
90 lines • 3.62 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var IgcSelectGroupComponent_1;
import { LitElement, html } from 'lit';
import { property, queryAssignedElements } from 'lit/decorators.js';
import { themes } from '../../theming/theming-decorator.js';
import { createMutationController, } from '../common/controllers/mutation-observer.js';
import { watch } from '../common/decorators/watch.js';
import { registerComponent } from '../common/definitions/register.js';
import { styles } from '../dropdown/themes/dropdown-group.base.css.js';
import { all } from '../dropdown/themes/group.js';
import { styles as shared } from '../dropdown/themes/shared/group/dropdown-group.common.css.js';
import IgcSelectItemComponent from './select-item.js';
let IgcSelectGroupComponent = IgcSelectGroupComponent_1 = class IgcSelectGroupComponent extends LitElement {
static register() {
registerComponent(IgcSelectGroupComponent_1);
}
_observerCallback({ changes: { attributes }, }) {
for (const item of attributes) {
if (!this.disabled) {
this.controlledItems = this.activeItems;
}
if (this.disabled && !item.disabled) {
item.disabled = true;
}
}
}
constructor() {
super();
this.disabled = false;
this._internals = this.attachInternals();
this._internals.role = 'group';
createMutationController(this, {
callback: this._observerCallback,
filter: [IgcSelectItemComponent.tagName],
config: {
attributeFilter: ['disabled'],
subtree: true,
},
});
}
async firstUpdated() {
await this.updateComplete;
this.controlledItems = this.activeItems;
this.disabledChange();
}
disabledChange() {
this._internals.ariaDisabled = `${this.disabled}`;
for (const item of this.controlledItems) {
item.disabled = this.disabled;
}
}
render() {
return html `
<label part="label">
<slot name="label"></slot>
</label>
<slot></slot>
`;
}
};
IgcSelectGroupComponent.tagName = 'igc-select-group';
IgcSelectGroupComponent.styles = [styles, shared];
__decorate([
queryAssignedElements({
flatten: true,
selector: IgcSelectItemComponent.tagName,
})
], IgcSelectGroupComponent.prototype, "items", void 0);
__decorate([
queryAssignedElements({
flatten: true,
selector: `${IgcSelectItemComponent.tagName}:not([disabled])`,
})
], IgcSelectGroupComponent.prototype, "activeItems", void 0);
__decorate([
property({ reflect: true, type: Boolean })
], IgcSelectGroupComponent.prototype, "disabled", void 0);
__decorate([
watch('disabled', { waitUntilFirstUpdate: true })
], IgcSelectGroupComponent.prototype, "disabledChange", null);
IgcSelectGroupComponent = IgcSelectGroupComponent_1 = __decorate([
themes(all)
], IgcSelectGroupComponent);
export default IgcSelectGroupComponent;
//# sourceMappingURL=select-group.js.map