import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, ViewEncapsulation, } from "@angular/core"; import { SdCheckboxGroup } from "./sd-checkbox-group"; import { SdCheckbox } from "./sd-checkbox"; @Component({ selector: "sd-checkbox-group-item", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdCheckbox], template: ` `, }) export class SdCheckboxGroupItem { private readonly _parentControl = inject>( forwardRef(() => SdCheckboxGroup), ); value = input.required(); inline = input(false, { transform: booleanAttribute }); isSelected = computed(() => this._parentControl.value().includes(this.value())); disabled = computed(() => this._parentControl.disabled()); onSelectedChange(selected: boolean) { this._parentControl.value.update((v) => { if (selected) { return [...v, this.value()]; } else { return v.filter((item) => item !== this.value()); } }); } }