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());
}
});
}
}